diff options
author | Martin v. Löwis <martin@v.loewis.de> | 2006-07-14 09:58:55 (GMT) |
---|---|---|
committer | Martin v. Löwis <martin@v.loewis.de> | 2006-07-14 09:58:55 (GMT) |
commit | d73168d954f03dea03efc51552a0ed6305333e30 (patch) | |
tree | 3888b293e5bf43c855ec2d7bba9ff2abd76f13f8 /PCbuild | |
parent | eda87127a892cb760f64d4785581cbb405b320f5 (diff) | |
download | cpython-d73168d954f03dea03efc51552a0ed6305333e30.zip cpython-d73168d954f03dea03efc51552a0ed6305333e30.tar.gz cpython-d73168d954f03dea03efc51552a0ed6305333e30.tar.bz2 |
Extend build_ssl to Win64, using VSExtComp.
Diffstat (limited to 'PCbuild')
-rw-r--r-- | PCbuild/_ssl.vcproj | 18 | ||||
-rw-r--r-- | PCbuild/build_ssl.bat | 4 | ||||
-rw-r--r-- | PCbuild/build_ssl.py | 97 | ||||
-rw-r--r-- | PCbuild/readme.txt | 2 |
4 files changed, 76 insertions, 45 deletions
diff --git a/PCbuild/_ssl.vcproj b/PCbuild/_ssl.vcproj index 3ebedbd..3395660 100644 --- a/PCbuild/_ssl.vcproj +++ b/PCbuild/_ssl.vcproj @@ -21,8 +21,8 @@ ATLMinimizesCRunTimeLibraryUsage="FALSE"> <Tool Name="VCNMakeTool" - BuildCommandLine="python build_ssl.py" - ReBuildCommandLine="python build_ssl.py -a" + BuildCommandLine="build_ssl.bat $(ConfigurationName)" + ReBuildCommandLine="build_ssl.bat -a $(ConfigurationName)" CleanCommandLine="echo Nothing to do" Output="_ssl.pyd"/> </Configuration> @@ -35,8 +35,8 @@ ATLMinimizesCRunTimeLibraryUsage="FALSE"> <Tool Name="VCNMakeTool" - BuildCommandLine="python_d -u build_ssl.py -d" - ReBuildCommandLine="python_d -u build_ssl.py -d -a" + BuildCommandLine="build_ssl.bat $(ConfigurationName)" + ReBuildCommandLine="build_ssl.bat -a $(ConfigurationName)" CleanCommandLine="echo Nothing to do" Output="_ssl_d.pyd"/> </Configuration> @@ -49,8 +49,9 @@ ATLMinimizesCRunTimeLibraryUsage="FALSE"> <Tool Name="VCNMakeTool" - BuildCommandLine="python build_ssl.py" - ReBuildCommandLine="python build_ssl.py -a" + BuildCommandLine="build_ssl.bat $(ConfigurationName)" + ReBuildCommandLine="build_ssl.bat -a $(ConfigurationName)" + CleanCommandLine="echo Nothing to do" Output="_ssl.pyd"/> </Configuration> <Configuration @@ -62,8 +63,9 @@ ATLMinimizesCRunTimeLibraryUsage="FALSE"> <Tool Name="VCNMakeTool" - BuildCommandLine="python build_ssl.py" - ReBuildCommandLine="python build_ssl.py -a" + BuildCommandLine="build_ssl.bat $(ConfigurationName)" + ReBuildCommandLine="build_ssl.bat -a $(ConfigurationName)" + CleanCommandLine="echo Nothing to do" Output="_ssl.pyd"/> </Configuration> </Configurations> diff --git a/PCbuild/build_ssl.bat b/PCbuild/build_ssl.bat new file mode 100644 index 0000000..14f4871 --- /dev/null +++ b/PCbuild/build_ssl.bat @@ -0,0 +1,4 @@ +@echo off
+if not defined HOST_PYTHON set HOST_PYTHON=python
+%HOST_PYTHON% build_ssl.py %1 %2
+
diff --git a/PCbuild/build_ssl.py b/PCbuild/build_ssl.py index 8f485a2..7b4c2ef 100644 --- a/PCbuild/build_ssl.py +++ b/PCbuild/build_ssl.py @@ -84,9 +84,59 @@ def find_best_ssl_dir(sources): print "Could not find an SSL directory in '%s'" % (sources,) return best_name +def run_32all_py(): + # ms\32all.bat will reconfigure OpenSSL and then try to build + # all outputs (debug/nondebug/dll/lib). So we filter the file + # to exclude any "nmake" commands and then execute. + tempname = "ms\\32all_py.bat" + + in_bat = open("ms\\32all.bat") + temp_bat = open(tempname,"w") + while 1: + cmd = in_bat.readline() + print 'cmd', repr(cmd) + if not cmd: break + if cmd.strip()[:5].lower() == "nmake": + continue + temp_bat.write(cmd) + in_bat.close() + temp_bat.close() + os.system(tempname) + try: + os.remove(tempname) + except: + pass + +def run_configure(configure, do_script): + os.system("perl Configure "+configure) + os.system(do_script) + def main(): - debug = "-d" in sys.argv build_all = "-a" in sys.argv + if sys.argv[-1] == "Release": + arch = "x86" + debug = False + configure = "VC-WIN32" + makefile = "32.mak" + elif sys.argv[-1] == "Debug": + arch = "x86" + debug = True + configure = "VC-WIN32" + makefile="d32.mak" + elif sys.argv[-1] == "ReleaseItanium": + arch = "ia64" + debug = False + configure = "VC-WIN64I" + do_script = "ms\\do_win64i" + makefile = "ms\\nt.mak" + os.environ["VSEXTCOMP_USECL"] = "MS_ITANIUM" + elif sys.argv[-1] == "ReleaseAMD64": + arch="amd64" + debug=False + configure = "VC-WIN64A" + do_script = "ms\\do_win64a" + makefile = "ms\\nt.mak" + os.environ["VSEXTCOMP_USECL"] = "MS_OPTERON" make_flags = "" if build_all: make_flags = "-a" @@ -107,49 +157,24 @@ def main(): try: os.chdir(ssl_dir) # If the ssl makefiles do not exist, we invoke Perl to generate them. - if not os.path.isfile(os.path.join(ssl_dir, "32.mak")) or \ - not os.path.isfile(os.path.join(ssl_dir, "d32.mak")): + if not os.path.isfile(makefile): print "Creating the makefiles..." # Put our working Perl at the front of our path os.environ["PATH"] = os.path.split(perl)[0] + \ os.pathsep + \ os.environ["PATH"] - # ms\32all.bat will reconfigure OpenSSL and then try to build - # all outputs (debug/nondebug/dll/lib). So we filter the file - # to exclude any "nmake" commands and then execute. - tempname = "ms\\32all_py.bat" - - in_bat = open("ms\\32all.bat") - temp_bat = open(tempname,"w") - while 1: - cmd = in_bat.readline() - print 'cmd', repr(cmd) - if not cmd: break - if cmd.strip()[:5].lower() == "nmake": - continue - temp_bat.write(cmd) - in_bat.close() - temp_bat.close() - os.system(tempname) - try: - os.remove(tempname) - except: - pass + if arch=="x86": + run_32all_py() + else: + run_configure(configure, do_script) # Now run make. print "Executing nmake over the ssl makefiles..." - if debug: - rc = os.system("nmake /nologo -f d32.mak") - if rc: - print "Executing d32.mak failed" - print rc - sys.exit(rc) - else: - rc = os.system("nmake /nologo -f 32.mak") - if rc: - print "Executing 32.mak failed" - print rc - sys.exit(rc) + rc = os.system("nmake /nologo -f "+makefile) + if rc: + print "Executing d32.mak failed" + print rc + sys.exit(rc) finally: os.chdir(old_cd) # And finally, we can build the _ssl module itself for Python. diff --git a/PCbuild/readme.txt b/PCbuild/readme.txt index 46c3dde..d333d28 100644 --- a/PCbuild/readme.txt +++ b/PCbuild/readme.txt @@ -264,7 +264,7 @@ SDK, in particular the 64-bit support. This includes an Itanium compiler In addition, you need the Visual Studio plugin for external C compilers, from http://sf.net/projects/vsextcomp. The plugin will wrap cl.exe, to locate the proper target compiler, and convert compiler options -accordingly. The project files require atleast version 0.8. +accordingly. The project files require atleast version 0.9. Building for AMD64 ------------------ |