diff --git a/README.md b/README.md index 0b1d051c5..5df3fa725 100644 --- a/README.md +++ b/README.md @@ -66,6 +66,11 @@ Linphone for iPhone depends on liblinphone SDK. This SDK is generated from makef **The resulting SDK is located in `liblinphone-sdk/` root directory.** +## Incorporating our SDK in your project + +After the SDK has been built, add all the `.framework` files located in `liblinphone-sdk/apple-darwin/Frameworks` to your XCode project Embedded Frameworks. +Add a Run Script step to your build steps, put it after your step to embed frameworks, set it to use our `deploy.sh` script located in `liblinphone-sdk/apple-darwin/Tools`. + ## Licensing: GPL third parties versus non GPL third parties This SDK can be generated in 2 flavors: diff --git a/Tools/deploy.sh b/Tools/deploy.sh new file mode 100755 index 000000000..2e04a5946 --- /dev/null +++ b/Tools/deploy.sh @@ -0,0 +1,28 @@ +APP_PATH="${TARGET_BUILD_DIR}/${WRAPPER_NAME}" + +# This script loops through the frameworks embedded in the application and +# removes unused architectures. +find "$APP_PATH" -name '*.framework' -type d | while read -r FRAMEWORK +do + FRAMEWORK_EXECUTABLE_NAME=$(defaults read "$FRAMEWORK/Info.plist" CFBundleExecutable) + FRAMEWORK_EXECUTABLE_PATH="$FRAMEWORK/$FRAMEWORK_EXECUTABLE_NAME" + echo "Executable is $FRAMEWORK_EXECUTABLE_PATH" + + EXTRACTED_ARCHS=() + + for ARCH in $ARCHS + do + echo "Extracting $ARCH from $FRAMEWORK_EXECUTABLE_NAME" + lipo -extract "$ARCH" "$FRAMEWORK_EXECUTABLE_PATH" -o "$FRAMEWORK_EXECUTABLE_PATH-$ARCH" + EXTRACTED_ARCHS+=("$FRAMEWORK_EXECUTABLE_PATH-$ARCH") + done + + echo "Merging extracted architectures: ${ARCHS}" + lipo -o "$FRAMEWORK_EXECUTABLE_PATH-merged" -create "${EXTRACTED_ARCHS[@]}" + rm "${EXTRACTED_ARCHS[@]}" + + echo "Replacing original executable with thinned version" + rm "$FRAMEWORK_EXECUTABLE_PATH" + mv "$FRAMEWORK_EXECUTABLE_PATH-merged" "$FRAMEWORK_EXECUTABLE_PATH" + +done \ No newline at end of file diff --git a/linphone-Info.plist b/linphone-Info.plist index 6d7f9c68c..ea003511e 100644 --- a/linphone-Info.plist +++ b/linphone-Info.plist @@ -24,7 +24,7 @@ CFBundlePackageType APPL CFBundleShortVersionString - 3.16.4 + 3.16.5 CFBundleURLTypes @@ -53,7 +53,7 @@ CFBundleVersion - 1 + 2 ITSAppUsesNonExemptEncryption ITSEncryptionExportComplianceCode diff --git a/linphone.xcodeproj/project.pbxproj b/linphone.xcodeproj/project.pbxproj index 4e81e4aa6..c615a74c2 100755 --- a/linphone.xcodeproj/project.pbxproj +++ b/linphone.xcodeproj/project.pbxproj @@ -3042,6 +3042,7 @@ 1D60588E0D05DD3D006BFB54 /* Sources */, 1D60588F0D05DD3D006BFB54 /* Frameworks */, 8CDC89061EAF89A8006B5652 /* Embed Frameworks */, + 8CB438A61EE6A65D0006F944 /* ShellScript */, ); buildRules = ( ); @@ -3824,6 +3825,19 @@ shellPath = /bin/sh; shellScript = $SRCROOT/Tools/git_version.sh; }; + 8CB438A61EE6A65D0006F944 /* ShellScript */ = { + isa = PBXShellScriptBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + inputPaths = ( + ); + outputPaths = ( + ); + runOnlyForDeploymentPostprocessing = 0; + shellPath = /bin/sh; + shellScript = $SRCROOT/Tools/deploy.sh; + }; /* End PBXShellScriptBuildPhase section */ /* Begin PBXSourcesBuildPhase section */ @@ -4869,7 +4883,7 @@ CODE_SIGN_IDENTITY = "iPhone Developer"; "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; COPY_PHASE_STRIP = NO; - ENABLE_BITCODE = NO; + ENABLE_BITCODE = YES; FRAMEWORK_SEARCH_PATHS = ( "$(inherited)", "$(PROJECT_DIR)/liblinphone-sdk/apple-darwin/Frameworks", @@ -4924,7 +4938,7 @@ CODE_SIGN_IDENTITY = "iPhone Developer"; "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; COPY_PHASE_STRIP = YES; - ENABLE_BITCODE = NO; + ENABLE_BITCODE = YES; ENABLE_NS_ASSERTIONS = NO; FRAMEWORK_SEARCH_PATHS = ( "$(inherited)", @@ -4973,7 +4987,7 @@ CODE_SIGN_IDENTITY = "iPhone Developer"; "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; COPY_PHASE_STRIP = YES; - ENABLE_BITCODE = NO; + ENABLE_BITCODE = YES; ENABLE_NS_ASSERTIONS = NO; FRAMEWORK_SEARCH_PATHS = ( "$(inherited)", @@ -5022,7 +5036,7 @@ CODE_SIGN_IDENTITY = "iPhone Developer"; "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; COPY_PHASE_STRIP = YES; - ENABLE_BITCODE = NO; + ENABLE_BITCODE = YES; ENABLE_NS_ASSERTIONS = NO; FRAMEWORK_SEARCH_PATHS = ( "$(inherited)", diff --git a/prepare.py b/prepare.py index f697c377e..7b8d7393a 100755 --- a/prepare.py +++ b/prepare.py @@ -338,6 +338,9 @@ ipa: build \t&& xcrun -sdk iphoneos PackageApplication -v build/Release-iphoneos/linphone.app -o $$PWD/linphone-iphone.ipa zipsdk: sdk +\trm -rf liblinphone-sdk/apple-darwin/Tools &&\\ +\tmkdir -p liblinphone-sdk/apple-darwin/Tools &&\\ +\tcp -f Tools/deploy.sh liblinphone-sdk/apple-darwin/Tools/.; \\ \techo "Generating SDK zip file for version $(LINPHONE_IPHONE_VERSION)" \tzip -r liblinphone-iphone-sdk-$(LINPHONE_IPHONE_VERSION).zip \\ \tliblinphone-sdk/apple-darwin \\ diff --git a/submodules/bctoolbox b/submodules/bctoolbox index e401c0a91..62f10910d 160000 --- a/submodules/bctoolbox +++ b/submodules/bctoolbox @@ -1 +1 @@ -Subproject commit e401c0a91f81ff2a22b713151617ba4e7994c855 +Subproject commit 62f10910daba210669af7ec08867942b1bdba973 diff --git a/submodules/cmake-builder b/submodules/cmake-builder index 5a83566d9..03484fa63 160000 --- a/submodules/cmake-builder +++ b/submodules/cmake-builder @@ -1 +1 @@ -Subproject commit 5a83566d9ce58234daa0d7e88f1798e817096f30 +Subproject commit 03484fa6332113033eda07e3a0b000c5f1b7dc02 diff --git a/submodules/linphone b/submodules/linphone index 8469ebcfc..883606f23 160000 --- a/submodules/linphone +++ b/submodules/linphone @@ -1 +1 @@ -Subproject commit 8469ebcfc2aadad6783ba9b8ca17d19e44f1a477 +Subproject commit 883606f238704cc0789c88d048e862aaf76aaf79 diff --git a/submodules/mediastreamer2 b/submodules/mediastreamer2 index b65b55375..880c008c5 160000 --- a/submodules/mediastreamer2 +++ b/submodules/mediastreamer2 @@ -1 +1 @@ -Subproject commit b65b55375b9ff15374d9af5f4936fbc5f1552363 +Subproject commit 880c008c5ee37395e0dd8364beeb7c2656552a9e diff --git a/submodules/msamr b/submodules/msamr index aaa046142..d86b907b3 160000 --- a/submodules/msamr +++ b/submodules/msamr @@ -1 +1 @@ -Subproject commit aaa046142033c4ec646e0e1b6f3641177490aa10 +Subproject commit d86b907b31eb7ecd6a3fd4409d5c9633d4366164 diff --git a/submodules/mscodec2 b/submodules/mscodec2 index 3fec10bdb..86468a37b 160000 --- a/submodules/mscodec2 +++ b/submodules/mscodec2 @@ -1 +1 @@ -Subproject commit 3fec10bdbc3fa5452874eafe1907969554a2ce46 +Subproject commit 86468a37ba68a497fa45f4bec99c2d27480f9dd7 diff --git a/submodules/msopenh264 b/submodules/msopenh264 index 3a398b400..5544086f4 160000 --- a/submodules/msopenh264 +++ b/submodules/msopenh264 @@ -1 +1 @@ -Subproject commit 3a398b4000f29c67e010057f718c136ca245a9a8 +Subproject commit 5544086f478c13150eda5df683d914ecbf13ea89 diff --git a/submodules/mssilk b/submodules/mssilk index fef0c397c..3a61f5dec 160000 --- a/submodules/mssilk +++ b/submodules/mssilk @@ -1 +1 @@ -Subproject commit fef0c397c1d2dfc3b8b0951e3db0b9b5cb5d34b9 +Subproject commit 3a61f5decf634f5fb311b2c5f2984525fccd81d9 diff --git a/submodules/mswebrtc b/submodules/mswebrtc index 265c3bf1b..419a98f17 160000 --- a/submodules/mswebrtc +++ b/submodules/mswebrtc @@ -1 +1 @@ -Subproject commit 265c3bf1bfae31ed43766afb473782ec7e782898 +Subproject commit 419a98f17430a1ab9b66f436251dd2c1f4103231 diff --git a/submodules/msx264 b/submodules/msx264 index 78bf5cc3b..1898b96a9 160000 --- a/submodules/msx264 +++ b/submodules/msx264 @@ -1 +1 @@ -Subproject commit 78bf5cc3bca0d597b2cbea8178fd68cd67c8edf5 +Subproject commit 1898b96a946c61b866c09c63e60622cf32dd2d2e diff --git a/submodules/ortp b/submodules/ortp index 34e829b22..baf804e45 160000 --- a/submodules/ortp +++ b/submodules/ortp @@ -1 +1 @@ -Subproject commit 34e829b22a3b0b2e8f0557f31c2ca12be34e2b9b +Subproject commit baf804e45f0fe9c8f156c76627083cc868fd12db