| Index: source/libvpx/build/make/iosbuild.sh
|
| ===================================================================
|
| --- source/libvpx/build/make/iosbuild.sh (revision 0)
|
| +++ source/libvpx/build/make/iosbuild.sh (revision 0)
|
| @@ -0,0 +1,244 @@
|
| +#!/bin/sh
|
| +##
|
| +## Copyright (c) 2014 The WebM 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
|
| +## tree. An additional intellectual property rights grant can be found
|
| +## in the file PATENTS. All contributing project authors may
|
| +## be found in the AUTHORS file in the root of the source tree.
|
| +##
|
| +##
|
| +## This script generates 'VPX.framework'. An iOS app can encode and decode VPx
|
| +## video by including 'VPX.framework'.
|
| +##
|
| +## Run iosbuild.sh to create 'VPX.framework' in the current directory.
|
| +##
|
| +set -e
|
| +devnull='> /dev/null 2>&1'
|
| +
|
| +BUILD_ROOT="_iosbuild"
|
| +DIST_DIR="_dist"
|
| +FRAMEWORK_DIR="VPX.framework"
|
| +HEADER_DIR="${FRAMEWORK_DIR}/Headers/vpx"
|
| +MAKE_JOBS=1
|
| +LIBVPX_SOURCE_DIR=$(dirname "$0" | sed -e s,/build/make,,)
|
| +LIPO=$(xcrun -sdk iphoneos${SDK} -find lipo)
|
| +ORIG_PWD="$(pwd)"
|
| +TARGETS="armv6-darwin-gcc
|
| + armv7-darwin-gcc
|
| + armv7s-darwin-gcc
|
| + x86-iphonesimulator-gcc
|
| + x86_64-iphonesimulator-gcc"
|
| +
|
| +# Configures for the target specified by $1, and invokes make with the dist
|
| +# target using $DIST_DIR as the distribution output directory.
|
| +build_target() {
|
| + local target="$1"
|
| + local old_pwd="$(pwd)"
|
| +
|
| + vlog "***Building target: ${target}***"
|
| +
|
| + mkdir "${target}"
|
| + cd "${target}"
|
| + eval "../../${LIBVPX_SOURCE_DIR}/configure" --target="${target}" \
|
| + --disable-docs ${devnull}
|
| + export DIST_DIR
|
| + eval make -j ${MAKE_JOBS} 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
|
| + armv6-*)
|
| + echo "__ARM_ARCH_6__"
|
| + ;;
|
| + armv7-*)
|
| + echo "__ARM_ARCH_7__"
|
| + ;;
|
| + armv7s-*)
|
| + echo "__ARM_ARCH_7S__"
|
| + ;;
|
| + x86-*)
|
| + echo "__i386__"
|
| + ;;
|
| + x86_64-*)
|
| + echo "__x86_64__"
|
| + ;;
|
| + *)
|
| + echo "#error ${target} unknown/unsupported"
|
| + return 1
|
| + ;;
|
| + esac
|
| +}
|
| +
|
| +# Create a vpx_config.h shim that, based on preprocessor settings for the
|
| +# current target CPU, includes the real vpx_config.h for the current target.
|
| +# $1 is the list of targets.
|
| +create_vpx_framework_config_shim() {
|
| + local targets="$1"
|
| + local config_file="${HEADER_DIR}/vpx_config.h"
|
| + local preproc_symbol=""
|
| + local target=""
|
| + local include_guard="VPX_FRAMEWORK_HEADERS_VPX_VPX_CONFIG_H_"
|
| +
|
| + local file_header="/*
|
| + * Copyright (c) $(date +%Y) The WebM 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
|
| + * tree. An additional intellectual property rights grant can be found
|
| + * in the file PATENTS. All contributing project authors may
|
| + * be found in the AUTHORS file in the root of the source tree.
|
| + */
|
| +
|
| +/* 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 "#include \"VPX/vpx/${target}/vpx_config.h\"\n" >> "${config_file}"
|
| + printf "#elif defined" >> "${config_file}"
|
| + mkdir "${HEADER_DIR}/${target}"
|
| + cp -p "${BUILD_ROOT}/${target}/vpx_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}"
|
| +}
|
| +
|
| +# Configures and builds each target specified by $1, and then builds
|
| +# VPX.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}"
|
| + lib_list="${lib_list} ${target_dist_dir}/lib/libvpx.a"
|
| + done
|
| +
|
| + cd "${ORIG_PWD}"
|
| +
|
| + # The basic libvpx API includes are all the same; just grab the most recent
|
| + # set.
|
| + cp -p "${target_dist_dir}"/include/vpx/* "${HEADER_DIR}"
|
| +
|
| + # Build the fat library.
|
| + ${LIPO} -create ${lib_list} -output ${FRAMEWORK_DIR}/VPX
|
| +
|
| + # Create the vpx_config.h shim that allows usage of vpx_config.h from
|
| + # within VPX.framework.
|
| + create_vpx_framework_config_shim "${targets}"
|
| +
|
| + # Copy in vpx_version.h.
|
| + cp -p "${BUILD_ROOT}/${target}/vpx_version.h" "${HEADER_DIR}"
|
| +
|
| + vlog "Created fat library ${FRAMEWORK_DIR}/VPX containing:"
|
| + for lib in ${lib_list}; do
|
| + vlog " $(echo ${lib} | awk -F / '{print $2, $NF}')"
|
| + done
|
| +
|
| + # TODO(tomfinegan): Verify that expected targets are included within
|
| + # VPX.framework/VPX via lipo -info.
|
| +}
|
| +
|
| +# Trap function. Cleans up the subtree used to build all targets contained in
|
| +# $TARGETS.
|
| +cleanup() {
|
| + cd "${ORIG_PWD}"
|
| +
|
| + if [ "${PRESERVE_BUILD_OUTPUT}" != "yes" ]; then
|
| + rm -rf "${BUILD_ROOT}"
|
| + fi
|
| +}
|
| +
|
| +iosbuild_usage() {
|
| +cat << EOF
|
| + Usage: ${0##*/} [arguments]
|
| + --help: Display this message and exit.
|
| + --jobs: Number of make jobs.
|
| + --preserve-build-output: Do not delete the build directory.
|
| + --show-build-output: Show output from each library build.
|
| + --verbose: Output information about the environment and each stage of the
|
| + build.
|
| +EOF
|
| +}
|
| +
|
| +vlog() {
|
| + if [ "${VERBOSE}" = "yes" ]; then
|
| + echo "$@"
|
| + fi
|
| +}
|
| +
|
| +trap cleanup EXIT
|
| +
|
| +# Parse the command line.
|
| +while [ -n "$1" ]; do
|
| + case "$1" in
|
| + --help)
|
| + iosbuild_usage
|
| + exit
|
| + ;;
|
| + --jobs)
|
| + MAKE_JOBS="$2"
|
| + shift
|
| + ;;
|
| + --preserve-build-output)
|
| + PRESERVE_BUILD_OUTPUT=yes
|
| + ;;
|
| + --show-build-output)
|
| + devnull=
|
| + ;;
|
| + --verbose)
|
| + VERBOSE=yes
|
| + ;;
|
| + *)
|
| + iosbuild_usage
|
| + exit 1
|
| + ;;
|
| + esac
|
| + shift
|
| +done
|
| +
|
| +if [ "${VERBOSE}" = "yes" ]; then
|
| +cat << EOF
|
| + BUILD_ROOT=${BUILD_ROOT}
|
| + DIST_DIR=${DIST_DIR}
|
| + FRAMEWORK_DIR=${FRAMEWORK_DIR}
|
| + HEADER_DIR=${HEADER_DIR}
|
| + MAKE_JOBS=${MAKE_JOBS}
|
| + PRESERVE_BUILD_OUTPUT=${PRESERVE_BUILD_OUTPUT}
|
| + LIBVPX_SOURCE_DIR=${LIBVPX_SOURCE_DIR}
|
| + LIPO=${LIPO}
|
| + ORIG_PWD=${ORIG_PWD}
|
| + TARGETS="${TARGETS}"
|
| +EOF
|
| +fi
|
| +
|
| +build_framework "${TARGETS}"
|
|
|
| Property changes on: source/libvpx/build/make/iosbuild.sh
|
| ___________________________________________________________________
|
| Added: svn:executable
|
| + *
|
|
|
|
|