mirror of
https://github.com/panda3d/panda3d.git
synced 2025-10-03 18:31:55 -04:00
Mac OS X build improvements
This commit is contained in:
parent
10dd9120be
commit
bcb203af9a
@ -1156,7 +1156,10 @@ class Packager:
|
||||
self.__alterFrameworkDependencies(file, framework_deps)
|
||||
|
||||
for filename in filenames:
|
||||
if '.framework/' in filename:
|
||||
if '@loader_path' in filename:
|
||||
filename = filename.replace('@loader_path', file.filename.getDirname())
|
||||
|
||||
if False and '.framework/' in filename:
|
||||
# It references a framework, and besides the fact
|
||||
# that those often contain absolute paths, they
|
||||
# aren't commonly on the library path either.
|
||||
|
@ -90,7 +90,7 @@ Options:
|
||||
each supported architecture). On other platforms, this option
|
||||
does nothing. This is therefore safe to apply in all cases, if
|
||||
you wish to take advantage of universal binaries. This is
|
||||
equivalent to "-P osx_ppc -P osx_i386" on Mac platforms.
|
||||
equivalent to "-P osx_i386 -P osx_x86_64" on Mac platforms.
|
||||
|
||||
-P platform
|
||||
Specify the platform to masquerade as. The default is whatever
|
||||
@ -215,8 +215,7 @@ if universalBinaries:
|
||||
print '\nYou may not specify both -u and -P.\n'
|
||||
sys.exit(1)
|
||||
if PandaSystem.getPlatform().startswith('osx_'):
|
||||
# Maybe soon we'll add osx_x86_64 to this default list.
|
||||
platforms = ['osx_i386', 'osx_ppc']
|
||||
platforms = ['osx_i386', 'osx_x86_64']
|
||||
|
||||
if not platforms:
|
||||
platforms = [PandaSystem.getPlatform()]
|
||||
|
@ -144,7 +144,7 @@ class CompilationEnvironment:
|
||||
elif proc == 'ppc':
|
||||
self.arch = '-arch ppc'
|
||||
elif proc == 'x86_64':
|
||||
self.arch = '-arch x86_x64'
|
||||
self.arch = '-arch x86_64'
|
||||
self.compileObj = "gcc -fPIC -c %(arch)s -o %(basename)s.o -O2 -I%(pythonIPath)s %(filename)s"
|
||||
self.linkExe = "gcc %(arch)s -o %(basename)s %(basename)s.o -framework Python"
|
||||
self.linkDll = "gcc %(arch)s -undefined dynamic_lookup -bundle -o %(basename)s.so %(basename)s.o"
|
||||
|
@ -127,6 +127,9 @@ def GetLibDir():
|
||||
something like "lib" or "lib64" or in some cases, something
|
||||
similar to "lib/x86_64-linux-gnu". """
|
||||
|
||||
if sys.platform == "darwin":
|
||||
return "lib"
|
||||
|
||||
# This one's a bit tricky. Some systems require us to install
|
||||
# 64-bits libraries into /usr/lib64, some into /usr/lib.
|
||||
# Debian forbids installing to lib64 nowadays, and the only distros
|
||||
|
@ -67,7 +67,7 @@ MAJOR_VERSION=None
|
||||
COREAPI_VERSION=None
|
||||
PLUGIN_VERSION=None
|
||||
OSXTARGET=None
|
||||
UNIVERSAL=False
|
||||
OSX_ARCHS=[]
|
||||
HOST_URL=None
|
||||
global STRDXSDKVERSION, STRMSPLATFORMVERSION, BOOUSEINTELCOMPILER
|
||||
STRDXSDKVERSION = 'default'
|
||||
@ -165,7 +165,7 @@ def usage(problem):
|
||||
|
||||
def parseopts(args):
|
||||
global INSTALLER,RTDIST,RUNTIME,GENMAN,DISTRIBUTOR,VERSION
|
||||
global COMPRESSOR,THREADCOUNT,OSXTARGET,UNIVERSAL,HOST_URL
|
||||
global COMPRESSOR,THREADCOUNT,OSXTARGET,OSX_ARCHS,HOST_URL
|
||||
global DEBVERSION,RPMRELEASE,GIT_COMMIT,P3DSUFFIX
|
||||
global STRDXSDKVERSION, STRMSPLATFORMVERSION, BOOUSEINTELCOMPILER
|
||||
longopts = [
|
||||
@ -179,6 +179,7 @@ def parseopts(args):
|
||||
optimize = ""
|
||||
target = None
|
||||
target_arch = None
|
||||
universal = False
|
||||
for pkg in PkgListGet(): longopts.append("no-"+pkg.lower())
|
||||
for pkg in PkgListGet(): longopts.append("use-"+pkg.lower())
|
||||
try:
|
||||
@ -197,7 +198,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=="--universal"): universal = True
|
||||
elif (option=="--target"): target = value.strip()
|
||||
elif (option=="--arch"): target_arch = value.strip()
|
||||
elif (option=="--nocolor"): DisableColors()
|
||||
@ -252,23 +253,39 @@ def parseopts(args):
|
||||
usage("Options --runtime and --rtdist cannot be specified at the same time!")
|
||||
if (optimize=="" and (RTDIST or RUNTIME)): optimize = "4"
|
||||
elif (optimize==""): optimize = "3"
|
||||
if (OSXTARGET != None and OSXTARGET.strip() == ""):
|
||||
OSXTARGET = None
|
||||
elif (OSXTARGET != None):
|
||||
OSXTARGET = OSXTARGET.strip()
|
||||
if (len(OSXTARGET) != 4 or not OSXTARGET.startswith("10.")):
|
||||
usage("Invalid setting for OSXTARGET")
|
||||
|
||||
if OSXTARGET:
|
||||
try:
|
||||
OSXTARGET = "10.%d" % (int(OSXTARGET[-1]))
|
||||
maj, min = OSXTARGET.strip().split('.')
|
||||
OSXTARGET = int(maj), int(min)
|
||||
assert OSXTARGET[0] == 10
|
||||
except:
|
||||
usage("Invalid setting for OSXTARGET")
|
||||
else:
|
||||
OSXTARGET = None
|
||||
|
||||
if UNIVERSAL:
|
||||
if not OSXTARGET:
|
||||
exit("--universal requires --osxtarget")
|
||||
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")
|
||||
|
||||
OSX_ARCHS.append("i386")
|
||||
if OSXTARGET:
|
||||
osxver = OSXTARGET
|
||||
else:
|
||||
maj, min = platform.mac_ver()[0].split('.')[:2]
|
||||
osxver = int(maj), int(min)
|
||||
|
||||
if osxver[1] < 6:
|
||||
OSX_ARCHS.append("ppc")
|
||||
else:
|
||||
OSX_ARCHS.append("x86_64")
|
||||
|
||||
elif HasTargetArch():
|
||||
OSX_ARCHS.append(GetTargetArch())
|
||||
|
||||
try:
|
||||
SetOptimize(int(optimize))
|
||||
assert GetOptimize() in [1, 2, 3, 4]
|
||||
@ -278,9 +295,6 @@ def parseopts(args):
|
||||
if GIT_COMMIT is not None and not re.match("^[a-f0-9]{40}$", GIT_COMMIT):
|
||||
usage("Invalid SHA-1 hash given for --git-commit option!")
|
||||
|
||||
if target is not None or target_arch is not None:
|
||||
SetTarget(target, target_arch)
|
||||
|
||||
is_win7 = False
|
||||
if GetHost() == "windows":
|
||||
if (STRMSPLATFORMVERSION not in ['winserver2003r2', 'win60A']):
|
||||
@ -316,8 +330,8 @@ if ("LDFLAGS" in os.environ):
|
||||
LDFLAGS = os.environ["LDFLAGS"].strip()
|
||||
|
||||
os.environ["MAKEPANDA"] = os.path.abspath(sys.argv[0])
|
||||
if (GetHost() == "darwin" and OSXTARGET != None):
|
||||
os.environ["MACOSX_DEPLOYMENT_TARGET"] = OSXTARGET
|
||||
if GetHost() == "darwin" and OSXTARGET is not None:
|
||||
os.environ["MACOSX_DEPLOYMENT_TARGET"] = "%d.%d" % OSXTARGET
|
||||
|
||||
########################################################################
|
||||
##
|
||||
@ -683,7 +697,7 @@ if (COMPILER=="GCC"):
|
||||
elif RUNTIME:
|
||||
# We don't support Cocoa in the runtime yet.
|
||||
PkgDisable("COCOA")
|
||||
if UNIVERSAL or GetTargetArch() == 'x86_64':
|
||||
if 'x86_64' in OSX_ARCHS:
|
||||
# 64-bits OS X doesn't have Carbon.
|
||||
PkgDisable("CARBON")
|
||||
|
||||
@ -738,7 +752,7 @@ if (COMPILER=="GCC"):
|
||||
cv_lib = ChooseLib(("opencv_core", "cv"), "OPENCV")
|
||||
if cv_lib == "opencv_core":
|
||||
OPENCV_VER_23 = True
|
||||
SmartPkgEnable("OPENCV", "opencv", ("opencv_core"), ("opencv2/core/core.hpp"))
|
||||
SmartPkgEnable("OPENCV", "opencv", ("opencv_core", "opencv_highgui"), ("opencv2/core/core.hpp"))
|
||||
else:
|
||||
SmartPkgEnable("OPENCV", "opencv", ("cv", "highgui", "cvaux", "ml", "cxcore"),
|
||||
("opencv", "opencv/cv.h", "opencv/cxcore.h", "opencv/highgui.h"))
|
||||
@ -752,8 +766,8 @@ if (COMPILER=="GCC"):
|
||||
SmartPkgEnable("ROCKET", "", rocket_libs, "Rocket/Core.h")
|
||||
|
||||
if not PkgSkip("PYTHON"):
|
||||
if GetHost() == "darwin" and GetTarget() == "darwin" and not RTDIST:
|
||||
# Use the system Python framework in the standard Mac SDK.
|
||||
if GetTarget() == "darwin" and SDK.get("MACOSX") and not RTDIST:
|
||||
# When targeting a specific OSX version, use the system Python framework in the standard Mac SDK.
|
||||
LibName("PYTHON", "-framework Python")
|
||||
else:
|
||||
SmartPkgEnable("PYTHON", "", SDK["PYTHONVERSION"], (SDK["PYTHONVERSION"], SDK["PYTHONVERSION"] + "/Python.h"), tool = SDK["PYTHONVERSION"] + "-config")
|
||||
@ -1125,20 +1139,13 @@ def CompileCxx(obj,src,opts):
|
||||
# Mac-specific flags.
|
||||
if GetTarget() == "darwin":
|
||||
cmd += " -Wno-deprecated-declarations"
|
||||
if (OSXTARGET != None):
|
||||
if OSXTARGET is not None:
|
||||
cmd += " -isysroot " + SDK["MACOSX"]
|
||||
cmd += " -mmacosx-version-min=" + OSXTARGET
|
||||
cmd += " -mmacosx-version-min=%d.%d" % (OSXTARGET)
|
||||
|
||||
if UNIVERSAL:
|
||||
cmd += " -arch i386"
|
||||
if OSXTARGET:
|
||||
osxver = int(OSXTARGET[-1])
|
||||
if "NOPPC" not in opts and int(OSXTARGET[-1]) < 6:
|
||||
cmd += " -arch ppc"
|
||||
if int(OSXTARGET[-1]) >= 5:
|
||||
cmd += " -arch x86_64"
|
||||
elif HasTargetArch():
|
||||
cmd += " -arch %s" % (GetTargetArch())
|
||||
for arch in OSX_ARCHS:
|
||||
if arch != "ppc" or "NOPPC" not in OPTS:
|
||||
cmd += " -arch %s" % arch
|
||||
|
||||
if "SYSROOT" in SDK:
|
||||
cmd += ' --sysroot=%s -no-canonical-prefixes' % (SDK["SYSROOT"])
|
||||
@ -1587,20 +1594,13 @@ def CompileLink(dll, obj, opts):
|
||||
# Mac OS X specific flags.
|
||||
if GetTarget() == 'darwin':
|
||||
cmd += " -headerpad_max_install_names"
|
||||
if OSXTARGET != None:
|
||||
if OSXTARGET is not None:
|
||||
cmd += " -isysroot " + SDK["MACOSX"] + " -Wl,-syslibroot," + SDK["MACOSX"]
|
||||
cmd += " -mmacosx-version-min=" + OSXTARGET
|
||||
cmd += " -mmacosx-version-min=%d.%d" % (OSXTARGET)
|
||||
|
||||
if UNIVERSAL:
|
||||
cmd += " -arch i386"
|
||||
if OSXTARGET:
|
||||
osxver = int(OSXTARGET[-1])
|
||||
if "NOPPC" not in opts and int(OSXTARGET[-1]) < 6:
|
||||
cmd += " -arch ppc"
|
||||
if int(OSXTARGET[-1]) >= 5:
|
||||
cmd += " -arch x86_64"
|
||||
elif HasTargetArch():
|
||||
cmd += " -arch %s" % (GetTargetArch())
|
||||
for arch in OSX_ARCHS:
|
||||
if arch != "ppc" or "NOPPC" not in OPTS:
|
||||
cmd += " -arch %s" % arch
|
||||
|
||||
if "SYSROOT" in SDK:
|
||||
cmd += " --sysroot=%s -no-canonical-prefixes" % (SDK["SYSROOT"])
|
||||
@ -1820,10 +1820,11 @@ def Package(target, inputs, opts):
|
||||
command += "direct/src/p3d/ppackage.py"
|
||||
|
||||
if GetTarget() == "darwin":
|
||||
if SDK.get("MACOSX") is not None:
|
||||
if SDK.get("MACOSX"):
|
||||
command += " -R \"%s\"" % SDK["MACOSX"]
|
||||
if UNIVERSAL:
|
||||
command += " -u"
|
||||
|
||||
for arch in OSX_ARCHS:
|
||||
command += " -P osx_%s" % arch
|
||||
|
||||
command += " -i \"" + GetOutputDir() + "/stage\""
|
||||
if (P3DSUFFIX):
|
||||
@ -2608,14 +2609,27 @@ if tp_dir is not None:
|
||||
if (PkgSkip("PYTHON")==0 and os.path.exists(tp_pkg + "/bin/" + SDK["PYTHONVERSION"])):
|
||||
CopyAllFiles(GetOutputDir() + "/bin/", tp_pkg + "/bin/" + SDK["PYTHONVERSION"] + "/")
|
||||
else:
|
||||
if os.path.exists(tp_pkg + "/lib"):
|
||||
CopyAllFiles(GetOutputDir() + "/lib/", tp_pkg + "/lib/")
|
||||
if (PkgSkip("PYTHON")==0 and os.path.exists(tp_pkg + "/lib/" + SDK["PYTHONVERSION"])):
|
||||
CopyAllFiles(GetOutputDir() + "/lib/", tp_pkg + "/lib/" + SDK["PYTHONVERSION"] + "/")
|
||||
for tp_lib in glob.glob(tp_pkg + "/lib/*.so*"):
|
||||
CopyFile(GetOutputDir() + "/lib/" + os.path.basename(tp_lib), tp_lib)
|
||||
|
||||
if not PkgSkip("PYTHON"):
|
||||
for tp_lib in glob.glob(os.path.join(tp_pkg, "lib", SDK["PYTHONVERSION"], "*.so*")):
|
||||
CopyFile(GetOutputDir() + "/lib/" + os.path.basename(tp_lib), tp_lib)
|
||||
|
||||
if GetTarget() == 'darwin':
|
||||
for tp_lib in glob.glob(tp_pkg + "/lib/*.dylib"):
|
||||
CopyFile(GetOutputDir() + "/lib/" + os.path.basename(tp_lib), tp_lib)
|
||||
|
||||
if not PkgSkip("PYTHON"):
|
||||
for tp_lib in glob.glob(os.path.join(tp_pkg, "lib", SDK["PYTHONVERSION"], "*.dylib")):
|
||||
CopyFile(GetOutputDir() + "/lib/" + os.path.basename(tp_lib), tp_lib)
|
||||
|
||||
for fwx in glob.glob(tp_pkg + "/*.framework"):
|
||||
CopyTree(GetOutputDir() + "/Frameworks/" + os.path.basename(fwx), fwx)
|
||||
|
||||
if GetTarget() == 'windows':
|
||||
CopyAllFiles(GetOutputDir() + "/bin/", tp_dir + "extras/bin/")
|
||||
if PkgSkip("PYTHON") == 0:
|
||||
if not PkgSkip("PYTHON"):
|
||||
pydll = "/" + SDK["PYTHONVERSION"].replace(".", "")
|
||||
if (GetOptimize() <= 2): pydll += "_d.dll"
|
||||
else: pydll += ".dll"
|
||||
@ -3745,7 +3759,6 @@ if (not RUNTIME):
|
||||
|
||||
TargetAdd('core_module.obj', opts=['IMOD:panda3d.core', 'ILIB:core'])
|
||||
|
||||
OPTS=['WINSOCK2']
|
||||
TargetAdd('core.pyd', input='libp3downloader_igate.obj')
|
||||
TargetAdd('core.pyd', input='p3express_ext_composite.obj')
|
||||
TargetAdd('core.pyd', input='libp3express_igate.obj')
|
||||
@ -3795,7 +3808,7 @@ if (not RUNTIME):
|
||||
TargetAdd('core.pyd', input='core_module.obj')
|
||||
TargetAdd('core.pyd', input='libp3tinyxml.ilb')
|
||||
TargetAdd('core.pyd', input=COMMON_PANDA_LIBS)
|
||||
TargetAdd('core.pyd', opts=OPTS)
|
||||
TargetAdd('core.pyd', opts=['PYTHON', 'WINSOCK2'])
|
||||
|
||||
#
|
||||
# DIRECTORY: panda/src/vision/
|
||||
@ -6597,6 +6610,7 @@ def MakeInstallerOSX():
|
||||
oscmd("cp -R %s/models dstroot/base/Developer/Panda3D/models" % GetOutputDir())
|
||||
oscmd("cp -R doc/LICENSE dstroot/base/Developer/Panda3D/LICENSE")
|
||||
oscmd("cp -R doc/ReleaseNotes dstroot/base/Developer/Panda3D/ReleaseNotes")
|
||||
oscmd("cp -R %s/Frameworks dstroot/base/Developer/Panda3D/Frameworks" % GetOutputDir())
|
||||
if os.path.isdir(GetOutputDir()+"/plugins"):
|
||||
oscmd("cp -R %s/plugins dstroot/base/Developer/Panda3D/plugins" % GetOutputDir())
|
||||
|
||||
@ -6650,11 +6664,11 @@ def MakeInstallerOSX():
|
||||
if PkgSkip("PYTHON")==0:
|
||||
PV = SDK["PYTHONVERSION"].replace("python", "")
|
||||
oscmd("mkdir -p dstroot/pythoncode/usr/bin")
|
||||
oscmd("mkdir -p dstroot/pythoncode/Developer/Panda3D/direct")
|
||||
oscmd("mkdir -p dstroot/pythoncode/Developer/Panda3D")
|
||||
oscmd("mkdir -p dstroot/pythoncode/Library/Python/%s/site-packages" % PV)
|
||||
WriteFile("dstroot/pythoncode/Library/Python/%s/site-packages/Panda3D.pth" % PV, "/Developer/Panda3D")
|
||||
oscmd("cp -R %s/pandac dstroot/pythoncode/Developer/Panda3D/pandac" % GetOutputDir())
|
||||
oscmd("cp -R direct/src/* dstroot/pythoncode/Developer/Panda3D/direct")
|
||||
oscmd("cp -R %s/direct dstroot/pythoncode/Developer/Panda3D/direct" % GetOutputDir())
|
||||
oscmd("ln -s %s dstroot/pythoncode/usr/bin/ppython" % SDK["PYTHONEXEC"])
|
||||
if os.path.isdir(GetOutputDir()+"/Pmw"):
|
||||
oscmd("cp -R %s/Pmw dstroot/pythoncode/Developer/Panda3D/Pmw" % GetOutputDir())
|
||||
@ -6691,15 +6705,15 @@ def MakeInstallerOSX():
|
||||
if not os.path.isdir("dstroot/" + pkg):
|
||||
os.makedirs("dstroot/" + pkg)
|
||||
|
||||
if OSXTARGET:
|
||||
target = '--target %s' % (OSXTARGET)
|
||||
if OSXTARGET and OSXTARGET <= (10, 5):
|
||||
target = '--target %d.%d' % (OSXTARGET)
|
||||
else:
|
||||
target = ''
|
||||
|
||||
if os.path.exists("/Developer/usr/bin/packagemaker"):
|
||||
cmd = '/Developer/usr/bin/packagemaker --info /tmp/Info_plist --version ' + VERSION + ' --out dstroot/Panda3D/Panda3D.mpkg/Contents/Packages/' + pkg + '.pkg ' + target + ' --domain system --root dstroot/' + pkg + '/ --no-relocate'
|
||||
elif os.path.exists("/Applications/Xcode.app/Contents/Applications/PackageMaker.app/Contents/MacOS/PackageMaker"):
|
||||
cmd = '/Applications/Xcode.app/Contents/Applications/PackageMaker.app/Contents/MacOS/PackageMaker --info /tmp/Info_plist --version ' + VERSION + ' --out dstroot/Panda3D/Panda3D.mpkg/Contents/Packages/' + pkg + '.pkg --target ' + target + ' --domain system --root dstroot/' + pkg + '/ --no-relocate'
|
||||
cmd = '/Applications/Xcode.app/Contents/Applications/PackageMaker.app/Contents/MacOS/PackageMaker --info /tmp/Info_plist --version ' + VERSION + ' --out dstroot/Panda3D/Panda3D.mpkg/Contents/Packages/' + pkg + '.pkg ' + target + ' --domain system --root dstroot/' + pkg + '/ --no-relocate'
|
||||
elif os.path.exists("/Developer/Tools/packagemaker"):
|
||||
cmd = '/Developer/Tools/packagemaker -build -f dstroot/' + pkg + '/ -p dstroot/Panda3D/Panda3D.mpkg/Contents/Packages/' + pkg + '.pkg -i /tmp/Info_plist'
|
||||
else:
|
||||
|
@ -1062,7 +1062,10 @@ def MakeBuildTree():
|
||||
MakeDirectory(OUTPUTDIR + "/panda3d")
|
||||
CreateFile(OUTPUTDIR + "/panda3d/__init__.py")
|
||||
|
||||
if GetTarget() == 'android':
|
||||
if GetTarget() == 'darwin':
|
||||
MakeDirectory(OUTPUTDIR + "/Frameworks")
|
||||
|
||||
elif GetTarget() == 'android':
|
||||
MakeDirectory(OUTPUTDIR + "/libs")
|
||||
MakeDirectory(OUTPUTDIR + "/libs/" + ANDROID_ABI)
|
||||
MakeDirectory(OUTPUTDIR + "/src")
|
||||
@ -1847,7 +1850,6 @@ def SdkLocatePython(prefer_thirdparty_python=False):
|
||||
|
||||
elif CrossCompiling() or (prefer_thirdparty_python and os.path.isdir(os.path.join(GetThirdpartyDir(), "python"))):
|
||||
tp_python = os.path.join(GetThirdpartyDir(), "python")
|
||||
SDK["PYTHON"] = tp_python + "/include"
|
||||
|
||||
if GetTarget() == 'darwin':
|
||||
py_libs = glob.glob(tp_python + "/lib/libpython[0-9].[0-9].dylib")
|
||||
@ -1865,6 +1867,24 @@ def SdkLocatePython(prefer_thirdparty_python=False):
|
||||
py_lib = os.path.basename(py_libs[0])
|
||||
SDK["PYTHONVERSION"] = "python" + py_lib[9] + "." + py_lib[11]
|
||||
SDK["PYTHONEXEC"] = tp_python + "/bin/" + SDK["PYTHONVERSION"]
|
||||
SDK["PYTHON"] = tp_python + "/include/" + SDK["PYTHONVERSION"]
|
||||
|
||||
elif GetTarget() == 'darwin' and SDK.get("MACOSX"):
|
||||
# When targeting a specific Mac OS X version, use the system Python framework.
|
||||
py_fwx = SDK.get("MACOSX", "") + "/System/Library/Frameworks/Python.framework/Versions/Current"
|
||||
|
||||
if not os.path.islink(py_fwx):
|
||||
exit("Could not locate Python installation at %s" % (py_fwx))
|
||||
|
||||
ver = os.path.basename(os.readlink(py_fwx))
|
||||
py_fwx = SDK.get("MACOSX", "") + "/System/Library/Frameworks/Python.framework/Versions/%s" % ver
|
||||
|
||||
SDK["PYTHON"] = py_fwx + "/Headers"
|
||||
SDK["PYTHONVERSION"] = "python" + ver
|
||||
SDK["PYTHONEXEC"] = "/System/Library/Frameworks/Python.framework/Versions/" + ver + "/bin/python" + ver
|
||||
|
||||
if sys.version[:3] != ver:
|
||||
print("Warning: building with Python %s instead of %s since you targeted a specific Mac OS X version." % (ver, sys.version[:3]))
|
||||
|
||||
#elif GetTarget() == 'windows':
|
||||
# SDK["PYTHON"] = os.path.dirname(sysconfig.get_python_inc())
|
||||
@ -1932,22 +1952,23 @@ def SdkLocateMSPlatform(strMode = 'default'):
|
||||
def SdkLocateMacOSX(osxtarget = None):
|
||||
if (GetHost() != "darwin"): return
|
||||
if (osxtarget != None):
|
||||
if (os.path.exists("/Developer/SDKs/MacOSX%su.sdk" % osxtarget)):
|
||||
SDK["MACOSX"] = "/Developer/SDKs/MacOSX%su.sdk" % osxtarget
|
||||
elif (os.path.exists("/Developer/SDKs/MacOSX%s.sdk" % osxtarget)):
|
||||
SDK["MACOSX"] = "/Developer/SDKs/MacOSX%s.sdk" % osxtarget
|
||||
elif (os.path.exists("/Developer/SDKs/MacOSX%s.0.sdk" % osxtarget)):
|
||||
SDK["MACOSX"] = "/Developer/SDKs/MacOSX%s.0.sdk" % osxtarget
|
||||
elif (os.path.exists("/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX%s.sdk" % osxtarget)):
|
||||
SDK["MACOSX"] = "/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX%s.sdk" % osxtarget
|
||||
sdkname = "MacOSX%d.%d" % osxtarget
|
||||
if (os.path.exists("/Developer/SDKs/%su.sdk" % sdkname)):
|
||||
SDK["MACOSX"] = "/Developer/SDKs/%su.sdk" % sdkname
|
||||
elif (os.path.exists("/Developer/SDKs/%s.sdk" % sdkname)):
|
||||
SDK["MACOSX"] = "/Developer/SDKs/%s.sdk" % sdkname
|
||||
elif (os.path.exists("/Developer/SDKs/%s.0.sdk" % sdkname)):
|
||||
SDK["MACOSX"] = "/Developer/SDKs/%s.0.sdk" % sdkname
|
||||
elif (os.path.exists("/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/%s.sdk" % sdkname)):
|
||||
SDK["MACOSX"] = "/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/%s.sdk" % sdkname
|
||||
else:
|
||||
handle = os.popen("xcode-select -print-path")
|
||||
result = handle.read().strip().rstrip('/')
|
||||
handle.close()
|
||||
if (os.path.exists("%s/Platforms/MacOSX.platform/Developer/SDKs/MacOSX%s.sdk" % (result, osxtarget))):
|
||||
SDK["MACOSX"] = "%s/Platforms/MacOSX.platform/Developer/SDKs/MacOSX%s.sdk" % (result, osxtarget)
|
||||
if (os.path.exists("%s/Platforms/MacOSX.platform/Developer/SDKs/%s.sdk" % (result, sdkname))):
|
||||
SDK["MACOSX"] = "%s/Platforms/MacOSX.platform/Developer/SDKs/%s.sdk" % (result, sdkname)
|
||||
else:
|
||||
exit("Couldn't find any MacOSX SDK for OSX version %s!" % osxtarget)
|
||||
exit("Couldn't find any MacOSX SDK for OSX version %s!" % sdkname)
|
||||
else:
|
||||
SDK["MACOSX"] = ""
|
||||
|
||||
@ -2370,11 +2391,10 @@ def SetupBuildEnvironment(compiler):
|
||||
AddToPathEnv("PYTHONPATH", builtdir)
|
||||
AddToPathEnv("PANDA_PRC_DIR", os.path.join(builtdir, "etc"))
|
||||
AddToPathEnv("PATH", os.path.join(builtdir, "bin"))
|
||||
if (GetHost() == 'windows'):
|
||||
AddToPathEnv("PATH", os.path.join(builtdir, "plugins"))
|
||||
if GetHost() == 'windows':
|
||||
# extension_native_helpers.py currently expects to find libpandaexpress on sys.path.
|
||||
AddToPathEnv("PYTHONPATH", os.path.join(builtdir, "bin"))
|
||||
else:
|
||||
AddToPathEnv("PYTHONPATH", os.path.join(builtdir, "lib"))
|
||||
AddToPathEnv("PATH", os.path.join(builtdir, "plugins"))
|
||||
|
||||
# Now for the special (DY)LD_LIBRARY_PATH on Unix-esque systems.
|
||||
if GetHost() != 'windows':
|
||||
|
Loading…
x
Reference in New Issue
Block a user