makepanda: Bring back --universal flag for Universal 2

This commit is contained in:
rdb 2020-12-18 12:29:04 +01:00
parent 79714392cb
commit ce5379a0ad

View File

@ -59,6 +59,7 @@ RPMRELEASE="1"
GIT_COMMIT=None
MAJOR_VERSION=None
OSXTARGET=None
OSX_ARCHS=[]
global STRDXSDKVERSION, BOOUSEINTELCOMPILER
STRDXSDKVERSION = 'default'
WINDOWS_SDK = None
@ -133,6 +134,7 @@ def usage(problem):
print(" --outputdir X (use the specified directory instead of 'built')")
print(" --threads N (use the multithreaded build system. see manual)")
print(" --osxtarget N (the macOS version number to build for (macOS only))")
print(" --universal (build universal binaries (macOS 11.0+ only))")
print(" --override \"O=V\" (override dtool_config/prc option value)")
print(" --static (builds libraries for static linking)")
print(" --target X (experimental cross-compilation (android only))")
@ -160,7 +162,7 @@ def usage(problem):
def parseopts(args):
global INSTALLER,WHEEL,RUNTESTS,GENMAN,DISTRIBUTOR,VERSION
global COMPRESSOR,THREADCOUNT,OSXTARGET
global COMPRESSOR,THREADCOUNT,OSXTARGET,OSX_ARCHS
global DEBVERSION,WHLVERSION,RPMRELEASE,GIT_COMMIT
global STRDXSDKVERSION, WINDOWS_SDK, MSVC_VERSION, BOOUSEINTELCOMPILER
global COPY_PYTHON
@ -168,7 +170,7 @@ def parseopts(args):
# Options for which to display a deprecation warning.
removedopts = [
"use-touchinput", "no-touchinput", "no-awesomium", "no-directscripts",
"no-carbon", "universal", "no-physx", "no-rocket", "host"
"no-carbon", "no-physx", "no-rocket", "host"
]
# All recognized options.
@ -178,7 +180,7 @@ def parseopts(args):
"version=","lzma","no-python","threads=","outputdir=","override=",
"static","debversion=","rpmrelease=","p3dsuffix=","rtdist-version=",
"directx-sdk=", "windows-sdk=", "msvc-version=", "clean", "use-icl",
"target=", "arch=", "git-commit=", "no-copy-python",
"universal", "target=", "arch=", "git-commit=", "no-copy-python",
"cggl-incdir=", "cggl-libdir=",
] + removedopts
@ -186,6 +188,7 @@ def parseopts(args):
optimize = ""
target = None
target_arch = None
universal = False
clean_build = False
for pkg in PkgListGet():
longopts.append("use-" + pkg.lower())
@ -209,6 +212,7 @@ def parseopts(args):
elif (option=="--threads"): THREADCOUNT=int(value)
elif (option=="--outputdir"): SetOutputDir(value.strip())
elif (option=="--osxtarget"): OSXTARGET=value.strip()
elif (option=="--universal"): universal = True
elif (option=="--target"): target = value.strip()
elif (option=="--arch"): target_arch = value.strip()
elif (option=="--nocolor"): DisableColors()
@ -292,6 +296,24 @@ def parseopts(args):
if target is not None or target_arch is not None:
SetTarget(target, target_arch)
if universal:
if target_arch:
exit("--universal is incompatible with --arch")
if OSXTARGET:
osxver = OSXTARGET
else:
maj, min = platform.mac_ver()[0].split('.')[:2]
osxver = int(maj), int(min)
OSX_ARCHS.append("x86_64")
if osxver >= (11, 0):
OSX_ARCHS.append("arm64")
elif HasTargetArch():
OSX_ARCHS.append(GetTargetArch())
try:
SetOptimize(int(optimize))
assert GetOptimize() in [1, 2, 3, 4]
@ -390,7 +412,26 @@ elif target == 'darwin':
if osxver < (10, 9):
osxver = (10, 9)
arch_tag = GetTargetArch()
arch_tag = None
if not OSX_ARCHS:
arch_tag = GetTargetArch()
elif len(OSX_ARCHS) == 1:
arch_tag = OSX_ARCHS[0]
elif frozenset(OSX_ARCHS) == frozenset(('i386', 'ppc')):
arch_tag = 'fat'
elif frozenset(OSX_ARCHS) == frozenset(('x86_64', 'i386')):
arch_tag = 'intel'
elif frozenset(OSX_ARCHS) == frozenset(('x86_64', 'ppc64')):
arch_tag = 'fat64'
elif frozenset(OSX_ARCHS) == frozenset(('x86_64', 'i386', 'ppc')):
arch_tag = 'fat32'
elif frozenset(OSX_ARCHS) == frozenset(('x86_64', 'i386', 'ppc64', 'ppc')):
arch_tag = 'universal'
elif frozenset(OSX_ARCHS) == frozenset(('x86_64', 'arm64')):
arch_tag = 'universal2'
else:
raise RuntimeError('No arch tag for arch combination %s' % OSX_ARCHS)
PLATFORM = 'macosx-{0}.{1}-{2}'.format(osxver[0], osxver[1], arch_tag)
elif target == 'linux' and (os.path.isfile("/lib/libc-2.5.so") or os.path.isfile("/lib64/libc-2.5.so")) and os.path.isdir("/opt/python"):
@ -1258,8 +1299,9 @@ def CompileCxx(obj,src,opts):
# Use libc++ to enable C++11 features.
cmd += " -stdlib=libc++"
arch = GetTargetArch()
cmd += " -arch %s" % arch
for arch in OSX_ARCHS:
if 'NOARCH:' + arch.upper() not in opts:
cmd += " -arch %s" % arch
if "SYSROOT" in SDK:
if GetTarget() != "android":
@ -1776,8 +1818,9 @@ def CompileLink(dll, obj, opts):
# Use libc++ to enable C++11 features.
cmd += " -stdlib=libc++"
arch = GetTargetArch()
cmd += " -arch %s" % arch
for arch in OSX_ARCHS:
if 'NOARCH:' + arch.upper() not in opts:
cmd += " -arch %s" % arch
elif GetTarget() == 'android':
arch = GetTargetArch()