Merge pull request #634 from Faless/osx/universal

pull/639/head
Rémi Verschelde 2021-10-01 07:37:42 +02:00 committed by GitHub
commit 230fd4bc08
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 16 additions and 43 deletions

View File

@ -97,8 +97,8 @@ jobs:
if-no-files-found: error if-no-files-found: error
macos: macos:
name: Build (macOS, Clang) name: Build (macOS, Clang, universal / x86_64 + arm64)
runs-on: macos-10.15 runs-on: macos-11
steps: steps:
- name: Checkout - name: Checkout
uses: actions/checkout@v2 uses: actions/checkout@v2
@ -118,40 +118,6 @@ jobs:
run: | run: |
scons target=release generate_bindings=yes -j $(sysctl -n hw.logicalcpu) scons target=release generate_bindings=yes -j $(sysctl -n hw.logicalcpu)
- name: Upload artifact
uses: actions/upload-artifact@v2
with:
name: godot-cpp-macos-x86_64-release
path: bin/libgodot-cpp.osx.release.64.a
if-no-files-found: error
macos-arm64:
name: Build (macOS, Clang, cross-compile arm64)
runs-on: macos-latest
steps:
- name: Checkout
uses: actions/checkout@v2
with:
submodules: recursive
- name: Set up Python (for SCons)
uses: actions/setup-python@v2
with:
python-version: '3.x'
- name: Install dependencies
run: |
python -m pip install scons
- name: Build godot-cpp
run: |
# The default SDK in github the actions environemnt seems to have problems compiling for arm64.
# Use the latest 11.x SDK.
SDK_BASE=/Library/Developer/CommandLineTools/SDKs
SDK_VER=$(ls $SDK_BASE | grep "MacOSX11." | sort -r | head -n1)
echo $SDK_BASE/$SDK_VER/
scons target=release generate_bindings=yes macos_arch=arm64 macos_deployment_target=10.15 macos_sdk_path="$SDK_BASE/$SDK_VER/" -j $(sysctl -n hw.logicalcpu)
static-checks: static-checks:
name: Static Checks (clang-format) name: Static Checks (clang-format)
runs-on: ubuntu-20.04 runs-on: ubuntu-20.04

View File

@ -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"]),