]> granicus.if.org Git - python/commitdiff
Extend build_ssl to Win64, using VSExtComp.
authorMartin v. Löwis <martin@v.loewis.de>
Fri, 14 Jul 2006 09:58:55 +0000 (09:58 +0000)
committerMartin v. Löwis <martin@v.loewis.de>
Fri, 14 Jul 2006 09:58:55 +0000 (09:58 +0000)
Misc/NEWS
PCbuild/_ssl.vcproj
PCbuild/build_ssl.bat [new file with mode: 0644]
PCbuild/build_ssl.py
PCbuild/readme.txt

index 7820213ab6fc2e2ac90a005d20a73bc4359cd5e7..b07bb4e3c7f6d2148556f49c07116273d6e36162 100644 (file)
--- 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.
index 3ebedbd1658ed93fb15ed2dde8dc5d66802a28c0..3395660a05b1031fab2714e3336fcfab61ef114e 100644 (file)
@@ -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 (file)
index 0000000..14f4871
--- /dev/null
@@ -0,0 +1,4 @@
+@echo off\r
+if not defined HOST_PYTHON set HOST_PYTHON=python\r
+%HOST_PYTHON% build_ssl.py %1 %2\r
+\r
index 8f485a258097c5bff1860fbfc2d5b276126c93aa..7b4c2efc958105f43bb7f781831c5da7e44ffa13 100644 (file)
@@ -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.
index 46c3dde233d39a409779f9b45bff6b6a0ba94c10..d333d280a35afae2360e030bbdcea781fc95b069 100644 (file)
@@ -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
 ------------------