diff options
author | Christian Heimes <christian@cheimes.de> | 2007-11-19 08:36:32 (GMT) |
---|---|---|
committer | Christian Heimes <christian@cheimes.de> | 2007-11-19 08:36:32 (GMT) |
commit | 97e8029d0bb88823b1b6c9d302bbaf2e357dbc7f (patch) | |
tree | 1609aec6e81c4c3eae253dd5a1cf4bf4f5703b29 /PCbuild9/build_ssl.py | |
parent | a6b46357f652e620a4072ced75abd664be632210 (diff) | |
download | cpython-97e8029d0bb88823b1b6c9d302bbaf2e357dbc7f.zip cpython-97e8029d0bb88823b1b6c9d302bbaf2e357dbc7f.tar.gz cpython-97e8029d0bb88823b1b6c9d302bbaf2e357dbc7f.tar.bz2 |
I've spend some time to automate more steps of the build process. Now bzip2, bsddb, sqlite and openssl are automatically build by prelink steps.
I had to use some tricks to build openssl for 32 and 64bit CPUs in two separate build dirs.
Diffstat (limited to 'PCbuild9/build_ssl.py')
-rw-r--r-- | PCbuild9/build_ssl.py | 63 |
1 files changed, 45 insertions, 18 deletions
diff --git a/PCbuild9/build_ssl.py b/PCbuild9/build_ssl.py index d9477de..68e26d9 100644 --- a/PCbuild9/build_ssl.py +++ b/PCbuild9/build_ssl.py @@ -13,7 +13,7 @@ # it should configure and build SSL, then build the _ssl and _hashlib # Python extensions without intervention. -import os, sys, re +import os, sys, re, shutil # Find all "foo.exe" files on the PATH. def find_all_on_path(filename, extras = None): @@ -86,38 +86,58 @@ def find_best_ssl_dir(sources): sys.stdout.flush() return best_name +def fix_makefile(makefile, m32): + """Fix makefile for 64bit + + Replace 32 with 64bit directories + """ + if not os.path.isfile(m32): + return + with open(m32) as fin: + with open(makefile, 'w') as fout: + for line in fin: + line = line.replace("=tmp32", "=tmp64") + line = line.replace("=out32", "=out64") + line = line.replace("=inc32", "=inc64") + # force 64 bit machine + line = line.replace("MKLIB=lib", "MKLIB=lib /MACHINE:X64") + line = line.replace("LFLAGS=", "LFLAGS=/MACHINE:X64 ") + # don't link against the lib on 64bit systems + line = line.replace("bufferoverflowu.lib", "") + fout.write(line) + os.unlink(m32) + def run_configure(configure, do_script): + print("perl Configure "+configure) os.system("perl Configure "+configure) + print(do_script) os.system(do_script) def main(): build_all = "-a" in sys.argv if sys.argv[1] == "Release": - arch = "x86" debug = False - configure = "VC-WIN32" - do_script = "ms\\do_nasm" - makefile = "ms\\nt.mak" elif sys.argv[1] == "Debug": - arch = "x86" debug = True + else: + raise ValueError(str(sys.argv)) + + if sys.argv[2] == "Win32": + arch = "x86" configure = "VC-WIN32" do_script = "ms\\do_nasm" - makefile="ms\\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": + makefile="ms\\nt.mak" + m32 = makefile + elif sys.argv[2] == "x64": arch="amd64" - debug=False configure = "VC-WIN64A" do_script = "ms\\do_win64a" - makefile = "ms\\nt.mak" - os.environ["VSEXTCOMP_USECL"] = "MS_OPTERON" + makefile = "ms\\nt64.mak" + m32 = makefile.replace('64', '') + #os.environ["VSEXTCOMP_USECL"] = "MS_OPTERON" + else: + raise ValueError(str(sys.argv)) + make_flags = "" if build_all: make_flags = "-a" @@ -138,6 +158,10 @@ def main(): old_cd = os.getcwd() try: os.chdir(ssl_dir) + # rebuild makefile when we do the role over from 32 to 64 build + if arch == "amd64" and os.path.isfile(m32) and not os.path.isfile(makefile): + os.unlink(m32) + # If the ssl makefiles do not exist, we invoke Perl to generate them. # Due to a bug in this script, the makefile sometimes ended up empty # Force a regeneration if it is. @@ -154,6 +178,9 @@ def main(): # build makefile so we generate it here: os.system("perl util\mk1mf.pl debug "+configure+" >"+makefile) + if arch == "amd64": + fix_makefile(makefile, m32) + # Now run make. makeCommand = "nmake /nologo PERL=\"%s\" -f \"%s\"" %(perl, makefile) print("Executing ssl makefiles:", makeCommand) |