diff options
-rw-r--r-- | PCbuild/make_buildinfo.c | 42 | ||||
-rw-r--r-- | PCbuild/make_buildinfo.vcproj | 61 | ||||
-rw-r--r-- | PCbuild/pythoncore.vcproj | 32 |
3 files changed, 48 insertions, 87 deletions
diff --git a/PCbuild/make_buildinfo.c b/PCbuild/make_buildinfo.c index 5a3d385..a41aac5 100644 --- a/PCbuild/make_buildinfo.c +++ b/PCbuild/make_buildinfo.c @@ -19,9 +19,15 @@ invoked as a pre-link step for pythoncore, so that overwrites any previous getbuildinfo.o. + However, if a second argument is provided, this will be used + as a temporary directory where any getbuildinfo2.c and + getbuildinfo.o files are put. This is useful if multiple + configurations are being built in parallel, to avoid them + trampling each other's files. + */ -int make_buildinfo2() +int make_buildinfo2(const char *tmppath) { struct _stat st; HKEY hTortoise; @@ -46,7 +52,9 @@ int make_buildinfo2() if (_stat(command+1, &st) < 0) /* subwcrev.exe not part of the release */ return 0; - strcat_s(command, CMD_SIZE, "\" .. ..\\Modules\\getbuildinfo.c getbuildinfo2.c"); + strcat_s(command, CMD_SIZE, "\" .. ..\\Modules\\getbuildinfo.c "); + strcat_s(command, CMD_SIZE, tmppath); + strcat_s(command, CMD_SIZE, "getbuildinfo2.c"); puts(command); fflush(stdout); if (system(command) < 0) return 0; @@ -55,10 +63,12 @@ int make_buildinfo2() int main(int argc, char*argv[]) { - char command[500] = "cl.exe -c -D_WIN32 -DUSE_DL_EXPORT -D_WINDOWS -DWIN32 -D_WINDLL "; + char command[CMD_SIZE] = "cl.exe -c -D_WIN32 -DUSE_DL_EXPORT -D_WINDOWS -DWIN32 -D_WINDLL "; + char tmppath[CMD_SIZE] = ""; int do_unlink, result; - if (argc != 2) { - fprintf(stderr, "make_buildinfo $(ConfigurationName)\n"); + char *tmpdir = NULL; + if (argc <= 2 || argc > 3) { + fprintf(stderr, "make_buildinfo $(ConfigurationName) [tmpdir]\n"); return EXIT_FAILURE; } if (strcmp(argv[1], "Release") == 0) { @@ -78,16 +88,28 @@ int main(int argc, char*argv[]) fprintf(stderr, "unsupported configuration %s\n", argv[1]); return EXIT_FAILURE; } + if (argc > 2) { + tmpdir = argv[2]; + strcat_s(tmppath, _countof(tmppath), tmpdir); + strcat_s(tmppath, _countof(tmppath), "\\"); + } - if ((do_unlink = make_buildinfo2())) + if ((do_unlink = make_buildinfo2(tmppath))) { + strcat_s(command, CMD_SIZE, tmppath); strcat_s(command, CMD_SIZE, "getbuildinfo2.c -DSUBWCREV "); - else + } else strcat_s(command, CMD_SIZE, "..\\Modules\\getbuildinfo.c"); - strcat_s(command, CMD_SIZE, " -Fogetbuildinfo.o -I..\\Include -I..\\PC"); + strcat_s(command, CMD_SIZE, " -Fo"); + strcat_s(command, CMD_SIZE, tmppath); + strcat_s(command, CMD_SIZE, "getbuildinfo.o -I..\\Include -I..\\PC"); puts(command); fflush(stdout); result = system(command); - if (do_unlink) - _unlink("getbuildinfo2.c"); + if (do_unlink) { + command[0] = '\0'; + strcat_s(command, CMD_SIZE, tmppath); + strcat_s(command, CMD_SIZE, "getbuildinfo2.c"); + _unlink(command); + } if (result < 0) return EXIT_FAILURE; return 0; diff --git a/PCbuild/make_buildinfo.vcproj b/PCbuild/make_buildinfo.vcproj index c42229c..e494d93 100644 --- a/PCbuild/make_buildinfo.vcproj +++ b/PCbuild/make_buildinfo.vcproj @@ -12,9 +12,6 @@ <Platform Name="Win32" /> - <Platform - Name="x64" - /> </Platforms> <ToolFiles> </ToolFiles> @@ -84,64 +81,6 @@ Name="VCPostBuildEventTool" /> </Configuration> - <Configuration - Name="Release|x64" - ConfigurationType="1" - InheritedPropertySheets=".\pyproject.vsprops;.\x64.vsprops;.\release.vsprops" - > - <Tool - Name="VCPreBuildEventTool" - /> - <Tool - Name="VCCustomBuildTool" - /> - <Tool - Name="VCXMLDataGeneratorTool" - /> - <Tool - Name="VCWebServiceProxyGeneratorTool" - /> - <Tool - Name="VCMIDLTool" - /> - <Tool - Name="VCCLCompilerTool" - PreprocessorDefinitions="_CONSOLE" - /> - <Tool - Name="VCManagedResourceCompilerTool" - /> - <Tool - Name="VCResourceCompilerTool" - /> - <Tool - Name="VCPreLinkEventTool" - /> - <Tool - Name="VCLinkerTool" - /> - <Tool - Name="VCALinkTool" - /> - <Tool - Name="VCManifestTool" - /> - <Tool - Name="VCXDCMakeTool" - /> - <Tool - Name="VCBscMakeTool" - /> - <Tool - Name="VCFxCopTool" - /> - <Tool - Name="VCAppVerifierTool" - /> - <Tool - Name="VCPostBuildEventTool" - /> - </Configuration> </Configurations> <References> </References> diff --git a/PCbuild/pythoncore.vcproj b/PCbuild/pythoncore.vcproj index 77aa1e3..f5d12a3 100644 --- a/PCbuild/pythoncore.vcproj +++ b/PCbuild/pythoncore.vcproj @@ -59,11 +59,11 @@ <Tool Name="VCPreLinkEventTool" Description="Generate build information..." - CommandLine=""$(SolutionDir)make_buildinfo.exe" Release" + CommandLine=""$(SolutionDir)make_buildinfo.exe" Release $(IntDir)" /> <Tool Name="VCLinkerTool" - AdditionalDependencies="getbuildinfo.o" + AdditionalDependencies="$(IntDir)\getbuildinfo.o" OutputFile="$(OutDir)\$(PyDllName).dll" IgnoreDefaultLibraryNames="libc" ProgramDatabaseFile="$(OutDir)$(PyDllName).pdb" @@ -134,11 +134,11 @@ <Tool Name="VCPreLinkEventTool" Description="Generate build information..." - CommandLine=""$(SolutionDir)make_buildinfo.exe" Release" + CommandLine=""$(SolutionDir)make_buildinfo.exe" Release $(IntDir)" /> <Tool Name="VCLinkerTool" - AdditionalDependencies="getbuildinfo.o" + AdditionalDependencies="$(IntDir)\getbuildinfo.o" OutputFile="$(OutDir)\$(PyDllName).dll" IgnoreDefaultLibraryNames="libc" ProgramDatabaseFile="$(OutDir)$(PyDllName).pdb" @@ -212,11 +212,11 @@ <Tool Name="VCPreLinkEventTool" Description="Generate build information..." - CommandLine=""$(SolutionDir)make_buildinfo.exe" Debug" + CommandLine=""$(SolutionDir)make_buildinfo.exe" Debug $(IntDir)" /> <Tool Name="VCLinkerTool" - AdditionalDependencies="getbuildinfo.o" + AdditionalDependencies="$(IntDir)\getbuildinfo.o" OutputFile="$(OutDir)\$(PyDllName)_d.dll" IgnoreDefaultLibraryNames="libc" ProgramDatabaseFile="$(OutDir)$(PyDllName)_d.pdb" @@ -290,11 +290,11 @@ <Tool Name="VCPreLinkEventTool" Description="Generate build information..." - CommandLine=""$(SolutionDir)make_buildinfo.exe" Debug" + CommandLine=""$(SolutionDir)make_buildinfo.exe" Debug $(IntDir)" /> <Tool Name="VCLinkerTool" - AdditionalDependencies="getbuildinfo.o" + AdditionalDependencies="$(IntDir)\getbuildinfo.o" OutputFile="$(OutDir)\$(PyDllName)_d.dll" IgnoreDefaultLibraryNames="libc" ProgramDatabaseFile="$(OutDir)$(PyDllName)_d.pdb" @@ -364,11 +364,11 @@ <Tool Name="VCPreLinkEventTool" Description="Generate build information..." - CommandLine=""$(SolutionDir)make_buildinfo.exe" Release" + CommandLine=""$(SolutionDir)make_buildinfo.exe" Release $(IntDir)" /> <Tool Name="VCLinkerTool" - AdditionalDependencies="getbuildinfo.o" + AdditionalDependencies="$(IntDir)\getbuildinfo.o" OutputFile="$(OutDir)\$(PyDllName).dll" IgnoreDefaultLibraryNames="libc" ProgramDatabaseFile="$(OutDir)$(PyDllName).pdb" @@ -439,11 +439,11 @@ <Tool Name="VCPreLinkEventTool" Description="Generate build information..." - CommandLine=""$(SolutionDir)make_buildinfo.exe" Release" + CommandLine=""$(SolutionDir)make_buildinfo.exe" Release $(IntDir)" /> <Tool Name="VCLinkerTool" - AdditionalDependencies="getbuildinfo.o" + AdditionalDependencies="$(IntDir)\getbuildinfo.o" OutputFile="$(OutDir)\$(PyDllName).dll" IgnoreDefaultLibraryNames="libc" ProgramDatabaseFile="$(OutDir)$(PyDllName).pdb" @@ -514,11 +514,11 @@ <Tool Name="VCPreLinkEventTool" Description="Generate build information..." - CommandLine=""$(SolutionDir)make_buildinfo.exe" Release" + CommandLine=""$(SolutionDir)make_buildinfo.exe" Release ($IntDir)" /> <Tool Name="VCLinkerTool" - AdditionalDependencies="getbuildinfo.o" + AdditionalDependencies="$(IntDir)\getbuildinfo.o" OutputFile="$(OutDir)\$(PyDllName).dll" IgnoreDefaultLibraryNames="libc" ProgramDatabaseFile="$(OutDir)$(PyDllName).pdb" @@ -589,11 +589,11 @@ <Tool Name="VCPreLinkEventTool" Description="Generate build information..." - CommandLine=""$(SolutionDir)make_buildinfo.exe" Release" + CommandLine=""$(SolutionDir)make_buildinfo.exe" Release $(IntDir)" /> <Tool Name="VCLinkerTool" - AdditionalDependencies="getbuildinfo.o" + AdditionalDependencies="$(IntDir)\getbuildinfo.o" OutputFile="$(OutDir)\$(PyDllName).dll" IgnoreDefaultLibraryNames="libc" ProgramDatabaseFile="$(OutDir)$(PyDllName).pdb" |