Skip to content

Commit 7c154e0

Browse files
committed
Update build script to fix iOS and simulators
1 parent 8c101dd commit 7c154e0

File tree

3 files changed

+32
-25
lines changed

3 files changed

+32
-25
lines changed

Mediasoup.xcodeproj/project.pbxproj

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -480,7 +480,7 @@
480480
);
481481
runOnlyForDeploymentPostprocessing = 0;
482482
shellPath = /bin/sh;
483-
shellScript = "set -e\n\nFRAMEWORK_NAME=\"Mediasoup\"\nBUILD_DIR=\"${SRCROOT}/build/Mediasoup\"\nOUTPUT_DIR=\"${SRCROOT}/bin\"\n\n# Remove build directory if it exists\nif [ -d \"${BUILD_DIR}\" ]; then\n\trm -rf \"${BUILD_DIR}\"\nfi\n\n# Build the framework for both device and simulator\nxcodebuild -project \"${PROJECT_NAME}.xcodeproj\" \\\n -scheme \"${FRAMEWORK_NAME}\" \\\n -configuration Release \\\n -arch arm64 only_active_arch=no \\\n -sdk \"iphoneos\" \\\n -derivedDataPath \"${BUILD_DIR}\"\n\nxcodebuild -project \"${PROJECT_NAME}.xcodeproj\" \\\n -scheme \"${FRAMEWORK_NAME}\" \\\n -configuration Release \\\n -arch x86_64 -arch arm64 only_active_arch=no \\\n -sdk \"iphonesimulator\" \\\n -derivedDataPath \"${BUILD_DIR}\"\n \nxcodebuild -project \"${PROJECT_NAME}.xcodeproj\" \\\n -scheme \"${FRAMEWORK_NAME}\" \\\n -configuration Release \\\n -arch arm64 only_active_arch=no \\\n -sdk \"appletvos\" \\\n -derivedDataPath \"${BUILD_DIR}\"\n \nxcodebuild -project \"${PROJECT_NAME}.xcodeproj\" \\\n -scheme \"${FRAMEWORK_NAME}\" \\\n -configuration Release \\\n -arch arm64 only_active_arch=no \\\n -sdk \"appletvsimulator\" \\\n -derivedDataPath \"${BUILD_DIR}\"\n \n# xcodebuild -project \"${PROJECT_NAME}.xcodeproj\" \\\n# -scheme \"${FRAMEWORK_NAME}\" \\\n# -configuration Release \\\n# -arch x86_64 -arch arm64 only_active_arch=no \\\n# -sdk \"appletvsimulator\" \\\n# -derivedDataPath \"${BUILD_DIR}\"\n \n# Prepare output directory\nmkdir -p ${OUTPUT_DIR}\nif [ -d \"${OUTPUT_DIR}/${FRAMEWORK_NAME}.xcframework\" ]; then\n\trm -rf \"${OUTPUT_DIR}/${FRAMEWORK_NAME}.xcframework\"\nfi\n\nxcodebuild -create-xcframework \\\n\t-framework ${BUILD_DIR}/Build/Products/Release-appletvos/${FRAMEWORK_NAME}.framework \\\n\t-output $OUTPUT_DIR/${FRAMEWORK_NAME}.xcframework\n";
483+
shellScript = "set -e\n\nFRAMEWORK_NAME=\"Mediasoup\"\nBUILD_DIR=\"${SRCROOT}/build/Mediasoup\"\nOUTPUT_DIR=\"${SRCROOT}/bin\"\n\n# Remove build directory if it exists\nif [ -d \"${BUILD_DIR}\" ]; then\n\trm -rf \"${BUILD_DIR}\"\nfi\n\n# Build the framework for both device and simulator\nxcodebuild -project \"${PROJECT_NAME}.xcodeproj\" \\\n -scheme \"${FRAMEWORK_NAME}\" \\\n -configuration Release \\\n -arch arm64 only_active_arch=no \\\n -sdk \"iphoneos\" \\\n -derivedDataPath \"${BUILD_DIR}\"\n\nxcodebuild -project \"${PROJECT_NAME}.xcodeproj\" \\\n -scheme \"${FRAMEWORK_NAME}\" \\\n -configuration Release \\\n -arch x86_64 -arch arm64 only_active_arch=no \\\n -sdk \"iphonesimulator\" \\\n -derivedDataPath \"${BUILD_DIR}\"\n \nxcodebuild -project \"${PROJECT_NAME}.xcodeproj\" \\\n -scheme \"${FRAMEWORK_NAME}\" \\\n -configuration Release \\\n -arch arm64 only_active_arch=no \\\n -sdk \"appletvos\" \\\n -derivedDataPath \"${BUILD_DIR}\"\n \nxcodebuild -project \"${PROJECT_NAME}.xcodeproj\" \\\n -scheme \"${FRAMEWORK_NAME}\" \\\n -configuration Release \\\n -arch x86_64 -arch arm64 only_active_arch=no \\\n -sdk \"appletvsimulator\" \\\n -derivedDataPath \"${BUILD_DIR}\"\n \n# Prepare output directory\nmkdir -p ${OUTPUT_DIR}\nif [ -d \"${OUTPUT_DIR}/${FRAMEWORK_NAME}.xcframework\" ]; then\n\trm -rf \"${OUTPUT_DIR}/${FRAMEWORK_NAME}.xcframework\"\nfi\n\nxcodebuild -create-xcframework \\\n\t-framework ${BUILD_DIR}/Build/Products/Release-iphoneos/${FRAMEWORK_NAME}.framework \\\n\t-framework ${BUILD_DIR}/Build/Products/Release-iphonesimulator/${FRAMEWORK_NAME}.framework \\\n\t-framework ${BUILD_DIR}/Build/Products/Release-appletvos/${FRAMEWORK_NAME}.framework \\\n -framework ${BUILD_DIR}/Build/Products/Release-appletvsimulator/${FRAMEWORK_NAME}.framework \\\n\t-output $OUTPUT_DIR/${FRAMEWORK_NAME}.xcframework\n";
484484
};
485485
/* End PBXShellScriptBuildPhase section */
486486

build.sh

Lines changed: 18 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -169,6 +169,7 @@ function patchWebRTC() {
169169
patch -b -p0 -d $WORK_DIR < $PATCHES_DIR/video_decoder_factory_h.patch
170170
patch -b -p0 -d $WORK_DIR < $PATCHES_DIR/video_encoder_factory_h.patch
171171
patch -b -p0 -d $WORK_DIR < $PATCHES_DIR/pc_BUILD.patch
172+
patch -b -p0 -d $WORK_DIR < $PATCHES_DIR/nasm_assemble.patch
172173
}
173174

174175
# WebRTC sources are downloaded by git client from Depot tools.
@@ -223,6 +224,9 @@ function resetWebRTC() {
223224

224225
cd $WORK_DIR/webrtc/src/third_party
225226
git reset --hard
227+
228+
cd $WORK_DIR/webrtc/src/third_party/nasm
229+
git reset --hard
226230
}
227231

228232
if [ -d $WORK_DIR/webrtc ]
@@ -303,9 +307,8 @@ gn gen $BUILD_DIR/WebRTC/simulator/x64 --ide=xcode --args="${platform_args}${gn_
303307
platform_args='target_environment="simulator" target_cpu="arm64"'
304308
gn gen $BUILD_DIR/WebRTC/simulator/arm64 --ide=xcode --args="${platform_args}${gn_args}"
305309
# tvOS Simulator
306-
# FIXME x64 build fails at the ninja step below
307-
# platform_args='target_environment="appletvsimulator" target_cpu="x64"'
308-
# gn gen $BUILD_DIR/WebRTC/appletvsimulator/x64 --ide=xcode --args="${platform_args}${gn_args}"
310+
platform_args='target_environment="appletvsimulator" target_cpu="x64"'
311+
gn gen $BUILD_DIR/WebRTC/appletvsimulator/x64 --ide=xcode --args="${platform_args}${gn_args}"
309312
platform_args='target_environment="appletvsimulator" target_cpu="arm64"'
310313
gn gen $BUILD_DIR/WebRTC/appletvsimulator/arm64 --ide=xcode --args="${platform_args}${gn_args}"
311314

@@ -318,7 +321,7 @@ ninja -C device/arm64 sdk
318321
ninja -C appletv/arm64 sdk
319322
ninja -C simulator/x64 sdk
320323
ninja -C simulator/arm64 sdk
321-
# ninja -C appletvsimulator/x64 sdk
324+
ninja -C appletvsimulator/x64 sdk
322325
ninja -C appletvsimulator/arm64 sdk
323326

324327
cd $BUILD_DIR/WebRTC
@@ -332,12 +335,9 @@ lipo -create \
332335
rm -rf appletvsimulator/WebRTC.framework
333336
cp -R appletvsimulator/arm64/WebRTC.framework appletvsimulator/WebRTC.framework
334337
rm appletvsimulator/WebRTC.framework/WebRTC
335-
# lipo -create \
336-
# appletvsimulator/arm64/WebRTC.framework/WebRTC \
337-
# appletvsimulator/x64/WebRTC.framework/WebRTC \
338-
# -output appletvsimulator/WebRTC.framework/WebRTC
339338
lipo -create \
340339
appletvsimulator/arm64/WebRTC.framework/WebRTC \
340+
appletvsimulator/x64/WebRTC.framework/WebRTC \
341341
-output appletvsimulator/WebRTC.framework/WebRTC
342342

343343
cd $BUILD_DIR/WebRTC
@@ -408,14 +408,14 @@ function rebuildLMSC() {
408408
-DCMAKE_OSX_SYSROOT="/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator.sdk"
409409
make -C $BUILD_DIR/libmediasoupclient/simulator/arm64
410410

411-
# cmake . -B $BUILD_DIR/libmediasoupclient/appletvsimulator/x64 \
412-
# ${lmsc_cmake_args} \
413-
# -DLIBWEBRTC_BINARY_PATH=$BUILD_DIR/WebRTC/appletvsimulator/x64/WebRTC.framework/WebRTC \
414-
# -DIOS_SDK=appletvsimulator \
415-
# -DIOS_ARCHS="x86_64" \
416-
# -DPLATFORM=SIMULATOR64 \
417-
# -DCMAKE_OSX_SYSROOT="/Applications/Xcode.app/Contents/Developer/Platforms/AppleTVSimulator.platform/Developer/SDKs/AppleTVSimulator.sdk"
418-
# make -C $BUILD_DIR/libmediasoupclient/appletvsimulator/x64
411+
cmake . -B $BUILD_DIR/libmediasoupclient/appletvsimulator/x64 \
412+
${lmsc_cmake_args} \
413+
-DLIBWEBRTC_BINARY_PATH=$BUILD_DIR/WebRTC/appletvsimulator/x64/WebRTC.framework/WebRTC \
414+
-DIOS_SDK=appletvsimulator \
415+
-DIOS_ARCHS="x86_64" \
416+
-DPLATFORM=SIMULATOR64 \
417+
-DCMAKE_OSX_SYSROOT="/Applications/Xcode.app/Contents/Developer/Platforms/AppleTVSimulator.platform/Developer/SDKs/AppleTVSimulator.sdk"
418+
make -C $BUILD_DIR/libmediasoupclient/appletvsimulator/x64
419419

420420
cmake . -B $BUILD_DIR/libmediasoupclient/appletvsimulator/arm64 \
421421
${lmsc_cmake_args} \
@@ -437,18 +437,12 @@ function rebuildLMSC() {
437437
$BUILD_DIR/libmediasoupclient/simulator/x64/_deps/libsdptransform-build/libsdptransform.a \
438438
$BUILD_DIR/libmediasoupclient/simulator/arm64/_deps/libsdptransform-build/libsdptransform.a \
439439
-output $BUILD_DIR/libmediasoupclient/simulator/fat/libsdptransform.a
440-
# lipo -create \
441-
# $BUILD_DIR/libmediasoupclient/appletvsimulator/x64/libmediasoupclient/libmediasoupclient.a \
442-
# $BUILD_DIR/libmediasoupclient/appletvsimulator/arm64/libmediasoupclient/libmediasoupclient.a \
443-
# -output $BUILD_DIR/libmediasoupclient/appletvsimulator/fat/libmediasoupclient.a
444440
lipo -create \
441+
$BUILD_DIR/libmediasoupclient/appletvsimulator/x64/libmediasoupclient/libmediasoupclient.a \
445442
$BUILD_DIR/libmediasoupclient/appletvsimulator/arm64/libmediasoupclient/libmediasoupclient.a \
446443
-output $BUILD_DIR/libmediasoupclient/appletvsimulator/fat/libmediasoupclient.a
447-
# lipo -create \
448-
# $BUILD_DIR/libmediasoupclient/appletvsimulator/x64/_deps/libsdptransform-build/libsdptransform.a \
449-
# $BUILD_DIR/libmediasoupclient/appletvsimulator/arm64/_deps/libsdptransform-build/libsdptransform.a \
450-
# -output $BUILD_DIR/libmediasoupclient/appletvsimulator/fat/libsdptransform.a
451444
lipo -create \
445+
$BUILD_DIR/libmediasoupclient/appletvsimulator/x64/_deps/libsdptransform-build/libsdptransform.a \
452446
$BUILD_DIR/libmediasoupclient/appletvsimulator/arm64/_deps/libsdptransform-build/libsdptransform.a \
453447
-output $BUILD_DIR/libmediasoupclient/appletvsimulator/fat/libsdptransform.a
454448
xcodebuild -create-xcframework \

patches/nasm_assemble.patch

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
--- webrtc/src/third_party/nasm/nasm_assemble.gni
2+
+++ webrtc/src/third_party/nasm/nasm_assemble.gni
3+
@@ -59,6 +59,10 @@ if ((is_mac || is_ios) && (current_cpu == "x86" || current_cpu == "x64")) {
4+
} else if (is_ios) {
5+
if (target_environment == "device") {
6+
_nasm_flags += [ "--macho-min-os=ios$ios_deployment_target" ]
7+
+ } else if (target_environment == "appletv") {
8+
+ _nasm_flags += [ "--macho-min-os=tvos$ios_deployment_target" ]
9+
+ } else if (target_environment == "appletvsimulator") {
10+
+ _nasm_flags += [ "--macho-min-os=tvos$ios_deployment_target-simulator" ]
11+
} else {
12+
_nasm_flags +=
13+
[ "--macho-min-os=ios$ios_deployment_target-$target_environment" ]

0 commit comments

Comments
 (0)