summaryrefslogtreecommitdiffstats
path: root/SConstruct
diff options
context:
space:
mode:
authorFabio Alessandrelli <fabio.alessandrelli@gmail.com>2021-09-29 22:19:36 +0200
committerFabio Alessandrelli <fabio.alessandrelli@gmail.com>2021-09-29 22:31:12 +0200
commit67f9109d1f47f4f351ae8ae16281bb2bd9203fd7 (patch)
tree0f9d613fef7a218b77df26c7ac8d87aae990c04e /SConstruct
parentad11bbb5845a454551d490812631922c33b7601c (diff)
downloadredot-cpp-67f9109d1f47f4f351ae8ae16281bb2bd9203fd7.tar.gz
[OSX] Add universal build support.
Diffstat (limited to 'SConstruct')
-rw-r--r--SConstruct21
1 files changed, 14 insertions, 7 deletions
diff --git a/SConstruct b/SConstruct
index a6f792c..ac76579 100644
--- a/SConstruct
+++ b/SConstruct
@@ -78,7 +78,7 @@ elif sys.platform == "darwin":
elif sys.platform == "win32" or sys.platform == "msys":
host_platform = "windows"
else:
- raise ValueError("Could not detect platform automatically, please specify with " "platform=<platform>")
+ raise ValueError("Could not detect platform automatically, please specify with platform=<platform>")
env = Environment(ENV=os.environ)
@@ -124,7 +124,7 @@ opts.Add(
opts.Add(EnumVariable("android_arch", "Target Android architecture", "armv7", ["armv7", "arm64v8", "x86", "x86_64"]))
opts.Add("macos_deployment_target", "macOS deployment target", "default")
opts.Add("macos_sdk_path", "macOS SDK path", "")
-opts.Add(EnumVariable("macos_arch", "Target macOS architecture", "x86_64", ["x86_64", "arm64"]))
+opts.Add(EnumVariable("macos_arch", "Target macOS architecture", "universal", ["universal", "x86_64", "arm64"]))
opts.Add(EnumVariable("ios_arch", "Target iOS architecture", "arm64", ["armv7", "arm64", "x86_64"]))
opts.Add(BoolVariable("ios_simulator", "Target iOS Simulator", False))
opts.Add(
@@ -187,7 +187,14 @@ elif env["platform"] == "osx":
if env["bits"] == "32":
raise ValueError("Only 64-bit builds are supported for the macOS target.")
- env.Append(CCFLAGS=["-std=c++17", "-arch", env["macos_arch"]])
+ if env["macos_arch"] == "universal":
+ env.Append(LINKFLAGS=["-arch", "x86_64", "-arch", "arm64"])
+ env.Append(CCFLAGS=["-arch", "x86_64", "-arch", "arm64"])
+ else:
+ env.Append(LINKFLAGS=["-arch", env["macos_arch"]])
+ env.Append(CCFLAGS=["-arch", env["macos_arch"]])
+
+ env.Append(CCFLAGS=["-std=c++17"])
if env["macos_deployment_target"] != "default":
env.Append(CCFLAGS=["-mmacosx-version-min=" + env["macos_deployment_target"]])
@@ -199,8 +206,6 @@ elif env["platform"] == "osx":
env.Append(
LINKFLAGS=[
- "-arch",
- env["macos_arch"],
"-framework",
"Cocoa",
"-Wl,-undefined,dynamic_lookup",
@@ -454,10 +459,12 @@ add_sources(sources, "gen/src/classes", "cpp")
arch_suffix = env["bits"]
if env["platform"] == "android":
arch_suffix = env["android_arch"]
-if env["platform"] == "ios":
+elif env["platform"] == "ios":
arch_suffix = env["ios_arch"]
-if env["platform"] == "javascript":
+elif env["platform"] == "javascript":
arch_suffix = "wasm"
+elif env["platform"] == "osx":
+ arch_suffix = env["macos_arch"]
library = env.StaticLibrary(
target="bin/" + "libgodot-cpp.{}.{}.{}{}".format(env["platform"], env["target"], arch_suffix, env["LIBSUFFIX"]),