1233d2500723e5594f3e7c70896ffeeef32b9c950ywan#!/bin/sh 2233d2500723e5594f3e7c70896ffeeef32b9c950ywan## 3233d2500723e5594f3e7c70896ffeeef32b9c950ywan## configure 4233d2500723e5594f3e7c70896ffeeef32b9c950ywan## 5233d2500723e5594f3e7c70896ffeeef32b9c950ywan## This script is the front-end to the build system. It provides a similar 6233d2500723e5594f3e7c70896ffeeef32b9c950ywan## interface to standard configure scripts with some extra bits for dealing 7233d2500723e5594f3e7c70896ffeeef32b9c950ywan## with toolchains that differ from the standard POSIX interface and 8233d2500723e5594f3e7c70896ffeeef32b9c950ywan## for extracting subsets of the source tree. In theory, reusable parts 9233d2500723e5594f3e7c70896ffeeef32b9c950ywan## of this script were intended to live in build/make/configure.sh, 10233d2500723e5594f3e7c70896ffeeef32b9c950ywan## but in practice, the line is pretty blurry. 11233d2500723e5594f3e7c70896ffeeef32b9c950ywan## 12233d2500723e5594f3e7c70896ffeeef32b9c950ywan## This build system is based in part on the FFmpeg configure script. 13233d2500723e5594f3e7c70896ffeeef32b9c950ywan## 14233d2500723e5594f3e7c70896ffeeef32b9c950ywan 15233d2500723e5594f3e7c70896ffeeef32b9c950ywan#source_path="`dirname \"$0\"`" 16233d2500723e5594f3e7c70896ffeeef32b9c950ywansource_path=${0%/*} 17233d2500723e5594f3e7c70896ffeeef32b9c950ywan. "${source_path}/build/make/configure.sh" 18233d2500723e5594f3e7c70896ffeeef32b9c950ywan 19233d2500723e5594f3e7c70896ffeeef32b9c950ywanshow_help(){ 20233d2500723e5594f3e7c70896ffeeef32b9c950ywan show_help_pre 21233d2500723e5594f3e7c70896ffeeef32b9c950ywan cat << EOF 22233d2500723e5594f3e7c70896ffeeef32b9c950ywanAdvanced options: 23233d2500723e5594f3e7c70896ffeeef32b9c950ywan ${toggle_libs} libraries 24233d2500723e5594f3e7c70896ffeeef32b9c950ywan ${toggle_examples} examples 25233d2500723e5594f3e7c70896ffeeef32b9c950ywan ${toggle_docs} documentation 26233d2500723e5594f3e7c70896ffeeef32b9c950ywan ${toggle_unit_tests} unit tests 27233d2500723e5594f3e7c70896ffeeef32b9c950ywan ${toggle_decode_perf_tests} build decoder perf tests with unit tests 28233d2500723e5594f3e7c70896ffeeef32b9c950ywan --libc=PATH path to alternate libc 29233d2500723e5594f3e7c70896ffeeef32b9c950ywan --as={yasm|nasm|auto} use specified assembler [auto, yasm preferred] 30233d2500723e5594f3e7c70896ffeeef32b9c950ywan --sdk-path=PATH path to root of sdk (android builds only) 31233d2500723e5594f3e7c70896ffeeef32b9c950ywan ${toggle_fast_unaligned} don't use unaligned accesses, even when 32233d2500723e5594f3e7c70896ffeeef32b9c950ywan supported by hardware [auto] 33233d2500723e5594f3e7c70896ffeeef32b9c950ywan ${toggle_codec_srcs} in/exclude codec library source code 34233d2500723e5594f3e7c70896ffeeef32b9c950ywan ${toggle_debug_libs} in/exclude debug version of libraries 35233d2500723e5594f3e7c70896ffeeef32b9c950ywan ${toggle_static_msvcrt} use static MSVCRT (VS builds only) 36233d2500723e5594f3e7c70896ffeeef32b9c950ywan ${toggle_vp8} VP8 codec support 37233d2500723e5594f3e7c70896ffeeef32b9c950ywan ${toggle_vp9} VP9 codec support 38233d2500723e5594f3e7c70896ffeeef32b9c950ywan ${toggle_internal_stats} output of encoder internal stats for debug, if supported (encoders) 39233d2500723e5594f3e7c70896ffeeef32b9c950ywan ${toggle_mem_tracker} track memory usage 40233d2500723e5594f3e7c70896ffeeef32b9c950ywan ${toggle_postproc} postprocessing 41233d2500723e5594f3e7c70896ffeeef32b9c950ywan ${toggle_vp9_postproc} vp9 specific postprocessing 42233d2500723e5594f3e7c70896ffeeef32b9c950ywan ${toggle_multithread} multithreaded encoding and decoding 43233d2500723e5594f3e7c70896ffeeef32b9c950ywan ${toggle_spatial_resampling} spatial sampling (scaling) support 44233d2500723e5594f3e7c70896ffeeef32b9c950ywan ${toggle_realtime_only} enable this option while building for real-time encoding 45233d2500723e5594f3e7c70896ffeeef32b9c950ywan ${toggle_onthefly_bitpacking} enable on-the-fly bitpacking in real-time encoding 46233d2500723e5594f3e7c70896ffeeef32b9c950ywan ${toggle_error_concealment} enable this option to get a decoder which is able to conceal losses 47233d2500723e5594f3e7c70896ffeeef32b9c950ywan ${toggle_runtime_cpu_detect} runtime cpu detection 48233d2500723e5594f3e7c70896ffeeef32b9c950ywan ${toggle_shared} shared library support 49233d2500723e5594f3e7c70896ffeeef32b9c950ywan ${toggle_static} static library support 50233d2500723e5594f3e7c70896ffeeef32b9c950ywan ${toggle_small} favor smaller size over speed 51233d2500723e5594f3e7c70896ffeeef32b9c950ywan ${toggle_postproc_visualizer} macro block / block level visualizers 52233d2500723e5594f3e7c70896ffeeef32b9c950ywan ${toggle_multi_res_encoding} enable multiple-resolution encoding 53233d2500723e5594f3e7c70896ffeeef32b9c950ywan ${toggle_temporal_denoising} enable temporal denoising and disable the spatial denoiser 54233d2500723e5594f3e7c70896ffeeef32b9c950ywan ${toggle_webm_io} enable input from and output to WebM container 55233d2500723e5594f3e7c70896ffeeef32b9c950ywan 56233d2500723e5594f3e7c70896ffeeef32b9c950ywanCodecs: 57233d2500723e5594f3e7c70896ffeeef32b9c950ywan Codecs can be selectively enabled or disabled individually, or by family: 58233d2500723e5594f3e7c70896ffeeef32b9c950ywan --disable-<codec> 59233d2500723e5594f3e7c70896ffeeef32b9c950ywan is equivalent to: 60233d2500723e5594f3e7c70896ffeeef32b9c950ywan --disable-<codec>-encoder 61233d2500723e5594f3e7c70896ffeeef32b9c950ywan --disable-<codec>-decoder 62233d2500723e5594f3e7c70896ffeeef32b9c950ywan 63233d2500723e5594f3e7c70896ffeeef32b9c950ywan Codecs available in this distribution: 64233d2500723e5594f3e7c70896ffeeef32b9c950ywanEOF 65233d2500723e5594f3e7c70896ffeeef32b9c950ywan#restore editor state ' 66233d2500723e5594f3e7c70896ffeeef32b9c950ywan 67233d2500723e5594f3e7c70896ffeeef32b9c950ywan local family; 68233d2500723e5594f3e7c70896ffeeef32b9c950ywan local last_family; 69233d2500723e5594f3e7c70896ffeeef32b9c950ywan local c; 70233d2500723e5594f3e7c70896ffeeef32b9c950ywan local str; 71233d2500723e5594f3e7c70896ffeeef32b9c950ywan for c in ${CODECS}; do 72233d2500723e5594f3e7c70896ffeeef32b9c950ywan family=${c%_*} 73233d2500723e5594f3e7c70896ffeeef32b9c950ywan if [ "${family}" != "${last_family}" ]; then 74233d2500723e5594f3e7c70896ffeeef32b9c950ywan [ -z "${str}" ] || echo "${str}" 75233d2500723e5594f3e7c70896ffeeef32b9c950ywan str="$(printf ' %10s:' ${family})" 76233d2500723e5594f3e7c70896ffeeef32b9c950ywan fi 77233d2500723e5594f3e7c70896ffeeef32b9c950ywan str="${str} $(printf '%10s' ${c#*_})" 78233d2500723e5594f3e7c70896ffeeef32b9c950ywan last_family=${family} 79233d2500723e5594f3e7c70896ffeeef32b9c950ywan done 80233d2500723e5594f3e7c70896ffeeef32b9c950ywan echo "${str}" 81233d2500723e5594f3e7c70896ffeeef32b9c950ywan show_help_post 82233d2500723e5594f3e7c70896ffeeef32b9c950ywan} 83233d2500723e5594f3e7c70896ffeeef32b9c950ywan 84233d2500723e5594f3e7c70896ffeeef32b9c950ywan## 85233d2500723e5594f3e7c70896ffeeef32b9c950ywan## BEGIN APPLICATION SPECIFIC CONFIGURATION 86233d2500723e5594f3e7c70896ffeeef32b9c950ywan## 87233d2500723e5594f3e7c70896ffeeef32b9c950ywan 88233d2500723e5594f3e7c70896ffeeef32b9c950ywan# all_platforms is a list of all supported target platforms. Maintain 89233d2500723e5594f3e7c70896ffeeef32b9c950ywan# alphabetically by architecture, generic-gnu last. 90233d2500723e5594f3e7c70896ffeeef32b9c950ywanall_platforms="${all_platforms} armv5te-android-gcc" 91233d2500723e5594f3e7c70896ffeeef32b9c950ywanall_platforms="${all_platforms} armv5te-linux-rvct" 92233d2500723e5594f3e7c70896ffeeef32b9c950ywanall_platforms="${all_platforms} armv5te-linux-gcc" 93233d2500723e5594f3e7c70896ffeeef32b9c950ywanall_platforms="${all_platforms} armv5te-none-rvct" 94233d2500723e5594f3e7c70896ffeeef32b9c950ywanall_platforms="${all_platforms} armv6-darwin-gcc" 95233d2500723e5594f3e7c70896ffeeef32b9c950ywanall_platforms="${all_platforms} armv6-linux-rvct" 96233d2500723e5594f3e7c70896ffeeef32b9c950ywanall_platforms="${all_platforms} armv6-linux-gcc" 97233d2500723e5594f3e7c70896ffeeef32b9c950ywanall_platforms="${all_platforms} armv6-none-rvct" 98233d2500723e5594f3e7c70896ffeeef32b9c950ywanall_platforms="${all_platforms} armv7-android-gcc" #neon Cortex-A8 99233d2500723e5594f3e7c70896ffeeef32b9c950ywanall_platforms="${all_platforms} armv7-darwin-gcc" #neon Cortex-A8 100233d2500723e5594f3e7c70896ffeeef32b9c950ywanall_platforms="${all_platforms} armv7-linux-rvct" #neon Cortex-A8 101233d2500723e5594f3e7c70896ffeeef32b9c950ywanall_platforms="${all_platforms} armv7-linux-gcc" #neon Cortex-A8 102233d2500723e5594f3e7c70896ffeeef32b9c950ywanall_platforms="${all_platforms} armv7-none-rvct" #neon Cortex-A8 103233d2500723e5594f3e7c70896ffeeef32b9c950ywanall_platforms="${all_platforms} armv7-win32-vs11" 104233d2500723e5594f3e7c70896ffeeef32b9c950ywanall_platforms="${all_platforms} armv7-win32-vs12" 105233d2500723e5594f3e7c70896ffeeef32b9c950ywanall_platforms="${all_platforms} mips32-linux-gcc" 106233d2500723e5594f3e7c70896ffeeef32b9c950ywanall_platforms="${all_platforms} ppc32-darwin8-gcc" 107233d2500723e5594f3e7c70896ffeeef32b9c950ywanall_platforms="${all_platforms} ppc32-darwin9-gcc" 108233d2500723e5594f3e7c70896ffeeef32b9c950ywanall_platforms="${all_platforms} ppc32-linux-gcc" 109233d2500723e5594f3e7c70896ffeeef32b9c950ywanall_platforms="${all_platforms} ppc64-darwin8-gcc" 110233d2500723e5594f3e7c70896ffeeef32b9c950ywanall_platforms="${all_platforms} ppc64-darwin9-gcc" 111233d2500723e5594f3e7c70896ffeeef32b9c950ywanall_platforms="${all_platforms} ppc64-linux-gcc" 112233d2500723e5594f3e7c70896ffeeef32b9c950ywanall_platforms="${all_platforms} sparc-solaris-gcc" 113233d2500723e5594f3e7c70896ffeeef32b9c950ywanall_platforms="${all_platforms} x86-android-gcc" 114233d2500723e5594f3e7c70896ffeeef32b9c950ywanall_platforms="${all_platforms} x86-darwin8-gcc" 115233d2500723e5594f3e7c70896ffeeef32b9c950ywanall_platforms="${all_platforms} x86-darwin8-icc" 116233d2500723e5594f3e7c70896ffeeef32b9c950ywanall_platforms="${all_platforms} x86-darwin9-gcc" 117233d2500723e5594f3e7c70896ffeeef32b9c950ywanall_platforms="${all_platforms} x86-darwin9-icc" 118233d2500723e5594f3e7c70896ffeeef32b9c950ywanall_platforms="${all_platforms} x86-darwin10-gcc" 119233d2500723e5594f3e7c70896ffeeef32b9c950ywanall_platforms="${all_platforms} x86-darwin11-gcc" 120233d2500723e5594f3e7c70896ffeeef32b9c950ywanall_platforms="${all_platforms} x86-darwin12-gcc" 121233d2500723e5594f3e7c70896ffeeef32b9c950ywanall_platforms="${all_platforms} x86-darwin13-gcc" 122233d2500723e5594f3e7c70896ffeeef32b9c950ywanall_platforms="${all_platforms} x86-linux-gcc" 123233d2500723e5594f3e7c70896ffeeef32b9c950ywanall_platforms="${all_platforms} x86-linux-icc" 124233d2500723e5594f3e7c70896ffeeef32b9c950ywanall_platforms="${all_platforms} x86-os2-gcc" 125233d2500723e5594f3e7c70896ffeeef32b9c950ywanall_platforms="${all_platforms} x86-solaris-gcc" 126233d2500723e5594f3e7c70896ffeeef32b9c950ywanall_platforms="${all_platforms} x86-win32-gcc" 127233d2500723e5594f3e7c70896ffeeef32b9c950ywanall_platforms="${all_platforms} x86-win32-vs7" 128233d2500723e5594f3e7c70896ffeeef32b9c950ywanall_platforms="${all_platforms} x86-win32-vs8" 129233d2500723e5594f3e7c70896ffeeef32b9c950ywanall_platforms="${all_platforms} x86-win32-vs9" 130233d2500723e5594f3e7c70896ffeeef32b9c950ywanall_platforms="${all_platforms} x86-win32-vs10" 131233d2500723e5594f3e7c70896ffeeef32b9c950ywanall_platforms="${all_platforms} x86-win32-vs11" 132233d2500723e5594f3e7c70896ffeeef32b9c950ywanall_platforms="${all_platforms} x86-win32-vs12" 133233d2500723e5594f3e7c70896ffeeef32b9c950ywanall_platforms="${all_platforms} x86_64-darwin9-gcc" 134233d2500723e5594f3e7c70896ffeeef32b9c950ywanall_platforms="${all_platforms} x86_64-darwin10-gcc" 135233d2500723e5594f3e7c70896ffeeef32b9c950ywanall_platforms="${all_platforms} x86_64-darwin11-gcc" 136233d2500723e5594f3e7c70896ffeeef32b9c950ywanall_platforms="${all_platforms} x86_64-darwin12-gcc" 137233d2500723e5594f3e7c70896ffeeef32b9c950ywanall_platforms="${all_platforms} x86_64-darwin13-gcc" 138233d2500723e5594f3e7c70896ffeeef32b9c950ywanall_platforms="${all_platforms} x86_64-linux-gcc" 139233d2500723e5594f3e7c70896ffeeef32b9c950ywanall_platforms="${all_platforms} x86_64-linux-icc" 140233d2500723e5594f3e7c70896ffeeef32b9c950ywanall_platforms="${all_platforms} x86_64-solaris-gcc" 141233d2500723e5594f3e7c70896ffeeef32b9c950ywanall_platforms="${all_platforms} x86_64-win64-gcc" 142233d2500723e5594f3e7c70896ffeeef32b9c950ywanall_platforms="${all_platforms} x86_64-win64-vs8" 143233d2500723e5594f3e7c70896ffeeef32b9c950ywanall_platforms="${all_platforms} x86_64-win64-vs9" 144233d2500723e5594f3e7c70896ffeeef32b9c950ywanall_platforms="${all_platforms} x86_64-win64-vs10" 145233d2500723e5594f3e7c70896ffeeef32b9c950ywanall_platforms="${all_platforms} x86_64-win64-vs11" 146233d2500723e5594f3e7c70896ffeeef32b9c950ywanall_platforms="${all_platforms} x86_64-win64-vs12" 147233d2500723e5594f3e7c70896ffeeef32b9c950ywanall_platforms="${all_platforms} universal-darwin8-gcc" 148233d2500723e5594f3e7c70896ffeeef32b9c950ywanall_platforms="${all_platforms} universal-darwin9-gcc" 149233d2500723e5594f3e7c70896ffeeef32b9c950ywanall_platforms="${all_platforms} universal-darwin10-gcc" 150233d2500723e5594f3e7c70896ffeeef32b9c950ywanall_platforms="${all_platforms} universal-darwin11-gcc" 151233d2500723e5594f3e7c70896ffeeef32b9c950ywanall_platforms="${all_platforms} universal-darwin12-gcc" 152233d2500723e5594f3e7c70896ffeeef32b9c950ywanall_platforms="${all_platforms} universal-darwin13-gcc" 153233d2500723e5594f3e7c70896ffeeef32b9c950ywanall_platforms="${all_platforms} generic-gnu" 154233d2500723e5594f3e7c70896ffeeef32b9c950ywan 155233d2500723e5594f3e7c70896ffeeef32b9c950ywan# all_targets is a list of all targets that can be configured 156233d2500723e5594f3e7c70896ffeeef32b9c950ywan# note that these should be in dependency order for now. 157233d2500723e5594f3e7c70896ffeeef32b9c950ywanall_targets="libs examples docs" 158233d2500723e5594f3e7c70896ffeeef32b9c950ywan 159233d2500723e5594f3e7c70896ffeeef32b9c950ywan# all targets available are enabled, by default. 160233d2500723e5594f3e7c70896ffeeef32b9c950ywanfor t in ${all_targets}; do 161233d2500723e5594f3e7c70896ffeeef32b9c950ywan [ -f ${source_path}/${t}.mk ] && enable_feature ${t} 162233d2500723e5594f3e7c70896ffeeef32b9c950ywandone 163233d2500723e5594f3e7c70896ffeeef32b9c950ywan 164233d2500723e5594f3e7c70896ffeeef32b9c950ywanif ! perl --version >/dev/null; then 165233d2500723e5594f3e7c70896ffeeef32b9c950ywan die "Perl is required to build" 166233d2500723e5594f3e7c70896ffeeef32b9c950ywanfi 167233d2500723e5594f3e7c70896ffeeef32b9c950ywan 168233d2500723e5594f3e7c70896ffeeef32b9c950ywan 169233d2500723e5594f3e7c70896ffeeef32b9c950ywanif [ "`cd ${source_path} && pwd`" != "`pwd`" ]; then 170233d2500723e5594f3e7c70896ffeeef32b9c950ywan # test to see if source_path already configured 171233d2500723e5594f3e7c70896ffeeef32b9c950ywan if [ -f ${source_path}/vpx_config.h ]; then 172233d2500723e5594f3e7c70896ffeeef32b9c950ywan die "source directory already configured; run 'make distclean' there first" 173233d2500723e5594f3e7c70896ffeeef32b9c950ywan fi 174233d2500723e5594f3e7c70896ffeeef32b9c950ywanfi 175233d2500723e5594f3e7c70896ffeeef32b9c950ywan 176233d2500723e5594f3e7c70896ffeeef32b9c950ywan# check installed doxygen version 177233d2500723e5594f3e7c70896ffeeef32b9c950ywandoxy_version=$(doxygen --version 2>/dev/null) 178233d2500723e5594f3e7c70896ffeeef32b9c950ywandoxy_major=${doxy_version%%.*} 179233d2500723e5594f3e7c70896ffeeef32b9c950ywanif [ ${doxy_major:-0} -ge 1 ]; then 180233d2500723e5594f3e7c70896ffeeef32b9c950ywan doxy_version=${doxy_version#*.} 181233d2500723e5594f3e7c70896ffeeef32b9c950ywan doxy_minor=${doxy_version%%.*} 182233d2500723e5594f3e7c70896ffeeef32b9c950ywan doxy_patch=${doxy_version##*.} 183233d2500723e5594f3e7c70896ffeeef32b9c950ywan 184233d2500723e5594f3e7c70896ffeeef32b9c950ywan [ $doxy_major -gt 1 ] && enable_feature doxygen 185233d2500723e5594f3e7c70896ffeeef32b9c950ywan [ $doxy_minor -gt 5 ] && enable_feature doxygen 186233d2500723e5594f3e7c70896ffeeef32b9c950ywan [ $doxy_minor -eq 5 ] && [ $doxy_patch -ge 3 ] && enable_feature doxygen 187233d2500723e5594f3e7c70896ffeeef32b9c950ywanfi 188233d2500723e5594f3e7c70896ffeeef32b9c950ywan 189233d2500723e5594f3e7c70896ffeeef32b9c950ywan# install everything except the sources, by default. sources will have 190233d2500723e5594f3e7c70896ffeeef32b9c950ywan# to be enabled when doing dist builds, since that's no longer a common 191233d2500723e5594f3e7c70896ffeeef32b9c950ywan# case. 192233d2500723e5594f3e7c70896ffeeef32b9c950ywanenabled doxygen && php -v >/dev/null 2>&1 && enable_feature install_docs 193233d2500723e5594f3e7c70896ffeeef32b9c950ywanenable_feature install_bins 194233d2500723e5594f3e7c70896ffeeef32b9c950ywanenable_feature install_libs 195233d2500723e5594f3e7c70896ffeeef32b9c950ywan 196233d2500723e5594f3e7c70896ffeeef32b9c950ywanenable_feature static 197233d2500723e5594f3e7c70896ffeeef32b9c950ywanenable_feature optimizations 198233d2500723e5594f3e7c70896ffeeef32b9c950ywanenable_feature fast_unaligned #allow unaligned accesses, if supported by hw 199233d2500723e5594f3e7c70896ffeeef32b9c950ywanenable_feature spatial_resampling 200233d2500723e5594f3e7c70896ffeeef32b9c950ywanenable_feature multithread 201233d2500723e5594f3e7c70896ffeeef32b9c950ywanenable_feature os_support 202233d2500723e5594f3e7c70896ffeeef32b9c950ywanenable_feature temporal_denoising 203233d2500723e5594f3e7c70896ffeeef32b9c950ywan 204233d2500723e5594f3e7c70896ffeeef32b9c950ywan[ -d ${source_path}/../include ] && enable_feature alt_tree_layout 205233d2500723e5594f3e7c70896ffeeef32b9c950ywanfor d in vp8 vp9; do 206233d2500723e5594f3e7c70896ffeeef32b9c950ywan [ -d ${source_path}/${d} ] && disable_feature alt_tree_layout; 207233d2500723e5594f3e7c70896ffeeef32b9c950ywandone 208233d2500723e5594f3e7c70896ffeeef32b9c950ywan 209233d2500723e5594f3e7c70896ffeeef32b9c950ywanif ! enabled alt_tree_layout; then 210233d2500723e5594f3e7c70896ffeeef32b9c950ywan# development environment 211233d2500723e5594f3e7c70896ffeeef32b9c950ywan[ -d ${source_path}/vp8 ] && CODECS="${CODECS} vp8_encoder vp8_decoder" 212233d2500723e5594f3e7c70896ffeeef32b9c950ywan[ -d ${source_path}/vp9 ] && CODECS="${CODECS} vp9_encoder vp9_decoder" 213233d2500723e5594f3e7c70896ffeeef32b9c950ywanelse 214233d2500723e5594f3e7c70896ffeeef32b9c950ywan# customer environment 215233d2500723e5594f3e7c70896ffeeef32b9c950ywan[ -f ${source_path}/../include/vpx/vp8cx.h ] && CODECS="${CODECS} vp8_encoder" 216233d2500723e5594f3e7c70896ffeeef32b9c950ywan[ -f ${source_path}/../include/vpx/vp8dx.h ] && CODECS="${CODECS} vp8_decoder" 217233d2500723e5594f3e7c70896ffeeef32b9c950ywan[ -f ${source_path}/../include/vpx/vp9cx.h ] && CODECS="${CODECS} vp9_encoder" 218233d2500723e5594f3e7c70896ffeeef32b9c950ywan[ -f ${source_path}/../include/vpx/vp9dx.h ] && CODECS="${CODECS} vp9_decoder" 219233d2500723e5594f3e7c70896ffeeef32b9c950ywan[ -f ${source_path}/../include/vpx/vp8cx.h ] || disable_feature vp8_encoder 220233d2500723e5594f3e7c70896ffeeef32b9c950ywan[ -f ${source_path}/../include/vpx/vp8dx.h ] || disable_feature vp8_decoder 221233d2500723e5594f3e7c70896ffeeef32b9c950ywan[ -f ${source_path}/../include/vpx/vp9cx.h ] || disable_feature vp9_encoder 222233d2500723e5594f3e7c70896ffeeef32b9c950ywan[ -f ${source_path}/../include/vpx/vp9dx.h ] || disable_feature vp9_decoder 223233d2500723e5594f3e7c70896ffeeef32b9c950ywan 224233d2500723e5594f3e7c70896ffeeef32b9c950ywan[ -f ${source_path}/../lib/*/*mt.lib ] && soft_enable static_msvcrt 225233d2500723e5594f3e7c70896ffeeef32b9c950ywanfi 226233d2500723e5594f3e7c70896ffeeef32b9c950ywan 227233d2500723e5594f3e7c70896ffeeef32b9c950ywanCODECS="$(echo ${CODECS} | tr ' ' '\n')" 228233d2500723e5594f3e7c70896ffeeef32b9c950ywanCODEC_FAMILIES="$(for c in ${CODECS}; do echo ${c%_*}; done | sort | uniq)" 229233d2500723e5594f3e7c70896ffeeef32b9c950ywan 230233d2500723e5594f3e7c70896ffeeef32b9c950ywanARCH_LIST=" 231233d2500723e5594f3e7c70896ffeeef32b9c950ywan arm 232233d2500723e5594f3e7c70896ffeeef32b9c950ywan mips 233233d2500723e5594f3e7c70896ffeeef32b9c950ywan x86 234233d2500723e5594f3e7c70896ffeeef32b9c950ywan x86_64 235233d2500723e5594f3e7c70896ffeeef32b9c950ywan ppc32 236233d2500723e5594f3e7c70896ffeeef32b9c950ywan ppc64 237233d2500723e5594f3e7c70896ffeeef32b9c950ywan" 238233d2500723e5594f3e7c70896ffeeef32b9c950ywanARCH_EXT_LIST=" 239233d2500723e5594f3e7c70896ffeeef32b9c950ywan edsp 240233d2500723e5594f3e7c70896ffeeef32b9c950ywan media 241233d2500723e5594f3e7c70896ffeeef32b9c950ywan neon 242233d2500723e5594f3e7c70896ffeeef32b9c950ywan 243233d2500723e5594f3e7c70896ffeeef32b9c950ywan mips32 244233d2500723e5594f3e7c70896ffeeef32b9c950ywan dspr2 245233d2500723e5594f3e7c70896ffeeef32b9c950ywan 246233d2500723e5594f3e7c70896ffeeef32b9c950ywan mmx 247233d2500723e5594f3e7c70896ffeeef32b9c950ywan sse 248233d2500723e5594f3e7c70896ffeeef32b9c950ywan sse2 249233d2500723e5594f3e7c70896ffeeef32b9c950ywan sse3 250233d2500723e5594f3e7c70896ffeeef32b9c950ywan ssse3 251233d2500723e5594f3e7c70896ffeeef32b9c950ywan sse4_1 252233d2500723e5594f3e7c70896ffeeef32b9c950ywan avx 253233d2500723e5594f3e7c70896ffeeef32b9c950ywan avx2 254233d2500723e5594f3e7c70896ffeeef32b9c950ywan 255233d2500723e5594f3e7c70896ffeeef32b9c950ywan altivec 256233d2500723e5594f3e7c70896ffeeef32b9c950ywan" 257233d2500723e5594f3e7c70896ffeeef32b9c950ywanHAVE_LIST=" 258233d2500723e5594f3e7c70896ffeeef32b9c950ywan ${ARCH_EXT_LIST} 259233d2500723e5594f3e7c70896ffeeef32b9c950ywan vpx_ports 260233d2500723e5594f3e7c70896ffeeef32b9c950ywan stdint_h 261233d2500723e5594f3e7c70896ffeeef32b9c950ywan alt_tree_layout 262233d2500723e5594f3e7c70896ffeeef32b9c950ywan pthread_h 263233d2500723e5594f3e7c70896ffeeef32b9c950ywan sys_mman_h 264233d2500723e5594f3e7c70896ffeeef32b9c950ywan unistd_h 265233d2500723e5594f3e7c70896ffeeef32b9c950ywan" 266233d2500723e5594f3e7c70896ffeeef32b9c950ywanEXPERIMENT_LIST=" 267233d2500723e5594f3e7c70896ffeeef32b9c950ywan multiple_arf 268233d2500723e5594f3e7c70896ffeeef32b9c950ywan alpha 269233d2500723e5594f3e7c70896ffeeef32b9c950ywan" 270233d2500723e5594f3e7c70896ffeeef32b9c950ywanCONFIG_LIST=" 271233d2500723e5594f3e7c70896ffeeef32b9c950ywan external_build 272233d2500723e5594f3e7c70896ffeeef32b9c950ywan install_docs 273233d2500723e5594f3e7c70896ffeeef32b9c950ywan install_bins 274233d2500723e5594f3e7c70896ffeeef32b9c950ywan install_libs 275233d2500723e5594f3e7c70896ffeeef32b9c950ywan install_srcs 276233d2500723e5594f3e7c70896ffeeef32b9c950ywan use_x86inc 277233d2500723e5594f3e7c70896ffeeef32b9c950ywan debug 278233d2500723e5594f3e7c70896ffeeef32b9c950ywan gprof 279233d2500723e5594f3e7c70896ffeeef32b9c950ywan gcov 280233d2500723e5594f3e7c70896ffeeef32b9c950ywan rvct 281233d2500723e5594f3e7c70896ffeeef32b9c950ywan gcc 282233d2500723e5594f3e7c70896ffeeef32b9c950ywan msvs 283233d2500723e5594f3e7c70896ffeeef32b9c950ywan pic 284233d2500723e5594f3e7c70896ffeeef32b9c950ywan big_endian 285233d2500723e5594f3e7c70896ffeeef32b9c950ywan 286233d2500723e5594f3e7c70896ffeeef32b9c950ywan codec_srcs 287233d2500723e5594f3e7c70896ffeeef32b9c950ywan debug_libs 288233d2500723e5594f3e7c70896ffeeef32b9c950ywan fast_unaligned 289233d2500723e5594f3e7c70896ffeeef32b9c950ywan mem_manager 290233d2500723e5594f3e7c70896ffeeef32b9c950ywan mem_tracker 291233d2500723e5594f3e7c70896ffeeef32b9c950ywan mem_checks 292233d2500723e5594f3e7c70896ffeeef32b9c950ywan 293233d2500723e5594f3e7c70896ffeeef32b9c950ywan dequant_tokens 294233d2500723e5594f3e7c70896ffeeef32b9c950ywan dc_recon 295233d2500723e5594f3e7c70896ffeeef32b9c950ywan runtime_cpu_detect 296233d2500723e5594f3e7c70896ffeeef32b9c950ywan postproc 297233d2500723e5594f3e7c70896ffeeef32b9c950ywan vp9_postproc 298233d2500723e5594f3e7c70896ffeeef32b9c950ywan multithread 299233d2500723e5594f3e7c70896ffeeef32b9c950ywan internal_stats 300233d2500723e5594f3e7c70896ffeeef32b9c950ywan ${CODECS} 301233d2500723e5594f3e7c70896ffeeef32b9c950ywan ${CODEC_FAMILIES} 302233d2500723e5594f3e7c70896ffeeef32b9c950ywan encoders 303233d2500723e5594f3e7c70896ffeeef32b9c950ywan decoders 304233d2500723e5594f3e7c70896ffeeef32b9c950ywan static_msvcrt 305233d2500723e5594f3e7c70896ffeeef32b9c950ywan spatial_resampling 306233d2500723e5594f3e7c70896ffeeef32b9c950ywan realtime_only 307233d2500723e5594f3e7c70896ffeeef32b9c950ywan onthefly_bitpacking 308233d2500723e5594f3e7c70896ffeeef32b9c950ywan error_concealment 309233d2500723e5594f3e7c70896ffeeef32b9c950ywan shared 310233d2500723e5594f3e7c70896ffeeef32b9c950ywan static 311233d2500723e5594f3e7c70896ffeeef32b9c950ywan small 312233d2500723e5594f3e7c70896ffeeef32b9c950ywan postproc_visualizer 313233d2500723e5594f3e7c70896ffeeef32b9c950ywan os_support 314233d2500723e5594f3e7c70896ffeeef32b9c950ywan unit_tests 315233d2500723e5594f3e7c70896ffeeef32b9c950ywan webm_io 316233d2500723e5594f3e7c70896ffeeef32b9c950ywan decode_perf_tests 317233d2500723e5594f3e7c70896ffeeef32b9c950ywan multi_res_encoding 318233d2500723e5594f3e7c70896ffeeef32b9c950ywan temporal_denoising 319233d2500723e5594f3e7c70896ffeeef32b9c950ywan experimental 320233d2500723e5594f3e7c70896ffeeef32b9c950ywan decrypt 321233d2500723e5594f3e7c70896ffeeef32b9c950ywan ${EXPERIMENT_LIST} 322233d2500723e5594f3e7c70896ffeeef32b9c950ywan" 323233d2500723e5594f3e7c70896ffeeef32b9c950ywanCMDLINE_SELECT=" 324233d2500723e5594f3e7c70896ffeeef32b9c950ywan external_build 325233d2500723e5594f3e7c70896ffeeef32b9c950ywan extra_warnings 326233d2500723e5594f3e7c70896ffeeef32b9c950ywan werror 327233d2500723e5594f3e7c70896ffeeef32b9c950ywan install_docs 328233d2500723e5594f3e7c70896ffeeef32b9c950ywan install_bins 329233d2500723e5594f3e7c70896ffeeef32b9c950ywan install_libs 330233d2500723e5594f3e7c70896ffeeef32b9c950ywan install_srcs 331233d2500723e5594f3e7c70896ffeeef32b9c950ywan debug 332233d2500723e5594f3e7c70896ffeeef32b9c950ywan gprof 333233d2500723e5594f3e7c70896ffeeef32b9c950ywan gcov 334233d2500723e5594f3e7c70896ffeeef32b9c950ywan pic 335233d2500723e5594f3e7c70896ffeeef32b9c950ywan use_x86inc 336233d2500723e5594f3e7c70896ffeeef32b9c950ywan optimizations 337233d2500723e5594f3e7c70896ffeeef32b9c950ywan ccache 338233d2500723e5594f3e7c70896ffeeef32b9c950ywan runtime_cpu_detect 339233d2500723e5594f3e7c70896ffeeef32b9c950ywan thumb 340233d2500723e5594f3e7c70896ffeeef32b9c950ywan 341233d2500723e5594f3e7c70896ffeeef32b9c950ywan libs 342233d2500723e5594f3e7c70896ffeeef32b9c950ywan examples 343233d2500723e5594f3e7c70896ffeeef32b9c950ywan docs 344233d2500723e5594f3e7c70896ffeeef32b9c950ywan libc 345233d2500723e5594f3e7c70896ffeeef32b9c950ywan as 346233d2500723e5594f3e7c70896ffeeef32b9c950ywan fast_unaligned 347233d2500723e5594f3e7c70896ffeeef32b9c950ywan codec_srcs 348233d2500723e5594f3e7c70896ffeeef32b9c950ywan debug_libs 349233d2500723e5594f3e7c70896ffeeef32b9c950ywan 350233d2500723e5594f3e7c70896ffeeef32b9c950ywan dequant_tokens 351233d2500723e5594f3e7c70896ffeeef32b9c950ywan dc_recon 352233d2500723e5594f3e7c70896ffeeef32b9c950ywan postproc 353233d2500723e5594f3e7c70896ffeeef32b9c950ywan vp9_postproc 354233d2500723e5594f3e7c70896ffeeef32b9c950ywan multithread 355233d2500723e5594f3e7c70896ffeeef32b9c950ywan internal_stats 356233d2500723e5594f3e7c70896ffeeef32b9c950ywan ${CODECS} 357233d2500723e5594f3e7c70896ffeeef32b9c950ywan ${CODEC_FAMILIES} 358233d2500723e5594f3e7c70896ffeeef32b9c950ywan static_msvcrt 359233d2500723e5594f3e7c70896ffeeef32b9c950ywan mem_tracker 360233d2500723e5594f3e7c70896ffeeef32b9c950ywan spatial_resampling 361233d2500723e5594f3e7c70896ffeeef32b9c950ywan realtime_only 362233d2500723e5594f3e7c70896ffeeef32b9c950ywan onthefly_bitpacking 363233d2500723e5594f3e7c70896ffeeef32b9c950ywan error_concealment 364233d2500723e5594f3e7c70896ffeeef32b9c950ywan shared 365233d2500723e5594f3e7c70896ffeeef32b9c950ywan static 366233d2500723e5594f3e7c70896ffeeef32b9c950ywan small 367233d2500723e5594f3e7c70896ffeeef32b9c950ywan postproc_visualizer 368233d2500723e5594f3e7c70896ffeeef32b9c950ywan unit_tests 369233d2500723e5594f3e7c70896ffeeef32b9c950ywan webm_io 370233d2500723e5594f3e7c70896ffeeef32b9c950ywan decode_perf_tests 371233d2500723e5594f3e7c70896ffeeef32b9c950ywan multi_res_encoding 372233d2500723e5594f3e7c70896ffeeef32b9c950ywan temporal_denoising 373233d2500723e5594f3e7c70896ffeeef32b9c950ywan experimental 374233d2500723e5594f3e7c70896ffeeef32b9c950ywan decrypt 375233d2500723e5594f3e7c70896ffeeef32b9c950ywan" 376233d2500723e5594f3e7c70896ffeeef32b9c950ywan 377233d2500723e5594f3e7c70896ffeeef32b9c950ywanprocess_cmdline() { 378233d2500723e5594f3e7c70896ffeeef32b9c950ywan for opt do 379233d2500723e5594f3e7c70896ffeeef32b9c950ywan optval="${opt#*=}" 380233d2500723e5594f3e7c70896ffeeef32b9c950ywan case "$opt" in 381233d2500723e5594f3e7c70896ffeeef32b9c950ywan --disable-codecs) for c in ${CODECS}; do disable_feature $c; done ;; 382233d2500723e5594f3e7c70896ffeeef32b9c950ywan --enable-?*|--disable-?*) 383233d2500723e5594f3e7c70896ffeeef32b9c950ywan eval `echo "$opt" | sed 's/--/action=/;s/-/ option=/;s/-/_/g'` 384233d2500723e5594f3e7c70896ffeeef32b9c950ywan if echo "${EXPERIMENT_LIST}" | grep "^ *$option\$" >/dev/null; then 385233d2500723e5594f3e7c70896ffeeef32b9c950ywan if enabled experimental; then 386233d2500723e5594f3e7c70896ffeeef32b9c950ywan ${action}_feature $option 387233d2500723e5594f3e7c70896ffeeef32b9c950ywan else 388233d2500723e5594f3e7c70896ffeeef32b9c950ywan log_echo "Ignoring $opt -- not in experimental mode." 389233d2500723e5594f3e7c70896ffeeef32b9c950ywan fi 390233d2500723e5594f3e7c70896ffeeef32b9c950ywan else 391233d2500723e5594f3e7c70896ffeeef32b9c950ywan process_common_cmdline $opt 392233d2500723e5594f3e7c70896ffeeef32b9c950ywan fi 393233d2500723e5594f3e7c70896ffeeef32b9c950ywan ;; 394233d2500723e5594f3e7c70896ffeeef32b9c950ywan *) process_common_cmdline "$opt" 395233d2500723e5594f3e7c70896ffeeef32b9c950ywan ;; 396233d2500723e5594f3e7c70896ffeeef32b9c950ywan esac 397233d2500723e5594f3e7c70896ffeeef32b9c950ywan done 398233d2500723e5594f3e7c70896ffeeef32b9c950ywan} 399233d2500723e5594f3e7c70896ffeeef32b9c950ywan 400233d2500723e5594f3e7c70896ffeeef32b9c950ywanpost_process_cmdline() { 401233d2500723e5594f3e7c70896ffeeef32b9c950ywan local c 402233d2500723e5594f3e7c70896ffeeef32b9c950ywan 403233d2500723e5594f3e7c70896ffeeef32b9c950ywan # If the codec family is disabled, disable all components of that family. 404233d2500723e5594f3e7c70896ffeeef32b9c950ywan # If the codec family is enabled, enable all components of that family. 405233d2500723e5594f3e7c70896ffeeef32b9c950ywan log_echo "Configuring selected codecs" 406233d2500723e5594f3e7c70896ffeeef32b9c950ywan for c in ${CODECS}; do 407233d2500723e5594f3e7c70896ffeeef32b9c950ywan disabled ${c%%_*} && disable_feature ${c} 408233d2500723e5594f3e7c70896ffeeef32b9c950ywan enabled ${c%%_*} && enable_feature ${c} 409233d2500723e5594f3e7c70896ffeeef32b9c950ywan done 410233d2500723e5594f3e7c70896ffeeef32b9c950ywan 411233d2500723e5594f3e7c70896ffeeef32b9c950ywan # Enable all detected codecs, if they haven't been disabled 412233d2500723e5594f3e7c70896ffeeef32b9c950ywan for c in ${CODECS}; do soft_enable $c; done 413233d2500723e5594f3e7c70896ffeeef32b9c950ywan 414233d2500723e5594f3e7c70896ffeeef32b9c950ywan # Enable the codec family if any component of that family is enabled 415233d2500723e5594f3e7c70896ffeeef32b9c950ywan for c in ${CODECS}; do 416233d2500723e5594f3e7c70896ffeeef32b9c950ywan enabled $c && enable_feature ${c%_*} 417233d2500723e5594f3e7c70896ffeeef32b9c950ywan done 418233d2500723e5594f3e7c70896ffeeef32b9c950ywan 419233d2500723e5594f3e7c70896ffeeef32b9c950ywan # Set the {en,de}coders variable if any algorithm in that class is enabled 420233d2500723e5594f3e7c70896ffeeef32b9c950ywan for c in ${CODECS}; do 421233d2500723e5594f3e7c70896ffeeef32b9c950ywan enabled ${c} && enable_feature ${c##*_}s 422233d2500723e5594f3e7c70896ffeeef32b9c950ywan done 423233d2500723e5594f3e7c70896ffeeef32b9c950ywan} 424233d2500723e5594f3e7c70896ffeeef32b9c950ywan 425233d2500723e5594f3e7c70896ffeeef32b9c950ywan 426233d2500723e5594f3e7c70896ffeeef32b9c950ywanprocess_targets() { 427233d2500723e5594f3e7c70896ffeeef32b9c950ywan enabled child || write_common_config_banner 428233d2500723e5594f3e7c70896ffeeef32b9c950ywan enabled universal || write_common_target_config_h ${BUILD_PFX}vpx_config.h 429233d2500723e5594f3e7c70896ffeeef32b9c950ywan 430233d2500723e5594f3e7c70896ffeeef32b9c950ywan # TODO: add host tools target (obj_int_extract, etc) 431233d2500723e5594f3e7c70896ffeeef32b9c950ywan 432233d2500723e5594f3e7c70896ffeeef32b9c950ywan # For fat binaries, call configure recursively to configure for each 433233d2500723e5594f3e7c70896ffeeef32b9c950ywan # binary architecture to be included. 434233d2500723e5594f3e7c70896ffeeef32b9c950ywan if enabled universal; then 435233d2500723e5594f3e7c70896ffeeef32b9c950ywan # Call configure (ourselves) for each subarchitecture 436233d2500723e5594f3e7c70896ffeeef32b9c950ywan for arch in $fat_bin_archs; do 437233d2500723e5594f3e7c70896ffeeef32b9c950ywan BUILD_PFX=${arch}/ toolchain=${arch} $self --child $cmdline_args || exit $? 438233d2500723e5594f3e7c70896ffeeef32b9c950ywan done 439233d2500723e5594f3e7c70896ffeeef32b9c950ywan fi 440233d2500723e5594f3e7c70896ffeeef32b9c950ywan 441233d2500723e5594f3e7c70896ffeeef32b9c950ywan # The write_common_config (config.mk) logic is deferred until after the 442233d2500723e5594f3e7c70896ffeeef32b9c950ywan # recursive calls to configure complete, because we want our universal 443233d2500723e5594f3e7c70896ffeeef32b9c950ywan # targets to be executed last. 444233d2500723e5594f3e7c70896ffeeef32b9c950ywan write_common_config_targets 445233d2500723e5594f3e7c70896ffeeef32b9c950ywan enabled universal && echo "FAT_ARCHS=${fat_bin_archs}" >> config.mk 446233d2500723e5594f3e7c70896ffeeef32b9c950ywan 447233d2500723e5594f3e7c70896ffeeef32b9c950ywan # Calculate the default distribution name, based on the enabled features 448233d2500723e5594f3e7c70896ffeeef32b9c950ywan local cf 449233d2500723e5594f3e7c70896ffeeef32b9c950ywan local DIST_DIR=vpx 450233d2500723e5594f3e7c70896ffeeef32b9c950ywan for cf in $CODEC_FAMILIES; do 451233d2500723e5594f3e7c70896ffeeef32b9c950ywan if enabled ${cf}_encoder && enabled ${cf}_decoder; then 452233d2500723e5594f3e7c70896ffeeef32b9c950ywan DIST_DIR="${DIST_DIR}-${cf}" 453233d2500723e5594f3e7c70896ffeeef32b9c950ywan elif enabled ${cf}_encoder; then 454233d2500723e5594f3e7c70896ffeeef32b9c950ywan DIST_DIR="${DIST_DIR}-${cf}cx" 455233d2500723e5594f3e7c70896ffeeef32b9c950ywan elif enabled ${cf}_decoder; then 456233d2500723e5594f3e7c70896ffeeef32b9c950ywan DIST_DIR="${DIST_DIR}-${cf}dx" 457233d2500723e5594f3e7c70896ffeeef32b9c950ywan fi 458233d2500723e5594f3e7c70896ffeeef32b9c950ywan done 459233d2500723e5594f3e7c70896ffeeef32b9c950ywan enabled debug_libs && DIST_DIR="${DIST_DIR}-debug" 460233d2500723e5594f3e7c70896ffeeef32b9c950ywan enabled codec_srcs && DIST_DIR="${DIST_DIR}-src" 461233d2500723e5594f3e7c70896ffeeef32b9c950ywan ! enabled postproc && ! enabled vp9_postproc && DIST_DIR="${DIST_DIR}-nopost" 462233d2500723e5594f3e7c70896ffeeef32b9c950ywan ! enabled multithread && DIST_DIR="${DIST_DIR}-nomt" 463233d2500723e5594f3e7c70896ffeeef32b9c950ywan ! enabled install_docs && DIST_DIR="${DIST_DIR}-nodocs" 464233d2500723e5594f3e7c70896ffeeef32b9c950ywan DIST_DIR="${DIST_DIR}-${tgt_isa}-${tgt_os}" 465233d2500723e5594f3e7c70896ffeeef32b9c950ywan case "${tgt_os}" in 466233d2500723e5594f3e7c70896ffeeef32b9c950ywan win*) enabled static_msvcrt && DIST_DIR="${DIST_DIR}mt" || DIST_DIR="${DIST_DIR}md" 467233d2500723e5594f3e7c70896ffeeef32b9c950ywan DIST_DIR="${DIST_DIR}-${tgt_cc}" 468233d2500723e5594f3e7c70896ffeeef32b9c950ywan ;; 469233d2500723e5594f3e7c70896ffeeef32b9c950ywan esac 470233d2500723e5594f3e7c70896ffeeef32b9c950ywan if [ -f "${source_path}/build/make/version.sh" ]; then 471233d2500723e5594f3e7c70896ffeeef32b9c950ywan local ver=`"$source_path/build/make/version.sh" --bare $source_path` 472233d2500723e5594f3e7c70896ffeeef32b9c950ywan DIST_DIR="${DIST_DIR}-${ver}" 473233d2500723e5594f3e7c70896ffeeef32b9c950ywan VERSION_STRING=${ver} 474233d2500723e5594f3e7c70896ffeeef32b9c950ywan ver=${ver%%-*} 475233d2500723e5594f3e7c70896ffeeef32b9c950ywan VERSION_PATCH=${ver##*.} 476233d2500723e5594f3e7c70896ffeeef32b9c950ywan ver=${ver%.*} 477233d2500723e5594f3e7c70896ffeeef32b9c950ywan VERSION_MINOR=${ver##*.} 478233d2500723e5594f3e7c70896ffeeef32b9c950ywan ver=${ver#v} 479233d2500723e5594f3e7c70896ffeeef32b9c950ywan VERSION_MAJOR=${ver%.*} 480233d2500723e5594f3e7c70896ffeeef32b9c950ywan fi 481233d2500723e5594f3e7c70896ffeeef32b9c950ywan enabled child || cat <<EOF >> config.mk 482233d2500723e5594f3e7c70896ffeeef32b9c950ywan 483233d2500723e5594f3e7c70896ffeeef32b9c950ywanPREFIX=${prefix} 484233d2500723e5594f3e7c70896ffeeef32b9c950ywanifeq (\$(MAKECMDGOALS),dist) 485233d2500723e5594f3e7c70896ffeeef32b9c950ywanDIST_DIR?=${DIST_DIR} 486233d2500723e5594f3e7c70896ffeeef32b9c950ywanelse 487233d2500723e5594f3e7c70896ffeeef32b9c950ywanDIST_DIR?=\$(DESTDIR)${prefix} 488233d2500723e5594f3e7c70896ffeeef32b9c950ywanendif 489233d2500723e5594f3e7c70896ffeeef32b9c950ywanLIBSUBDIR=${libdir##${prefix}/} 490233d2500723e5594f3e7c70896ffeeef32b9c950ywan 491233d2500723e5594f3e7c70896ffeeef32b9c950ywanVERSION_STRING=${VERSION_STRING} 492233d2500723e5594f3e7c70896ffeeef32b9c950ywan 493233d2500723e5594f3e7c70896ffeeef32b9c950ywanVERSION_MAJOR=${VERSION_MAJOR} 494233d2500723e5594f3e7c70896ffeeef32b9c950ywanVERSION_MINOR=${VERSION_MINOR} 495233d2500723e5594f3e7c70896ffeeef32b9c950ywanVERSION_PATCH=${VERSION_PATCH} 496233d2500723e5594f3e7c70896ffeeef32b9c950ywan 497233d2500723e5594f3e7c70896ffeeef32b9c950ywanCONFIGURE_ARGS=${CONFIGURE_ARGS} 498233d2500723e5594f3e7c70896ffeeef32b9c950ywanEOF 499233d2500723e5594f3e7c70896ffeeef32b9c950ywan enabled child || echo "CONFIGURE_ARGS?=${CONFIGURE_ARGS}" >> config.mk 500233d2500723e5594f3e7c70896ffeeef32b9c950ywan 501233d2500723e5594f3e7c70896ffeeef32b9c950ywan # 502233d2500723e5594f3e7c70896ffeeef32b9c950ywan # Write makefiles for all enabled targets 503233d2500723e5594f3e7c70896ffeeef32b9c950ywan # 504233d2500723e5594f3e7c70896ffeeef32b9c950ywan for tgt in libs examples docs solution; do 505233d2500723e5594f3e7c70896ffeeef32b9c950ywan local tgt_fn="$tgt-$toolchain.mk" 506233d2500723e5594f3e7c70896ffeeef32b9c950ywan 507233d2500723e5594f3e7c70896ffeeef32b9c950ywan if enabled $tgt; then 508233d2500723e5594f3e7c70896ffeeef32b9c950ywan echo "Creating makefiles for ${toolchain} ${tgt}" 509233d2500723e5594f3e7c70896ffeeef32b9c950ywan write_common_target_config_mk $tgt_fn ${BUILD_PFX}vpx_config.h 510233d2500723e5594f3e7c70896ffeeef32b9c950ywan #write_${tgt}_config 511233d2500723e5594f3e7c70896ffeeef32b9c950ywan fi 512233d2500723e5594f3e7c70896ffeeef32b9c950ywan done 513233d2500723e5594f3e7c70896ffeeef32b9c950ywan 514233d2500723e5594f3e7c70896ffeeef32b9c950ywan} 515233d2500723e5594f3e7c70896ffeeef32b9c950ywan 516233d2500723e5594f3e7c70896ffeeef32b9c950ywanprocess_detect() { 517233d2500723e5594f3e7c70896ffeeef32b9c950ywan if enabled shared; then 518233d2500723e5594f3e7c70896ffeeef32b9c950ywan # Can only build shared libs on a subset of platforms. Doing this check 519233d2500723e5594f3e7c70896ffeeef32b9c950ywan # here rather than at option parse time because the target auto-detect 520233d2500723e5594f3e7c70896ffeeef32b9c950ywan # magic happens after the command line has been parsed. 521233d2500723e5594f3e7c70896ffeeef32b9c950ywan if ! enabled linux; then 522233d2500723e5594f3e7c70896ffeeef32b9c950ywan if enabled gnu; then 523233d2500723e5594f3e7c70896ffeeef32b9c950ywan echo "--enable-shared is only supported on ELF; assuming this is OK" 524233d2500723e5594f3e7c70896ffeeef32b9c950ywan else 525233d2500723e5594f3e7c70896ffeeef32b9c950ywan die "--enable-shared only supported on ELF for now" 526233d2500723e5594f3e7c70896ffeeef32b9c950ywan fi 527233d2500723e5594f3e7c70896ffeeef32b9c950ywan fi 528233d2500723e5594f3e7c70896ffeeef32b9c950ywan fi 529233d2500723e5594f3e7c70896ffeeef32b9c950ywan if [ -z "$CC" ] || enabled external_build; then 530233d2500723e5594f3e7c70896ffeeef32b9c950ywan echo "Bypassing toolchain for environment detection." 531233d2500723e5594f3e7c70896ffeeef32b9c950ywan enable_feature external_build 532233d2500723e5594f3e7c70896ffeeef32b9c950ywan check_header() { 533233d2500723e5594f3e7c70896ffeeef32b9c950ywan log fake_check_header "$@" 534233d2500723e5594f3e7c70896ffeeef32b9c950ywan header=$1 535233d2500723e5594f3e7c70896ffeeef32b9c950ywan shift 536233d2500723e5594f3e7c70896ffeeef32b9c950ywan var=`echo $header | sed 's/[^A-Za-z0-9_]/_/g'` 537233d2500723e5594f3e7c70896ffeeef32b9c950ywan disable_feature $var 538233d2500723e5594f3e7c70896ffeeef32b9c950ywan # Headers common to all environments 539233d2500723e5594f3e7c70896ffeeef32b9c950ywan case $header in 540233d2500723e5594f3e7c70896ffeeef32b9c950ywan stdio.h) 541233d2500723e5594f3e7c70896ffeeef32b9c950ywan true; 542233d2500723e5594f3e7c70896ffeeef32b9c950ywan ;; 543233d2500723e5594f3e7c70896ffeeef32b9c950ywan *) 544233d2500723e5594f3e7c70896ffeeef32b9c950ywan local result=false 545233d2500723e5594f3e7c70896ffeeef32b9c950ywan for d in "$@"; do 546233d2500723e5594f3e7c70896ffeeef32b9c950ywan [ -f "${d##-I}/$header" ] && result=true && break 547233d2500723e5594f3e7c70896ffeeef32b9c950ywan done 548233d2500723e5594f3e7c70896ffeeef32b9c950ywan ${result:-true} 549233d2500723e5594f3e7c70896ffeeef32b9c950ywan esac && enable_feature $var 550233d2500723e5594f3e7c70896ffeeef32b9c950ywan 551233d2500723e5594f3e7c70896ffeeef32b9c950ywan # Specialize windows and POSIX environments. 552233d2500723e5594f3e7c70896ffeeef32b9c950ywan case $toolchain in 553233d2500723e5594f3e7c70896ffeeef32b9c950ywan *-win*-*) 554233d2500723e5594f3e7c70896ffeeef32b9c950ywan case $header-$toolchain in 555233d2500723e5594f3e7c70896ffeeef32b9c950ywan stdint*-gcc) true;; 556233d2500723e5594f3e7c70896ffeeef32b9c950ywan *) false;; 557233d2500723e5594f3e7c70896ffeeef32b9c950ywan esac && enable_feature $var 558233d2500723e5594f3e7c70896ffeeef32b9c950ywan ;; 559233d2500723e5594f3e7c70896ffeeef32b9c950ywan *) 560233d2500723e5594f3e7c70896ffeeef32b9c950ywan case $header in 561233d2500723e5594f3e7c70896ffeeef32b9c950ywan stdint.h) true;; 562233d2500723e5594f3e7c70896ffeeef32b9c950ywan pthread.h) true;; 563233d2500723e5594f3e7c70896ffeeef32b9c950ywan sys/mman.h) true;; 564233d2500723e5594f3e7c70896ffeeef32b9c950ywan unistd.h) true;; 565233d2500723e5594f3e7c70896ffeeef32b9c950ywan *) false;; 566233d2500723e5594f3e7c70896ffeeef32b9c950ywan esac && enable_feature $var 567233d2500723e5594f3e7c70896ffeeef32b9c950ywan esac 568233d2500723e5594f3e7c70896ffeeef32b9c950ywan enabled $var 569233d2500723e5594f3e7c70896ffeeef32b9c950ywan } 570233d2500723e5594f3e7c70896ffeeef32b9c950ywan check_ld() { 571233d2500723e5594f3e7c70896ffeeef32b9c950ywan true 572233d2500723e5594f3e7c70896ffeeef32b9c950ywan } 573233d2500723e5594f3e7c70896ffeeef32b9c950ywan fi 574233d2500723e5594f3e7c70896ffeeef32b9c950ywan check_header stdio.h || die "Unable to invoke compiler: ${CC} ${CFLAGS}" 575233d2500723e5594f3e7c70896ffeeef32b9c950ywan check_ld <<EOF || die "Toolchain is unable to link executables" 576233d2500723e5594f3e7c70896ffeeef32b9c950ywanint main(void) {return 0;} 577233d2500723e5594f3e7c70896ffeeef32b9c950ywanEOF 578233d2500723e5594f3e7c70896ffeeef32b9c950ywan # check system headers 579233d2500723e5594f3e7c70896ffeeef32b9c950ywan check_header stdint.h 580233d2500723e5594f3e7c70896ffeeef32b9c950ywan check_header pthread.h 581233d2500723e5594f3e7c70896ffeeef32b9c950ywan check_header sys/mman.h 582233d2500723e5594f3e7c70896ffeeef32b9c950ywan check_header unistd.h # for sysconf(3) and friends. 583233d2500723e5594f3e7c70896ffeeef32b9c950ywan 584233d2500723e5594f3e7c70896ffeeef32b9c950ywan check_header vpx/vpx_integer.h -I${source_path} && enable_feature vpx_ports 585233d2500723e5594f3e7c70896ffeeef32b9c950ywan} 586233d2500723e5594f3e7c70896ffeeef32b9c950ywan 587233d2500723e5594f3e7c70896ffeeef32b9c950ywanprocess_toolchain() { 588233d2500723e5594f3e7c70896ffeeef32b9c950ywan process_common_toolchain 589233d2500723e5594f3e7c70896ffeeef32b9c950ywan 590233d2500723e5594f3e7c70896ffeeef32b9c950ywan # Handle universal binaries for this architecture 591233d2500723e5594f3e7c70896ffeeef32b9c950ywan case $toolchain in 592233d2500723e5594f3e7c70896ffeeef32b9c950ywan universal-darwin*) 593233d2500723e5594f3e7c70896ffeeef32b9c950ywan local darwin_ver=${tgt_os##darwin} 594233d2500723e5594f3e7c70896ffeeef32b9c950ywan 595233d2500723e5594f3e7c70896ffeeef32b9c950ywan # Snow Leopard (10.6/darwin10) dropped support for PPC 596233d2500723e5594f3e7c70896ffeeef32b9c950ywan # Include PPC support for all prior versions 597233d2500723e5594f3e7c70896ffeeef32b9c950ywan if [ $darwin_ver -lt 10 ]; then 598233d2500723e5594f3e7c70896ffeeef32b9c950ywan fat_bin_archs="$fat_bin_archs ppc32-${tgt_os}-gcc" 599233d2500723e5594f3e7c70896ffeeef32b9c950ywan fi 600233d2500723e5594f3e7c70896ffeeef32b9c950ywan 601233d2500723e5594f3e7c70896ffeeef32b9c950ywan # Tiger (10.4/darwin8) brought support for x86 602233d2500723e5594f3e7c70896ffeeef32b9c950ywan if [ $darwin_ver -ge 8 ]; then 603233d2500723e5594f3e7c70896ffeeef32b9c950ywan fat_bin_archs="$fat_bin_archs x86-${tgt_os}-${tgt_cc}" 604233d2500723e5594f3e7c70896ffeeef32b9c950ywan fi 605233d2500723e5594f3e7c70896ffeeef32b9c950ywan 606233d2500723e5594f3e7c70896ffeeef32b9c950ywan # Leopard (10.5/darwin9) brought 64 bit support 607233d2500723e5594f3e7c70896ffeeef32b9c950ywan if [ $darwin_ver -ge 9 ]; then 608233d2500723e5594f3e7c70896ffeeef32b9c950ywan fat_bin_archs="$fat_bin_archs x86_64-${tgt_os}-${tgt_cc}" 609233d2500723e5594f3e7c70896ffeeef32b9c950ywan fi 610233d2500723e5594f3e7c70896ffeeef32b9c950ywan ;; 611233d2500723e5594f3e7c70896ffeeef32b9c950ywan esac 612233d2500723e5594f3e7c70896ffeeef32b9c950ywan 613233d2500723e5594f3e7c70896ffeeef32b9c950ywan 614233d2500723e5594f3e7c70896ffeeef32b9c950ywan # Enable some useful compiler flags 615233d2500723e5594f3e7c70896ffeeef32b9c950ywan if enabled gcc; then 616233d2500723e5594f3e7c70896ffeeef32b9c950ywan enabled werror && check_add_cflags -Werror 617233d2500723e5594f3e7c70896ffeeef32b9c950ywan check_add_cflags -Wall 618233d2500723e5594f3e7c70896ffeeef32b9c950ywan check_add_cflags -Wdeclaration-after-statement 619233d2500723e5594f3e7c70896ffeeef32b9c950ywan check_add_cflags -Wdisabled-optimization 620233d2500723e5594f3e7c70896ffeeef32b9c950ywan check_add_cflags -Wpointer-arith 621233d2500723e5594f3e7c70896ffeeef32b9c950ywan check_add_cflags -Wtype-limits 622233d2500723e5594f3e7c70896ffeeef32b9c950ywan check_add_cflags -Wcast-qual 623233d2500723e5594f3e7c70896ffeeef32b9c950ywan check_add_cflags -Wvla 624233d2500723e5594f3e7c70896ffeeef32b9c950ywan check_add_cflags -Wimplicit-function-declaration 625233d2500723e5594f3e7c70896ffeeef32b9c950ywan check_add_cflags -Wuninitialized 626233d2500723e5594f3e7c70896ffeeef32b9c950ywan check_add_cflags -Wunused-variable 627233d2500723e5594f3e7c70896ffeeef32b9c950ywan case ${CC} in 628233d2500723e5594f3e7c70896ffeeef32b9c950ywan *clang*) 629233d2500723e5594f3e7c70896ffeeef32b9c950ywan # libvpx and/or clang have issues with aliasing: 630233d2500723e5594f3e7c70896ffeeef32b9c950ywan # https://code.google.com/p/webm/issues/detail?id=603 631233d2500723e5594f3e7c70896ffeeef32b9c950ywan # work around them until they are fixed 632233d2500723e5594f3e7c70896ffeeef32b9c950ywan check_add_cflags -fno-strict-aliasing 633233d2500723e5594f3e7c70896ffeeef32b9c950ywan ;; 634233d2500723e5594f3e7c70896ffeeef32b9c950ywan *) check_add_cflags -Wunused-but-set-variable ;; 635233d2500723e5594f3e7c70896ffeeef32b9c950ywan esac 636233d2500723e5594f3e7c70896ffeeef32b9c950ywan enabled extra_warnings || check_add_cflags -Wno-unused-function 637233d2500723e5594f3e7c70896ffeeef32b9c950ywan fi 638233d2500723e5594f3e7c70896ffeeef32b9c950ywan 639233d2500723e5594f3e7c70896ffeeef32b9c950ywan if enabled icc; then 640233d2500723e5594f3e7c70896ffeeef32b9c950ywan enabled werror && check_add_cflags -Werror 641233d2500723e5594f3e7c70896ffeeef32b9c950ywan check_add_cflags -Wall 642233d2500723e5594f3e7c70896ffeeef32b9c950ywan check_add_cflags -Wpointer-arith 643233d2500723e5594f3e7c70896ffeeef32b9c950ywan 644233d2500723e5594f3e7c70896ffeeef32b9c950ywan # ICC has a number of floating point optimizations that we disable 645233d2500723e5594f3e7c70896ffeeef32b9c950ywan # in favor of deterministic output WRT to other compilers 646233d2500723e5594f3e7c70896ffeeef32b9c950ywan add_cflags -fp-model precise 647233d2500723e5594f3e7c70896ffeeef32b9c950ywan fi 648233d2500723e5594f3e7c70896ffeeef32b9c950ywan 649233d2500723e5594f3e7c70896ffeeef32b9c950ywan # Enable extra, harmless warnings. These might provide additional insight 650233d2500723e5594f3e7c70896ffeeef32b9c950ywan # to what the compiler is doing and why, but in general, but they shouldn't 651233d2500723e5594f3e7c70896ffeeef32b9c950ywan # be treated as fatal, even if we're treating warnings as errors. 652233d2500723e5594f3e7c70896ffeeef32b9c950ywan GCC_EXTRA_WARNINGS=" 653233d2500723e5594f3e7c70896ffeeef32b9c950ywan -Wdisabled-optimization 654233d2500723e5594f3e7c70896ffeeef32b9c950ywan -Winline 655233d2500723e5594f3e7c70896ffeeef32b9c950ywan " 656233d2500723e5594f3e7c70896ffeeef32b9c950ywan enabled gcc && EXTRA_WARNINGS="${GCC_EXTRA_WARNINGS}" 657233d2500723e5594f3e7c70896ffeeef32b9c950ywan RVCT_EXTRA_WARNINGS=" 658233d2500723e5594f3e7c70896ffeeef32b9c950ywan --remarks 659233d2500723e5594f3e7c70896ffeeef32b9c950ywan " 660233d2500723e5594f3e7c70896ffeeef32b9c950ywan enabled rvct && EXTRA_WARNINGS="${RVCT_EXTRA_WARNINGS}" 661233d2500723e5594f3e7c70896ffeeef32b9c950ywan if enabled extra_warnings; then 662233d2500723e5594f3e7c70896ffeeef32b9c950ywan for w in ${EXTRA_WARNINGS}; do 663233d2500723e5594f3e7c70896ffeeef32b9c950ywan check_add_cflags ${w} 664233d2500723e5594f3e7c70896ffeeef32b9c950ywan enabled gcc && enabled werror && check_add_cflags -Wno-error=${w} 665233d2500723e5594f3e7c70896ffeeef32b9c950ywan done 666233d2500723e5594f3e7c70896ffeeef32b9c950ywan fi 667233d2500723e5594f3e7c70896ffeeef32b9c950ywan 668233d2500723e5594f3e7c70896ffeeef32b9c950ywan # ccache only really works on gcc toolchains 669233d2500723e5594f3e7c70896ffeeef32b9c950ywan enabled gcc || soft_disable ccache 670233d2500723e5594f3e7c70896ffeeef32b9c950ywan if enabled mips; then 671233d2500723e5594f3e7c70896ffeeef32b9c950ywan enable_feature dequant_tokens 672233d2500723e5594f3e7c70896ffeeef32b9c950ywan enable_feature dc_recon 673233d2500723e5594f3e7c70896ffeeef32b9c950ywan fi 674233d2500723e5594f3e7c70896ffeeef32b9c950ywan 675233d2500723e5594f3e7c70896ffeeef32b9c950ywan if enabled internal_stats; then 676233d2500723e5594f3e7c70896ffeeef32b9c950ywan enable_feature vp9_postproc 677233d2500723e5594f3e7c70896ffeeef32b9c950ywan fi 678233d2500723e5594f3e7c70896ffeeef32b9c950ywan 679233d2500723e5594f3e7c70896ffeeef32b9c950ywan # Enable the postbuild target if building for visual studio. 680233d2500723e5594f3e7c70896ffeeef32b9c950ywan case "$tgt_cc" in 681233d2500723e5594f3e7c70896ffeeef32b9c950ywan vs*) enable_feature msvs 682233d2500723e5594f3e7c70896ffeeef32b9c950ywan enable_feature solution 683233d2500723e5594f3e7c70896ffeeef32b9c950ywan vs_version=${tgt_cc##vs} 684233d2500723e5594f3e7c70896ffeeef32b9c950ywan case $vs_version in 685233d2500723e5594f3e7c70896ffeeef32b9c950ywan [789]) 686233d2500723e5594f3e7c70896ffeeef32b9c950ywan VCPROJ_SFX=vcproj 687233d2500723e5594f3e7c70896ffeeef32b9c950ywan gen_vcproj_cmd=${source_path}/build/make/gen_msvs_proj.sh 688233d2500723e5594f3e7c70896ffeeef32b9c950ywan ;; 689233d2500723e5594f3e7c70896ffeeef32b9c950ywan 10|11|12) 690233d2500723e5594f3e7c70896ffeeef32b9c950ywan VCPROJ_SFX=vcxproj 691233d2500723e5594f3e7c70896ffeeef32b9c950ywan gen_vcproj_cmd=${source_path}/build/make/gen_msvs_vcxproj.sh 692233d2500723e5594f3e7c70896ffeeef32b9c950ywan enabled werror && gen_vcproj_cmd="${gen_vcproj_cmd} --enable-werror" 693233d2500723e5594f3e7c70896ffeeef32b9c950ywan ;; 694233d2500723e5594f3e7c70896ffeeef32b9c950ywan esac 695233d2500723e5594f3e7c70896ffeeef32b9c950ywan all_targets="${all_targets} solution" 696233d2500723e5594f3e7c70896ffeeef32b9c950ywan INLINE="__forceinline" 697233d2500723e5594f3e7c70896ffeeef32b9c950ywan ;; 698233d2500723e5594f3e7c70896ffeeef32b9c950ywan esac 699233d2500723e5594f3e7c70896ffeeef32b9c950ywan 700233d2500723e5594f3e7c70896ffeeef32b9c950ywan # Other toolchain specific defaults 701233d2500723e5594f3e7c70896ffeeef32b9c950ywan case $toolchain in x86*|ppc*|universal*) soft_enable postproc;; esac 702233d2500723e5594f3e7c70896ffeeef32b9c950ywan 703233d2500723e5594f3e7c70896ffeeef32b9c950ywan if enabled postproc_visualizer; then 704233d2500723e5594f3e7c70896ffeeef32b9c950ywan enabled postproc || die "postproc_visualizer requires postproc to be enabled" 705233d2500723e5594f3e7c70896ffeeef32b9c950ywan fi 706233d2500723e5594f3e7c70896ffeeef32b9c950ywan 707233d2500723e5594f3e7c70896ffeeef32b9c950ywan # Enable WebM IO by default. 708233d2500723e5594f3e7c70896ffeeef32b9c950ywan soft_enable webm_io 709233d2500723e5594f3e7c70896ffeeef32b9c950ywan 710233d2500723e5594f3e7c70896ffeeef32b9c950ywan # Enable unit tests by default if we have a working C++ compiler. 711233d2500723e5594f3e7c70896ffeeef32b9c950ywan case "$toolchain" in 712233d2500723e5594f3e7c70896ffeeef32b9c950ywan *-vs*) 713233d2500723e5594f3e7c70896ffeeef32b9c950ywan soft_enable unit_tests 714233d2500723e5594f3e7c70896ffeeef32b9c950ywan ;; 715233d2500723e5594f3e7c70896ffeeef32b9c950ywan *-android-*) 716233d2500723e5594f3e7c70896ffeeef32b9c950ywan # GTestLog must be modified to use Android logging utilities. 717233d2500723e5594f3e7c70896ffeeef32b9c950ywan ;; 718233d2500723e5594f3e7c70896ffeeef32b9c950ywan *-darwin-*) 719233d2500723e5594f3e7c70896ffeeef32b9c950ywan # iOS/ARM builds do not work with gtest. This does not match 720233d2500723e5594f3e7c70896ffeeef32b9c950ywan # x86 targets. 721233d2500723e5594f3e7c70896ffeeef32b9c950ywan ;; 722233d2500723e5594f3e7c70896ffeeef32b9c950ywan *-win*) 723233d2500723e5594f3e7c70896ffeeef32b9c950ywan # Some mingw toolchains don't have pthread available by default. 724233d2500723e5594f3e7c70896ffeeef32b9c950ywan # Treat these more like visual studio where threading in gtest 725233d2500723e5594f3e7c70896ffeeef32b9c950ywan # would be disabled for the same reason. 726233d2500723e5594f3e7c70896ffeeef32b9c950ywan check_cxx "$@" <<EOF && soft_enable unit_tests 727233d2500723e5594f3e7c70896ffeeef32b9c950ywanint z; 728233d2500723e5594f3e7c70896ffeeef32b9c950ywanEOF 729233d2500723e5594f3e7c70896ffeeef32b9c950ywan ;; 730233d2500723e5594f3e7c70896ffeeef32b9c950ywan *) 731233d2500723e5594f3e7c70896ffeeef32b9c950ywan enabled pthread_h && check_cxx "$@" <<EOF && soft_enable unit_tests 732233d2500723e5594f3e7c70896ffeeef32b9c950ywanint z; 733233d2500723e5594f3e7c70896ffeeef32b9c950ywanEOF 734233d2500723e5594f3e7c70896ffeeef32b9c950ywan ;; 735233d2500723e5594f3e7c70896ffeeef32b9c950ywan esac 736233d2500723e5594f3e7c70896ffeeef32b9c950ywan} 737233d2500723e5594f3e7c70896ffeeef32b9c950ywan 738233d2500723e5594f3e7c70896ffeeef32b9c950ywan 739233d2500723e5594f3e7c70896ffeeef32b9c950ywan## 740233d2500723e5594f3e7c70896ffeeef32b9c950ywan## END APPLICATION SPECIFIC CONFIGURATION 741233d2500723e5594f3e7c70896ffeeef32b9c950ywan## 742233d2500723e5594f3e7c70896ffeeef32b9c950ywanCONFIGURE_ARGS="$@" 743233d2500723e5594f3e7c70896ffeeef32b9c950ywanprocess "$@" 744233d2500723e5594f3e7c70896ffeeef32b9c950ywanprint_webm_license ${BUILD_PFX}vpx_config.c "/*" " */" 745233d2500723e5594f3e7c70896ffeeef32b9c950ywancat <<EOF >> ${BUILD_PFX}vpx_config.c 746233d2500723e5594f3e7c70896ffeeef32b9c950ywanstatic const char* const cfg = "$CONFIGURE_ARGS"; 747233d2500723e5594f3e7c70896ffeeef32b9c950ywanconst char *vpx_codec_build_config(void) {return cfg;} 748233d2500723e5594f3e7c70896ffeeef32b9c950ywanEOF 749