From d73168d954f03dea03efc51552a0ed6305333e30 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Martin=20v=2E=20L=C3=B6wis?= Date: Fri, 14 Jul 2006 09:58:55 +0000 Subject: Extend build_ssl to Win64, using VSExtComp. --- Misc/NEWS | 2 ++ PCbuild/_ssl.vcproj | 18 +++++----- PCbuild/build_ssl.bat | 4 +++ PCbuild/build_ssl.py | 97 ++++++++++++++++++++++++++++++++------------------- PCbuild/readme.txt | 2 +- 5 files changed, 78 insertions(+), 45 deletions(-) create mode 100644 PCbuild/build_ssl.bat diff --git a/Misc/NEWS b/Misc/NEWS index 7820213..b07bb4e 100644 --- a/Misc/NEWS +++ b/Misc/NEWS @@ -170,6 +170,8 @@ Extension Modules Build ----- +- Automate Windows build process for the Win64 SSL module. + - 'configure' now detects the zlib library the same way as distutils. Previously, the slight difference could cause compilation errors of the 'zlib' module on systems with more than one version of zlib. 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"> @@ -35,8 +35,8 @@ ATLMinimizesCRunTimeLibraryUsage="FALSE"> @@ -49,8 +49,9 @@ ATLMinimizesCRunTimeLibraryUsage="FALSE"> 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 ------------------ -- cgit v0.12