symbian-qemu-0.9.1-12/python-2.6.1/PCbuild/make_buildinfo.c
changeset 1 2fb8b9db1c86
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/symbian-qemu-0.9.1-12/python-2.6.1/PCbuild/make_buildinfo.c	Fri Jul 31 15:01:17 2009 +0100
@@ -0,0 +1,94 @@
+#include <windows.h>
+#include <sys/types.h>
+#include <sys/stat.h>
+#include <stdio.h>
+
+#define CMD_SIZE 500
+
+/* This file creates the getbuildinfo.o object, by first
+   invoking subwcrev.exe (if found), and then invoking cl.exe.
+   As a side effect, it might generate PCBuild\getbuildinfo2.c
+   also. If this isn't a subversion checkout, or subwcrev isn't
+   found, it compiles ..\\Modules\\getbuildinfo.c instead.
+
+   Currently, subwcrev.exe is found from the registry entries
+   of TortoiseSVN.
+
+   No attempt is made to place getbuildinfo.o into the proper
+   binary directory. This isn't necessary, as this tool is
+   invoked as a pre-link step for pythoncore, so that overwrites
+   any previous getbuildinfo.o.
+
+*/
+
+int make_buildinfo2()
+{
+	struct _stat st;
+	HKEY hTortoise;
+	char command[CMD_SIZE+1];
+	DWORD type, size;
+	if (_stat(".svn", &st) < 0)
+		return 0;
+	/* Allow suppression of subwcrev.exe invocation if a no_subwcrev file is present. */
+	if (_stat("no_subwcrev", &st) == 0)
+		return 0;
+	if (RegOpenKey(HKEY_LOCAL_MACHINE, "Software\\TortoiseSVN", &hTortoise) != ERROR_SUCCESS &&
+	    RegOpenKey(HKEY_CURRENT_USER, "Software\\TortoiseSVN", &hTortoise) != ERROR_SUCCESS)
+		/* Tortoise not installed */
+		return 0;
+	command[0] = '"';  /* quote the path to the executable */
+	size = sizeof(command) - 1;
+	if (RegQueryValueEx(hTortoise, "Directory", 0, &type, command+1, &size) != ERROR_SUCCESS ||
+	    type != REG_SZ)
+		/* Registry corrupted */
+		return 0;
+	strcat_s(command, CMD_SIZE, "bin\\subwcrev.exe");
+	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");
+	puts(command); fflush(stdout);
+	if (system(command) < 0)
+		return 0;
+	return 1;
+}
+
+int main(int argc, char*argv[])
+{
+	char command[500] = "cl.exe -c -D_WIN32 -DUSE_DL_EXPORT -D_WINDOWS -DWIN32 -D_WINDLL ";
+	int do_unlink, result;
+	if (argc != 2) {
+		fprintf(stderr, "make_buildinfo $(ConfigurationName)\n");
+		return EXIT_FAILURE;
+	}
+	if (strcmp(argv[1], "Release") == 0) {
+		strcat_s(command, CMD_SIZE, "-MD ");
+	}
+	else if (strcmp(argv[1], "Debug") == 0) {
+		strcat_s(command, CMD_SIZE, "-D_DEBUG -MDd ");
+	}
+	else if (strcmp(argv[1], "ReleaseItanium") == 0) {
+		strcat_s(command, CMD_SIZE, "-MD /USECL:MS_ITANIUM ");
+	}
+	else if (strcmp(argv[1], "ReleaseAMD64") == 0) {
+		strcat_s(command, CMD_SIZE, "-MD ");
+		strcat_s(command, CMD_SIZE, "-MD /USECL:MS_OPTERON ");
+	}
+	else {
+		fprintf(stderr, "unsupported configuration %s\n", argv[1]);
+		return EXIT_FAILURE;
+	}
+
+	if ((do_unlink = make_buildinfo2()))
+		strcat_s(command, CMD_SIZE, "getbuildinfo2.c -DSUBWCREV ");
+	else
+		strcat_s(command, CMD_SIZE, "..\\Modules\\getbuildinfo.c");
+	strcat_s(command, CMD_SIZE, " -Fogetbuildinfo.o -I..\\Include -I..\\PC");
+	puts(command); fflush(stdout);
+	result = system(command);
+	if (do_unlink)
+		_unlink("getbuildinfo2.c");
+	if (result < 0)
+		return EXIT_FAILURE;
+	return 0;
+}
\ No newline at end of file