diff --git a/scripts/function-apple.sh b/scripts/function-apple.sh index 46db0d7..9428732 100755 --- a/scripts/function-apple.sh +++ b/scripts/function-apple.sh @@ -509,7 +509,7 @@ create_ffmpeg_kit_framework() { fi # COPYING STRIP SCRIPT FOR SHARED LIBRARY - cp ${BASEDIR}/tools/release/apple/strip-frameworks.sh ${FFMPEG_KIT_FRAMEWORK_RESOURCE_PATH} 1>>${BASEDIR}/build.log 2>&1 || exit 1 + cp ${BASEDIR}/tools/apple/strip-frameworks.sh ${FFMPEG_KIT_FRAMEWORK_RESOURCE_PATH} 1>>${BASEDIR}/build.log 2>&1 || exit 1 build_info_plist "${FFMPEG_KIT_FRAMEWORK_RESOURCE_PATH}/Info.plist" "ffmpegkit" "com.arthenica.ffmpegkit.FFmpegKit" "${FFMPEG_KIT_VERSION}" "${FFMPEG_KIT_VERSION}" "${ARCHITECTURE_VARIANT}" build_modulemap "${FFMPEG_KIT_FRAMEWORK_PATH}/Modules/module.modulemap" diff --git a/tools/apple/strip-frameworks.sh b/tools/apple/strip-frameworks.sh new file mode 100755 index 0000000..2c23237 --- /dev/null +++ b/tools/apple/strip-frameworks.sh @@ -0,0 +1,62 @@ +################################################################################ +# +# Copyright 2015 Realm Inc. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# +################################################################################ + +# This script strips all non-valid architectures from dynamic libraries in +# the application's `Frameworks` directory. +# +# The following environment variables are required: +# +# BUILT_PRODUCTS_DIR +# FRAMEWORKS_FOLDER_PATH +# VALID_ARCHS +# EXPANDED_CODE_SIGN_IDENTITY + + +# Signs a framework with the provided identity +code_sign() { +# Use the current code_sign_identitiy +echo "Code Signing $1 with Identity ${EXPANDED_CODE_SIGN_IDENTITY_NAME}" +echo "/usr/bin/codesign --force --sign ${EXPANDED_CODE_SIGN_IDENTITY} --preserve-metadata=identifier,entitlements $1" +/usr/bin/codesign --force --sign ${EXPANDED_CODE_SIGN_IDENTITY} --preserve-metadata=identifier,entitlements "$1" +} + +echo "Stripping frameworks" +cd "${BUILT_PRODUCTS_DIR}/${FRAMEWORKS_FOLDER_PATH}" + +for file in $(find . -type f -perm +111); do +# Skip non-dynamic libraries +if ! [[ "$(file "$file")" == *"dynamically linked shared library"* ]]; then +continue +fi +# Get architectures for current file +archs="$(lipo -info "${file}" | rev | cut -d ':' -f1 | rev)" +stripped="" +for arch in $archs; do +if ! [[ "${VALID_ARCHS}" == *"$arch"* ]]; then +# Strip non-valid architectures in-place +lipo -remove "$arch" -output "$file" "$file" || exit 1 +stripped="$stripped $arch" +fi +done +if [[ "$stripped" != "" ]]; then +echo "Stripped $file of architectures:$stripped" +if [ "${CODE_SIGNING_REQUIRED}" == "YES" ]; then +code_sign "${file}" +fi +fi +done