Skip to content

Commit 333f063

Browse files
committed
Update build script to fix tvOS simulator
1 parent 8c101dd commit 333f063

File tree

3 files changed

+29
-25
lines changed

3 files changed

+29
-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-appletvos/${FRAMEWORK_NAME}.framework \\\n\t-output $OUTPUT_DIR/${FRAMEWORK_NAME}.xcframework\n";
484484
};
485485
/* End PBXShellScriptBuildPhase section */
486486

build.sh

Lines changed: 15 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.
@@ -303,9 +304,8 @@ gn gen $BUILD_DIR/WebRTC/simulator/x64 --ide=xcode --args="${platform_args}${gn_
303304
platform_args='target_environment="simulator" target_cpu="arm64"'
304305
gn gen $BUILD_DIR/WebRTC/simulator/arm64 --ide=xcode --args="${platform_args}${gn_args}"
305306
# 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}"
307+
platform_args='target_environment="appletvsimulator" target_cpu="x64"'
308+
gn gen $BUILD_DIR/WebRTC/appletvsimulator/x64 --ide=xcode --args="${platform_args}${gn_args}"
309309
platform_args='target_environment="appletvsimulator" target_cpu="arm64"'
310310
gn gen $BUILD_DIR/WebRTC/appletvsimulator/arm64 --ide=xcode --args="${platform_args}${gn_args}"
311311

@@ -318,7 +318,7 @@ ninja -C device/arm64 sdk
318318
ninja -C appletv/arm64 sdk
319319
ninja -C simulator/x64 sdk
320320
ninja -C simulator/arm64 sdk
321-
# ninja -C appletvsimulator/x64 sdk
321+
ninja -C appletvsimulator/x64 sdk
322322
ninja -C appletvsimulator/arm64 sdk
323323

324324
cd $BUILD_DIR/WebRTC
@@ -332,12 +332,9 @@ lipo -create \
332332
rm -rf appletvsimulator/WebRTC.framework
333333
cp -R appletvsimulator/arm64/WebRTC.framework appletvsimulator/WebRTC.framework
334334
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
339335
lipo -create \
340336
appletvsimulator/arm64/WebRTC.framework/WebRTC \
337+
appletvsimulator/x64/WebRTC.framework/WebRTC \
341338
-output appletvsimulator/WebRTC.framework/WebRTC
342339

343340
cd $BUILD_DIR/WebRTC
@@ -408,14 +405,14 @@ function rebuildLMSC() {
408405
-DCMAKE_OSX_SYSROOT="/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator.sdk"
409406
make -C $BUILD_DIR/libmediasoupclient/simulator/arm64
410407

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
408+
cmake . -B $BUILD_DIR/libmediasoupclient/appletvsimulator/x64 \
409+
${lmsc_cmake_args} \
410+
-DLIBWEBRTC_BINARY_PATH=$BUILD_DIR/WebRTC/appletvsimulator/x64/WebRTC.framework/WebRTC \
411+
-DIOS_SDK=appletvsimulator \
412+
-DIOS_ARCHS="x86_64" \
413+
-DPLATFORM=SIMULATOR64 \
414+
-DCMAKE_OSX_SYSROOT="/Applications/Xcode.app/Contents/Developer/Platforms/AppleTVSimulator.platform/Developer/SDKs/AppleTVSimulator.sdk"
415+
make -C $BUILD_DIR/libmediasoupclient/appletvsimulator/x64
419416

420417
cmake . -B $BUILD_DIR/libmediasoupclient/appletvsimulator/arm64 \
421418
${lmsc_cmake_args} \
@@ -437,18 +434,12 @@ function rebuildLMSC() {
437434
$BUILD_DIR/libmediasoupclient/simulator/x64/_deps/libsdptransform-build/libsdptransform.a \
438435
$BUILD_DIR/libmediasoupclient/simulator/arm64/_deps/libsdptransform-build/libsdptransform.a \
439436
-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
444437
lipo -create \
438+
$BUILD_DIR/libmediasoupclient/appletvsimulator/x64/libmediasoupclient/libmediasoupclient.a \
445439
$BUILD_DIR/libmediasoupclient/appletvsimulator/arm64/libmediasoupclient/libmediasoupclient.a \
446440
-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
451441
lipo -create \
442+
$BUILD_DIR/libmediasoupclient/appletvsimulator/x64/_deps/libsdptransform-build/libsdptransform.a \
452443
$BUILD_DIR/libmediasoupclient/appletvsimulator/arm64/_deps/libsdptransform-build/libsdptransform.a \
453444
-output $BUILD_DIR/libmediasoupclient/appletvsimulator/fat/libsdptransform.a
454445
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)