11184aebb761cbeac9124c37189a80a1a58f04b6bhkuang#!/bin/sh 290d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber## 3f71323e297a928af368937089d3ed71239786f86Andreas Huber## configure 490d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber## 5f71323e297a928af368937089d3ed71239786f86Andreas Huber## This script is the front-end to the build system. It provides a similar 6f71323e297a928af368937089d3ed71239786f86Andreas Huber## interface to standard configure scripts with some extra bits for dealing 7f71323e297a928af368937089d3ed71239786f86Andreas Huber## with toolchains that differ from the standard POSIX interface and 8f71323e297a928af368937089d3ed71239786f86Andreas Huber## for extracting subsets of the source tree. In theory, reusable parts 9f71323e297a928af368937089d3ed71239786f86Andreas Huber## of this script were intended to live in build/make/configure.sh, 10f71323e297a928af368937089d3ed71239786f86Andreas Huber## but in practice, the line is pretty blurry. 11f71323e297a928af368937089d3ed71239786f86Andreas Huber## 12f71323e297a928af368937089d3ed71239786f86Andreas Huber## This build system is based in part on the FFmpeg configure script. 1390d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber## 1490d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber 1590d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber#source_path="`dirname \"$0\"`" 1690d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Hubersource_path=${0%/*} 1790d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber. "${source_path}/build/make/configure.sh" 1890d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber 1990d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Hubershow_help(){ 2090d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber show_help_pre 2190d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber cat << EOF 2290d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas HuberAdvanced options: 231b362b15af34006e6a11974088a46d42b903418eJohann ${toggle_libs} libraries 241b362b15af34006e6a11974088a46d42b903418eJohann ${toggle_examples} examples 251b362b15af34006e6a11974088a46d42b903418eJohann ${toggle_docs} documentation 261b362b15af34006e6a11974088a46d42b903418eJohann ${toggle_unit_tests} unit tests 2790d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber --libc=PATH path to alternate libc 28538f6170b788de7408b06efc6613dc98579aa6a6Andreas Huber --as={yasm|nasm|auto} use specified assembler [auto, yasm preferred] 291b362b15af34006e6a11974088a46d42b903418eJohann --sdk-path=PATH path to root of sdk (iOS, android builds only) 3090d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber ${toggle_fast_unaligned} don't use unaligned accesses, even when 3190d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber supported by hardware [auto] 3290d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber ${toggle_codec_srcs} in/exclude codec library source code 3390d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber ${toggle_debug_libs} in/exclude debug version of libraries 3490d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber ${toggle_md5} support for output of checksum data 3590d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber ${toggle_static_msvcrt} use static MSVCRT (VS builds only) 3690d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber ${toggle_vp8} VP8 codec support 37ba164dffc5a6795bce97fae02b51ccf3330e15e4hkuang ${toggle_vp9} VP9 codec support 381b362b15af34006e6a11974088a46d42b903418eJohann ${toggle_internal_stats} output of encoder internal stats for debug, if supported (encoders) 3990d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber ${toggle_mem_tracker} track memory usage 4090d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber ${toggle_postproc} postprocessing 411184aebb761cbeac9124c37189a80a1a58f04b6bhkuang ${toggle_vp9_postproc} vp9 specific postprocessing 421b362b15af34006e6a11974088a46d42b903418eJohann ${toggle_multithread} multithreaded encoding and decoding 4390d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber ${toggle_spatial_resampling} spatial sampling (scaling) support 4490d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber ${toggle_realtime_only} enable this option while building for real-time encoding 451b362b15af34006e6a11974088a46d42b903418eJohann ${toggle_onthefly_bitpacking} enable on-the-fly bitpacking in real-time encoding 461b362b15af34006e6a11974088a46d42b903418eJohann ${toggle_error_concealment} enable this option to get a decoder which is able to conceal losses 4790d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber ${toggle_runtime_cpu_detect} runtime cpu detection 48f71323e297a928af368937089d3ed71239786f86Andreas Huber ${toggle_shared} shared library support 491b362b15af34006e6a11974088a46d42b903418eJohann ${toggle_static} static library support 50538f6170b788de7408b06efc6613dc98579aa6a6Andreas Huber ${toggle_small} favor smaller size over speed 5179f15823c34ae1e423108295e416213200bb280fAndreas Huber ${toggle_postproc_visualizer} macro block / block level visualizers 521b362b15af34006e6a11974088a46d42b903418eJohann ${toggle_multi_res_encoding} enable multiple-resolution encoding 531b362b15af34006e6a11974088a46d42b903418eJohann ${toggle_temporal_denoising} enable temporal denoising and disable the spatial denoiser 5490d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber 5590d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas HuberCodecs: 5690d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber Codecs can be selectively enabled or disabled individually, or by family: 5790d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber --disable-<codec> 5890d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber is equivalent to: 5990d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber --disable-<codec>-encoder 6090d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber --disable-<codec>-decoder 6190d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber 6290d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber Codecs available in this distribution: 6390d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas HuberEOF 6490d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber#restore editor state ' 6590d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber 6690d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber local family; 6790d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber local last_family; 6890d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber local c; 6990d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber local str; 7090d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber for c in ${CODECS}; do 7190d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber family=${c%_*} 7290d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber if [ "${family}" != "${last_family}" ]; then 7390d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber [ -z "${str}" ] || echo "${str}" 7490d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber str="$(printf ' %10s:' ${family})" 7590d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber fi 7690d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber str="${str} $(printf '%10s' ${c#*_})" 7790d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber last_family=${family} 7890d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber done 7990d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber echo "${str}" 8090d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber show_help_post 8190d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber} 8290d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber 8390d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber## 8490d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber## BEGIN APPLICATION SPECIFIC CONFIGURATION 8590d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber## 8690d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber 8790d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber# all_platforms is a list of all supported target platforms. Maintain 8890d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber# alphabetically by architecture, generic-gnu last. 891b362b15af34006e6a11974088a46d42b903418eJohannall_platforms="${all_platforms} armv5te-android-gcc" 9090d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huberall_platforms="${all_platforms} armv5te-linux-rvct" 9190d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huberall_platforms="${all_platforms} armv5te-linux-gcc" 9279f15823c34ae1e423108295e416213200bb280fAndreas Huberall_platforms="${all_platforms} armv5te-none-rvct" 9390d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huberall_platforms="${all_platforms} armv6-darwin-gcc" 9490d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huberall_platforms="${all_platforms} armv6-linux-rvct" 9590d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huberall_platforms="${all_platforms} armv6-linux-gcc" 9679f15823c34ae1e423108295e416213200bb280fAndreas Huberall_platforms="${all_platforms} armv6-none-rvct" 971b362b15af34006e6a11974088a46d42b903418eJohannall_platforms="${all_platforms} armv7-android-gcc" #neon Cortex-A8 9890d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huberall_platforms="${all_platforms} armv7-darwin-gcc" #neon Cortex-A8 9990d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huberall_platforms="${all_platforms} armv7-linux-rvct" #neon Cortex-A8 10090d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huberall_platforms="${all_platforms} armv7-linux-gcc" #neon Cortex-A8 10179f15823c34ae1e423108295e416213200bb280fAndreas Huberall_platforms="${all_platforms} armv7-none-rvct" #neon Cortex-A8 102ba164dffc5a6795bce97fae02b51ccf3330e15e4hkuangall_platforms="${all_platforms} armv7-win32-vs11" 10390d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huberall_platforms="${all_platforms} mips32-linux-gcc" 10490d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huberall_platforms="${all_platforms} ppc32-darwin8-gcc" 10590d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huberall_platforms="${all_platforms} ppc32-darwin9-gcc" 106538f6170b788de7408b06efc6613dc98579aa6a6Andreas Huberall_platforms="${all_platforms} ppc32-linux-gcc" 10790d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huberall_platforms="${all_platforms} ppc64-darwin8-gcc" 10890d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huberall_platforms="${all_platforms} ppc64-darwin9-gcc" 10990d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huberall_platforms="${all_platforms} ppc64-linux-gcc" 110538f6170b788de7408b06efc6613dc98579aa6a6Andreas Huberall_platforms="${all_platforms} sparc-solaris-gcc" 111ba164dffc5a6795bce97fae02b51ccf3330e15e4hkuangall_platforms="${all_platforms} x86-android-gcc" 11290d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huberall_platforms="${all_platforms} x86-darwin8-gcc" 11390d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huberall_platforms="${all_platforms} x86-darwin8-icc" 11490d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huberall_platforms="${all_platforms} x86-darwin9-gcc" 11590d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huberall_platforms="${all_platforms} x86-darwin9-icc" 1161b362b15af34006e6a11974088a46d42b903418eJohannall_platforms="${all_platforms} x86-darwin10-gcc" 1171b362b15af34006e6a11974088a46d42b903418eJohannall_platforms="${all_platforms} x86-darwin11-gcc" 1181b362b15af34006e6a11974088a46d42b903418eJohannall_platforms="${all_platforms} x86-darwin12-gcc" 11991037db265ecdd914a26e056cf69207b4f50924ehkuangall_platforms="${all_platforms} x86-darwin13-gcc" 12090d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huberall_platforms="${all_platforms} x86-linux-gcc" 12190d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huberall_platforms="${all_platforms} x86-linux-icc" 1221b362b15af34006e6a11974088a46d42b903418eJohannall_platforms="${all_platforms} x86-os2-gcc" 12390d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huberall_platforms="${all_platforms} x86-solaris-gcc" 12490d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huberall_platforms="${all_platforms} x86-win32-gcc" 12590d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huberall_platforms="${all_platforms} x86-win32-vs7" 12690d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huberall_platforms="${all_platforms} x86-win32-vs8" 127f71323e297a928af368937089d3ed71239786f86Andreas Huberall_platforms="${all_platforms} x86-win32-vs9" 128ba164dffc5a6795bce97fae02b51ccf3330e15e4hkuangall_platforms="${all_platforms} x86-win32-vs10" 129ba164dffc5a6795bce97fae02b51ccf3330e15e4hkuangall_platforms="${all_platforms} x86-win32-vs11" 13090d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huberall_platforms="${all_platforms} x86_64-darwin9-gcc" 13179f15823c34ae1e423108295e416213200bb280fAndreas Huberall_platforms="${all_platforms} x86_64-darwin10-gcc" 1321b362b15af34006e6a11974088a46d42b903418eJohannall_platforms="${all_platforms} x86_64-darwin11-gcc" 1331b362b15af34006e6a11974088a46d42b903418eJohannall_platforms="${all_platforms} x86_64-darwin12-gcc" 13491037db265ecdd914a26e056cf69207b4f50924ehkuangall_platforms="${all_platforms} x86_64-darwin13-gcc" 13590d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huberall_platforms="${all_platforms} x86_64-linux-gcc" 136f71323e297a928af368937089d3ed71239786f86Andreas Huberall_platforms="${all_platforms} x86_64-linux-icc" 13790d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huberall_platforms="${all_platforms} x86_64-solaris-gcc" 1381b362b15af34006e6a11974088a46d42b903418eJohannall_platforms="${all_platforms} x86_64-win64-gcc" 13990d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huberall_platforms="${all_platforms} x86_64-win64-vs8" 140f71323e297a928af368937089d3ed71239786f86Andreas Huberall_platforms="${all_platforms} x86_64-win64-vs9" 141ba164dffc5a6795bce97fae02b51ccf3330e15e4hkuangall_platforms="${all_platforms} x86_64-win64-vs10" 142ba164dffc5a6795bce97fae02b51ccf3330e15e4hkuangall_platforms="${all_platforms} x86_64-win64-vs11" 14390d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huberall_platforms="${all_platforms} universal-darwin8-gcc" 14490d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huberall_platforms="${all_platforms} universal-darwin9-gcc" 1451b362b15af34006e6a11974088a46d42b903418eJohannall_platforms="${all_platforms} universal-darwin10-gcc" 1461b362b15af34006e6a11974088a46d42b903418eJohannall_platforms="${all_platforms} universal-darwin11-gcc" 1471b362b15af34006e6a11974088a46d42b903418eJohannall_platforms="${all_platforms} universal-darwin12-gcc" 14891037db265ecdd914a26e056cf69207b4f50924ehkuangall_platforms="${all_platforms} universal-darwin13-gcc" 14990d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huberall_platforms="${all_platforms} generic-gnu" 15090d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber 15190d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber# all_targets is a list of all targets that can be configured 15290d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber# note that these should be in dependency order for now. 15390d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huberall_targets="libs examples docs" 15490d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber 15590d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber# all targets available are enabled, by default. 15690d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huberfor t in ${all_targets}; do 1571184aebb761cbeac9124c37189a80a1a58f04b6bhkuang [ -f ${source_path}/${t}.mk ] && enable_feature ${t} 15890d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huberdone 15990d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber 16090d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber# check installed doxygen version 16190d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huberdoxy_version=$(doxygen --version 2>/dev/null) 16290d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huberdoxy_major=${doxy_version%%.*} 16390d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huberif [ ${doxy_major:-0} -ge 1 ]; then 16490d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber doxy_version=${doxy_version#*.} 16590d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber doxy_minor=${doxy_version%%.*} 16690d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber doxy_patch=${doxy_version##*.} 16790d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber 1681184aebb761cbeac9124c37189a80a1a58f04b6bhkuang [ $doxy_major -gt 1 ] && enable_feature doxygen 1691184aebb761cbeac9124c37189a80a1a58f04b6bhkuang [ $doxy_minor -gt 5 ] && enable_feature doxygen 1701184aebb761cbeac9124c37189a80a1a58f04b6bhkuang [ $doxy_minor -eq 5 ] && [ $doxy_patch -ge 3 ] && enable_feature doxygen 17190d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huberfi 17290d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber 173f71323e297a928af368937089d3ed71239786f86Andreas Huber# install everything except the sources, by default. sources will have 174f71323e297a928af368937089d3ed71239786f86Andreas Huber# to be enabled when doing dist builds, since that's no longer a common 175f71323e297a928af368937089d3ed71239786f86Andreas Huber# case. 1761184aebb761cbeac9124c37189a80a1a58f04b6bhkuangenabled doxygen && php -v >/dev/null 2>&1 && enable_feature install_docs 1771184aebb761cbeac9124c37189a80a1a58f04b6bhkuangenable_feature install_bins 1781184aebb761cbeac9124c37189a80a1a58f04b6bhkuangenable_feature install_libs 1791184aebb761cbeac9124c37189a80a1a58f04b6bhkuang 1801184aebb761cbeac9124c37189a80a1a58f04b6bhkuangenable_feature static 1811184aebb761cbeac9124c37189a80a1a58f04b6bhkuangenable_feature optimizations 1821184aebb761cbeac9124c37189a80a1a58f04b6bhkuangenable_feature fast_unaligned #allow unaligned accesses, if supported by hw 1831184aebb761cbeac9124c37189a80a1a58f04b6bhkuangenable_feature md5 1841184aebb761cbeac9124c37189a80a1a58f04b6bhkuangenable_feature spatial_resampling 1851184aebb761cbeac9124c37189a80a1a58f04b6bhkuangenable_feature multithread 1861184aebb761cbeac9124c37189a80a1a58f04b6bhkuangenable_feature os_support 1871184aebb761cbeac9124c37189a80a1a58f04b6bhkuangenable_feature temporal_denoising 1881184aebb761cbeac9124c37189a80a1a58f04b6bhkuang 1891184aebb761cbeac9124c37189a80a1a58f04b6bhkuang[ -d ${source_path}/../include ] && enable_feature alt_tree_layout 190ba164dffc5a6795bce97fae02b51ccf3330e15e4hkuangfor d in vp8 vp9; do 1911184aebb761cbeac9124c37189a80a1a58f04b6bhkuang [ -d ${source_path}/${d} ] && disable_feature alt_tree_layout; 19290d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huberdone 19390d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber 19490d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huberif ! enabled alt_tree_layout; then 19590d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber# development environment 19690d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber[ -d ${source_path}/vp8 ] && CODECS="${CODECS} vp8_encoder vp8_decoder" 197ba164dffc5a6795bce97fae02b51ccf3330e15e4hkuang[ -d ${source_path}/vp9 ] && CODECS="${CODECS} vp9_encoder vp9_decoder" 19890d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huberelse 19990d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber# customer environment 200f71323e297a928af368937089d3ed71239786f86Andreas Huber[ -f ${source_path}/../include/vpx/vp8cx.h ] && CODECS="${CODECS} vp8_encoder" 201f71323e297a928af368937089d3ed71239786f86Andreas Huber[ -f ${source_path}/../include/vpx/vp8dx.h ] && CODECS="${CODECS} vp8_decoder" 202ba164dffc5a6795bce97fae02b51ccf3330e15e4hkuang[ -f ${source_path}/../include/vpx/vp9cx.h ] && CODECS="${CODECS} vp9_encoder" 203ba164dffc5a6795bce97fae02b51ccf3330e15e4hkuang[ -f ${source_path}/../include/vpx/vp9dx.h ] && CODECS="${CODECS} vp9_decoder" 2041184aebb761cbeac9124c37189a80a1a58f04b6bhkuang[ -f ${source_path}/../include/vpx/vp8cx.h ] || disable_feature vp8_encoder 2051184aebb761cbeac9124c37189a80a1a58f04b6bhkuang[ -f ${source_path}/../include/vpx/vp8dx.h ] || disable_feature vp8_decoder 2061184aebb761cbeac9124c37189a80a1a58f04b6bhkuang[ -f ${source_path}/../include/vpx/vp9cx.h ] || disable_feature vp9_encoder 2071184aebb761cbeac9124c37189a80a1a58f04b6bhkuang[ -f ${source_path}/../include/vpx/vp9dx.h ] || disable_feature vp9_decoder 20890d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber 20990d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber[ -f ${source_path}/../lib/*/*mt.lib ] && soft_enable static_msvcrt 21090d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huberfi 21190d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber 21290d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas HuberCODECS="$(echo ${CODECS} | tr ' ' '\n')" 21390d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas HuberCODEC_FAMILIES="$(for c in ${CODECS}; do echo ${c%_*}; done | sort | uniq)" 21490d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber 21590d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas HuberARCH_LIST=" 21690d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber arm 21790d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber mips 21890d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber x86 21990d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber x86_64 22090d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber ppc32 22190d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber ppc64 22290d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber" 22390d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas HuberARCH_EXT_LIST=" 2241b362b15af34006e6a11974088a46d42b903418eJohann edsp 2251b362b15af34006e6a11974088a46d42b903418eJohann media 2261b362b15af34006e6a11974088a46d42b903418eJohann neon 22790d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber 22890d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber mips32 2291b362b15af34006e6a11974088a46d42b903418eJohann dspr2 23090d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber 23190d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber mmx 23290d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber sse 23390d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber sse2 23490d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber sse3 23590d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber ssse3 236538f6170b788de7408b06efc6613dc98579aa6a6Andreas Huber sse4_1 2375ae7ac49f08a179e4f054d99fcfc9dce78d26e58hkuang avx 2385ae7ac49f08a179e4f054d99fcfc9dce78d26e58hkuang avx2 23990d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber 24090d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber altivec 24190d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber" 24290d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas HuberHAVE_LIST=" 24390d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber ${ARCH_EXT_LIST} 24490d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber vpx_ports 24590d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber stdint_h 24690d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber alt_tree_layout 24790d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber pthread_h 24890d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber sys_mman_h 2491b362b15af34006e6a11974088a46d42b903418eJohann unistd_h 25090d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber" 251ba164dffc5a6795bce97fae02b51ccf3330e15e4hkuangEXPERIMENT_LIST=" 252ba164dffc5a6795bce97fae02b51ccf3330e15e4hkuang multiple_arf 253ba164dffc5a6795bce97fae02b51ccf3330e15e4hkuang non420 254ba164dffc5a6795bce97fae02b51ccf3330e15e4hkuang alpha 255ba164dffc5a6795bce97fae02b51ccf3330e15e4hkuang" 25690d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas HuberCONFIG_LIST=" 25790d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber external_build 25890d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber install_docs 25990d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber install_bins 26090d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber install_libs 26190d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber install_srcs 262f3bed9137f66ef693bd406e43b17e9a1114f1e14hkuang use_x86inc 26390d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber debug 26490d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber gprof 26590d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber gcov 26690d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber rvct 26790d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber gcc 26890d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber msvs 26990d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber pic 27090d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber big_endian 27190d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber 27290d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber codec_srcs 27390d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber debug_libs 27490d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber fast_unaligned 27590d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber mem_manager 27690d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber mem_tracker 27790d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber mem_checks 27890d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber md5 27990d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber 28090d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber dequant_tokens 28190d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber dc_recon 28290d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber runtime_cpu_detect 28390d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber postproc 2841184aebb761cbeac9124c37189a80a1a58f04b6bhkuang vp9_postproc 28590d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber multithread 2861b362b15af34006e6a11974088a46d42b903418eJohann internal_stats 28790d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber ${CODECS} 28890d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber ${CODEC_FAMILIES} 28990d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber encoders 29090d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber decoders 29190d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber static_msvcrt 29290d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber spatial_resampling 29390d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber realtime_only 2941b362b15af34006e6a11974088a46d42b903418eJohann onthefly_bitpacking 2951b362b15af34006e6a11974088a46d42b903418eJohann error_concealment 296f71323e297a928af368937089d3ed71239786f86Andreas Huber shared 2971b362b15af34006e6a11974088a46d42b903418eJohann static 298538f6170b788de7408b06efc6613dc98579aa6a6Andreas Huber small 29979f15823c34ae1e423108295e416213200bb280fAndreas Huber postproc_visualizer 30079f15823c34ae1e423108295e416213200bb280fAndreas Huber os_support 3011b362b15af34006e6a11974088a46d42b903418eJohann unit_tests 3021b362b15af34006e6a11974088a46d42b903418eJohann multi_res_encoding 3031b362b15af34006e6a11974088a46d42b903418eJohann temporal_denoising 304ba164dffc5a6795bce97fae02b51ccf3330e15e4hkuang experimental 305ba164dffc5a6795bce97fae02b51ccf3330e15e4hkuang decrypt 306ba164dffc5a6795bce97fae02b51ccf3330e15e4hkuang ${EXPERIMENT_LIST} 30790d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber" 30890d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas HuberCMDLINE_SELECT=" 309ba164dffc5a6795bce97fae02b51ccf3330e15e4hkuang external_build 31090d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber extra_warnings 31190d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber werror 31290d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber install_docs 31390d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber install_bins 31490d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber install_libs 31590d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber install_srcs 31690d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber debug 31790d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber gprof 31890d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber gcov 31990d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber pic 3201184aebb761cbeac9124c37189a80a1a58f04b6bhkuang use_x86inc 32190d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber optimizations 32290d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber ccache 32390d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber runtime_cpu_detect 324ba164dffc5a6795bce97fae02b51ccf3330e15e4hkuang thumb 32590d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber 32690d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber libs 32790d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber examples 3281b362b15af34006e6a11974088a46d42b903418eJohann docs 32990d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber libc 330538f6170b788de7408b06efc6613dc98579aa6a6Andreas Huber as 33190d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber fast_unaligned 33290d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber codec_srcs 33390d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber debug_libs 33490d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber md5 33590d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber 33690d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber dequant_tokens 33790d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber dc_recon 33890d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber postproc 3391184aebb761cbeac9124c37189a80a1a58f04b6bhkuang vp9_postproc 34090d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber multithread 3411b362b15af34006e6a11974088a46d42b903418eJohann internal_stats 34290d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber ${CODECS} 34390d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber ${CODEC_FAMILIES} 34490d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber static_msvcrt 34590d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber mem_tracker 34690d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber spatial_resampling 34790d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber realtime_only 3481b362b15af34006e6a11974088a46d42b903418eJohann onthefly_bitpacking 3491b362b15af34006e6a11974088a46d42b903418eJohann error_concealment 350f71323e297a928af368937089d3ed71239786f86Andreas Huber shared 3511b362b15af34006e6a11974088a46d42b903418eJohann static 352538f6170b788de7408b06efc6613dc98579aa6a6Andreas Huber small 35379f15823c34ae1e423108295e416213200bb280fAndreas Huber postproc_visualizer 3541b362b15af34006e6a11974088a46d42b903418eJohann unit_tests 3551b362b15af34006e6a11974088a46d42b903418eJohann multi_res_encoding 3561b362b15af34006e6a11974088a46d42b903418eJohann temporal_denoising 357ba164dffc5a6795bce97fae02b51ccf3330e15e4hkuang experimental 358ba164dffc5a6795bce97fae02b51ccf3330e15e4hkuang decrypt 35990d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber" 36090d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber 36190d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huberprocess_cmdline() { 36290d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber for opt do 36390d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber optval="${opt#*=}" 36490d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber case "$opt" in 3651184aebb761cbeac9124c37189a80a1a58f04b6bhkuang --disable-codecs) for c in ${CODECS}; do disable_feature $c; done ;; 366ba164dffc5a6795bce97fae02b51ccf3330e15e4hkuang --enable-?*|--disable-?*) 367ba164dffc5a6795bce97fae02b51ccf3330e15e4hkuang eval `echo "$opt" | sed 's/--/action=/;s/-/ option=/;s/-/_/g'` 368ba164dffc5a6795bce97fae02b51ccf3330e15e4hkuang if echo "${EXPERIMENT_LIST}" | grep "^ *$option\$" >/dev/null; then 369ba164dffc5a6795bce97fae02b51ccf3330e15e4hkuang if enabled experimental; then 3701184aebb761cbeac9124c37189a80a1a58f04b6bhkuang ${action}_feature $option 371ba164dffc5a6795bce97fae02b51ccf3330e15e4hkuang else 372ba164dffc5a6795bce97fae02b51ccf3330e15e4hkuang log_echo "Ignoring $opt -- not in experimental mode." 373ba164dffc5a6795bce97fae02b51ccf3330e15e4hkuang fi 374ba164dffc5a6795bce97fae02b51ccf3330e15e4hkuang else 375ba164dffc5a6795bce97fae02b51ccf3330e15e4hkuang process_common_cmdline $opt 376ba164dffc5a6795bce97fae02b51ccf3330e15e4hkuang fi 377ba164dffc5a6795bce97fae02b51ccf3330e15e4hkuang ;; 37879f15823c34ae1e423108295e416213200bb280fAndreas Huber *) process_common_cmdline "$opt" 37990d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber ;; 38090d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber esac 38190d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber done 38290d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber} 38390d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber 38490d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huberpost_process_cmdline() { 38590d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber local c 38690d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber 38790d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber # If the codec family is disabled, disable all components of that family. 38890d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber # If the codec family is enabled, enable all components of that family. 38990d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber log_echo "Configuring selected codecs" 39090d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber for c in ${CODECS}; do 3911184aebb761cbeac9124c37189a80a1a58f04b6bhkuang disabled ${c%%_*} && disable_feature ${c} 3921184aebb761cbeac9124c37189a80a1a58f04b6bhkuang enabled ${c%%_*} && enable_feature ${c} 39390d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber done 39490d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber 39590d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber # Enable all detected codecs, if they haven't been disabled 39690d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber for c in ${CODECS}; do soft_enable $c; done 39790d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber 39890d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber # Enable the codec family if any component of that family is enabled 39990d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber for c in ${CODECS}; do 4001184aebb761cbeac9124c37189a80a1a58f04b6bhkuang enabled $c && enable_feature ${c%_*} 40190d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber done 40290d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber 40390d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber # Set the {en,de}coders variable if any algorithm in that class is enabled 40490d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber for c in ${CODECS}; do 4051184aebb761cbeac9124c37189a80a1a58f04b6bhkuang enabled ${c} && enable_feature ${c##*_}s 40690d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber done 40790d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber} 40890d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber 40990d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber 41090d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huberprocess_targets() { 41190d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber enabled child || write_common_config_banner 41290d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber enabled universal || write_common_target_config_h ${BUILD_PFX}vpx_config.h 41390d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber 41490d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber # TODO: add host tools target (obj_int_extract, etc) 41590d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber 41690d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber # For fat binaries, call configure recursively to configure for each 41790d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber # binary architecture to be included. 41890d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber if enabled universal; then 41990d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber # Call configure (ourselves) for each subarchitecture 42090d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber for arch in $fat_bin_archs; do 42190d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber BUILD_PFX=${arch}/ toolchain=${arch} $self --child $cmdline_args || exit $? 42290d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber done 42390d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber fi 42490d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber 42590d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber # The write_common_config (config.mk) logic is deferred until after the 4265ae7ac49f08a179e4f054d99fcfc9dce78d26e58hkuang # recursive calls to configure complete, because we want our universal 42790d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber # targets to be executed last. 42890d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber write_common_config_targets 42990d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber enabled universal && echo "FAT_ARCHS=${fat_bin_archs}" >> config.mk 43090d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber 43190d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber # Calculate the default distribution name, based on the enabled features 43290d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber local cf 43390d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber local DIST_DIR=vpx 43490d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber for cf in $CODEC_FAMILIES; do 43590d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber if enabled ${cf}_encoder && enabled ${cf}_decoder; then 43690d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber DIST_DIR="${DIST_DIR}-${cf}" 43790d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber elif enabled ${cf}_encoder; then 43890d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber DIST_DIR="${DIST_DIR}-${cf}cx" 43990d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber elif enabled ${cf}_decoder; then 44090d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber DIST_DIR="${DIST_DIR}-${cf}dx" 44190d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber fi 44290d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber done 44390d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber enabled debug_libs && DIST_DIR="${DIST_DIR}-debug" 44490d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber enabled codec_srcs && DIST_DIR="${DIST_DIR}-src" 4451184aebb761cbeac9124c37189a80a1a58f04b6bhkuang ! enabled postproc && ! enabled vp9_postproc && DIST_DIR="${DIST_DIR}-nopost" 44690d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber ! enabled multithread && DIST_DIR="${DIST_DIR}-nomt" 44790d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber ! enabled install_docs && DIST_DIR="${DIST_DIR}-nodocs" 44890d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber DIST_DIR="${DIST_DIR}-${tgt_isa}-${tgt_os}" 44990d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber case "${tgt_os}" in 45090d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber win*) enabled static_msvcrt && DIST_DIR="${DIST_DIR}mt" || DIST_DIR="${DIST_DIR}md" 45190d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber DIST_DIR="${DIST_DIR}-${tgt_cc}" 45290d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber ;; 45390d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber esac 45490d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber if [ -f "${source_path}/build/make/version.sh" ]; then 45590d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber local ver=`"$source_path/build/make/version.sh" --bare $source_path` 45690d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber DIST_DIR="${DIST_DIR}-${ver}" 45779f15823c34ae1e423108295e416213200bb280fAndreas Huber VERSION_STRING=${ver} 458f71323e297a928af368937089d3ed71239786f86Andreas Huber ver=${ver%%-*} 459f71323e297a928af368937089d3ed71239786f86Andreas Huber VERSION_PATCH=${ver##*.} 460f71323e297a928af368937089d3ed71239786f86Andreas Huber ver=${ver%.*} 461f71323e297a928af368937089d3ed71239786f86Andreas Huber VERSION_MINOR=${ver##*.} 462f71323e297a928af368937089d3ed71239786f86Andreas Huber ver=${ver#v} 463f71323e297a928af368937089d3ed71239786f86Andreas Huber VERSION_MAJOR=${ver%.*} 46490d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber fi 465f71323e297a928af368937089d3ed71239786f86Andreas Huber enabled child || cat <<EOF >> config.mk 46679f15823c34ae1e423108295e416213200bb280fAndreas Huber 46779f15823c34ae1e423108295e416213200bb280fAndreas HuberPREFIX=${prefix} 468f71323e297a928af368937089d3ed71239786f86Andreas Huberifeq (\$(MAKECMDGOALS),dist) 469f71323e297a928af368937089d3ed71239786f86Andreas HuberDIST_DIR?=${DIST_DIR} 470f71323e297a928af368937089d3ed71239786f86Andreas Huberelse 471f71323e297a928af368937089d3ed71239786f86Andreas HuberDIST_DIR?=\$(DESTDIR)${prefix} 472f71323e297a928af368937089d3ed71239786f86Andreas Huberendif 473f71323e297a928af368937089d3ed71239786f86Andreas HuberLIBSUBDIR=${libdir##${prefix}/} 474f71323e297a928af368937089d3ed71239786f86Andreas Huber 47579f15823c34ae1e423108295e416213200bb280fAndreas HuberVERSION_STRING=${VERSION_STRING} 47679f15823c34ae1e423108295e416213200bb280fAndreas Huber 477f71323e297a928af368937089d3ed71239786f86Andreas HuberVERSION_MAJOR=${VERSION_MAJOR} 478f71323e297a928af368937089d3ed71239786f86Andreas HuberVERSION_MINOR=${VERSION_MINOR} 479f71323e297a928af368937089d3ed71239786f86Andreas HuberVERSION_PATCH=${VERSION_PATCH} 480f71323e297a928af368937089d3ed71239786f86Andreas Huber 481f71323e297a928af368937089d3ed71239786f86Andreas HuberCONFIGURE_ARGS=${CONFIGURE_ARGS} 482f71323e297a928af368937089d3ed71239786f86Andreas HuberEOF 48390d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber enabled child || echo "CONFIGURE_ARGS?=${CONFIGURE_ARGS}" >> config.mk 48490d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber 48590d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber # 48690d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber # Write makefiles for all enabled targets 48790d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber # 48890d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber for tgt in libs examples docs solution; do 48990d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber local tgt_fn="$tgt-$toolchain.mk" 49090d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber 49190d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber if enabled $tgt; then 49290d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber echo "Creating makefiles for ${toolchain} ${tgt}" 49390d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber write_common_target_config_mk $tgt_fn ${BUILD_PFX}vpx_config.h 49490d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber #write_${tgt}_config 49590d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber fi 49690d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber done 49790d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber 49890d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber} 49990d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber 50090d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huberprocess_detect() { 501f71323e297a928af368937089d3ed71239786f86Andreas Huber if enabled shared; then 502f71323e297a928af368937089d3ed71239786f86Andreas Huber # Can only build shared libs on a subset of platforms. Doing this check 503f71323e297a928af368937089d3ed71239786f86Andreas Huber # here rather than at option parse time because the target auto-detect 504f71323e297a928af368937089d3ed71239786f86Andreas Huber # magic happens after the command line has been parsed. 5051b362b15af34006e6a11974088a46d42b903418eJohann if ! enabled linux; then 5061b362b15af34006e6a11974088a46d42b903418eJohann if enabled gnu; then 5071b362b15af34006e6a11974088a46d42b903418eJohann echo "--enable-shared is only supported on ELF; assuming this is OK" 5081b362b15af34006e6a11974088a46d42b903418eJohann else 5091b362b15af34006e6a11974088a46d42b903418eJohann die "--enable-shared only supported on ELF for now" 5101b362b15af34006e6a11974088a46d42b903418eJohann fi 5111b362b15af34006e6a11974088a46d42b903418eJohann fi 512f71323e297a928af368937089d3ed71239786f86Andreas Huber fi 513ba164dffc5a6795bce97fae02b51ccf3330e15e4hkuang if [ -z "$CC" ] || enabled external_build; then 51490d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber echo "Bypassing toolchain for environment detection." 5151184aebb761cbeac9124c37189a80a1a58f04b6bhkuang enable_feature external_build 51690d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber check_header() { 51790d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber log fake_check_header "$@" 51890d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber header=$1 51990d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber shift 52090d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber var=`echo $header | sed 's/[^A-Za-z0-9_]/_/g'` 5211184aebb761cbeac9124c37189a80a1a58f04b6bhkuang disable_feature $var 522ba164dffc5a6795bce97fae02b51ccf3330e15e4hkuang # Headers common to all environments 52390d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber case $header in 52490d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber stdio.h) 52590d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber true; 52690d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber ;; 52790d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber *) 52890d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber local result=false 52990d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber for d in "$@"; do 53090d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber [ -f "${d##-I}/$header" ] && result=true && break 53190d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber done 53290d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber ${result:-true} 5331184aebb761cbeac9124c37189a80a1a58f04b6bhkuang esac && enable_feature $var 534ba164dffc5a6795bce97fae02b51ccf3330e15e4hkuang 535ba164dffc5a6795bce97fae02b51ccf3330e15e4hkuang # Specialize windows and POSIX environments. 536ba164dffc5a6795bce97fae02b51ccf3330e15e4hkuang case $toolchain in 537ba164dffc5a6795bce97fae02b51ccf3330e15e4hkuang *-win*-*) 538ba164dffc5a6795bce97fae02b51ccf3330e15e4hkuang case $header-$toolchain in 539ba164dffc5a6795bce97fae02b51ccf3330e15e4hkuang stdint*-gcc) true;; 540ba164dffc5a6795bce97fae02b51ccf3330e15e4hkuang *) false;; 5411184aebb761cbeac9124c37189a80a1a58f04b6bhkuang esac && enable_feature $var 542ba164dffc5a6795bce97fae02b51ccf3330e15e4hkuang ;; 543ba164dffc5a6795bce97fae02b51ccf3330e15e4hkuang *) 544ba164dffc5a6795bce97fae02b51ccf3330e15e4hkuang case $header in 545ba164dffc5a6795bce97fae02b51ccf3330e15e4hkuang stdint.h) true;; 546ba164dffc5a6795bce97fae02b51ccf3330e15e4hkuang pthread.h) true;; 547ba164dffc5a6795bce97fae02b51ccf3330e15e4hkuang sys/mman.h) true;; 548ba164dffc5a6795bce97fae02b51ccf3330e15e4hkuang unistd.h) true;; 549ba164dffc5a6795bce97fae02b51ccf3330e15e4hkuang *) false;; 5501184aebb761cbeac9124c37189a80a1a58f04b6bhkuang esac && enable_feature $var 551ba164dffc5a6795bce97fae02b51ccf3330e15e4hkuang esac 552ba164dffc5a6795bce97fae02b51ccf3330e15e4hkuang enabled $var 55390d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber } 55490d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber check_ld() { 55590d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber true 55690d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber } 55790d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber fi 55890d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber check_header stdio.h || die "Unable to invoke compiler: ${CC} ${CFLAGS}" 55990d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber check_ld <<EOF || die "Toolchain is unable to link executables" 56090d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huberint main(void) {return 0;} 56190d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas HuberEOF 56290d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber # check system headers 56390d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber check_header stdint.h 56490d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber check_header pthread.h 56590d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber check_header sys/mman.h 566ba164dffc5a6795bce97fae02b51ccf3330e15e4hkuang check_header unistd.h # for sysconf(3) and friends. 56790d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber 5681184aebb761cbeac9124c37189a80a1a58f04b6bhkuang check_header vpx/vpx_integer.h -I${source_path} && enable_feature vpx_ports 56990d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber} 57090d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber 57190d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huberprocess_toolchain() { 57290d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber process_common_toolchain 57390d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber 57490d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber # Handle universal binaries for this architecture 57590d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber case $toolchain in 57690d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber universal-darwin*) 57790d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber local darwin_ver=${tgt_os##darwin} 57890d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber 5791b362b15af34006e6a11974088a46d42b903418eJohann # Snow Leopard (10.6/darwin10) dropped support for PPC 5801b362b15af34006e6a11974088a46d42b903418eJohann # Include PPC support for all prior versions 5811b362b15af34006e6a11974088a46d42b903418eJohann if [ $darwin_ver -lt 10 ]; then 5821b362b15af34006e6a11974088a46d42b903418eJohann fat_bin_archs="$fat_bin_archs ppc32-${tgt_os}-gcc" 5831b362b15af34006e6a11974088a46d42b903418eJohann fi 5841b362b15af34006e6a11974088a46d42b903418eJohann 5851b362b15af34006e6a11974088a46d42b903418eJohann # Tiger (10.4/darwin8) brought support for x86 5861b362b15af34006e6a11974088a46d42b903418eJohann if [ $darwin_ver -ge 8 ]; then 5871b362b15af34006e6a11974088a46d42b903418eJohann fat_bin_archs="$fat_bin_archs x86-${tgt_os}-${tgt_cc}" 5881b362b15af34006e6a11974088a46d42b903418eJohann fi 5891b362b15af34006e6a11974088a46d42b903418eJohann 5901b362b15af34006e6a11974088a46d42b903418eJohann # Leopard (10.5/darwin9) brought 64 bit support 5911b362b15af34006e6a11974088a46d42b903418eJohann if [ $darwin_ver -ge 9 ]; then 59290d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber fat_bin_archs="$fat_bin_archs x86_64-${tgt_os}-${tgt_cc}" 59390d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber fi 59490d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber ;; 59590d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber esac 59690d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber 59790d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber 59890d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber # Enable some useful compiler flags 59990d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber if enabled gcc; then 60090d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber enabled werror && check_add_cflags -Werror 60190d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber check_add_cflags -Wall 60290d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber check_add_cflags -Wdeclaration-after-statement 60390d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber check_add_cflags -Wdisabled-optimization 60490d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber check_add_cflags -Wpointer-arith 60590d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber check_add_cflags -Wtype-limits 60690d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber check_add_cflags -Wcast-qual 607ba164dffc5a6795bce97fae02b51ccf3330e15e4hkuang check_add_cflags -Wvla 6081b362b15af34006e6a11974088a46d42b903418eJohann check_add_cflags -Wimplicit-function-declaration 6091b362b15af34006e6a11974088a46d42b903418eJohann check_add_cflags -Wuninitialized 6101b362b15af34006e6a11974088a46d42b903418eJohann check_add_cflags -Wunused-variable 611ba164dffc5a6795bce97fae02b51ccf3330e15e4hkuang case ${CC} in 6125ae7ac49f08a179e4f054d99fcfc9dce78d26e58hkuang *clang*) 6135ae7ac49f08a179e4f054d99fcfc9dce78d26e58hkuang # libvpx and/or clang have issues with aliasing: 6145ae7ac49f08a179e4f054d99fcfc9dce78d26e58hkuang # https://code.google.com/p/webm/issues/detail?id=603 6155ae7ac49f08a179e4f054d99fcfc9dce78d26e58hkuang # work around them until they are fixed 6165ae7ac49f08a179e4f054d99fcfc9dce78d26e58hkuang check_add_cflags -fno-strict-aliasing 6175ae7ac49f08a179e4f054d99fcfc9dce78d26e58hkuang ;; 618ba164dffc5a6795bce97fae02b51ccf3330e15e4hkuang *) check_add_cflags -Wunused-but-set-variable ;; 619ba164dffc5a6795bce97fae02b51ccf3330e15e4hkuang esac 62079f15823c34ae1e423108295e416213200bb280fAndreas Huber enabled extra_warnings || check_add_cflags -Wno-unused-function 62190d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber fi 62290d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber 62390d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber if enabled icc; then 62490d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber enabled werror && check_add_cflags -Werror 62590d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber check_add_cflags -Wall 62690d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber check_add_cflags -Wpointer-arith 62790d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber 62890d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber # ICC has a number of floating point optimizations that we disable 62990d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber # in favor of deterministic output WRT to other compilers 63090d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber add_cflags -fp-model precise 63190d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber fi 63290d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber 63390d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber # Enable extra, harmless warnings. These might provide additional insight 63490d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber # to what the compiler is doing and why, but in general, but they shouldn't 63590d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber # be treated as fatal, even if we're treating warnings as errors. 63690d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber GCC_EXTRA_WARNINGS=" 63790d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber -Wdisabled-optimization 63890d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber -Winline 63990d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber " 64090d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber enabled gcc && EXTRA_WARNINGS="${GCC_EXTRA_WARNINGS}" 64190d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber RVCT_EXTRA_WARNINGS=" 64290d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber --remarks 64390d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber " 64490d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber enabled rvct && EXTRA_WARNINGS="${RVCT_EXTRA_WARNINGS}" 64590d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber if enabled extra_warnings; then 64690d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber for w in ${EXTRA_WARNINGS}; do 64790d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber check_add_cflags ${w} 64890d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber enabled gcc && enabled werror && check_add_cflags -Wno-error=${w} 64990d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber done 65090d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber fi 65190d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber 65290d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber # ccache only really works on gcc toolchains 65390d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber enabled gcc || soft_disable ccache 65490d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber if enabled mips; then 6551184aebb761cbeac9124c37189a80a1a58f04b6bhkuang enable_feature dequant_tokens 6561184aebb761cbeac9124c37189a80a1a58f04b6bhkuang enable_feature dc_recon 6571184aebb761cbeac9124c37189a80a1a58f04b6bhkuang fi 6581184aebb761cbeac9124c37189a80a1a58f04b6bhkuang 6591184aebb761cbeac9124c37189a80a1a58f04b6bhkuang if enabled internal_stats; then 6601184aebb761cbeac9124c37189a80a1a58f04b6bhkuang enable_feature vp9_postproc 66190d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber fi 66290d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber 66390d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber # Enable the postbuild target if building for visual studio. 66490d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber case "$tgt_cc" in 6651184aebb761cbeac9124c37189a80a1a58f04b6bhkuang vs*) enable_feature msvs 6661184aebb761cbeac9124c37189a80a1a58f04b6bhkuang enable_feature solution 66790d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber vs_version=${tgt_cc##vs} 668ba164dffc5a6795bce97fae02b51ccf3330e15e4hkuang case $vs_version in 669ba164dffc5a6795bce97fae02b51ccf3330e15e4hkuang [789]) 670ba164dffc5a6795bce97fae02b51ccf3330e15e4hkuang VCPROJ_SFX=vcproj 671ba164dffc5a6795bce97fae02b51ccf3330e15e4hkuang gen_vcproj_cmd=${source_path}/build/make/gen_msvs_proj.sh 672ba164dffc5a6795bce97fae02b51ccf3330e15e4hkuang ;; 673ba164dffc5a6795bce97fae02b51ccf3330e15e4hkuang 10|11) 674ba164dffc5a6795bce97fae02b51ccf3330e15e4hkuang VCPROJ_SFX=vcxproj 675ba164dffc5a6795bce97fae02b51ccf3330e15e4hkuang gen_vcproj_cmd=${source_path}/build/make/gen_msvs_vcxproj.sh 676ba164dffc5a6795bce97fae02b51ccf3330e15e4hkuang ;; 677ba164dffc5a6795bce97fae02b51ccf3330e15e4hkuang esac 67890d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber all_targets="${all_targets} solution" 679ba164dffc5a6795bce97fae02b51ccf3330e15e4hkuang INLINE="__forceinline" 68090d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber ;; 68190d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber esac 68290d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber 68390d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber # Other toolchain specific defaults 68490d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber case $toolchain in x86*|ppc*|universal*) soft_enable postproc;; esac 68579f15823c34ae1e423108295e416213200bb280fAndreas Huber 68679f15823c34ae1e423108295e416213200bb280fAndreas Huber if enabled postproc_visualizer; then 68779f15823c34ae1e423108295e416213200bb280fAndreas Huber enabled postproc || die "postproc_visualizer requires postproc to be enabled" 68879f15823c34ae1e423108295e416213200bb280fAndreas Huber fi 6891b362b15af34006e6a11974088a46d42b903418eJohann 690ba164dffc5a6795bce97fae02b51ccf3330e15e4hkuang # Enable unit tests by default if we have a working C++ compiler. 6911b362b15af34006e6a11974088a46d42b903418eJohann case "$toolchain" in 6921b362b15af34006e6a11974088a46d42b903418eJohann *-vs*) 6931b362b15af34006e6a11974088a46d42b903418eJohann soft_enable unit_tests 6941b362b15af34006e6a11974088a46d42b903418eJohann ;; 6951b362b15af34006e6a11974088a46d42b903418eJohann *-android-*) 6961b362b15af34006e6a11974088a46d42b903418eJohann # GTestLog must be modified to use Android logging utilities. 6971b362b15af34006e6a11974088a46d42b903418eJohann ;; 698ba164dffc5a6795bce97fae02b51ccf3330e15e4hkuang *-darwin-*) 699ba164dffc5a6795bce97fae02b51ccf3330e15e4hkuang # iOS/ARM builds do not work with gtest. This does not match 700ba164dffc5a6795bce97fae02b51ccf3330e15e4hkuang # x86 targets. 701ba164dffc5a6795bce97fae02b51ccf3330e15e4hkuang ;; 70291037db265ecdd914a26e056cf69207b4f50924ehkuang *-win*) 70391037db265ecdd914a26e056cf69207b4f50924ehkuang # Some mingw toolchains don't have pthread available by default. 70491037db265ecdd914a26e056cf69207b4f50924ehkuang # Treat these more like visual studio where threading in gtest 70591037db265ecdd914a26e056cf69207b4f50924ehkuang # would be disabled for the same reason. 70691037db265ecdd914a26e056cf69207b4f50924ehkuang check_cxx "$@" <<EOF && soft_enable unit_tests 70791037db265ecdd914a26e056cf69207b4f50924ehkuangint z; 70891037db265ecdd914a26e056cf69207b4f50924ehkuangEOF 70991037db265ecdd914a26e056cf69207b4f50924ehkuang ;; 7101b362b15af34006e6a11974088a46d42b903418eJohann *) 711ba164dffc5a6795bce97fae02b51ccf3330e15e4hkuang enabled pthread_h && check_cxx "$@" <<EOF && soft_enable unit_tests 7121b362b15af34006e6a11974088a46d42b903418eJohannint z; 7131b362b15af34006e6a11974088a46d42b903418eJohannEOF 7141b362b15af34006e6a11974088a46d42b903418eJohann ;; 7151b362b15af34006e6a11974088a46d42b903418eJohann esac 71690d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber} 71790d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber 71890d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber 71990d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber## 72090d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber## END APPLICATION SPECIFIC CONFIGURATION 72190d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber## 72290d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas HuberCONFIGURE_ARGS="$@" 72390d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huberprocess "$@" 7241b362b15af34006e6a11974088a46d42b903418eJohannprint_webm_license ${BUILD_PFX}vpx_config.c "/*" " */" 7251b362b15af34006e6a11974088a46d42b903418eJohanncat <<EOF >> ${BUILD_PFX}vpx_config.c 72690d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huberstatic const char* const cfg = "$CONFIGURE_ARGS"; 72790d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huberconst char *vpx_codec_build_config(void) {return cfg;} 72890d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas HuberEOF 729