Skip to content

Commit

Permalink
Update build_xcframework.yml
Browse files Browse the repository at this point in the history
  • Loading branch information
feuvan authored Sep 9, 2024
1 parent d545e47 commit 054632e
Showing 1 changed file with 46 additions and 11 deletions.
57 changes: 46 additions & 11 deletions .github/workflows/build_xcframework.yml
Original file line number Diff line number Diff line change
Expand Up @@ -30,22 +30,33 @@ jobs:
- { sdk: 'iphonesimulator', arch: 'arm64', platform: 'iPhoneSimulator' }

steps:
- uses: actions/checkout@v3
- uses: actions/checkout@v4

- name: Cache build results
uses: actions/cache@v4
id: cache
with:
path: ${{ env.OUTPUT_DIR }}/build-${{ matrix.config.sdk }}-${{ matrix.config.arch }}
key: ${{ runner.os }}-build-${{ matrix.config.sdk }}-${{ matrix.config.arch }}-${{ hashFiles('**/*.c', '**/*.cpp', '**/*.h', '**/*.m', '**/*.mm') }}

- name: Set up Xcode
if: steps.cache.outputs.cache-hit != 'true'
uses: maxim-lobanov/setup-xcode@v1
with:
xcode-version: latest-stable

- name: Install autotools
if: steps.cache.outputs.cache-hit != 'true'
run: brew install autoconf automake libtool

- name: Setup build environment
if: steps.cache.outputs.cache-hit != 'true'
run: |
aclocal && autoconf && automake --add-missing
mkdir -p "$OUTPUT_DIR"
- name: Build for ${{ matrix.config.sdk }} ${{ matrix.config.arch }}
if: steps.cache.outputs.cache-hit != 'true'
run: |
./.github/actions/build_library.sh ${{ matrix.config.sdk }} ${{ matrix.config.arch }} ${{ matrix.config.platform }}
Expand All @@ -72,6 +83,34 @@ jobs:
echo "Contents of OUTPUT_DIR:"
ls -R ${{ env.OUTPUT_DIR }}
- name: Create fat libraries using lipo
run: |
mkdir -p "${OUTPUT_DIR}/fat"
# For macOS
lipo -create \
"${OUTPUT_DIR}/build-macosx-arm64/macosx-arm64-MacOSX/lib/libopencore-amrnb.a" \
"${OUTPUT_DIR}/build-macosx-x86_64/macosx-x86_64-MacOSX/lib/libopencore-amrnb.a" \
-output "${OUTPUT_DIR}/fat/libopencore-amrnb-macos.a"
lipo -create \
"${OUTPUT_DIR}/build-macosx-arm64/macosx-arm64-MacOSX/lib/libopencore-amrwb.a" \
"${OUTPUT_DIR}/build-macosx-x86_64/macosx-x86_64-MacOSX/lib/libopencore-amrwb.a" \
-output "${OUTPUT_DIR}/fat/libopencore-amrwb-macos.a"
# For iOS device
cp "${OUTPUT_DIR}/build-iphoneos-arm64/iphoneos-arm64-iPhoneOS/lib/libopencore-amrnb.a" "${OUTPUT_DIR}/fat/libopencore-amrnb-iphoneos.a"
cp "${OUTPUT_DIR}/build-iphoneos-arm64/iphoneos-arm64-iPhoneOS/lib/libopencore-amrwb.a" "${OUTPUT_DIR}/fat/libopencore-amrwb-iphoneos.a"
# For iOS simulator
lipo -create \
"${OUTPUT_DIR}/build-iphonesimulator-x86_64/iphonesimulator-x86_64-iPhoneSimulator/lib/libopencore-amrnb.a" \
"${OUTPUT_DIR}/build-iphonesimulator-arm64/iphonesimulator-arm64-iPhoneSimulator/lib/libopencore-amrnb.a" \
-output "${OUTPUT_DIR}/fat/libopencore-amrnb-iphonesimulator.a"
lipo -create \
"${OUTPUT_DIR}/build-iphonesimulator-x86_64/iphonesimulator-x86_64-iPhoneSimulator/lib/libopencore-amrwb.a" \
"${OUTPUT_DIR}/build-iphonesimulator-arm64/iphonesimulator-arm64-iPhoneSimulator/lib/libopencore-amrwb.a" \
-output "${OUTPUT_DIR}/fat/libopencore-amrwb-iphonesimulator.a"
- name: Create XCFrameworks
run: |
mkdir -p "${OUTPUT_DIR}/Headers/"
Expand All @@ -82,11 +121,9 @@ jobs:
cp -a amrnb/{interf_dec,interf_enc}.h ${OUTPUT_DIR}/Headers/
xcodebuild -create-xcframework \
-library ${OUTPUT_DIR}/build-macosx-arm64/macosx-arm64-MacOSX/lib/libopencore-amrnb.a -headers ${OUTPUT_DIR}/Headers \
-library ${OUTPUT_DIR}/build-macosx-x86_64/macosx-x86_64-MacOSX/lib/libopencore-amrnb.a -headers ${OUTPUT_DIR}/Headers \
-library ${OUTPUT_DIR}/build-iphoneos-arm64/iphoneos-arm64-iPhoneOS/lib/libopencore-amrnb.a -headers ${OUTPUT_DIR}/Headers \
-library ${OUTPUT_DIR}/build-iphonesimulator-x86_64/iphonesimulator-x86_64-iPhoneSimulator/lib/libopencore-amrnb.a -headers ${OUTPUT_DIR}/Headers \
-library ${OUTPUT_DIR}/build-iphonesimulator-arm64/iphonesimulator-arm64-iPhoneSimulator/lib/libopencore-amrnb.a -headers ${OUTPUT_DIR}/Headers \
-library ${OUTPUT_DIR}/fat/libopencore-amrnb-macos.a -headers ${OUTPUT_DIR}/Headers \
-library ${OUTPUT_DIR}/fat/libopencore-amrnb-iphoneos.a -headers ${OUTPUT_DIR}/Headers \
-library ${OUTPUT_DIR}/fat/libopencore-amrnb-iphonesimulator.a -headers ${OUTPUT_DIR}/Headers \
-output ${OUTPUT_DIR}/opencore-amrnb.xcframework
# For opencore-amrwb
Expand All @@ -95,11 +132,9 @@ jobs:
cp -a amrwb/{dec_if,if_rom}.h ${OUTPUT_DIR}/Headers/
xcodebuild -create-xcframework \
-library ${OUTPUT_DIR}/build-macosx-arm64/macosx-arm64-MacOSX/lib/libopencore-amrwb.a -headers ${OUTPUT_DIR}/Headers \
-library ${OUTPUT_DIR}/build-macosx-x86_64/macosx-x86_64-MacOSX/lib/libopencore-amrwb.a -headers ${OUTPUT_DIR}/Headers \
-library ${OUTPUT_DIR}/build-iphoneos-arm64/iphoneos-arm64-iPhoneOS/lib/libopencore-amrwb.a -headers ${OUTPUT_DIR}/Headers \
-library ${OUTPUT_DIR}/build-iphonesimulator-x86_64/iphonesimulator-x86_64-iPhoneSimulator/lib/libopencore-amrwb.a -headers ${OUTPUT_DIR}/Headers \
-library ${OUTPUT_DIR}/build-iphonesimulator-arm64/iphonesimulator-arm64-iPhoneSimulator/lib/libopencore-amrwb.a -headers ${OUTPUT_DIR}/Headers \
-library ${OUTPUT_DIR}/fat/libopencore-amrwb-macos.a -headers ${OUTPUT_DIR}/Headers \
-library ${OUTPUT_DIR}/fat/libopencore-amrwb-iphoneos.a -headers ${OUTPUT_DIR}/Headers \
-library ${OUTPUT_DIR}/fat/libopencore-amrwb-iphonesimulator.a -headers ${OUTPUT_DIR}/Headers \
-output ${OUTPUT_DIR}/opencore-amrwb.xcframework
- name: Zip XCFrameworks
Expand Down

0 comments on commit 054632e

Please sign in to comment.