Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(88)

Unified Diff: tools-webrtc/ios/build_ios_libs.sh

Issue 2662513004: Rewrite iOS FAT libraries build script in Python (Closed)
Patch Set: Rebase Created 3 years, 10 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « tools-webrtc/ios/build_ios_libs.py ('k') | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: tools-webrtc/ios/build_ios_libs.sh
diff --git a/tools-webrtc/ios/build_ios_libs.sh b/tools-webrtc/ios/build_ios_libs.sh
index 144152750abbde2a130e0e590594cbd509693b9f..c8d659c7e6808718a3fc0896aac1d0d431d3af12 100755
--- a/tools-webrtc/ios/build_ios_libs.sh
+++ b/tools-webrtc/ios/build_ios_libs.sh
@@ -1,6 +1,6 @@
#!/bin/bash
-# Copyright 2015 The WebRTC project authors. All Rights Reserved.
+# Copyright 2017 The WebRTC project authors. All Rights Reserved.
#
# Use of this source code is governed by a BSD-style license
# that can be found in the LICENSE file in the root of the source
@@ -8,202 +8,8 @@
# in the file PATENTS. All contributing project authors may
# be found in the AUTHORS file in the root of the source tree.
-# Generates static FAT libraries for ios in out_ios_libs.
+# This script has been rewritten in Python. Temporary "redirect":
-# Exit on errors.
-set -e
+SCRIPT_DIR="$(cd "$(dirname "$0")" && pwd)"
-# Environment
-export PATH=/usr/libexec:$PATH
-
-SCRIPT_DIR=$(cd $(dirname $0) && pwd)
-WEBRTC_BASE_DIR=${SCRIPT_DIR}/../..
-
-function clean_artifacts {
- local output_dir=$1
- if [[ -d ${output_dir} ]]; then
- echo "Deleting ${output_dir}"
- rm -r ${output_dir}
- fi
-}
-
-function build_webrtc {
- local target_arch=$1
- local flavor=$2
- local build_type=$3
- local ios_deployment_target=$4
- local libvpx_build_vp9=$5
- local use_bitcode=$6
- local custom_gn_options=$7
-
- OUTPUT_DIR=${SDK_OUTPUT_DIR}/${target_arch}_libs
- GN_ARGS="target_os=\"ios\" ios_enable_code_signing=false \
-use_xcode_clang=true is_component_build=false"
-
- # Add flavor option.
- if [[ ${flavor} = "debug" ]]; then
- GN_ARGS="${GN_ARGS} is_debug=true"
- elif [[ ${flavor} = "release" ]]; then
- GN_ARGS="${GN_ARGS} is_debug=false"
- else
- echo "Unexpected flavor type: ${flavor}"
- exit 1
- fi
-
- # Add the specified architecture.
- GN_ARGS="${GN_ARGS} target_cpu=\"${target_arch}\""
-
- # Add deployment target.
- GN_ARGS="${GN_ARGS} ios_deployment_target=\"${ios_deployment_target}\""
-
- # Add vp9 option.
- GN_ARGS="${GN_ARGS} rtc_libvpx_build_vp9=${libvpx_build_vp9}"
-
- # Add bitcode option.
- GN_ARGS="${GN_ARGS} enable_ios_bitcode=${use_bitcode}"
-
- # Add custom options.
- if [[ -n "${custom_gn_options}" ]]; then
- GN_ARGS="${GN_ARGS} ${custom_gn_options}"
- fi
-
- # Generate static or dynamic.
- if [[ ${build_type} = "static_only" ]]; then
- GN_TARGET_NAME="rtc_sdk_objc"
- elif [[ ${build_type} == "framework" ]]; then
- GN_TARGET_NAME="rtc_sdk_framework_objc"
- GN_ARGS="${GN_ARGS} enable_dsyms=true enable_stripping=true"
- else
- echo "Build type \"${build_type}\" is not supported."
- exit 1
- fi
-
- echo "Building WebRTC with args: ${GN_ARGS}"
- gn gen ${OUTPUT_DIR} --args="${GN_ARGS}"
- echo "Building target: ${GN_TARGET_NAME}"
- ninja -C ${OUTPUT_DIR} ${GN_TARGET_NAME}
-
- # Strip debug symbols to reduce size.
- if [[ ${build_type} = "static_only" ]]; then
- strip -S ${OUTPUT_DIR}/obj/webrtc/sdk/lib${GN_TARGET_NAME}.a -o \
- ${OUTPUT_DIR}/lib${GN_TARGET_NAME}.a
- fi
-}
-
-function usage {
- echo "WebRTC iOS FAT libraries build script."
- echo "Each architecture is compiled separately before being merged together."
- echo "By default, the library is created in out_ios_libs/. (Change with -o.)"
- echo "The headers will be copied to out_ios_libs/include."
- echo "Usage: $0 [-h] [-b build_type] [-c] [-o output_dir] [-r rev_num] [-e]"
- echo " -h Print this help."
- echo " -b The build type. Can be \"framework\" or \"static_only\"."
- echo " Defaults to \"framework\"."
- echo " -c Removes the previously generated build output, if any."
- echo " -o Specifies a directory to output the build artifacts to."
- echo " If specified together with -c, deletes the dir."
- echo " -r Specifies a revision number to embed if building the framework."
- echo " -e Compile with bitcode."
- exit 0
-}
-
-SDK_OUTPUT_DIR=${WEBRTC_BASE_DIR}/out_ios_libs
-SDK_LIB_NAME="librtc_sdk_objc.a"
-SDK_FRAMEWORK_NAME="WebRTC.framework"
-
-BUILD_FLAVOR="release"
-BUILD_TYPE="framework"
-ENABLED_ARCHITECTURES=("arm" "arm64" "x64")
-IOS_DEPLOYMENT_TARGET="8.0"
-LIBVPX_BUILD_VP9="false"
-USE_BITCODE="false"
-CUSTOM_GN_OPTS=""
-WEBRTC_REVISION="0"
-
-# Parse arguments.
-while getopts "hb:co:r:e" opt; do
- case "${opt}" in
- h) usage;;
- b) BUILD_TYPE="${OPTARG}";;
- c) PERFORM_CLEAN=1;;
- e) USE_BITCODE="true";;
- o) SDK_OUTPUT_DIR="${OPTARG}";;
- r) WEBRTC_REVISION="${OPTARG}";;
- *)
- usage
- exit 1
- ;;
- esac
-done
-
-if [[ ${PERFORM_CLEAN} -ne 0 ]]; then
- clean_artifacts ${SDK_OUTPUT_DIR}
- exit 0
-fi
-
-# Build all architectures.
-for arch in ${ENABLED_ARCHITECTURES[*]}; do
- build_webrtc $arch ${BUILD_FLAVOR} ${BUILD_TYPE} \
- ${IOS_DEPLOYMENT_TARGET} ${LIBVPX_BUILD_VP9} ${USE_BITCODE} \
- ${CUSTOM_GN_OPTS}
-done
-
-# Ignoring x86 except for static libraries for now because of a GN build issue
-# where the generated dynamic framework has the wrong architectures.
-
-# Create FAT archive.
-if [[ ${BUILD_TYPE} = "static_only" ]]; then
- build_webrtc "x86" ${BUILD_FLAVOR} ${BUILD_TYPE} \
- ${IOS_DEPLOYMENT_TARGET} ${LIBVPX_BUILD_VP9} ${USE_BITCODE} \
- ${CUSTOM_GN_OPTS}
-
- ARM_LIB_PATH=${SDK_OUTPUT_DIR}/arm_libs/${SDK_LIB_NAME}
- ARM64_LIB_PATH=${SDK_OUTPUT_DIR}/arm64_libs/${SDK_LIB_NAME}
- X64_LIB_PATH=${SDK_OUTPUT_DIR}/x64_libs/${SDK_LIB_NAME}
- X86_LIB_PATH=${SDK_OUTPUT_DIR}/x86_libs/${SDK_LIB_NAME}
-
- # Combine the slices.
- lipo ${ARM_LIB_PATH} ${ARM64_LIB_PATH} ${X64_LIB_PATH} ${X86_LIB_PATH} \
- -create -output ${SDK_OUTPUT_DIR}/${SDK_LIB_NAME}
-elif [[ ${BUILD_TYPE} = "framework" ]]; then
- ARM_LIB_PATH=${SDK_OUTPUT_DIR}/arm_libs
- ARM64_LIB_PATH=${SDK_OUTPUT_DIR}/arm64_libs
- X64_LIB_PATH=${SDK_OUTPUT_DIR}/x64_libs
- X86_LIB_PATH=${SDK_OUTPUT_DIR}/x86_libs
-
- # Combine the slices.
- DYLIB_PATH="WebRTC.framework/WebRTC"
- cp -R ${ARM64_LIB_PATH}/WebRTC.framework ${SDK_OUTPUT_DIR}
- rm ${SDK_OUTPUT_DIR}/${DYLIB_PATH}
- echo "Merging framework slices."
- lipo ${ARM_LIB_PATH}/${DYLIB_PATH} \
- ${ARM64_LIB_PATH}/${DYLIB_PATH} \
- ${X64_LIB_PATH}/${DYLIB_PATH} \
- -create -output ${SDK_OUTPUT_DIR}/${DYLIB_PATH}
-
- # Merge the dSYM slices.
- DSYM_PATH="WebRTC.dSYM/Contents/Resources/DWARF/WebRTC"
- cp -R ${ARM64_LIB_PATH}/WebRTC.dSYM ${SDK_OUTPUT_DIR}
- rm ${SDK_OUTPUT_DIR}/${DSYM_PATH}
- echo "Merging dSYM slices."
- lipo ${ARM_LIB_PATH}/${DSYM_PATH} \
- ${ARM64_LIB_PATH}/${DSYM_PATH} \
- ${X64_LIB_PATH}/${DSYM_PATH} \
- -create -output ${SDK_OUTPUT_DIR}/${DSYM_PATH}
-
- # Modify the version number.
- # Format should be <Branch cut MXX>.<Hotfix #>.<Rev #>.
- # e.g. 55.0.14986 means branch cut 55, no hotfixes, and revision number 14986.
- INFOPLIST_PATH=${SDK_OUTPUT_DIR}/WebRTC.framework/Info.plist
- MAJOR_MINOR=$(PlistBuddy -c "Print :CFBundleShortVersionString" \
- ${INFOPLIST_PATH})
- VERSION_NUMBER="${MAJOR_MINOR}.${WEBRTC_REVISION}"
- echo "Substituting revision number: ${VERSION_NUMBER}"
- PlistBuddy -c "Set :CFBundleVersion ${VERSION_NUMBER}" ${INFOPLIST_PATH}
- plutil -convert binary1 ${INFOPLIST_PATH}
-else
- echo "BUILD_TYPE ${BUILD_TYPE} not supported."
- exit 1
-fi
-
-echo "Done."
+exec "$SCRIPT_DIR/build_ios_libs.py" "$@"
« no previous file with comments | « tools-webrtc/ios/build_ios_libs.py ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698