Skip to content

Commit a67da25

Browse files
Merge pull request #50 from AvionBlock/master
Update from master.
2 parents 7885d07 + cf524ea commit a67da25

7 files changed

Lines changed: 290 additions & 96 deletions

File tree

.github/workflows/OpusCompile.yml

Lines changed: 81 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -55,11 +55,23 @@ jobs:
5555

5656
- name: Configure
5757
working-directory: ./build
58-
run: cmake ../opus -DCMAKE_TOOLCHAIN_FILE=${ANDROID_NDK_HOME}/build/cmake/android.toolchain.cmake -DANDROID_ABI=${{ env.ABI }} -DBUILD_SHARED_LIBS=ON -DCMAKE_BUILD_TYPE=Release -DOPUS_BUILD_PROGRAMS=ON -DBUILD_TESTING=ON -DBUILD_SHARED_LIBS=ON -DCMAKE_SHARED_LINKER_FLAGS='-Wl,-z,max-page-size=16384,-z,common-page-size=16384' -DCMAKE_EXE_LINKER_FLAGS='-Wl,-z,max-page-size=16384,-z,common-page-size=16384'
58+
run: cmake ../opus -DCMAKE_TOOLCHAIN_FILE=${ANDROID_NDK_HOME}/build/cmake/android.toolchain.cmake -DANDROID_ABI=${{ env.ABI }} -DBUILD_SHARED_LIBS=OFF -DCMAKE_BUILD_TYPE=Release -DOPUS_BUILD_PROGRAMS=ON -DBUILD_TESTING=ON -DCMAKE_POSITION_INDEPENDENT_CODE=ON -DCMAKE_SHARED_LINKER_FLAGS='-Wl,-z,max-page-size=16384,-z,common-page-size=16384' -DCMAKE_EXE_LINKER_FLAGS='-Wl,-z,max-page-size=16384,-z,common-page-size=16384'
5959

6060
- name: Build
6161
working-directory: ./build
62-
run: cmake --build . -j 2 --config Release --target package
62+
run: cmake --build . -j 2 --config Release
63+
64+
- name: Build with shim
65+
working-directory: ./build
66+
run: |
67+
${ANDROID_NDK_HOME}/toolchains/llvm/prebuilt/linux-x86_64/bin/clang \
68+
--target=$(case "${{ env.ABI }}" in x86_64) echo x86_64-linux-android21;; x86) echo i686-linux-android21;; arm64-v8a) echo aarch64-linux-android21;; armeabi-v7a) echo armv7a-linux-androideabi21;; esac) \
69+
--sysroot=${ANDROID_NDK_HOME}/toolchains/llvm/prebuilt/linux-x86_64/sysroot \
70+
-shared -o libopus.so \
71+
-I../opus/include \
72+
../OpusSharp.Natives/opus_shim.c \
73+
-Wl,--whole-archive libopus.a -Wl,--no-whole-archive \
74+
-Wl,-z,max-page-size=16384,-z,common-page-size=16384
6375
6476
- name: Check Alignment
6577
if: ${{ env.CHECK_ALIGNMENT == 'true' }}
@@ -117,18 +129,32 @@ jobs:
117129
working-directory: ./build
118130
run: |
119131
if [[ "${{ matrix.arch }}" == "x64" || "${{ matrix.arch }}" == "x86" ]]; then
120-
cmake ../opus -DBUILD_SHARED_LIBS=ON -DCMAKE_BUILD_TYPE=Release -DOPUS_BUILD_PROGRAMS=ON -DCMAKE_C_FLAGS=${{ env.C_FLAGS }} -DCMAKE_CXX_FLAGS=${{ env.CXX_FLAGS }}
132+
cmake ../opus -DBUILD_SHARED_LIBS=OFF -DCMAKE_BUILD_TYPE=Release -DOPUS_BUILD_PROGRAMS=ON -DCMAKE_POSITION_INDEPENDENT_CODE=ON -DCMAKE_C_FLAGS=${{ env.C_FLAGS }} -DCMAKE_CXX_FLAGS=${{ env.CXX_FLAGS }}
121133
elif [[ "${{ matrix.arch }}" == "arm64" || "${{ matrix.arch }}" == "arm32" ]]; then
122-
cmake ../opus -DBUILD_SHARED_LIBS=ON -DCMAKE_BUILD_TYPE=Release -DOPUS_BUILD_PROGRAMS=ON -DCMAKE_C_COMPILER=${{ env.C_COMPILER }} -DCMAKE_CXX_COMPILER=${{ env.CXX_COMPILER }}
134+
cmake ../opus -DBUILD_SHARED_LIBS=OFF -DCMAKE_BUILD_TYPE=Release -DOPUS_BUILD_PROGRAMS=ON -DCMAKE_POSITION_INDEPENDENT_CODE=ON -DCMAKE_C_COMPILER=${{ env.C_COMPILER }} -DCMAKE_CXX_COMPILER=${{ env.CXX_COMPILER }}
123135
fi
124136
125137
- name: Build
126138
working-directory: ./build
127-
run: cmake --build . -j 2 --config Release --target package
139+
run: cmake --build . -j 2 --config Release
128140

129-
- name: Rename file
141+
- name: Build with shim
130142
working-directory: ./build
131-
run: mv libopus.so.*.*.* opus.so
143+
run: |
144+
if [[ "${{ matrix.arch }}" == "x64" ]]; then
145+
CC="gcc -m64"
146+
elif [[ "${{ matrix.arch }}" == "x86" ]]; then
147+
CC="gcc -m32"
148+
elif [[ "${{ matrix.arch }}" == "arm64" ]]; then
149+
CC=${{ env.C_COMPILER }}
150+
elif [[ "${{ matrix.arch }}" == "arm32" ]]; then
151+
CC=${{ env.C_COMPILER }}
152+
fi
153+
$CC -shared -o opus.so \
154+
-I../opus/include \
155+
../OpusSharp.Natives/opus_shim.c \
156+
-Wl,--whole-archive libopus.a -Wl,--no-whole-archive \
157+
-lm
132158
133159
- name: Upload Artifact
134160
uses: actions/upload-artifact@v4
@@ -171,21 +197,30 @@ jobs:
171197
working-directory: ./build
172198
run: |
173199
if ( "${{ matrix.arch }}" -eq "arm32" ) {
174-
cmake ../opus -G "Visual Studio 17 2022" -A ARM,version=10.0.22621.0 -DCMAKE_BUILD_TYPE=Release -DOPUS_BUILD_PROGRAMS=ON -DBUILD_TESTING=ON -DBUILD_SHARED_LIBS=ON
200+
cmake ../opus -G "Visual Studio 17 2022" -A ARM,version=10.0.22621.0 -DCMAKE_BUILD_TYPE=Release -DOPUS_BUILD_PROGRAMS=ON -DBUILD_TESTING=ON -DBUILD_SHARED_LIBS=OFF
175201
}
176202
else {
177-
cmake ../opus -G "Visual Studio 17 2022" -A ${{ env.ARCH }} -DCMAKE_BUILD_TYPE=Release -DOPUS_BUILD_PROGRAMS=ON -DBUILD_TESTING=ON -DBUILD_SHARED_LIBS=ON
203+
cmake ../opus -G "Visual Studio 17 2022" -A ${{ env.ARCH }} -DCMAKE_BUILD_TYPE=Release -DOPUS_BUILD_PROGRAMS=ON -DBUILD_TESTING=ON -DBUILD_SHARED_LIBS=OFF
178204
}
179205
180206
- name: Build
181207
working-directory: ./build
182-
run: cmake --build . -j 2 --config Release --target package
208+
run: cmake --build . -j 2 --config Release
209+
210+
- name: Build with shim
211+
working-directory: ./build
212+
shell: cmd
213+
run: |
214+
if "${{ env.ARCH }}"=="Win32" (set "VCARCH=x86") else if "${{ env.ARCH }}"=="x64" (set "VCARCH=amd64") else if "${{ env.ARCH }}"=="ARM64" (set "VCARCH=amd64_arm64") else if "${{ env.ARCH }}"=="ARM" (set "VCARCH=amd64_arm")
215+
call "C:\Program Files\Microsoft Visual Studio\2022\Enterprise\VC\Auxiliary\Build\vcvarsall.bat" %VCARCH%
216+
cl /O2 /MD /I..\opus\include /c ..\OpusSharp.Natives\opus_shim.c /Foopus_shim.obj
217+
link /DLL /OUT:opus.dll opus_shim.obj Release\opus.lib ucrt.lib vcruntime.lib msvcrt.lib
183218
184219
- name: Upload Artifact
185220
uses: actions/upload-artifact@v4
186221
with:
187222
name: win-${{ matrix.arch }}-opus.dll
188-
path: ./build/Release/opus.dll
223+
path: ./build/opus.dll
189224

190225
MacOS:
191226
runs-on: macos-latest
@@ -217,15 +252,20 @@ jobs:
217252

218253
- name: Configure
219254
working-directory: ./build
220-
run: cmake ../opus -DCMAKE_BUILD_TYPE=Release -DBUILD_SHARED_LIBS=ON -DCMAKE_OSX_ARCHITECTURES=${{ env.OSX_ARCH }}
255+
run: cmake ../opus -DCMAKE_BUILD_TYPE=Release -DBUILD_SHARED_LIBS=OFF -DCMAKE_OSX_ARCHITECTURES=${{ env.OSX_ARCH }} -DCMAKE_POSITION_INDEPENDENT_CODE=ON
221256

222257
- name: Build
223258
working-directory: ./build
224259
run: cmake --build .
225260

226-
- name: Rename file
261+
- name: Build with shim
227262
working-directory: ./build
228-
run: mv libopus.*.*.*.dylib opus.dylib
263+
run: |
264+
cc -arch ${{ env.OSX_ARCH }} -shared -o opus.dylib \
265+
-I../opus/include \
266+
../OpusSharp.Natives/opus_shim.c \
267+
-Wl,-force_load,libopus.a \
268+
-install_name @rpath/opus.dylib
229269
230270
- name: Upload Artifact
231271
uses: actions/upload-artifact@v4
@@ -307,6 +347,25 @@ jobs:
307347
308348
make -j "$(sysctl -n hw.ncpu)" libopus.la
309349
350+
- name: Compile shim and add to archive
351+
run: |
352+
export PATH="/opt/homebrew/bin:/opt/homebrew/opt/libtool/libexec/gnubin:$PATH"
353+
SDKROOT="$(xcrun --sdk "${{ env.SDK }}" --show-sdk-path)"
354+
CC="$(xcrun --sdk "${{ env.SDK }}" --find clang)"
355+
AR="$(xcrun --sdk "${{ env.SDK }}" --find ar)"
356+
RANLIB="$(xcrun --sdk "${{ env.SDK }}" --find ranlib)"
357+
358+
if [[ "${{ matrix.target }}" == "device" ]]; then
359+
MIN_VERSION_FLAG="-miphoneos-version-min=13.0"
360+
else
361+
MIN_VERSION_FLAG="-mios-simulator-version-min=13.0"
362+
fi
363+
364+
$CC -arch ${{ env.ARCH }} -isysroot $SDKROOT $MIN_VERSION_FLAG -O3 \
365+
-I./opus/include -c ./OpusSharp.Natives/opus_shim.c -o build/opus_shim.o
366+
$AR rcs build/.libs/libopus.a build/opus_shim.o
367+
$RANLIB build/.libs/libopus.a
368+
310369
- name: Verify Library
311370
working-directory: ./build
312371
run: |
@@ -431,11 +490,17 @@ jobs:
431490

432491
- name: Configure
433492
working-directory: ./build
434-
run: emcmake cmake ../opus -DBUILD_SHARED_LIBS=ON -DCMAKE_BUILD_TYPE=Release -DOPUS_BUILD_PROGRAMS=ON
493+
run: emcmake cmake ../opus -DBUILD_SHARED_LIBS=OFF -DCMAKE_BUILD_TYPE=Release -DOPUS_BUILD_PROGRAMS=ON
435494

436495
- name: Build
437496
working-directory: ./build
438-
run: cmake --build . -j 2 --config Release --target package
497+
run: cmake --build . -j 2 --config Release
498+
499+
- name: Add shim to archive
500+
working-directory: ./build
501+
run: |
502+
emcc -O2 -I../opus/include -c ../OpusSharp.Natives/opus_shim.c -o opus_shim.o
503+
emar rcs libopus.a opus_shim.o
439504
440505
- name: Upload Artifact
441506
uses: actions/upload-artifact@v4

0 commit comments

Comments
 (0)