summaryrefslogtreecommitdiffstats
path: root/PCbuild
diff options
context:
space:
mode:
authorMartin v. Löwis <martin@v.loewis.de>2006-07-14 09:58:55 (GMT)
committerMartin v. Löwis <martin@v.loewis.de>2006-07-14 09:58:55 (GMT)
commitd73168d954f03dea03efc51552a0ed6305333e30 (patch)
tree3888b293e5bf43c855ec2d7bba9ff2abd76f13f8 /PCbuild
parenteda87127a892cb760f64d4785581cbb405b320f5 (diff)
downloadcpython-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.vcproj18
-rw-r--r--PCbuild/build_ssl.bat4
-rw-r--r--PCbuild/build_ssl.py97
-rw-r--r--PCbuild/readme.txt2
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
------------------