Backport of PCbuild9 fixes from py3k r59130

This commit is contained in:
Christian Heimes 2007-11-23 07:05:03 +00:00
parent eaa2c980ee
commit 2336111aef
5 changed files with 83 additions and 19 deletions

View File

@ -27,7 +27,7 @@
> >
<Tool <Tool
Name="VCPreBuildEventTool" Name="VCPreBuildEventTool"
CommandLine="python.exe build_ssl.py $(ConfigurationName) $(PlatformName) -a" CommandLine="cd &quot;$(SolutionDir)&quot;&#x0D;&#x0A;&quot;$(PythonExe)&quot; build_ssl.py Release $(PlatformName) -a"
/> />
<Tool <Tool
Name="VCCustomBuildTool" Name="VCCustomBuildTool"
@ -89,7 +89,7 @@
> >
<Tool <Tool
Name="VCPreBuildEventTool" Name="VCPreBuildEventTool"
CommandLine="python.exe build_ssl.py $(ConfigurationName) $(PlatformName) -a" CommandLine="cd &quot;$(SolutionDir)&quot;&#x0D;&#x0A;&quot;$(PythonExe)&quot; build_ssl.py Release $(PlatformName) -a"
/> />
<Tool <Tool
Name="VCCustomBuildTool" Name="VCCustomBuildTool"
@ -153,7 +153,7 @@
> >
<Tool <Tool
Name="VCPreBuildEventTool" Name="VCPreBuildEventTool"
CommandLine="cd $(SolutionDir)&#x0D;&#x0A;$(OutDir)python.exe build_ssl.py Release $(PlatformName) -a&#x0D;&#x0A;" CommandLine="cd &quot;$(SolutionDir)&quot;&#x0D;&#x0A;&quot;$(PythonExe)&quot; build_ssl.py Release $(PlatformName) -a"
/> />
<Tool <Tool
Name="VCCustomBuildTool" Name="VCCustomBuildTool"
@ -216,7 +216,7 @@
> >
<Tool <Tool
Name="VCPreBuildEventTool" Name="VCPreBuildEventTool"
CommandLine="cd $(SolutionDir)&#x0D;&#x0A;$(OutDir)python.exe build_ssl.py Release $(PlatformName) -a&#x0D;&#x0A;" CommandLine="cd &quot;$(SolutionDir)&quot;&#x0D;&#x0A;&quot;$(PythonExe)&quot; build_ssl.py Release $(PlatformName) -a"
/> />
<Tool <Tool
Name="VCCustomBuildTool" Name="VCCustomBuildTool"
@ -280,7 +280,7 @@
> >
<Tool <Tool
Name="VCPreBuildEventTool" Name="VCPreBuildEventTool"
CommandLine="cd $(SolutionDir)&#x0D;&#x0A;$(OutDir)python.exe build_ssl.py Release $(PlatformName) -a&#x0D;&#x0A;" CommandLine="cd &quot;$(SolutionDir)&quot;&#x0D;&#x0A;&quot;$(PythonExe)&quot; build_ssl.py Release $(PlatformName) -a"
/> />
<Tool <Tool
Name="VCCustomBuildTool" Name="VCCustomBuildTool"
@ -343,7 +343,7 @@
> >
<Tool <Tool
Name="VCPreBuildEventTool" Name="VCPreBuildEventTool"
CommandLine="cd $(SolutionDir)&#x0D;&#x0A;$(OutDir)python.exe build_ssl.py Release $(PlatformName) -a&#x0D;&#x0A;" CommandLine="cd &quot;$(SolutionDir)&quot;&#x0D;&#x0A;&quot;$(PythonExe)&quot; build_ssl.py Release $(PlatformName) -a"
/> />
<Tool <Tool
Name="VCCustomBuildTool" Name="VCCustomBuildTool"
@ -408,7 +408,7 @@
> >
<Tool <Tool
Name="VCPreBuildEventTool" Name="VCPreBuildEventTool"
CommandLine="cd $(SolutionDir)&#x0D;&#x0A;$(OutDir)python.exe build_ssl.py Release $(PlatformName) -a&#x0D;&#x0A;" CommandLine="cd &quot;$(SolutionDir)&quot;&#x0D;&#x0A;&quot;$(PythonExe)&quot; build_ssl.py Release $(PlatformName) -a"
/> />
<Tool <Tool
Name="VCCustomBuildTool" Name="VCCustomBuildTool"
@ -471,7 +471,7 @@
> >
<Tool <Tool
Name="VCPreBuildEventTool" Name="VCPreBuildEventTool"
CommandLine="cd $(SolutionDir)&#x0D;&#x0A;$(OutDir)python.exe build_ssl.py Release $(PlatformName) -a&#x0D;&#x0A;" CommandLine="cd &quot;$(SolutionDir)&quot;&#x0D;&#x0A;&quot;$(PythonExe)&quot; build_ssl.py Release $(PlatformName) -a"
/> />
<Tool <Tool
Name="VCCustomBuildTool" Name="VCCustomBuildTool"

View File

@ -13,6 +13,16 @@
# it should configure and build SSL, then build the _ssl and _hashlib # it should configure and build SSL, then build the _ssl and _hashlib
# Python extensions without intervention. # Python extensions without intervention.
# Modified by Christian Heimes
# Now this script supports pre-generated makefiles and assembly files.
# Developers don't need an installation of Perl anymore to build Python. A svn
# checkout from our svn repository is enough.
#
# In Order to create the files in the case of an update you still need Perl.
# Run build_ssl in this order:
# python.exe build_ssl.py Release x64
# python.exe build_ssl.py Release Win32
import os, sys, re, shutil import os, sys, re, shutil
# Find all "foo.exe" files on the PATH. # Find all "foo.exe" files on the PATH.
@ -51,7 +61,6 @@ def find_working_perl(perls):
else: else:
print(" NO perl interpreters were found on this machine at all!") print(" NO perl interpreters were found on this machine at all!")
print(" Please install ActivePerl and ensure it appears on your path") print(" Please install ActivePerl and ensure it appears on your path")
print("The Python SSL module was not built")
return None return None
# Locate the best SSL directory given a few roots to look into. # Locate the best SSL directory given a few roots to look into.
@ -86,8 +95,8 @@ def find_best_ssl_dir(sources):
sys.stdout.flush() sys.stdout.flush()
return best_name return best_name
def fix_makefile(makefile, m32): def create_makefile64(makefile, m32):
"""Fix makefile for 64bit """Create and fix makefile for 64bit
Replace 32 with 64bit directories Replace 32 with 64bit directories
""" """
@ -107,6 +116,23 @@ def fix_makefile(makefile, m32):
fout.write(line) fout.write(line)
os.unlink(m32) os.unlink(m32)
def fix_makefile(makefile):
"""Fix some stuff in all makefiles
"""
if not os.path.isfile(makefile):
return
with open(makefile) as fin:
lines = fin.readlines()
with open(makefile, 'w') as fout:
for line in lines:
if line.startswith("PERL="):
continue
if line.startswith("CP="):
line = "CP=copy\n"
if line.startswith("MKDIR="):
line = "MKDIR=mkdir\n"
fout.write(line)
def run_configure(configure, do_script): def run_configure(configure, do_script):
print("perl Configure "+configure) print("perl Configure "+configure)
os.system("perl Configure "+configure) os.system("perl Configure "+configure)
@ -146,7 +172,7 @@ def main():
perls = find_all_on_path("perl.exe", ["\\perl\\bin", "C:\\perl\\bin"]) perls = find_all_on_path("perl.exe", ["\\perl\\bin", "C:\\perl\\bin"])
perl = find_working_perl(perls) perl = find_working_perl(perls)
if perl is None: if perl is None:
sys.exit(1) print("No Perl installation was found. Existing Makefiles are used.")
print("Found a working perl at '%s'" % (perl,)) print("Found a working perl at '%s'" % (perl,))
sys.stdout.flush() sys.stdout.flush()
@ -166,6 +192,10 @@ def main():
# Due to a bug in this script, the makefile sometimes ended up empty # Due to a bug in this script, the makefile sometimes ended up empty
# Force a regeneration if it is. # Force a regeneration if it is.
if not os.path.isfile(makefile) or os.path.getsize(makefile)==0: if not os.path.isfile(makefile) or os.path.getsize(makefile)==0:
if perl is None:
print("Perl is required to build the makefiles!")
sys.exit(1)
print("Creating the makefiles...") print("Creating the makefiles...")
sys.stdout.flush() sys.stdout.flush()
# Put our working Perl at the front of our path # Put our working Perl at the front of our path
@ -173,16 +203,31 @@ def main():
os.pathsep + \ os.pathsep + \
os.environ["PATH"] os.environ["PATH"]
run_configure(configure, do_script) run_configure(configure, do_script)
if arch=="x86" and debug: if debug:
# the do_masm script in openssl doesn't generate a debug print("OpenSSL debug builds aren't supported.")
# build makefile so we generate it here: #if arch=="x86" and debug:
os.system("perl util\mk1mf.pl debug "+configure+" >"+makefile) # # the do_masm script in openssl doesn't generate a debug
# # build makefile so we generate it here:
# os.system("perl util\mk1mf.pl debug "+configure+" >"+makefile)
if arch == "amd64": if arch == "amd64":
fix_makefile(makefile, m32) create_makefile64(makefile, m32)
fix_makefile(makefile)
shutil.copy(r"crypto\buildinf.h", r"crypto\buildinf_%s.h" % arch)
shutil.copy(r"crypto\opensslconf.h", r"crypto\opensslconf_%s.h" % arch)
# Now run make. # Now run make.
makeCommand = "nmake /nologo PERL=\"%s\" -f \"%s\"" %(perl, makefile) if arch == "amd64":
rc = os.system(r"ml64 -c -Foms\uptable.obj ms\uptable.asm")
if rc:
print("ml64 assembler has failed.")
sys.exit(rc)
shutil.copy(r"crypto\buildinf_%s.h" % arch, r"crypto\buildinf.h")
shutil.copy(r"crypto\opensslconf_%s.h" % arch, r"crypto\opensslconf.h")
#makeCommand = "nmake /nologo PERL=\"%s\" -f \"%s\"" %(perl, makefile)
makeCommand = "nmake /nologo -f \"%s\"" % makefile
print("Executing ssl makefiles:", makeCommand) print("Executing ssl makefiles:", makeCommand)
sys.stdout.flush() sys.stdout.flush()
rc = os.system(makeCommand) rc = os.system(makeCommand)

View File

@ -8,10 +8,21 @@
> >
<Tool <Tool
Name="VCCLCompilerTool" Name="VCCLCompilerTool"
Optimization="3"
InlineFunctionExpansion="2"
EnableIntrinsicFunctions="true"
FavorSizeOrSpeed="1"
OmitFramePointers="true"
EnableFiberSafeOptimizations="false"
WholeProgramOptimization="true" WholeProgramOptimization="true"
StringPooling="true"
ExceptionHandling="0"
BufferSecurityCheck="false"
/> />
<Tool <Tool
Name="VCLinkerTool" Name="VCLinkerTool"
OptimizeReferences="2"
EnableCOMDATFolding="2"
LinkTimeCodeGeneration="2" LinkTimeCodeGeneration="2"
ProfileGuidedDatabase="$(SolutionDir)$(PlatformName)-pgi\$(TargetName).pgd" ProfileGuidedDatabase="$(SolutionDir)$(PlatformName)-pgi\$(TargetName).pgd"
ImportLibrary="$(OutDirPGI)\$(TargetName).lib" ImportLibrary="$(OutDirPGI)\$(TargetName).lib"

View File

@ -20,4 +20,8 @@
Name="VCPostBuildEventTool" Name="VCPostBuildEventTool"
CommandLine="" CommandLine=""
/> />
<UserMacro
Name="PythonExe"
Value="$(OutDir)python.exe"
/>
</VisualStudioPropertySheet> </VisualStudioPropertySheet>

View File

@ -24,4 +24,8 @@
Name="VCPostBuildEventTool" Name="VCPostBuildEventTool"
CommandLine="" CommandLine=""
/> />
<UserMacro
Name="PythonExe"
Value="$(OutDir)python_d.exe"
/>
</VisualStudioPropertySheet> </VisualStudioPropertySheet>