]> granicus.if.org Git - python/commitdiff
Add missing make_buildinfo.c.
authorMartin v. Löwis <martin@v.loewis.de>
Wed, 18 Jan 2006 19:18:51 +0000 (19:18 +0000)
committerMartin v. Löwis <martin@v.loewis.de>
Wed, 18 Jan 2006 19:18:51 +0000 (19:18 +0000)
PCbuild/make_buildinfo.c [new file with mode: 0644]

diff --git a/PCbuild/make_buildinfo.c b/PCbuild/make_buildinfo.c
new file mode 100644 (file)
index 0000000..ca2db9f
--- /dev/null
@@ -0,0 +1,87 @@
+#include <windows.h>\r
+#include <sys/types.h>\r
+#include <sys/stat.h>\r
+#include <stdio.h>\r
+\r
+/* This file creates the getbuildinfo.o object, by first\r
+   invoking subwcrev.exe (if found), and then invoking cl.exe.\r
+   As a side effect, it might generate PCBuild\getbuildinfo2.c\r
+   also. If this isn't a subversion checkout, or subwcrev isn't\r
+   found, it compiles ..\\Modules\\getbuildinfo.c instead.\r
+\r
+   Currently, subwcrev.exe is found from the registry entries\r
+   of TortoiseSVN.\r
+\r
+   No attempt is made to place getbuildinfo.o into the proper\r
+   binary directory. This isn't necessary, as this tool is\r
+   invoked as a pre-link step for pythoncore, so that overwrites\r
+   any previous getbuildinfo.o.\r
+\r
+*/\r
+\r
+int make_buildinfo2()\r
+{\r
+       struct _stat st;\r
+       HKEY hTortoise;\r
+       char command[500];\r
+       DWORD type, size;\r
+       if (_stat(".svn", &st) < 0)\r
+               return 0;\r
+       if (RegOpenKey(HKEY_LOCAL_MACHINE, "Software\\TortoiseSVN", &hTortoise) != ERROR_SUCCESS &&\r
+           RegOpenKey(HKEY_CURRENT_USER, "Software\\TortoiseSVN", &hTortoise) != ERROR_SUCCESS)\r
+               /* Tortoise not installed */\r
+               return 0;\r
+       size = sizeof(command);\r
+       if (RegQueryValueEx(hTortoise, "Directory", 0, &type,  command, &size) != ERROR_SUCCESS ||\r
+           type != REG_SZ)\r
+               /* Registry corrupted */\r
+               return 0;\r
+       strcat(command, "bin\\subwcrev.exe");\r
+       if (_stat(command, &st) < 0)\r
+               /* subwcrev.exe not part of the release */\r
+               return 0;\r
+       strcat(command, " .. ..\\Modules\\getbuildinfo.c getbuildinfo2.c");\r
+       puts(command); fflush(stdout);\r
+       if (system(command) < 0)\r
+               return 0;\r
+       return 1;\r
+}\r
+\r
+int main(int argc, char*argv[])\r
+{\r
+       char command[500] = "cl.exe -c -D_WIN32 -DUSE_DL_EXPORT -D_WINDOWS -DWIN32 -D_WINDLL ";\r
+       int do_unlink, result;\r
+       if (argc != 2) {\r
+               fprintf(stderr, "make_buildinfo $(ConfigurationName)\n");\r
+               return EXIT_FAILURE;\r
+       }\r
+       if (strcmp(argv[1], "Release") == 0) {\r
+               strcat(command, "-MD ");\r
+               //strcpy(targetdir, "x86-temp-debug");\r
+       }\r
+       else if (strcmp(argv[1], "Debug") == 0) {\r
+               strcat(command, "-D_DEBUG -MDd ");\r
+               //strcpy(targetdir, "x86-temp-release");\r
+       }\r
+       else if (strcmp(argv[1], "ReleaseItanium")) {\r
+               strcat(command, "-MD ");\r
+               //strcpy(targetdir, "ia64-temp-release");\r
+       }\r
+       else {\r
+               fprintf(stderr, "unsupported configuration %s\n", argv[1]);\r
+               return EXIT_FAILURE;\r
+       }\r
+\r
+       if ((do_unlink = make_buildinfo2()))\r
+               strcat(command, "getbuildinfo2.c -DSUBWCREV ");\r
+       else\r
+               strcat(command, "..\\Modules\\getbuildinfo.c");\r
+       strcat(command, " -Fogetbuildinfo.o -I..\\Include -I..\\PC");\r
+       puts(command); fflush(stdout);\r
+       result = system(command);\r
+       if (do_unlink)\r
+               unlink("getbuildinfo2.c");\r
+       if (result < 0)\r
+               return EXIT_FAILURE;\r
+       return 0;\r
+}
\ No newline at end of file