diff options
Diffstat (limited to 'tools/macos.py')
-rw-r--r-- | tools/macos.py | 34 |
1 files changed, 28 insertions, 6 deletions
diff --git a/tools/macos.py b/tools/macos.py index 2e4bfc6..0c75e4a 100644 --- a/tools/macos.py +++ b/tools/macos.py @@ -1,31 +1,51 @@ import os import sys -import macos_osxcross + + +def has_osxcross(): + return "OSXCROSS_ROOT" in os.environ def options(opts): opts.Add("macos_deployment_target", "macOS deployment target", "default") opts.Add("macos_sdk_path", "macOS SDK path", "") - macos_osxcross.options(opts) + if has_osxcross(): + opts.Add("osxcross_sdk", "OSXCross SDK version", "darwin16") def exists(env): - return sys.platform == "darwin" or macos_osxcross.exists(env) + return sys.platform == "darwin" or has_osxcross() def generate(env): if env["arch"] not in ("universal", "arm64", "x86_64"): print("Only universal, arm64, and x86_64 are supported on macOS. Exiting.") - Exit() + env.Exit(1) if sys.platform == "darwin": # Use clang on macOS by default env["CXX"] = "clang++" env["CC"] = "clang" else: - # Use osxcross - macos_osxcross.generate(env) + # OSXCross + root = os.environ.get("OSXCROSS_ROOT", "") + if env["arch"] == "arm64": + basecmd = root + "/target/bin/arm64-apple-" + env["osxcross_sdk"] + "-" + else: + basecmd = root + "/target/bin/x86_64-apple-" + env["osxcross_sdk"] + "-" + + env["CC"] = basecmd + "clang" + env["CXX"] = basecmd + "clang++" + env["AR"] = basecmd + "ar" + env["RANLIB"] = basecmd + "ranlib" + env["AS"] = basecmd + "as" + binpath = os.path.join(root, "target", "bin") + if binpath not in env["ENV"]["PATH"]: + # Add OSXCROSS bin folder to PATH (required for linking). + env.PrependENVPath("PATH", binpath) + + # Common flags if env["arch"] == "universal": env.Append(LINKFLAGS=["-arch", "x86_64", "-arch", "arm64"]) env.Append(CCFLAGS=["-arch", "x86_64", "-arch", "arm64"]) @@ -48,3 +68,5 @@ def generate(env): "-Wl,-undefined,dynamic_lookup", ] ) + + env.Append(CPPDEFINES=["MACOS_ENABLED", "UNIX_ENABLED"]) |