Merge pull request #584 from Faless/build/osx_arm64

Add OSX arm64 build target.
pull/587/head
Fabio Alessandrelli 2021-07-09 16:03:49 +02:00 committed by GitHub
commit e08ecdc28c
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 45 additions and 2 deletions

View File

@ -145,6 +145,33 @@ jobs:
run: | run: |
./Godot.app/Contents/MacOS/Godot --path test -s script.gd ./Godot.app/Contents/MacOS/Godot --path test -s script.gd
macos-arm64:
name: Build (macOS, Clang, cross-compile arm64)
runs-on: macos-latest
steps:
- name: Checkout
uses: actions/checkout@v2.3.4
with:
submodules: recursive
- name: Set up Python (for SCons)
uses: actions/setup-python@v2
with:
python-version: '3.9.1'
- 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

@ -143,6 +143,17 @@ opts.Add(
'macOS deployment target', 'macOS deployment target',
'default' '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( opts.Add(EnumVariable(
'ios_arch', 'ios_arch',
'Target iOS architecture', 'Target iOS architecture',
@ -217,14 +228,19 @@ elif env['platform'] == 'osx':
'Only 64-bit builds are supported for the macOS target.' 'Only 64-bit builds are supported for the macOS target.'
) )
env.Append(CCFLAGS=['-std=c++14', '-arch', 'x86_64']) env.Append(CCFLAGS=['-std=c++14', '-arch', env['macos_arch']])
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']])
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=[ env.Append(LINKFLAGS=[
'-arch', '-arch',
'x86_64', env['macos_arch'],
'-framework', '-framework',
'Cocoa', 'Cocoa',
'-Wl,-undefined,dynamic_lookup', '-Wl,-undefined,dynamic_lookup',