summaryrefslogtreecommitdiffstats
path: root/PCbuild
diff options
context:
space:
mode:
authorKristján Valur Jónsson <kristjan@ccpgames.com>2010-11-03 13:57:00 (GMT)
committerKristján Valur Jónsson <kristjan@ccpgames.com>2010-11-03 13:57:00 (GMT)
commit33d144aa36ee8afb2f9a8c0b081e6f24591106ab (patch)
treedc428fe86c3d41b213e9666499d8dec0dfbd7bbd /PCbuild
parent0eee1f588c9a6c3b15c0b9607357e2b0aadd808f (diff)
downloadcpython-33d144aa36ee8afb2f9a8c0b081e6f24591106ab.zip
cpython-33d144aa36ee8afb2f9a8c0b081e6f24591106ab.tar.gz
cpython-33d144aa36ee8afb2f9a8c0b081e6f24591106ab.tar.bz2
issue 9981
let make_buildinfo use a temporary directory on windows
Diffstat (limited to 'PCbuild')
-rw-r--r--PCbuild/make_buildinfo.c42
-rw-r--r--PCbuild/make_buildinfo.vcproj61
-rw-r--r--PCbuild/pythoncore.vcproj32
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="&quot;$(SolutionDir)make_buildinfo.exe&quot; Release"
+ CommandLine="&quot;$(SolutionDir)make_buildinfo.exe&quot; 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="&quot;$(SolutionDir)make_buildinfo.exe&quot; Release"
+ CommandLine="&quot;$(SolutionDir)make_buildinfo.exe&quot; 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="&quot;$(SolutionDir)make_buildinfo.exe&quot; Debug"
+ CommandLine="&quot;$(SolutionDir)make_buildinfo.exe&quot; 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="&quot;$(SolutionDir)make_buildinfo.exe&quot; Debug"
+ CommandLine="&quot;$(SolutionDir)make_buildinfo.exe&quot; 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="&quot;$(SolutionDir)make_buildinfo.exe&quot; Release"
+ CommandLine="&quot;$(SolutionDir)make_buildinfo.exe&quot; 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="&quot;$(SolutionDir)make_buildinfo.exe&quot; Release"
+ CommandLine="&quot;$(SolutionDir)make_buildinfo.exe&quot; 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="&quot;$(SolutionDir)make_buildinfo.exe&quot; Release"
+ CommandLine="&quot;$(SolutionDir)make_buildinfo.exe&quot; 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="&quot;$(SolutionDir)make_buildinfo.exe&quot; Release"
+ CommandLine="&quot;$(SolutionDir)make_buildinfo.exe&quot; Release $(IntDir)"
/>
<Tool
Name="VCLinkerTool"
- AdditionalDependencies="getbuildinfo.o"
+ AdditionalDependencies="$(IntDir)\getbuildinfo.o"
OutputFile="$(OutDir)\$(PyDllName).dll"
IgnoreDefaultLibraryNames="libc"
ProgramDatabaseFile="$(OutDir)$(PyDllName).pdb"