echo. -r Target Rebuild instead of Build\r
echo. -d Set the configuration to Debug\r
echo. -e Build external libraries fetched by get_externals.bat\r
+echo. Extension modules that depend on external libraries will not attempt\r
+echo. to build if this flag is not present\r
echo. -m Enable parallel build (enabled by default)\r
echo. -M Disable parallel build\r
echo. -v Increased output messages\r
echo. -k Attempt to kill any running Pythons before building (usually done\r
echo. automatically by the pythoncore project)\r
echo.\r
+echo.Available flags to avoid building certain modules.\r
+echo.These flags have no effect if '-e' is not given:\r
+echo. --no-ssl Do not attempt to build _ssl\r
+echo. --no-tkinter Do not attempt to build Tkinter\r
+echo.\r
echo.Available arguments:\r
echo. -c Release ^| Debug ^| PGInstrument ^| PGUpdate\r
echo. Set the configuration (default: Release)\r
if "%~1"=="-r" (set target=Rebuild) & shift & goto CheckOpts\r
if "%~1"=="-t" (set target=%2) & shift & shift & goto CheckOpts\r
if "%~1"=="-d" (set conf=Debug) & shift & goto CheckOpts\r
-if "%~1"=="-e" call "%dir%get_externals.bat" & shift & goto CheckOpts\r
if "%~1"=="-m" (set parallel=/m) & shift & goto CheckOpts\r
if "%~1"=="-M" (set parallel=) & shift & goto CheckOpts\r
if "%~1"=="-v" (set verbose=/v:n) & shift & goto CheckOpts\r
if "%~1"=="-k" (set kill=true) & shift & goto CheckOpts\r
if "%~1"=="-V" shift & goto Version\r
+rem These use the actual property names used by MSBuild. We could just let\r
+rem them in through the environment, but we specify them on the command line\r
+rem anyway for visibility so set defaults after this\r
+if "%~1"=="-e" (set IncludeExternals=true) & call "%dir%get_externals.bat" & shift & goto CheckOpts\r
+if "%~1"=="--no-ssl" (set IncludeSSL=false) & shift & goto CheckOpts\r
+if "%~1"=="--no-tkinter" (set IncludeTkinter=false) & shift & goto CheckOpts\r
+\r
+if "%IncludeExternals%"=="" set IncludeExternals=false\r
+if "%IncludeSSL%"=="" set IncludeSSL=true\r
+if "%IncludeTkinter%"=="" set IncludeTkinter=true\r
\r
if "%platf%"=="x64" (set vs_platf=x86_amd64)\r
\r
rem Passing %1-9 is not the preferred option, but argument parsing in\r
rem batch is, shall we say, "lackluster"\r
echo on\r
-msbuild "%dir%pcbuild.proj" /t:%target% %parallel% %verbose% /p:Configuration=%conf% /p:Platform=%platf% %1 %2 %3 %4 %5 %6 %7 %8 %9\r
+msbuild "%dir%pcbuild.proj" /t:%target% %parallel% %verbose%^\r
+ /p:Configuration=%conf% /p:Platform=%platf%^\r
+ /p:IncludeExternals=%IncludeExternals%^\r
+ /p:IncludeSSL=%IncludeSSL% /p:IncludeTkinter=%IncludeTkinter%^\r
+ %1 %2 %3 %4 %5 %6 %7 %8 %9\r
\r
@goto :eof\r
\r
<Platform Condition="'$(Platform)' == ''">Win32</Platform>
<Configuration Condition="'$(Configuration)' == ''">Release</Configuration>
<IncludeExtensions Condition="'$(IncludeExtensions)' == ''">true</IncludeExtensions>
+ <IncludeExternals Condition="'$(IncludeExternals)' == ''">true</IncludeExternals>
<IncludeTests Condition="'$(IncludeTest)' == ''">true</IncludeTests>
<IncludeSSL Condition="'$(IncludeSSL)' == ''">true</IncludeSSL>
+ <IncludeTkinter Condition="'$(IncludeTkinter)' == ''">true</IncludeTkinter>
</PropertyGroup>
<ItemDefinitionGroup>
<!--
Parallel build is explicitly disabled for this project because it
causes many conflicts between pythoncore and projects that depend
- in pythoncore. Once the core DLL has been built, subsequent
+ on pythoncore. Once the core DLL has been built, subsequent
projects will be built in parallel.
-->
<Projects Include="pythoncore.vcxproj">
<!-- _freeze_importlib -->
<Projects Include="_freeze_importlib.vcxproj" />
<!-- Extension modules -->
- <ExtensionModules Include="_bz2;_ctypes;_decimal;_elementtree;_lzma;_msi;_multiprocessing;_overlapped;_sqlite3;_tkinter;tix;pyexpat;select;unicodedata;winsound" />
+ <ExtensionModules Include="_ctypes;_decimal;_elementtree;_msi;_multiprocessing;_overlapped;pyexpat;select;unicodedata;winsound" />
+ <!-- Extension modules that require external sources -->
+ <ExternalModules Include="_bz2;_lzma;_sqlite3" />
<!-- _ssl will build _socket as well, which may cause conflicts in parallel builds -->
- <ExtensionModules Include="_socket" Condition="!$(IncludeSSL)" />
- <ExtensionModules Include="_ssl;_hashlib" Condition="$(IncludeSSL)" />
+ <ExtensionModules Include="_socket" Condition="!$(IncludeSSL) or !$(IncludeExternals)" />
+ <ExternalModules Include="_ssl;_hashlib" Condition="$(IncludeSSL)" />
+ <ExternalModules Include="_tkinter;tix" Condition="$(IncludeTkinter)" />
+ <ExtensionModules Include="@(ExternalModules->'%(Identity)')" Condition="$(IncludeExternals)" />
<Projects Include="@(ExtensionModules->'%(Identity).vcxproj')" Condition="$(IncludeExtensions)" />
<!-- Test modules -->
<TestModules Include="_ctypes_test;_testbuffer;_testcapi;_testembed;_testimportmultiple;_testmultiphase" />