run_with_env.cmd 3.3 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788
  1. :: To build extensions for 64 bit Python 3, we need to configure environment
  2. :: variables to use the MSVC 2010 C++ compilers from GRMSDKX_EN_DVD.iso of:
  3. :: MS Windows SDK for Windows 7 and .NET Framework 4 (SDK v7.1)
  4. ::
  5. :: To build extensions for 64 bit Python 2, we need to configure environment
  6. :: variables to use the MSVC 2008 C++ compilers from GRMSDKX_EN_DVD.iso of:
  7. :: MS Windows SDK for Windows 7 and .NET Framework 3.5 (SDK v7.0)
  8. ::
  9. :: 32 bit builds, and 64-bit builds for 3.5 and beyond, do not require specific
  10. :: environment configurations.
  11. ::
  12. :: Note: this script needs to be run with the /E:ON and /V:ON flags for the
  13. :: cmd interpreter, at least for (SDK v7.0)
  14. ::
  15. :: More details at:
  16. :: https://github.com/cython/cython/wiki/64BitCythonExtensionsOnWindows
  17. :: http://stackoverflow.com/a/13751649/163740
  18. ::
  19. :: Author: Olivier Grisel
  20. :: License: CC0 1.0 Universal: http://creativecommons.org/publicdomain/zero/1.0/
  21. ::
  22. :: Notes about batch files for Python people:
  23. ::
  24. :: Quotes in values are literally part of the values:
  25. :: SET FOO="bar"
  26. :: FOO is now five characters long: " b a r "
  27. :: If you don't want quotes, don't include them on the right-hand side.
  28. ::
  29. :: The CALL lines at the end of this file look redundant, but if you move them
  30. :: outside of the IF clauses, they do not run properly in the SET_SDK_64==Y
  31. :: case, I don't know why.
  32. @ECHO OFF
  33. SET COMMAND_TO_RUN=%*
  34. SET WIN_SDK_ROOT=C:\Program Files\Microsoft SDKs\Windows
  35. SET WIN_WDK=c:\Program Files (x86)\Windows Kits\10\Include\wdf
  36. :: Extract the major and minor versions, and allow for the minor version to be
  37. :: more than 9. This requires the version number to have two dots in it.
  38. SET MAJOR_PYTHON_VERSION=%PYTHON_VERSION:~0,1%
  39. IF "%PYTHON_VERSION:~3,1%" == "." (
  40. SET MINOR_PYTHON_VERSION=%PYTHON_VERSION:~2,1%
  41. ) ELSE (
  42. SET MINOR_PYTHON_VERSION=%PYTHON_VERSION:~2,2%
  43. )
  44. :: Based on the Python version, determine what SDK version to use, and whether
  45. :: to set the SDK for 64-bit.
  46. IF %MAJOR_PYTHON_VERSION% == 2 (
  47. SET WINDOWS_SDK_VERSION="v7.0"
  48. SET SET_SDK_64=Y
  49. ) ELSE (
  50. IF %MAJOR_PYTHON_VERSION% == 3 (
  51. SET WINDOWS_SDK_VERSION="v7.1"
  52. IF %MINOR_PYTHON_VERSION% LEQ 4 (
  53. SET SET_SDK_64=Y
  54. ) ELSE (
  55. SET SET_SDK_64=N
  56. IF EXIST "%WIN_WDK%" (
  57. :: See: https://connect.microsoft.com/VisualStudio/feedback/details/1610302/
  58. REN "%WIN_WDK%" 0wdf
  59. )
  60. )
  61. ) ELSE (
  62. ECHO Unsupported Python version: "%MAJOR_PYTHON_VERSION%"
  63. EXIT 1
  64. )
  65. )
  66. IF %PYTHON_ARCH% == 64 (
  67. IF %SET_SDK_64% == Y (
  68. ECHO Configuring Windows SDK %WINDOWS_SDK_VERSION% for Python %MAJOR_PYTHON_VERSION% on a 64 bit architecture
  69. SET DISTUTILS_USE_SDK=1
  70. SET MSSdk=1
  71. "%WIN_SDK_ROOT%\%WINDOWS_SDK_VERSION%\Setup\WindowsSdkVer.exe" -q -version:%WINDOWS_SDK_VERSION%
  72. "%WIN_SDK_ROOT%\%WINDOWS_SDK_VERSION%\Bin\SetEnv.cmd" /x64 /release
  73. ECHO Executing: %COMMAND_TO_RUN%
  74. call %COMMAND_TO_RUN% || EXIT 1
  75. ) ELSE (
  76. ECHO Using default MSVC build environment for 64 bit architecture
  77. ECHO Executing: %COMMAND_TO_RUN%
  78. call %COMMAND_TO_RUN% || EXIT 1
  79. )
  80. ) ELSE (
  81. ECHO Using default MSVC build environment for 32 bit architecture
  82. ECHO Executing: %COMMAND_TO_RUN%
  83. call %COMMAND_TO_RUN% || EXIT 1
  84. )