2022-06-06 13:09:32 +00:00
|
|
|
import os
|
|
|
|
import sys
|
2022-07-20 08:01:47 +00:00
|
|
|
import macos_osxcross
|
2022-06-06 13:09:32 +00:00
|
|
|
|
|
|
|
|
|
|
|
def options(opts):
|
|
|
|
opts.Add("macos_deployment_target", "macOS deployment target", "default")
|
|
|
|
opts.Add("macos_sdk_path", "macOS SDK path", "")
|
2022-07-20 08:01:47 +00:00
|
|
|
macos_osxcross.options(opts)
|
2022-06-06 13:09:32 +00:00
|
|
|
|
|
|
|
|
|
|
|
def exists(env):
|
2022-07-20 08:01:47 +00:00
|
|
|
return sys.platform == "darwin" or macos_osxcross.exists(env)
|
2022-06-06 13:09:32 +00:00
|
|
|
|
|
|
|
|
|
|
|
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()
|
|
|
|
|
|
|
|
if sys.platform == "darwin":
|
|
|
|
# Use clang on macOS by default
|
|
|
|
env["CXX"] = "clang++"
|
|
|
|
env["CC"] = "clang"
|
2022-06-06 14:17:43 +00:00
|
|
|
else:
|
|
|
|
# Use osxcross
|
2022-07-20 08:01:47 +00:00
|
|
|
macos_osxcross.generate(env)
|
2022-06-06 13:09:32 +00:00
|
|
|
|
|
|
|
if env["arch"] == "universal":
|
|
|
|
env.Append(LINKFLAGS=["-arch", "x86_64", "-arch", "arm64"])
|
|
|
|
env.Append(CCFLAGS=["-arch", "x86_64", "-arch", "arm64"])
|
|
|
|
else:
|
|
|
|
env.Append(LINKFLAGS=["-arch", env["arch"]])
|
|
|
|
env.Append(CCFLAGS=["-arch", env["arch"]])
|
|
|
|
|
|
|
|
if env["macos_deployment_target"] != "default":
|
|
|
|
env.Append(CCFLAGS=["-mmacosx-version-min=" + env["macos_deployment_target"]])
|
|
|
|
env.Append(LINKFLAGS=["-mmacosx-version-min=" + env["macos_deployment_target"]])
|
|
|
|
|
|
|
|
if env["macos_sdk_path"]:
|
|
|
|
env.Append(CCFLAGS=["-isysroot", env["macos_sdk_path"]])
|
|
|
|
env.Append(LINKFLAGS=["-isysroot", env["macos_sdk_path"]])
|
|
|
|
|
|
|
|
env.Append(
|
|
|
|
LINKFLAGS=[
|
|
|
|
"-framework",
|
|
|
|
"Cocoa",
|
|
|
|
"-Wl,-undefined,dynamic_lookup",
|
|
|
|
]
|
|
|
|
)
|
2023-07-22 12:46:14 +00:00
|
|
|
|
|
|
|
env.Append(CPPDEFINES=["MACOS_ENABLED", "UNIX_ENABLED"])
|