[OSX] Add universal build support.
parent
ad11bbb584
commit
67f9109d1f
|
@ -116,13 +116,13 @@ jobs:
|
||||||
|
|
||||||
- name: Build godot-cpp
|
- name: Build godot-cpp
|
||||||
run: |
|
run: |
|
||||||
scons target=release generate_bindings=yes -j $(sysctl -n hw.logicalcpu)
|
scons target=release generate_bindings=yes macos_arch=x86_64 -j $(sysctl -n hw.logicalcpu)
|
||||||
|
|
||||||
- name: Upload artifact
|
- name: Upload artifact
|
||||||
uses: actions/upload-artifact@v2
|
uses: actions/upload-artifact@v2
|
||||||
with:
|
with:
|
||||||
name: godot-cpp-macos-x86_64-release
|
name: godot-cpp-macos-x86_64-release
|
||||||
path: bin/libgodot-cpp.osx.release.64.a
|
path: bin/libgodot-cpp.osx.release.x86_64.a
|
||||||
if-no-files-found: error
|
if-no-files-found: error
|
||||||
|
|
||||||
macos-arm64:
|
macos-arm64:
|
||||||
|
|
21
SConstruct
21
SConstruct
|
@ -78,7 +78,7 @@ elif sys.platform == "darwin":
|
||||||
elif sys.platform == "win32" or sys.platform == "msys":
|
elif sys.platform == "win32" or sys.platform == "msys":
|
||||||
host_platform = "windows"
|
host_platform = "windows"
|
||||||
else:
|
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)
|
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(EnumVariable("android_arch", "Target Android architecture", "armv7", ["armv7", "arm64v8", "x86", "x86_64"]))
|
||||||
opts.Add("macos_deployment_target", "macOS deployment target", "default")
|
opts.Add("macos_deployment_target", "macOS deployment target", "default")
|
||||||
opts.Add("macos_sdk_path", "macOS SDK path", "")
|
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(EnumVariable("ios_arch", "Target iOS architecture", "arm64", ["armv7", "arm64", "x86_64"]))
|
||||||
opts.Add(BoolVariable("ios_simulator", "Target iOS Simulator", False))
|
opts.Add(BoolVariable("ios_simulator", "Target iOS Simulator", False))
|
||||||
opts.Add(
|
opts.Add(
|
||||||
|
@ -187,7 +187,14 @@ elif env["platform"] == "osx":
|
||||||
if env["bits"] == "32":
|
if env["bits"] == "32":
|
||||||
raise ValueError("Only 64-bit builds are supported for the macOS target.")
|
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":
|
if env["macos_deployment_target"] != "default":
|
||||||
env.Append(CCFLAGS=["-mmacosx-version-min=" + env["macos_deployment_target"]])
|
env.Append(CCFLAGS=["-mmacosx-version-min=" + env["macos_deployment_target"]])
|
||||||
|
@ -199,8 +206,6 @@ elif env["platform"] == "osx":
|
||||||
|
|
||||||
env.Append(
|
env.Append(
|
||||||
LINKFLAGS=[
|
LINKFLAGS=[
|
||||||
"-arch",
|
|
||||||
env["macos_arch"],
|
|
||||||
"-framework",
|
"-framework",
|
||||||
"Cocoa",
|
"Cocoa",
|
||||||
"-Wl,-undefined,dynamic_lookup",
|
"-Wl,-undefined,dynamic_lookup",
|
||||||
|
@ -454,10 +459,12 @@ add_sources(sources, "gen/src/classes", "cpp")
|
||||||
arch_suffix = env["bits"]
|
arch_suffix = env["bits"]
|
||||||
if env["platform"] == "android":
|
if env["platform"] == "android":
|
||||||
arch_suffix = env["android_arch"]
|
arch_suffix = env["android_arch"]
|
||||||
if env["platform"] == "ios":
|
elif env["platform"] == "ios":
|
||||||
arch_suffix = env["ios_arch"]
|
arch_suffix = env["ios_arch"]
|
||||||
if env["platform"] == "javascript":
|
elif env["platform"] == "javascript":
|
||||||
arch_suffix = "wasm"
|
arch_suffix = "wasm"
|
||||||
|
elif env["platform"] == "osx":
|
||||||
|
arch_suffix = env["macos_arch"]
|
||||||
|
|
||||||
library = env.StaticLibrary(
|
library = env.StaticLibrary(
|
||||||
target="bin/" + "libgodot-cpp.{}.{}.{}{}".format(env["platform"], env["target"], arch_suffix, env["LIBSUFFIX"]),
|
target="bin/" + "libgodot-cpp.{}.{}.{}{}".format(env["platform"], env["target"], arch_suffix, env["LIBSUFFIX"]),
|
||||||
|
|
Loading…
Reference in New Issue