summaryrefslogtreecommitdiffstats
path: root/third_party/aom/build/make/iosbuild.sh
diff options
context:
space:
mode:
Diffstat (limited to 'third_party/aom/build/make/iosbuild.sh')
-rwxr-xr-xthird_party/aom/build/make/iosbuild.sh384
1 files changed, 0 insertions, 384 deletions
diff --git a/third_party/aom/build/make/iosbuild.sh b/third_party/aom/build/make/iosbuild.sh
deleted file mode 100755
index 167ece200..000000000
--- a/third_party/aom/build/make/iosbuild.sh
+++ /dev/null
@@ -1,384 +0,0 @@
-#!/bin/sh
-## Copyright (c) 2016, Alliance for Open Media. All rights reserved
-##
-## This source code is subject to the terms of the BSD 2 Clause License and
-## the Alliance for Open Media Patent License 1.0. If the BSD 2 Clause License
-## was not distributed with this source code in the LICENSE file, you can
-## obtain it at www.aomedia.org/license/software. If the Alliance for Open
-## Media Patent License 1.0 was not distributed with this source code in the
-## PATENTS file, you can obtain it at www.aomedia.org/license/patent.
-##
-## This script generates 'AOM.framework'. An iOS app can encode and decode AVx
-## video by including 'AOM.framework'.
-##
-## Run iosbuild.sh to create 'AOM.framework' in the current directory.
-##
-set -e
-devnull='> /dev/null 2>&1'
-
-BUILD_ROOT="_iosbuild"
-CONFIGURE_ARGS="--disable-docs
- --disable-examples
- --disable-libyuv
- --disable-unit-tests"
-DIST_DIR="_dist"
-FRAMEWORK_DIR="AOM.framework"
-FRAMEWORK_LIB="AOM.framework/AOM"
-HEADER_DIR="${FRAMEWORK_DIR}/Headers/aom"
-SCRIPT_DIR=$(dirname "$0")
-LIBAOM_SOURCE_DIR=$(cd ${SCRIPT_DIR}/../..; pwd)
-LIPO=$(xcrun -sdk iphoneos${SDK} -find lipo)
-ORIG_PWD="$(pwd)"
-ARM_TARGETS="arm64-darwin-gcc
- armv7-darwin-gcc
- armv7s-darwin-gcc"
-SIM_TARGETS="x86-iphonesimulator-gcc
- x86_64-iphonesimulator-gcc"
-OSX_TARGETS="x86-darwin16-gcc
- x86_64-darwin16-gcc"
-TARGETS="${ARM_TARGETS} ${SIM_TARGETS}"
-
-# Configures for the target specified by $1, and invokes make with the dist
-# target using $ as the distribution output directory.
-build_target() {
- local target="$1"
- local old_pwd="$(pwd)"
- local target_specific_flags=""
-
- vlog "***Building target: ${target}***"
-
- case "${target}" in
- x86-*)
- target_specific_flags="--enable-pic"
- vlog "Enabled PIC for ${target}"
- ;;
- esac
-
- mkdir "${target}"
- cd "${target}"
- # TODO(tomfinegan@google.com): switch to cmake.
- eval "${LIBAOM_SOURCE_DIR}/configure" --target="${target}" \
- ${CONFIGURE_ARGS} ${EXTRA_CONFIGURE_ARGS} ${target_specific_flags} \
- ${devnull}
- export DIST_DIR
- eval make dist ${devnull}
- cd "${old_pwd}"
-
- vlog "***Done building target: ${target}***"
-}
-
-# Returns the preprocessor symbol for the target specified by $1.
-target_to_preproc_symbol() {
- target="$1"
- case "${target}" in
- arm64-*)
- echo "__aarch64__"
- ;;
- armv7-*)
- echo "__ARM_ARCH_7A__"
- ;;
- armv7s-*)
- echo "__ARM_ARCH_7S__"
- ;;
- x86-*)
- echo "__i386__"
- ;;
- x86_64-*)
- echo "__x86_64__"
- ;;
- *)
- echo "#error ${target} unknown/unsupported"
- return 1
- ;;
- esac
-}
-
-# Create a aom_config.h shim that, based on preprocessor settings for the
-# current target CPU, includes the real aom_config.h for the current target.
-# $1 is the list of targets.
-create_aom_framework_config_shim() {
- local targets="$1"
- local config_file="${HEADER_DIR}/aom_config.h"
- local preproc_symbol=""
- local target=""
- local include_guard="AOM_FRAMEWORK_HEADERS_AOM_AOM_CONFIG_H_"
-
- local file_header="/*
- * Copyright (c) $(date +%Y), Alliance for Open Media. All rights reserved.
- *
- * This source code is subject to the terms of the BSD 2 Clause License and
- * the Alliance for Open Media Patent License 1.0. If the BSD 2 Clause License
- * was not distributed with this source code in the LICENSE file, you can
- * obtain it at www.aomedia.org/license/software. If the Alliance for Open
- * Media Patent License 1.0 was not distributed with this source code in the
- * PATENTS file, you can obtain it at www.aomedia.org/license/patent.
- */
-
-/* GENERATED FILE: DO NOT EDIT! */
-
-#ifndef ${include_guard}
-#define ${include_guard}
-
-#if defined"
-
- printf "%s" "${file_header}" > "${config_file}"
- for target in ${targets}; do
- preproc_symbol=$(target_to_preproc_symbol "${target}")
- printf " ${preproc_symbol}\n" >> "${config_file}"
- printf "#define AOM_FRAMEWORK_TARGET \"${target}\"\n" >> "${config_file}"
- printf "#include \"AOM/aom/${target}/aom_config.h\"\n" >> "${config_file}"
- printf "#elif defined" >> "${config_file}"
- mkdir "${HEADER_DIR}/${target}"
- cp -p "${BUILD_ROOT}/${target}/aom_config.h" "${HEADER_DIR}/${target}"
- done
-
- # Consume the last line of output from the loop: We don't want it.
- sed -i '' -e '$d' "${config_file}"
-
- printf "#endif\n\n" >> "${config_file}"
- printf "#endif // ${include_guard}" >> "${config_file}"
-}
-
-# Verifies that $FRAMEWORK_LIB fat library contains requested builds.
-verify_framework_targets() {
- local requested_cpus=""
- local cpu=""
-
- # Extract CPU from full target name.
- for target; do
- cpu="${target%%-*}"
- if [ "${cpu}" = "x86" ]; then
- # lipo -info outputs i386 for libaom x86 targets.
- cpu="i386"
- fi
- requested_cpus="${requested_cpus}${cpu} "
- done
-
- # Get target CPUs present in framework library.
- local targets_built=$(${LIPO} -info ${FRAMEWORK_LIB})
-
- # $LIPO -info outputs a string like the following:
- # Architectures in the fat file: $FRAMEWORK_LIB <architectures>
- # Capture only the architecture strings.
- targets_built=${targets_built##*: }
-
- # Sort CPU strings to make the next step a simple string compare.
- local actual=$(echo ${targets_built} | tr " " "\n" | sort | tr "\n" " ")
- local requested=$(echo ${requested_cpus} | tr " " "\n" | sort | tr "\n" " ")
-
- vlog "Requested ${FRAMEWORK_LIB} CPUs: ${requested}"
- vlog "Actual ${FRAMEWORK_LIB} CPUs: ${actual}"
-
- if [ "${requested}" != "${actual}" ]; then
- elog "Actual ${FRAMEWORK_LIB} targets do not match requested target list."
- elog " Requested target CPUs: ${requested}"
- elog " Actual target CPUs: ${actual}"
- return 1
- fi
-}
-
-# Configures and builds each target specified by $1, and then builds
-# AOM.framework.
-build_framework() {
- local lib_list=""
- local targets="$1"
- local target=""
- local target_dist_dir=""
-
- # Clean up from previous build(s).
- rm -rf "${BUILD_ROOT}" "${FRAMEWORK_DIR}"
-
- # Create output dirs.
- mkdir -p "${BUILD_ROOT}"
- mkdir -p "${HEADER_DIR}"
-
- cd "${BUILD_ROOT}"
-
- for target in ${targets}; do
- build_target "${target}"
- target_dist_dir="${BUILD_ROOT}/${target}/${DIST_DIR}"
- if [ "${ENABLE_SHARED}" = "yes" ]; then
- local suffix="dylib"
- else
- local suffix="a"
- fi
- lib_list="${lib_list} ${target_dist_dir}/lib/libaom.${suffix}"
- done
-
- cd "${ORIG_PWD}"
-
- # The basic libaom API includes are all the same; just grab the most recent
- # set.
- cp -p "${target_dist_dir}"/include/aom/* "${HEADER_DIR}"
-
- # Build the fat library.
- ${LIPO} -create ${lib_list} -output ${FRAMEWORK_DIR}/AOM
-
- # Create the aom_config.h shim that allows usage of aom_config.h from
- # within AOM.framework.
- create_aom_framework_config_shim "${targets}"
-
- # Copy in aom_version.h.
- cp -p "${BUILD_ROOT}/${target}/aom_version.h" "${HEADER_DIR}"
-
- if [ "${ENABLE_SHARED}" = "yes" ]; then
- # Adjust the dylib's name so dynamic linking in apps works as expected.
- install_name_tool -id '@rpath/AOM.framework/AOM' ${FRAMEWORK_DIR}/AOM
-
- # Copy in Info.plist.
- cat "${SCRIPT_DIR}/ios-Info.plist" \
- | sed "s/\${FULLVERSION}/${FULLVERSION}/g" \
- | sed "s/\${VERSION}/${VERSION}/g" \
- | sed "s/\${IOS_VERSION_MIN}/${IOS_VERSION_MIN}/g" \
- > "${FRAMEWORK_DIR}/Info.plist"
- fi
-
- # Confirm AOM.framework/AOM contains the targets requested.
- verify_framework_targets ${targets}
-
- vlog "Created fat library ${FRAMEWORK_LIB} containing:"
- for lib in ${lib_list}; do
- vlog " $(echo ${lib} | awk -F / '{print $2, $NF}')"
- done
-}
-
-# Trap function. Cleans up the subtree used to build all targets contained in
-# $TARGETS.
-cleanup() {
- local res=$?
- cd "${ORIG_PWD}"
-
- if [ $res -ne 0 ]; then
- elog "build exited with error ($res)"
- fi
-
- if [ "${PRESERVE_BUILD_OUTPUT}" != "yes" ]; then
- rm -rf "${BUILD_ROOT}"
- fi
-}
-
-print_list() {
- local indent="$1"
- shift
- local list="$@"
- for entry in ${list}; do
- echo "${indent}${entry}"
- done
-}
-
-iosbuild_usage() {
-cat << EOF
- Usage: ${0##*/} [arguments]
- --help: Display this message and exit.
- --enable-shared: Build a dynamic framework for use on iOS 8 or later.
- --extra-configure-args <args>: Extra args to pass when configuring libaom.
- --macosx: Uses darwin16 targets instead of iphonesimulator targets for x86
- and x86_64. Allows linking to framework when builds target MacOSX
- instead of iOS.
- --preserve-build-output: Do not delete the build directory.
- --show-build-output: Show output from each library build.
- --targets <targets>: Override default target list. Defaults:
-$(print_list " " ${TARGETS})
- --test-link: Confirms all targets can be linked. Functionally identical to
- passing --enable-examples via --extra-configure-args.
- --verbose: Output information about the environment and each stage of the
- build.
-EOF
-}
-
-elog() {
- echo "${0##*/} failed because: $@" 1>&2
-}
-
-vlog() {
- if [ "${VERBOSE}" = "yes" ]; then
- echo "$@"
- fi
-}
-
-trap cleanup EXIT
-
-# Parse the command line.
-while [ -n "$1" ]; do
- case "$1" in
- --extra-configure-args)
- EXTRA_CONFIGURE_ARGS="$2"
- shift
- ;;
- --help)
- iosbuild_usage
- exit
- ;;
- --enable-shared)
- ENABLE_SHARED=yes
- ;;
- --preserve-build-output)
- PRESERVE_BUILD_OUTPUT=yes
- ;;
- --show-build-output)
- devnull=
- ;;
- --test-link)
- EXTRA_CONFIGURE_ARGS="${EXTRA_CONFIGURE_ARGS} --enable-examples"
- ;;
- --targets)
- TARGETS="$2"
- shift
- ;;
- --macosx)
- TARGETS="${ARM_TARGETS} ${OSX_TARGETS}"
- ;;
- --verbose)
- VERBOSE=yes
- ;;
- *)
- iosbuild_usage
- exit 1
- ;;
- esac
- shift
-done
-
-if [ "${ENABLE_SHARED}" = "yes" ]; then
- CONFIGURE_ARGS="--enable-shared ${CONFIGURE_ARGS}"
-fi
-
-FULLVERSION=$("${SCRIPT_DIR}"/version.sh --bare "${LIBAOM_SOURCE_DIR}")
-VERSION=$(echo "${FULLVERSION}" | sed -E 's/^v([0-9]+\.[0-9]+\.[0-9]+).*$/\1/')
-
-if [ "$ENABLE_SHARED" = "yes" ]; then
- IOS_VERSION_OPTIONS="--enable-shared"
- IOS_VERSION_MIN="8.0"
-else
- IOS_VERSION_OPTIONS=""
- IOS_VERSION_MIN="6.0"
-fi
-
-if [ "${VERBOSE}" = "yes" ]; then
-cat << EOF
- BUILD_ROOT=${BUILD_ROOT}
- DIST_DIR=${DIST_DIR}
- CONFIGURE_ARGS=${CONFIGURE_ARGS}
- EXTRA_CONFIGURE_ARGS=${EXTRA_CONFIGURE_ARGS}
- FRAMEWORK_DIR=${FRAMEWORK_DIR}
- FRAMEWORK_LIB=${FRAMEWORK_LIB}
- HEADER_DIR=${HEADER_DIR}
- LIBAOM_SOURCE_DIR=${LIBAOM_SOURCE_DIR}
- LIPO=${LIPO}
- MAKEFLAGS=${MAKEFLAGS}
- ORIG_PWD=${ORIG_PWD}
- PRESERVE_BUILD_OUTPUT=${PRESERVE_BUILD_OUTPUT}
- TARGETS="$(print_list "" ${TARGETS})"
- ENABLE_SHARED=${ENABLE_SHARED}
- OSX_TARGETS="${OSX_TARGETS}"
- SIM_TARGETS="${SIM_TARGETS}"
- SCRIPT_DIR="${SCRIPT_DIR}"
- FULLVERSION="${FULLVERSION}"
- VERSION="${VERSION}"
- IOS_VERSION_MIN="${IOS_VERSION_MIN}"
-EOF
-fi
-
-build_framework "${TARGETS}"
-echo "Successfully built '${FRAMEWORK_DIR}' for:"
-print_list "" ${TARGETS}