mirror of
				https://github.com/python-pillow/Pillow.git
				synced 2025-11-04 01:47:47 +03:00 
			
		
		
		
	Windows: Enable ARM64 for MSVC
This patch enables ARM64 as a new platform for Windows. Platform query and documentation is updated accordingly.
This commit is contained in:
		
							parent
							
								
									369124f3c8
								
							
						
					
					
						commit
						f22d3561fd
					
				| 
						 | 
					@ -24,7 +24,7 @@ Download and install:
 | 
				
			||||||
* `CMake 3.12 or newer <https://cmake.org/download/>`_
 | 
					* `CMake 3.12 or newer <https://cmake.org/download/>`_
 | 
				
			||||||
  (also available as Visual Studio component C++ CMake tools for Windows)
 | 
					  (also available as Visual Studio component C++ CMake tools for Windows)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
* `NASM <https://www.nasm.us/pub/nasm/releasebuilds/?C=M;O=D>`_
 | 
					* x86/x64: `NASM <https://www.nasm.us/pub/nasm/releasebuilds/?C=M;O=D>`_
 | 
				
			||||||
 | 
					
 | 
				
			||||||
Any version of Visual Studio 2017 or newer should be supported,
 | 
					Any version of Visual Studio 2017 or newer should be supported,
 | 
				
			||||||
including Visual Studio 2017 Community, or Build Tools for Visual Studio 2019.
 | 
					including Visual Studio 2017 Community, or Build Tools for Visual Studio 2019.
 | 
				
			||||||
| 
						 | 
					@ -42,8 +42,8 @@ behaviour of ``build_prepare.py``:
 | 
				
			||||||
  If ``PYTHON`` is unset, the version of Python used to run
 | 
					  If ``PYTHON`` is unset, the version of Python used to run
 | 
				
			||||||
  ``build_prepare.py`` will be used. If only ``PYTHON`` is set,
 | 
					  ``build_prepare.py`` will be used. If only ``PYTHON`` is set,
 | 
				
			||||||
  ``EXECUTABLE`` defaults to ``python.exe``.
 | 
					  ``EXECUTABLE`` defaults to ``python.exe``.
 | 
				
			||||||
* ``ARCHITECTURE`` is used to select a ``x86`` or ``x64`` build. By default,
 | 
					* ``ARCHITECTURE`` is used to select a ``x86``, ``x64`` or ``ARM64``build.
 | 
				
			||||||
  uses same architecture as the version of Python used to run ``build_prepare.py``.
 | 
					  By default, uses same architecture as the version of Python used to run ``build_prepare.py``.
 | 
				
			||||||
  is used.
 | 
					  is used.
 | 
				
			||||||
* ``PILLOW_BUILD`` can be used to override the ``winbuild\build`` directory
 | 
					* ``PILLOW_BUILD`` can be used to override the ``winbuild\build`` directory
 | 
				
			||||||
  path, used to store generated build scripts and compiled libraries.
 | 
					  path, used to store generated build scripts and compiled libraries.
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -1,4 +1,5 @@
 | 
				
			||||||
import os
 | 
					import os
 | 
				
			||||||
 | 
					import platform
 | 
				
			||||||
import shutil
 | 
					import shutil
 | 
				
			||||||
import struct
 | 
					import struct
 | 
				
			||||||
import subprocess
 | 
					import subprocess
 | 
				
			||||||
| 
						 | 
					@ -93,6 +94,7 @@ SF_MIRROR = "http://iweb.dl.sourceforge.net"
 | 
				
			||||||
architectures = {
 | 
					architectures = {
 | 
				
			||||||
    "x86": {"vcvars_arch": "x86", "msbuild_arch": "Win32"},
 | 
					    "x86": {"vcvars_arch": "x86", "msbuild_arch": "Win32"},
 | 
				
			||||||
    "x64": {"vcvars_arch": "x86_amd64", "msbuild_arch": "x64"},
 | 
					    "x64": {"vcvars_arch": "x86_amd64", "msbuild_arch": "x64"},
 | 
				
			||||||
 | 
					    "ARM64": {"vcvars_arch": "x86_arm64", "msbuild_arch": "ARM64"},
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
header = [
 | 
					header = [
 | 
				
			||||||
| 
						 | 
					@ -490,7 +492,10 @@ if __name__ == "__main__":
 | 
				
			||||||
    python_dir = os.environ.get("PYTHON")
 | 
					    python_dir = os.environ.get("PYTHON")
 | 
				
			||||||
    python_exe = os.environ.get("EXECUTABLE", "python.exe")
 | 
					    python_exe = os.environ.get("EXECUTABLE", "python.exe")
 | 
				
			||||||
    architecture = os.environ.get(
 | 
					    architecture = os.environ.get(
 | 
				
			||||||
        "ARCHITECTURE", "x86" if struct.calcsize("P") == 4 else "x64"
 | 
					        "ARCHITECTURE",
 | 
				
			||||||
 | 
					        "ARM64"
 | 
				
			||||||
 | 
					        if platform.machine() == "ARM64"
 | 
				
			||||||
 | 
					        else ("x86" if struct.calcsize("P") == 4 else "x64"),
 | 
				
			||||||
    )
 | 
					    )
 | 
				
			||||||
    build_dir = os.environ.get("PILLOW_BUILD", os.path.join(winbuild_dir, "build"))
 | 
					    build_dir = os.environ.get("PILLOW_BUILD", os.path.join(winbuild_dir, "build"))
 | 
				
			||||||
    sources_dir = ""
 | 
					    sources_dir = ""
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
		Loading…
	
		Reference in New Issue
	
	Block a user