1ba6c59e9d7d7013b3906b6f4230b663422681848Vignesh Venkatasubramanian#!/bin/sh 2ba6c59e9d7d7013b3906b6f4230b663422681848Vignesh Venkatasubramanian## 3ba6c59e9d7d7013b3906b6f4230b663422681848Vignesh Venkatasubramanian## Copyright (c) 2014 The WebM project authors. All Rights Reserved. 4ba6c59e9d7d7013b3906b6f4230b663422681848Vignesh Venkatasubramanian## 5ba6c59e9d7d7013b3906b6f4230b663422681848Vignesh Venkatasubramanian## Use of this source code is governed by a BSD-style license 6ba6c59e9d7d7013b3906b6f4230b663422681848Vignesh Venkatasubramanian## that can be found in the LICENSE file in the root of the source 7ba6c59e9d7d7013b3906b6f4230b663422681848Vignesh Venkatasubramanian## tree. An additional intellectual property rights grant can be found 8ba6c59e9d7d7013b3906b6f4230b663422681848Vignesh Venkatasubramanian## in the file PATENTS. All contributing project authors may 9ba6c59e9d7d7013b3906b6f4230b663422681848Vignesh Venkatasubramanian## be found in the AUTHORS file in the root of the source tree. 10ba6c59e9d7d7013b3906b6f4230b663422681848Vignesh Venkatasubramanian## 11ba6c59e9d7d7013b3906b6f4230b663422681848Vignesh Venkatasubramanian## 12ba6c59e9d7d7013b3906b6f4230b663422681848Vignesh Venkatasubramanian## This script generates 'VPX.framework'. An iOS app can encode and decode VPx 13ba6c59e9d7d7013b3906b6f4230b663422681848Vignesh Venkatasubramanian## video by including 'VPX.framework'. 14ba6c59e9d7d7013b3906b6f4230b663422681848Vignesh Venkatasubramanian## 15ba6c59e9d7d7013b3906b6f4230b663422681848Vignesh Venkatasubramanian## Run iosbuild.sh to create 'VPX.framework' in the current directory. 16ba6c59e9d7d7013b3906b6f4230b663422681848Vignesh Venkatasubramanian## 17ba6c59e9d7d7013b3906b6f4230b663422681848Vignesh Venkatasubramanianset -e 18ba6c59e9d7d7013b3906b6f4230b663422681848Vignesh Venkatasubramaniandevnull='> /dev/null 2>&1' 19ba6c59e9d7d7013b3906b6f4230b663422681848Vignesh Venkatasubramanian 20ba6c59e9d7d7013b3906b6f4230b663422681848Vignesh VenkatasubramanianBUILD_ROOT="_iosbuild" 217ce0a1d1337c01056ba24006efab21f00e179e04Vignesh VenkatasubramanianCONFIGURE_ARGS="--disable-docs 227ce0a1d1337c01056ba24006efab21f00e179e04Vignesh Venkatasubramanian --disable-examples 237ce0a1d1337c01056ba24006efab21f00e179e04Vignesh Venkatasubramanian --disable-libyuv 247ce0a1d1337c01056ba24006efab21f00e179e04Vignesh Venkatasubramanian --disable-unit-tests" 25ba6c59e9d7d7013b3906b6f4230b663422681848Vignesh VenkatasubramanianDIST_DIR="_dist" 26ba6c59e9d7d7013b3906b6f4230b663422681848Vignesh VenkatasubramanianFRAMEWORK_DIR="VPX.framework" 27ba6c59e9d7d7013b3906b6f4230b663422681848Vignesh VenkatasubramanianHEADER_DIR="${FRAMEWORK_DIR}/Headers/vpx" 28ba6c59e9d7d7013b3906b6f4230b663422681848Vignesh VenkatasubramanianMAKE_JOBS=1 297ce0a1d1337c01056ba24006efab21f00e179e04Vignesh VenkatasubramanianSCRIPT_DIR=$(dirname "$0") 307ce0a1d1337c01056ba24006efab21f00e179e04Vignesh VenkatasubramanianLIBVPX_SOURCE_DIR=$(cd ${SCRIPT_DIR}/../..; pwd) 31ba6c59e9d7d7013b3906b6f4230b663422681848Vignesh VenkatasubramanianLIPO=$(xcrun -sdk iphoneos${SDK} -find lipo) 32ba6c59e9d7d7013b3906b6f4230b663422681848Vignesh VenkatasubramanianORIG_PWD="$(pwd)" 33ba6c59e9d7d7013b3906b6f4230b663422681848Vignesh VenkatasubramanianTARGETS="arm64-darwin-gcc 34ba6c59e9d7d7013b3906b6f4230b663422681848Vignesh Venkatasubramanian armv7-darwin-gcc 35ba6c59e9d7d7013b3906b6f4230b663422681848Vignesh Venkatasubramanian armv7s-darwin-gcc 36ba6c59e9d7d7013b3906b6f4230b663422681848Vignesh Venkatasubramanian x86-iphonesimulator-gcc 37ba6c59e9d7d7013b3906b6f4230b663422681848Vignesh Venkatasubramanian x86_64-iphonesimulator-gcc" 38ba6c59e9d7d7013b3906b6f4230b663422681848Vignesh Venkatasubramanian 39ba6c59e9d7d7013b3906b6f4230b663422681848Vignesh Venkatasubramanian# Configures for the target specified by $1, and invokes make with the dist 40ba6c59e9d7d7013b3906b6f4230b663422681848Vignesh Venkatasubramanian# target using $DIST_DIR as the distribution output directory. 41ba6c59e9d7d7013b3906b6f4230b663422681848Vignesh Venkatasubramanianbuild_target() { 42ba6c59e9d7d7013b3906b6f4230b663422681848Vignesh Venkatasubramanian local target="$1" 43ba6c59e9d7d7013b3906b6f4230b663422681848Vignesh Venkatasubramanian local old_pwd="$(pwd)" 44ba6c59e9d7d7013b3906b6f4230b663422681848Vignesh Venkatasubramanian 45ba6c59e9d7d7013b3906b6f4230b663422681848Vignesh Venkatasubramanian vlog "***Building target: ${target}***" 46ba6c59e9d7d7013b3906b6f4230b663422681848Vignesh Venkatasubramanian 47ba6c59e9d7d7013b3906b6f4230b663422681848Vignesh Venkatasubramanian mkdir "${target}" 48ba6c59e9d7d7013b3906b6f4230b663422681848Vignesh Venkatasubramanian cd "${target}" 497ce0a1d1337c01056ba24006efab21f00e179e04Vignesh Venkatasubramanian eval "${LIBVPX_SOURCE_DIR}/configure" --target="${target}" \ 507ce0a1d1337c01056ba24006efab21f00e179e04Vignesh Venkatasubramanian ${CONFIGURE_ARGS} ${EXTRA_CONFIGURE_ARGS} ${devnull} 51ba6c59e9d7d7013b3906b6f4230b663422681848Vignesh Venkatasubramanian export DIST_DIR 52ba6c59e9d7d7013b3906b6f4230b663422681848Vignesh Venkatasubramanian eval make -j ${MAKE_JOBS} dist ${devnull} 53ba6c59e9d7d7013b3906b6f4230b663422681848Vignesh Venkatasubramanian cd "${old_pwd}" 54ba6c59e9d7d7013b3906b6f4230b663422681848Vignesh Venkatasubramanian 55ba6c59e9d7d7013b3906b6f4230b663422681848Vignesh Venkatasubramanian vlog "***Done building target: ${target}***" 56ba6c59e9d7d7013b3906b6f4230b663422681848Vignesh Venkatasubramanian} 57ba6c59e9d7d7013b3906b6f4230b663422681848Vignesh Venkatasubramanian 58ba6c59e9d7d7013b3906b6f4230b663422681848Vignesh Venkatasubramanian# Returns the preprocessor symbol for the target specified by $1. 59ba6c59e9d7d7013b3906b6f4230b663422681848Vignesh Venkatasubramaniantarget_to_preproc_symbol() { 60ba6c59e9d7d7013b3906b6f4230b663422681848Vignesh Venkatasubramanian target="$1" 61ba6c59e9d7d7013b3906b6f4230b663422681848Vignesh Venkatasubramanian case "${target}" in 62ba6c59e9d7d7013b3906b6f4230b663422681848Vignesh Venkatasubramanian arm64-*) 63ba6c59e9d7d7013b3906b6f4230b663422681848Vignesh Venkatasubramanian echo "__aarch64__" 64ba6c59e9d7d7013b3906b6f4230b663422681848Vignesh Venkatasubramanian ;; 65ba6c59e9d7d7013b3906b6f4230b663422681848Vignesh Venkatasubramanian armv7-*) 667ce0a1d1337c01056ba24006efab21f00e179e04Vignesh Venkatasubramanian echo "__ARM_ARCH_7A__" 67ba6c59e9d7d7013b3906b6f4230b663422681848Vignesh Venkatasubramanian ;; 68ba6c59e9d7d7013b3906b6f4230b663422681848Vignesh Venkatasubramanian armv7s-*) 69ba6c59e9d7d7013b3906b6f4230b663422681848Vignesh Venkatasubramanian echo "__ARM_ARCH_7S__" 70ba6c59e9d7d7013b3906b6f4230b663422681848Vignesh Venkatasubramanian ;; 71ba6c59e9d7d7013b3906b6f4230b663422681848Vignesh Venkatasubramanian x86-*) 72ba6c59e9d7d7013b3906b6f4230b663422681848Vignesh Venkatasubramanian echo "__i386__" 73ba6c59e9d7d7013b3906b6f4230b663422681848Vignesh Venkatasubramanian ;; 74ba6c59e9d7d7013b3906b6f4230b663422681848Vignesh Venkatasubramanian x86_64-*) 75ba6c59e9d7d7013b3906b6f4230b663422681848Vignesh Venkatasubramanian echo "__x86_64__" 76ba6c59e9d7d7013b3906b6f4230b663422681848Vignesh Venkatasubramanian ;; 77ba6c59e9d7d7013b3906b6f4230b663422681848Vignesh Venkatasubramanian *) 78ba6c59e9d7d7013b3906b6f4230b663422681848Vignesh Venkatasubramanian echo "#error ${target} unknown/unsupported" 79ba6c59e9d7d7013b3906b6f4230b663422681848Vignesh Venkatasubramanian return 1 80ba6c59e9d7d7013b3906b6f4230b663422681848Vignesh Venkatasubramanian ;; 81ba6c59e9d7d7013b3906b6f4230b663422681848Vignesh Venkatasubramanian esac 82ba6c59e9d7d7013b3906b6f4230b663422681848Vignesh Venkatasubramanian} 83ba6c59e9d7d7013b3906b6f4230b663422681848Vignesh Venkatasubramanian 84ba6c59e9d7d7013b3906b6f4230b663422681848Vignesh Venkatasubramanian# Create a vpx_config.h shim that, based on preprocessor settings for the 85ba6c59e9d7d7013b3906b6f4230b663422681848Vignesh Venkatasubramanian# current target CPU, includes the real vpx_config.h for the current target. 86ba6c59e9d7d7013b3906b6f4230b663422681848Vignesh Venkatasubramanian# $1 is the list of targets. 87ba6c59e9d7d7013b3906b6f4230b663422681848Vignesh Venkatasubramaniancreate_vpx_framework_config_shim() { 88ba6c59e9d7d7013b3906b6f4230b663422681848Vignesh Venkatasubramanian local targets="$1" 89ba6c59e9d7d7013b3906b6f4230b663422681848Vignesh Venkatasubramanian local config_file="${HEADER_DIR}/vpx_config.h" 90ba6c59e9d7d7013b3906b6f4230b663422681848Vignesh Venkatasubramanian local preproc_symbol="" 91ba6c59e9d7d7013b3906b6f4230b663422681848Vignesh Venkatasubramanian local target="" 92ba6c59e9d7d7013b3906b6f4230b663422681848Vignesh Venkatasubramanian local include_guard="VPX_FRAMEWORK_HEADERS_VPX_VPX_CONFIG_H_" 93ba6c59e9d7d7013b3906b6f4230b663422681848Vignesh Venkatasubramanian 94ba6c59e9d7d7013b3906b6f4230b663422681848Vignesh Venkatasubramanian local file_header="/* 95ba6c59e9d7d7013b3906b6f4230b663422681848Vignesh Venkatasubramanian * Copyright (c) $(date +%Y) The WebM project authors. All Rights Reserved. 96ba6c59e9d7d7013b3906b6f4230b663422681848Vignesh Venkatasubramanian * 97ba6c59e9d7d7013b3906b6f4230b663422681848Vignesh Venkatasubramanian * Use of this source code is governed by a BSD-style license 98ba6c59e9d7d7013b3906b6f4230b663422681848Vignesh Venkatasubramanian * that can be found in the LICENSE file in the root of the source 99ba6c59e9d7d7013b3906b6f4230b663422681848Vignesh Venkatasubramanian * tree. An additional intellectual property rights grant can be found 100ba6c59e9d7d7013b3906b6f4230b663422681848Vignesh Venkatasubramanian * in the file PATENTS. All contributing project authors may 101ba6c59e9d7d7013b3906b6f4230b663422681848Vignesh Venkatasubramanian * be found in the AUTHORS file in the root of the source tree. 102ba6c59e9d7d7013b3906b6f4230b663422681848Vignesh Venkatasubramanian */ 103ba6c59e9d7d7013b3906b6f4230b663422681848Vignesh Venkatasubramanian 104ba6c59e9d7d7013b3906b6f4230b663422681848Vignesh Venkatasubramanian/* GENERATED FILE: DO NOT EDIT! */ 105ba6c59e9d7d7013b3906b6f4230b663422681848Vignesh Venkatasubramanian 106ba6c59e9d7d7013b3906b6f4230b663422681848Vignesh Venkatasubramanian#ifndef ${include_guard} 107ba6c59e9d7d7013b3906b6f4230b663422681848Vignesh Venkatasubramanian#define ${include_guard} 108ba6c59e9d7d7013b3906b6f4230b663422681848Vignesh Venkatasubramanian 109ba6c59e9d7d7013b3906b6f4230b663422681848Vignesh Venkatasubramanian#if defined" 110ba6c59e9d7d7013b3906b6f4230b663422681848Vignesh Venkatasubramanian 111ba6c59e9d7d7013b3906b6f4230b663422681848Vignesh Venkatasubramanian printf "%s" "${file_header}" > "${config_file}" 112ba6c59e9d7d7013b3906b6f4230b663422681848Vignesh Venkatasubramanian for target in ${targets}; do 113ba6c59e9d7d7013b3906b6f4230b663422681848Vignesh Venkatasubramanian preproc_symbol=$(target_to_preproc_symbol "${target}") 114ba6c59e9d7d7013b3906b6f4230b663422681848Vignesh Venkatasubramanian printf " ${preproc_symbol}\n" >> "${config_file}" 115ba6c59e9d7d7013b3906b6f4230b663422681848Vignesh Venkatasubramanian printf "#define VPX_FRAMEWORK_TARGET \"${target}\"\n" >> "${config_file}" 116ba6c59e9d7d7013b3906b6f4230b663422681848Vignesh Venkatasubramanian printf "#include \"VPX/vpx/${target}/vpx_config.h\"\n" >> "${config_file}" 117ba6c59e9d7d7013b3906b6f4230b663422681848Vignesh Venkatasubramanian printf "#elif defined" >> "${config_file}" 118ba6c59e9d7d7013b3906b6f4230b663422681848Vignesh Venkatasubramanian mkdir "${HEADER_DIR}/${target}" 119ba6c59e9d7d7013b3906b6f4230b663422681848Vignesh Venkatasubramanian cp -p "${BUILD_ROOT}/${target}/vpx_config.h" "${HEADER_DIR}/${target}" 120ba6c59e9d7d7013b3906b6f4230b663422681848Vignesh Venkatasubramanian done 121ba6c59e9d7d7013b3906b6f4230b663422681848Vignesh Venkatasubramanian 122ba6c59e9d7d7013b3906b6f4230b663422681848Vignesh Venkatasubramanian # Consume the last line of output from the loop: We don't want it. 123ba6c59e9d7d7013b3906b6f4230b663422681848Vignesh Venkatasubramanian sed -i '' -e '$d' "${config_file}" 124ba6c59e9d7d7013b3906b6f4230b663422681848Vignesh Venkatasubramanian 125ba6c59e9d7d7013b3906b6f4230b663422681848Vignesh Venkatasubramanian printf "#endif\n\n" >> "${config_file}" 126ba6c59e9d7d7013b3906b6f4230b663422681848Vignesh Venkatasubramanian printf "#endif // ${include_guard}" >> "${config_file}" 127ba6c59e9d7d7013b3906b6f4230b663422681848Vignesh Venkatasubramanian} 128ba6c59e9d7d7013b3906b6f4230b663422681848Vignesh Venkatasubramanian 129ba6c59e9d7d7013b3906b6f4230b663422681848Vignesh Venkatasubramanian# Configures and builds each target specified by $1, and then builds 130ba6c59e9d7d7013b3906b6f4230b663422681848Vignesh Venkatasubramanian# VPX.framework. 131ba6c59e9d7d7013b3906b6f4230b663422681848Vignesh Venkatasubramanianbuild_framework() { 132ba6c59e9d7d7013b3906b6f4230b663422681848Vignesh Venkatasubramanian local lib_list="" 133ba6c59e9d7d7013b3906b6f4230b663422681848Vignesh Venkatasubramanian local targets="$1" 134ba6c59e9d7d7013b3906b6f4230b663422681848Vignesh Venkatasubramanian local target="" 135ba6c59e9d7d7013b3906b6f4230b663422681848Vignesh Venkatasubramanian local target_dist_dir="" 136ba6c59e9d7d7013b3906b6f4230b663422681848Vignesh Venkatasubramanian 137ba6c59e9d7d7013b3906b6f4230b663422681848Vignesh Venkatasubramanian # Clean up from previous build(s). 138ba6c59e9d7d7013b3906b6f4230b663422681848Vignesh Venkatasubramanian rm -rf "${BUILD_ROOT}" "${FRAMEWORK_DIR}" 139ba6c59e9d7d7013b3906b6f4230b663422681848Vignesh Venkatasubramanian 140ba6c59e9d7d7013b3906b6f4230b663422681848Vignesh Venkatasubramanian # Create output dirs. 141ba6c59e9d7d7013b3906b6f4230b663422681848Vignesh Venkatasubramanian mkdir -p "${BUILD_ROOT}" 142ba6c59e9d7d7013b3906b6f4230b663422681848Vignesh Venkatasubramanian mkdir -p "${HEADER_DIR}" 143ba6c59e9d7d7013b3906b6f4230b663422681848Vignesh Venkatasubramanian 144ba6c59e9d7d7013b3906b6f4230b663422681848Vignesh Venkatasubramanian cd "${BUILD_ROOT}" 145ba6c59e9d7d7013b3906b6f4230b663422681848Vignesh Venkatasubramanian 146ba6c59e9d7d7013b3906b6f4230b663422681848Vignesh Venkatasubramanian for target in ${targets}; do 147ba6c59e9d7d7013b3906b6f4230b663422681848Vignesh Venkatasubramanian build_target "${target}" 148ba6c59e9d7d7013b3906b6f4230b663422681848Vignesh Venkatasubramanian target_dist_dir="${BUILD_ROOT}/${target}/${DIST_DIR}" 149ba6c59e9d7d7013b3906b6f4230b663422681848Vignesh Venkatasubramanian lib_list="${lib_list} ${target_dist_dir}/lib/libvpx.a" 150ba6c59e9d7d7013b3906b6f4230b663422681848Vignesh Venkatasubramanian done 151ba6c59e9d7d7013b3906b6f4230b663422681848Vignesh Venkatasubramanian 152ba6c59e9d7d7013b3906b6f4230b663422681848Vignesh Venkatasubramanian cd "${ORIG_PWD}" 153ba6c59e9d7d7013b3906b6f4230b663422681848Vignesh Venkatasubramanian 154ba6c59e9d7d7013b3906b6f4230b663422681848Vignesh Venkatasubramanian # The basic libvpx API includes are all the same; just grab the most recent 155ba6c59e9d7d7013b3906b6f4230b663422681848Vignesh Venkatasubramanian # set. 156ba6c59e9d7d7013b3906b6f4230b663422681848Vignesh Venkatasubramanian cp -p "${target_dist_dir}"/include/vpx/* "${HEADER_DIR}" 157ba6c59e9d7d7013b3906b6f4230b663422681848Vignesh Venkatasubramanian 158ba6c59e9d7d7013b3906b6f4230b663422681848Vignesh Venkatasubramanian # Build the fat library. 159ba6c59e9d7d7013b3906b6f4230b663422681848Vignesh Venkatasubramanian ${LIPO} -create ${lib_list} -output ${FRAMEWORK_DIR}/VPX 160ba6c59e9d7d7013b3906b6f4230b663422681848Vignesh Venkatasubramanian 161ba6c59e9d7d7013b3906b6f4230b663422681848Vignesh Venkatasubramanian # Create the vpx_config.h shim that allows usage of vpx_config.h from 162ba6c59e9d7d7013b3906b6f4230b663422681848Vignesh Venkatasubramanian # within VPX.framework. 163ba6c59e9d7d7013b3906b6f4230b663422681848Vignesh Venkatasubramanian create_vpx_framework_config_shim "${targets}" 164ba6c59e9d7d7013b3906b6f4230b663422681848Vignesh Venkatasubramanian 165ba6c59e9d7d7013b3906b6f4230b663422681848Vignesh Venkatasubramanian # Copy in vpx_version.h. 166ba6c59e9d7d7013b3906b6f4230b663422681848Vignesh Venkatasubramanian cp -p "${BUILD_ROOT}/${target}/vpx_version.h" "${HEADER_DIR}" 167ba6c59e9d7d7013b3906b6f4230b663422681848Vignesh Venkatasubramanian 168ba6c59e9d7d7013b3906b6f4230b663422681848Vignesh Venkatasubramanian vlog "Created fat library ${FRAMEWORK_DIR}/VPX containing:" 169ba6c59e9d7d7013b3906b6f4230b663422681848Vignesh Venkatasubramanian for lib in ${lib_list}; do 170ba6c59e9d7d7013b3906b6f4230b663422681848Vignesh Venkatasubramanian vlog " $(echo ${lib} | awk -F / '{print $2, $NF}')" 171ba6c59e9d7d7013b3906b6f4230b663422681848Vignesh Venkatasubramanian done 172ba6c59e9d7d7013b3906b6f4230b663422681848Vignesh Venkatasubramanian 173ba6c59e9d7d7013b3906b6f4230b663422681848Vignesh Venkatasubramanian # TODO(tomfinegan): Verify that expected targets are included within 174ba6c59e9d7d7013b3906b6f4230b663422681848Vignesh Venkatasubramanian # VPX.framework/VPX via lipo -info. 175ba6c59e9d7d7013b3906b6f4230b663422681848Vignesh Venkatasubramanian} 176ba6c59e9d7d7013b3906b6f4230b663422681848Vignesh Venkatasubramanian 177ba6c59e9d7d7013b3906b6f4230b663422681848Vignesh Venkatasubramanian# Trap function. Cleans up the subtree used to build all targets contained in 178ba6c59e9d7d7013b3906b6f4230b663422681848Vignesh Venkatasubramanian# $TARGETS. 179ba6c59e9d7d7013b3906b6f4230b663422681848Vignesh Venkatasubramaniancleanup() { 1807ce0a1d1337c01056ba24006efab21f00e179e04Vignesh Venkatasubramanian local readonly res=$? 181ba6c59e9d7d7013b3906b6f4230b663422681848Vignesh Venkatasubramanian cd "${ORIG_PWD}" 182ba6c59e9d7d7013b3906b6f4230b663422681848Vignesh Venkatasubramanian 1837ce0a1d1337c01056ba24006efab21f00e179e04Vignesh Venkatasubramanian if [ $res -ne 0 ]; then 1847ce0a1d1337c01056ba24006efab21f00e179e04Vignesh Venkatasubramanian elog "build exited with error ($res)" 1857ce0a1d1337c01056ba24006efab21f00e179e04Vignesh Venkatasubramanian fi 1867ce0a1d1337c01056ba24006efab21f00e179e04Vignesh Venkatasubramanian 187ba6c59e9d7d7013b3906b6f4230b663422681848Vignesh Venkatasubramanian if [ "${PRESERVE_BUILD_OUTPUT}" != "yes" ]; then 188ba6c59e9d7d7013b3906b6f4230b663422681848Vignesh Venkatasubramanian rm -rf "${BUILD_ROOT}" 189ba6c59e9d7d7013b3906b6f4230b663422681848Vignesh Venkatasubramanian fi 190ba6c59e9d7d7013b3906b6f4230b663422681848Vignesh Venkatasubramanian} 191ba6c59e9d7d7013b3906b6f4230b663422681848Vignesh Venkatasubramanian 192ba6c59e9d7d7013b3906b6f4230b663422681848Vignesh Venkatasubramanianiosbuild_usage() { 193ba6c59e9d7d7013b3906b6f4230b663422681848Vignesh Venkatasubramaniancat << EOF 194ba6c59e9d7d7013b3906b6f4230b663422681848Vignesh Venkatasubramanian Usage: ${0##*/} [arguments] 195ba6c59e9d7d7013b3906b6f4230b663422681848Vignesh Venkatasubramanian --help: Display this message and exit. 1967ce0a1d1337c01056ba24006efab21f00e179e04Vignesh Venkatasubramanian --extra-configure-args <args>: Extra args to pass when configuring libvpx. 197ba6c59e9d7d7013b3906b6f4230b663422681848Vignesh Venkatasubramanian --jobs: Number of make jobs. 198ba6c59e9d7d7013b3906b6f4230b663422681848Vignesh Venkatasubramanian --preserve-build-output: Do not delete the build directory. 199ba6c59e9d7d7013b3906b6f4230b663422681848Vignesh Venkatasubramanian --show-build-output: Show output from each library build. 2007ce0a1d1337c01056ba24006efab21f00e179e04Vignesh Venkatasubramanian --targets <targets>: Override default target list. Defaults: 2017ce0a1d1337c01056ba24006efab21f00e179e04Vignesh Venkatasubramanian ${TARGETS} 202ba6c59e9d7d7013b3906b6f4230b663422681848Vignesh Venkatasubramanian --verbose: Output information about the environment and each stage of the 203ba6c59e9d7d7013b3906b6f4230b663422681848Vignesh Venkatasubramanian build. 204ba6c59e9d7d7013b3906b6f4230b663422681848Vignesh VenkatasubramanianEOF 205ba6c59e9d7d7013b3906b6f4230b663422681848Vignesh Venkatasubramanian} 206ba6c59e9d7d7013b3906b6f4230b663422681848Vignesh Venkatasubramanian 2077ce0a1d1337c01056ba24006efab21f00e179e04Vignesh Venkatasubramanianelog() { 2087ce0a1d1337c01056ba24006efab21f00e179e04Vignesh Venkatasubramanian echo "${0##*/} failed because: $@" 1>&2 2097ce0a1d1337c01056ba24006efab21f00e179e04Vignesh Venkatasubramanian} 2107ce0a1d1337c01056ba24006efab21f00e179e04Vignesh Venkatasubramanian 211ba6c59e9d7d7013b3906b6f4230b663422681848Vignesh Venkatasubramanianvlog() { 212ba6c59e9d7d7013b3906b6f4230b663422681848Vignesh Venkatasubramanian if [ "${VERBOSE}" = "yes" ]; then 213ba6c59e9d7d7013b3906b6f4230b663422681848Vignesh Venkatasubramanian echo "$@" 214ba6c59e9d7d7013b3906b6f4230b663422681848Vignesh Venkatasubramanian fi 215ba6c59e9d7d7013b3906b6f4230b663422681848Vignesh Venkatasubramanian} 216ba6c59e9d7d7013b3906b6f4230b663422681848Vignesh Venkatasubramanian 217ba6c59e9d7d7013b3906b6f4230b663422681848Vignesh Venkatasubramaniantrap cleanup EXIT 218ba6c59e9d7d7013b3906b6f4230b663422681848Vignesh Venkatasubramanian 219ba6c59e9d7d7013b3906b6f4230b663422681848Vignesh Venkatasubramanian# Parse the command line. 220ba6c59e9d7d7013b3906b6f4230b663422681848Vignesh Venkatasubramanianwhile [ -n "$1" ]; do 221ba6c59e9d7d7013b3906b6f4230b663422681848Vignesh Venkatasubramanian case "$1" in 2227ce0a1d1337c01056ba24006efab21f00e179e04Vignesh Venkatasubramanian --extra-configure-args) 2237ce0a1d1337c01056ba24006efab21f00e179e04Vignesh Venkatasubramanian EXTRA_CONFIGURE_ARGS="$2" 2247ce0a1d1337c01056ba24006efab21f00e179e04Vignesh Venkatasubramanian shift 2257ce0a1d1337c01056ba24006efab21f00e179e04Vignesh Venkatasubramanian ;; 226ba6c59e9d7d7013b3906b6f4230b663422681848Vignesh Venkatasubramanian --help) 227ba6c59e9d7d7013b3906b6f4230b663422681848Vignesh Venkatasubramanian iosbuild_usage 228ba6c59e9d7d7013b3906b6f4230b663422681848Vignesh Venkatasubramanian exit 229ba6c59e9d7d7013b3906b6f4230b663422681848Vignesh Venkatasubramanian ;; 230ba6c59e9d7d7013b3906b6f4230b663422681848Vignesh Venkatasubramanian --jobs) 231ba6c59e9d7d7013b3906b6f4230b663422681848Vignesh Venkatasubramanian MAKE_JOBS="$2" 232ba6c59e9d7d7013b3906b6f4230b663422681848Vignesh Venkatasubramanian shift 233ba6c59e9d7d7013b3906b6f4230b663422681848Vignesh Venkatasubramanian ;; 234ba6c59e9d7d7013b3906b6f4230b663422681848Vignesh Venkatasubramanian --preserve-build-output) 235ba6c59e9d7d7013b3906b6f4230b663422681848Vignesh Venkatasubramanian PRESERVE_BUILD_OUTPUT=yes 236ba6c59e9d7d7013b3906b6f4230b663422681848Vignesh Venkatasubramanian ;; 237ba6c59e9d7d7013b3906b6f4230b663422681848Vignesh Venkatasubramanian --show-build-output) 238ba6c59e9d7d7013b3906b6f4230b663422681848Vignesh Venkatasubramanian devnull= 239ba6c59e9d7d7013b3906b6f4230b663422681848Vignesh Venkatasubramanian ;; 2407ce0a1d1337c01056ba24006efab21f00e179e04Vignesh Venkatasubramanian --targets) 2417ce0a1d1337c01056ba24006efab21f00e179e04Vignesh Venkatasubramanian TARGETS="$2" 2427ce0a1d1337c01056ba24006efab21f00e179e04Vignesh Venkatasubramanian shift 2437ce0a1d1337c01056ba24006efab21f00e179e04Vignesh Venkatasubramanian ;; 244ba6c59e9d7d7013b3906b6f4230b663422681848Vignesh Venkatasubramanian --verbose) 245ba6c59e9d7d7013b3906b6f4230b663422681848Vignesh Venkatasubramanian VERBOSE=yes 246ba6c59e9d7d7013b3906b6f4230b663422681848Vignesh Venkatasubramanian ;; 247ba6c59e9d7d7013b3906b6f4230b663422681848Vignesh Venkatasubramanian *) 248ba6c59e9d7d7013b3906b6f4230b663422681848Vignesh Venkatasubramanian iosbuild_usage 249ba6c59e9d7d7013b3906b6f4230b663422681848Vignesh Venkatasubramanian exit 1 250ba6c59e9d7d7013b3906b6f4230b663422681848Vignesh Venkatasubramanian ;; 251ba6c59e9d7d7013b3906b6f4230b663422681848Vignesh Venkatasubramanian esac 252ba6c59e9d7d7013b3906b6f4230b663422681848Vignesh Venkatasubramanian shift 253ba6c59e9d7d7013b3906b6f4230b663422681848Vignesh Venkatasubramaniandone 254ba6c59e9d7d7013b3906b6f4230b663422681848Vignesh Venkatasubramanian 255ba6c59e9d7d7013b3906b6f4230b663422681848Vignesh Venkatasubramanianif [ "${VERBOSE}" = "yes" ]; then 256ba6c59e9d7d7013b3906b6f4230b663422681848Vignesh Venkatasubramaniancat << EOF 257ba6c59e9d7d7013b3906b6f4230b663422681848Vignesh Venkatasubramanian BUILD_ROOT=${BUILD_ROOT} 258ba6c59e9d7d7013b3906b6f4230b663422681848Vignesh Venkatasubramanian DIST_DIR=${DIST_DIR} 2597ce0a1d1337c01056ba24006efab21f00e179e04Vignesh Venkatasubramanian CONFIGURE_ARGS=${CONFIGURE_ARGS} 2607ce0a1d1337c01056ba24006efab21f00e179e04Vignesh Venkatasubramanian EXTRA_CONFIGURE_ARGS=${EXTRA_CONFIGURE_ARGS} 261ba6c59e9d7d7013b3906b6f4230b663422681848Vignesh Venkatasubramanian FRAMEWORK_DIR=${FRAMEWORK_DIR} 262ba6c59e9d7d7013b3906b6f4230b663422681848Vignesh Venkatasubramanian HEADER_DIR=${HEADER_DIR} 263ba6c59e9d7d7013b3906b6f4230b663422681848Vignesh Venkatasubramanian MAKE_JOBS=${MAKE_JOBS} 264ba6c59e9d7d7013b3906b6f4230b663422681848Vignesh Venkatasubramanian PRESERVE_BUILD_OUTPUT=${PRESERVE_BUILD_OUTPUT} 265ba6c59e9d7d7013b3906b6f4230b663422681848Vignesh Venkatasubramanian LIBVPX_SOURCE_DIR=${LIBVPX_SOURCE_DIR} 266ba6c59e9d7d7013b3906b6f4230b663422681848Vignesh Venkatasubramanian LIPO=${LIPO} 267ba6c59e9d7d7013b3906b6f4230b663422681848Vignesh Venkatasubramanian ORIG_PWD=${ORIG_PWD} 268ba6c59e9d7d7013b3906b6f4230b663422681848Vignesh Venkatasubramanian TARGETS="${TARGETS}" 269ba6c59e9d7d7013b3906b6f4230b663422681848Vignesh VenkatasubramanianEOF 270ba6c59e9d7d7013b3906b6f4230b663422681848Vignesh Venkatasubramanianfi 271ba6c59e9d7d7013b3906b6f4230b663422681848Vignesh Venkatasubramanian 272ba6c59e9d7d7013b3906b6f4230b663422681848Vignesh Venkatasubramanianbuild_framework "${TARGETS}" 2737ce0a1d1337c01056ba24006efab21f00e179e04Vignesh Venkatasubramanianecho "Successfully built '${FRAMEWORK_DIR}' for:" 2747ce0a1d1337c01056ba24006efab21f00e179e04Vignesh Venkatasubramanianecho " ${TARGETS}" 275