Skip to content

Commit 932110d

Browse files
committed
ci: add macOS arm64
1 parent 6f39540 commit 932110d

File tree

1 file changed

+44
-12
lines changed

1 file changed

+44
-12
lines changed

.github/workflows/build.yml

Lines changed: 44 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -17,13 +17,15 @@ env:
1717
jobs:
1818
macOS:
1919
# See: https://docs.github.com/en/actions/configuring-and-managing-workflows/configuring-a-workflow#configuring-a-build-matrix
20-
runs-on: macos-latest
20+
runs-on: macos-11.0
2121
env:
2222
TARGET_OS: 'macOS'
23+
TARGET_ARCH: ${{ matrix.arch }}
2324
strategy:
2425
fail-fast: false
2526
matrix:
2627
config: [RelWithDebInfo]
28+
arch: [x86_64, arm64]
2729
steps:
2830
- uses: actions/checkout@v2
2931
- name: Checkout source
@@ -34,6 +36,8 @@ jobs:
3436
fetch-depth: 1
3537
token: ${{ secrets.CLONE_PAT }}
3638
submodules: 'recursive'
39+
- name: Setup Xcode
40+
run: sudo xcode-select -s /Applications/Xcode_12.2.app
3741
- name: 'Restore External Dep cache'
3842
id: external-dep-cache
3943
uses: actions/cache@v2
@@ -53,13 +57,20 @@ jobs:
5357
run: ./tools/ci-before-build.sh
5458

5559
- name: Configure CMake
60+
if: ${{ matrix.arch == 'x86_64' }}
5661
# Use a bash shell so we can use the same syntax for environment variable
5762
# access regardless of the host operating system
5863
shell: bash
5964
working-directory: mdk
6065
run: |
6166
pwd
6267
cmake -GNinja -DCMAKE_OSX_DEPLOYMENT_TARGET=10.9 -H. -Bbuild/${TARGET_OS} -DCMAKE_VERBOSE_MAKEFILE=1 -DCMAKE_BUILD_TYPE=${{ matrix.config }} -DCMAKE_INSTALL_PREFIX=$PWD/mdk-sdk # no dSYM for lto, dsymutil: no debug symbols in executable (-arch x86_64)
68+
- name: Configure CMake
69+
if: ${{ startsWith(matrix.arch, 'arm64') }} # arm64, arm64e
70+
shell: bash
71+
working-directory: mdk
72+
run: |
73+
cmake -GNinja -DCMAKE_OSX_ARCHITECTURES=${{ matrix.arch }} -DCMAKE_OSX_DEPLOYMENT_TARGET=11.0 -H. -Bbuild/${TARGET_OS} -DCMAKE_VERBOSE_MAKEFILE=1 -DCMAKE_BUILD_TYPE=${{ matrix.config }} -DCMAKE_INSTALL_PREFIX=$PWD/mdk-sdk # no dSYM for lto, dsymutil: no debug symbols in executable (-arch x86_64)
6374
- name: Build
6475
shell: bash
6576
working-directory: mdk
@@ -69,18 +80,17 @@ jobs:
6980
working-directory: mdk
7081
run: |
7182
./tools/ci-after-build.sh
72-
mv mdk-sdk*.tar.xz mdk-sdk*.zip ..
83+
mv mdk-sdk*.tar.xz ../mdk-sdk-${{ env.TARGET_OS }}-${{ matrix.arch }}.tar.xz
7384
- name: Archieve SDK
7485
uses: actions/upload-artifact@v2
7586
with:
76-
name: mdk-sdk-${{ env.TARGET_OS }}-${{ matrix.config }}
77-
path: mdk-sdk-${{ env.TARGET_OS }}.tar.xz
87+
name: mdk-sdk-${{ env.TARGET_OS }}-${{ matrix.arch}}-${{ matrix.config }}
88+
path: mdk-sdk-${{ env.TARGET_OS }}-${{ matrix.arch}}.tar.xz
7889
- name: Upload to SourceForge
79-
if: ${{ matrix.config == 'RelWithDebInfo' }}
90+
if: ${{ matrix.config == 'RelWithDebInfo' && matrix.arch == 'x86_64' }}
8091
shell: bash
8192
run: |
82-
sshpass -p ${SF_PW} scp -o StrictHostKeyChecking=no mdk-sdk-${TARGET_OS}.tar.xz ${SF_USER}@frs.sourceforge.net:/home/frs/project/mdk-sdk/nightly/
83-
sshpass -p ${SF_PW} scp -o StrictHostKeyChecking=no mdk-sdk-${TARGET_OS}.zip ${SF_USER}@frs.sourceforge.net:/home/frs/project/mdk-sdk/nightly/
93+
sshpass -p ${SF_PW} scp -o StrictHostKeyChecking=no mdk-sdk-${TARGET_OS}-${{ matrix.arch }}.tar.xz ${SF_USER}@frs.sourceforge.net:/home/frs/project/mdk-sdk/nightly/
8494
8595
8696
iOS:
@@ -109,7 +119,7 @@ jobs:
109119
- name: Configure CMake
110120
shell: bash
111121
working-directory: mdk
112-
run: cmake -GNinja -DCMAKE_TOOLCHAIN_FILE=$PWD/cmake/tools/ios.cmake -DIOS_DEPLOYMENT_TARGET=6.0 -DIOS_ARCH="arm64;armv7" -DIOS_BITCODE=1 -DIOS_BITCODE_MARKER=1 -H. -Bbuild/${TARGET_OS} -DCMAKE_BUILD_TYPE=${{ matrix.config }} -DCMAKE_INSTALL_PREFIX=$PWD/mdk-sdk -DCMAKE_VERBOSE_MAKEFILE=1
122+
run: cmake -GNinja -DCMAKE_TOOLCHAIN_FILE=$PWD/cmake/tools/ios.cmake -DIOS_DEPLOYMENT_TARGET=6.0 -DIOS_ARCH="arm64;armv7" -DIOS_BITCODE=1 -DIOS_BITCODE_MARKER=1 -H. -Bbuild/${TARGET_OS} -DCMAKE_BUILD_TYPE=${{ matrix.config }} -DCMAKE_INSTALL_PREFIX=$PWD/mdk-sdk -DCMAKE_VERBOSE_MAKEFILE=1 -DFFMPEG_EMBED=0 # FFMPEG_EMBED=0 to copy libffmpeg.4.dylib
113123
- name: Build
114124
shell: bash
115125
working-directory: mdk
@@ -140,7 +150,11 @@ jobs:
140150
- name: Download macOS sdk
141151
uses: actions/download-artifact@v2
142152
with:
143-
name: mdk-sdk-macOS-RelWithDebInfo
153+
name: mdk-sdk-macOS-x86_64-RelWithDebInfo
154+
- name: Download macOS sdk
155+
uses: actions/download-artifact@v2
156+
with:
157+
name: mdk-sdk-macOS-arm64-RelWithDebInfo
144158
- name: Download iOS sdk
145159
uses: actions/download-artifact@v2
146160
with:
@@ -152,10 +166,18 @@ jobs:
152166
shell: bash
153167
run: |
154168
export XZ_OPT="-9e --threads=`getconf _NPROCESSORS_ONLN`"
155-
mkdir -p macOS iOS mdk-sdk/lib
156-
tar Jxf mdk-sdk-macOS.tar.xz -C macOS
169+
mkdir -p macOS iOS mdk-sdk/lib macOS-arm64 macOS-x86_64
170+
tar Jxf mdk-sdk-macOS-x86_64.tar.xz -C macOS-x86_64
171+
tar Jxf mdk-sdk-macOS-arm64.tar.xz -C macOS-arm64
157172
tar Jxf mdk-sdk-iOS.tar.xz -C iOS
158173
find .
174+
cp -af macOS-x86_64/mdk-sdk macOS/ # libffmpeg is already fat
175+
lipo -create macOS-{arm,x86_}64/mdk-sdk/lib/mdk.framework/mdk -output macOS/mdk-sdk/lib/mdk.framework/Versions/Current/mdk
176+
lipo -create macOS-{arm,x86_}64/mdk-sdk/lib/mdk.framework.dSYM/Contents/Resources/DWARF/mdk -output macOS/mdk-sdk/lib/mdk.framework.dSYM/Contents/Resources/DWARF/mdk
177+
cp -fRv macOS/mdk-sdk/lib/mdk.framework/Versions/{Current,A} # codesign may requires version A
178+
for b in `ls macOS-arm64/mdk-sdk/bin`; do # exes exist in both archs
179+
lipo -create macOS-{arm,x86_}64/mdk-sdk/bin/$b -output macOS/mdk-sdk/bin/$b
180+
done
159181
mv macOS/mdk-sdk/lib/libffmpeg*.dylib macOS/mdk-sdk/lib/cmake mdk-sdk/lib/
160182
mv macOS/mdk-sdk/{bin,doc,include,*.sh} mdk-sdk
161183
mv macOS/mdk-sdk/README.md mdk-sdk/README-macOS.md
@@ -166,7 +188,15 @@ jobs:
166188
ln -sf ${binfw/mdk-sdk/..}/mdk.framework mdk-sdk/bin
167189
tar Jcvf mdk-sdk-apple.tar.xz mdk-sdk
168190
7z a mdk-sdk-apple.zip mdk-sdk
169-
- name: Archieve SDK
191+
tar Jcvf mdk-sdk-macOS.tar.xz -C macOS .
192+
cd macOS
193+
7z a ../mdk-sdk-macOS.zip mdk-sdk
194+
- name: Archieve XCFramework SDK
195+
uses: actions/upload-artifact@v2
196+
with:
197+
name: mdk-sdk-apple
198+
path: mdk-sdk-apple.tar.xz
199+
- name: Archieve macOS SDK
170200
uses: actions/upload-artifact@v2
171201
with:
172202
name: mdk-sdk-apple
@@ -176,6 +206,8 @@ jobs:
176206
run: |
177207
sshpass -p ${SF_PW} scp -o StrictHostKeyChecking=no mdk-sdk-apple.tar.xz ${SF_USER}@frs.sourceforge.net:/home/frs/project/mdk-sdk/nightly/
178208
sshpass -p ${SF_PW} scp -o StrictHostKeyChecking=no mdk-sdk-apple.zip ${SF_USER}@frs.sourceforge.net:/home/frs/project/mdk-sdk/nightly/
209+
sshpass -p ${SF_PW} scp -o StrictHostKeyChecking=no mdk-sdk-macOS.tar.xz ${SF_USER}@frs.sourceforge.net:/home/frs/project/mdk-sdk/nightly/
210+
sshpass -p ${SF_PW} scp -o StrictHostKeyChecking=no mdk-sdk-macOS.zip ${SF_USER}@frs.sourceforge.net:/home/frs/project/mdk-sdk/nightly/
179211
180212
181213
RaspberryPi_libcxx:

0 commit comments

Comments
 (0)