153a13f1fa964820f7a8f9d3932a6f3c0433f8bf5fgalligan@chromium.org#!/bin/sh 2474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org## 3474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org## configure 4474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org## 5474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org## This script is the front-end to the build system. It provides a similar 6474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org## interface to standard configure scripts with some extra bits for dealing 7474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org## with toolchains that differ from the standard POSIX interface and 8474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org## for extracting subsets of the source tree. In theory, reusable parts 9474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org## of this script were intended to live in build/make/configure.sh, 10474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org## but in practice, the line is pretty blurry. 11474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org## 12474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org## This build system is based in part on the FFmpeg configure script. 13474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org## 14474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org 15474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org#source_path="`dirname \"$0\"`" 16474eb7536515fb785e925cc9375d22817c416851hclam@chromium.orgsource_path=${0%/*} 17474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org. "${source_path}/build/make/configure.sh" 18474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org 19474eb7536515fb785e925cc9375d22817c416851hclam@chromium.orgshow_help(){ 20474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org show_help_pre 21474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org cat << EOF 22474eb7536515fb785e925cc9375d22817c416851hclam@chromium.orgAdvanced options: 23ed759d81a39febed3a8a395386639d54307504aagrunell@chromium.org ${toggle_libs} libraries 24ed759d81a39febed3a8a395386639d54307504aagrunell@chromium.org ${toggle_examples} examples 25ed759d81a39febed3a8a395386639d54307504aagrunell@chromium.org ${toggle_docs} documentation 26ed759d81a39febed3a8a395386639d54307504aagrunell@chromium.org ${toggle_unit_tests} unit tests 27d851b91d14ef0bd71acdce7b90c9a8f1af1181adjohannkoenig@chromium.org ${toggle_decode_perf_tests} build decoder perf tests with unit tests 2841294d96d7dbf9bc215b09832a8336c5fb158f0bjohannkoenig@chromium.org ${toggle_encode_perf_tests} build encoder perf tests with unit tests 29474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org --libc=PATH path to alternate libc 30ac4e313c19203132648a2a271703b6ee76fe4284johannkoenig@chromium.org --size-limit=WxH max size to allow in the decoder 31474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org --as={yasm|nasm|auto} use specified assembler [auto, yasm preferred] 32d851b91d14ef0bd71acdce7b90c9a8f1af1181adjohannkoenig@chromium.org --sdk-path=PATH path to root of sdk (android builds only) 33474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org ${toggle_fast_unaligned} don't use unaligned accesses, even when 34474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org supported by hardware [auto] 35474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org ${toggle_codec_srcs} in/exclude codec library source code 36474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org ${toggle_debug_libs} in/exclude debug version of libraries 37474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org ${toggle_static_msvcrt} use static MSVCRT (VS builds only) 38474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org ${toggle_vp8} VP8 codec support 396fefe538d859300e7febe78271828198c10f1b52fgalligan@chromium.org ${toggle_vp9} VP9 codec support 40474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org ${toggle_internal_stats} output of encoder internal stats for debug, if supported (encoders) 41474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org ${toggle_mem_tracker} track memory usage 42474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org ${toggle_postproc} postprocessing 43f9586bb54d74c97d07b09eb2512f8569c9c1c025fgalligan@chromium.org ${toggle_vp9_postproc} vp9 specific postprocessing 44167514562bbce1eb0566271d6cb41d90d2b5ffa0hclam@chromium.org ${toggle_multithread} multithreaded encoding and decoding 45474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org ${toggle_spatial_resampling} spatial sampling (scaling) support 46474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org ${toggle_realtime_only} enable this option while building for real-time encoding 475c1d3b27608a3f3f6028c069b9bf066a4de474b6hclam@chromium.org ${toggle_onthefly_bitpacking} enable on-the-fly bitpacking in real-time encoding 48474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org ${toggle_error_concealment} enable this option to get a decoder which is able to conceal losses 4941294d96d7dbf9bc215b09832a8336c5fb158f0bjohannkoenig@chromium.org ${toggle_coefficient_range_checking} 5041294d96d7dbf9bc215b09832a8336c5fb158f0bjohannkoenig@chromium.org enable decoder to check if intermediate 5141294d96d7dbf9bc215b09832a8336c5fb158f0bjohannkoenig@chromium.org transform coefficients are in valid range 52474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org ${toggle_runtime_cpu_detect} runtime cpu detection 53474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org ${toggle_shared} shared library support 54474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org ${toggle_static} static library support 55474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org ${toggle_small} favor smaller size over speed 56474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org ${toggle_postproc_visualizer} macro block / block level visualizers 57167514562bbce1eb0566271d6cb41d90d2b5ffa0hclam@chromium.org ${toggle_multi_res_encoding} enable multiple-resolution encoding 585c1d3b27608a3f3f6028c069b9bf066a4de474b6hclam@chromium.org ${toggle_temporal_denoising} enable temporal denoising and disable the spatial denoiser 5993a74791c8e808ea76001ee07693aa2a5fdd3500johannkoenig@chromium.org ${toggle_webm_io} enable input from and output to WebM container 6088b47b29cc274dd19cddc37c1ce1834d97df282efgalligan@chromium.org ${toggle_libyuv} enable libyuv 61474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org 62474eb7536515fb785e925cc9375d22817c416851hclam@chromium.orgCodecs: 63474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org Codecs can be selectively enabled or disabled individually, or by family: 64474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org --disable-<codec> 65474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org is equivalent to: 66474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org --disable-<codec>-encoder 67474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org --disable-<codec>-decoder 68474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org 69474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org Codecs available in this distribution: 70474eb7536515fb785e925cc9375d22817c416851hclam@chromium.orgEOF 71474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org#restore editor state ' 72474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org 7341294d96d7dbf9bc215b09832a8336c5fb158f0bjohannkoenig@chromium.org family=""; 7441294d96d7dbf9bc215b09832a8336c5fb158f0bjohannkoenig@chromium.org last_family=""; 7541294d96d7dbf9bc215b09832a8336c5fb158f0bjohannkoenig@chromium.org c=""; 7641294d96d7dbf9bc215b09832a8336c5fb158f0bjohannkoenig@chromium.org str=""; 77474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org for c in ${CODECS}; do 78474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org family=${c%_*} 79474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org if [ "${family}" != "${last_family}" ]; then 80474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org [ -z "${str}" ] || echo "${str}" 81474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org str="$(printf ' %10s:' ${family})" 82474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org fi 83474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org str="${str} $(printf '%10s' ${c#*_})" 84474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org last_family=${family} 85474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org done 86474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org echo "${str}" 87474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org show_help_post 88474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org} 89474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org 90474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org## 91474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org## BEGIN APPLICATION SPECIFIC CONFIGURATION 92474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org## 93474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org 94474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org# all_platforms is a list of all supported target platforms. Maintain 95474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org# alphabetically by architecture, generic-gnu last. 96167514562bbce1eb0566271d6cb41d90d2b5ffa0hclam@chromium.orgall_platforms="${all_platforms} armv5te-android-gcc" 97474eb7536515fb785e925cc9375d22817c416851hclam@chromium.orgall_platforms="${all_platforms} armv5te-linux-rvct" 98474eb7536515fb785e925cc9375d22817c416851hclam@chromium.orgall_platforms="${all_platforms} armv5te-linux-gcc" 99474eb7536515fb785e925cc9375d22817c416851hclam@chromium.orgall_platforms="${all_platforms} armv5te-none-rvct" 100474eb7536515fb785e925cc9375d22817c416851hclam@chromium.orgall_platforms="${all_platforms} armv6-darwin-gcc" 101474eb7536515fb785e925cc9375d22817c416851hclam@chromium.orgall_platforms="${all_platforms} armv6-linux-rvct" 102474eb7536515fb785e925cc9375d22817c416851hclam@chromium.orgall_platforms="${all_platforms} armv6-linux-gcc" 103474eb7536515fb785e925cc9375d22817c416851hclam@chromium.orgall_platforms="${all_platforms} armv6-none-rvct" 104e2064011d36b2008099446503f28e64d445060ecjohannkoenig@chromium.orgall_platforms="${all_platforms} arm64-darwin-gcc" 105167514562bbce1eb0566271d6cb41d90d2b5ffa0hclam@chromium.orgall_platforms="${all_platforms} armv7-android-gcc" #neon Cortex-A8 106474eb7536515fb785e925cc9375d22817c416851hclam@chromium.orgall_platforms="${all_platforms} armv7-darwin-gcc" #neon Cortex-A8 107474eb7536515fb785e925cc9375d22817c416851hclam@chromium.orgall_platforms="${all_platforms} armv7-linux-rvct" #neon Cortex-A8 108474eb7536515fb785e925cc9375d22817c416851hclam@chromium.orgall_platforms="${all_platforms} armv7-linux-gcc" #neon Cortex-A8 109474eb7536515fb785e925cc9375d22817c416851hclam@chromium.orgall_platforms="${all_platforms} armv7-none-rvct" #neon Cortex-A8 11010a9a0d835561a7f2300c561c514efcf374554d6fgalligan@chromium.orgall_platforms="${all_platforms} armv7-win32-vs11" 111d851b91d14ef0bd71acdce7b90c9a8f1af1181adjohannkoenig@chromium.orgall_platforms="${all_platforms} armv7-win32-vs12" 11288b47b29cc274dd19cddc37c1ce1834d97df282efgalligan@chromium.orgall_platforms="${all_platforms} armv7s-darwin-gcc" 113474eb7536515fb785e925cc9375d22817c416851hclam@chromium.orgall_platforms="${all_platforms} mips32-linux-gcc" 114ace65784417788374f0b19ce5a8abd06c9ccd007johannkoenig@chromium.orgall_platforms="${all_platforms} mips64-linux-gcc" 115474eb7536515fb785e925cc9375d22817c416851hclam@chromium.orgall_platforms="${all_platforms} ppc32-darwin8-gcc" 116474eb7536515fb785e925cc9375d22817c416851hclam@chromium.orgall_platforms="${all_platforms} ppc32-darwin9-gcc" 117474eb7536515fb785e925cc9375d22817c416851hclam@chromium.orgall_platforms="${all_platforms} ppc32-linux-gcc" 118474eb7536515fb785e925cc9375d22817c416851hclam@chromium.orgall_platforms="${all_platforms} ppc64-darwin8-gcc" 119474eb7536515fb785e925cc9375d22817c416851hclam@chromium.orgall_platforms="${all_platforms} ppc64-darwin9-gcc" 120474eb7536515fb785e925cc9375d22817c416851hclam@chromium.orgall_platforms="${all_platforms} ppc64-linux-gcc" 121474eb7536515fb785e925cc9375d22817c416851hclam@chromium.orgall_platforms="${all_platforms} sparc-solaris-gcc" 122d348b8d765c019ee7250075d663a83db00c65c08tomfinegan@chromium.orgall_platforms="${all_platforms} x86-android-gcc" 123474eb7536515fb785e925cc9375d22817c416851hclam@chromium.orgall_platforms="${all_platforms} x86-darwin8-gcc" 124474eb7536515fb785e925cc9375d22817c416851hclam@chromium.orgall_platforms="${all_platforms} x86-darwin8-icc" 125474eb7536515fb785e925cc9375d22817c416851hclam@chromium.orgall_platforms="${all_platforms} x86-darwin9-gcc" 126474eb7536515fb785e925cc9375d22817c416851hclam@chromium.orgall_platforms="${all_platforms} x86-darwin9-icc" 127167514562bbce1eb0566271d6cb41d90d2b5ffa0hclam@chromium.orgall_platforms="${all_platforms} x86-darwin10-gcc" 1285c1d3b27608a3f3f6028c069b9bf066a4de474b6hclam@chromium.orgall_platforms="${all_platforms} x86-darwin11-gcc" 1295c1d3b27608a3f3f6028c069b9bf066a4de474b6hclam@chromium.orgall_platforms="${all_platforms} x86-darwin12-gcc" 13047265f8fe3a36a426773454ad90d20c9aa616c24johannkoenig@chromium.orgall_platforms="${all_platforms} x86-darwin13-gcc" 13188b47b29cc274dd19cddc37c1ce1834d97df282efgalligan@chromium.orgall_platforms="${all_platforms} x86-iphonesimulator-gcc" 132474eb7536515fb785e925cc9375d22817c416851hclam@chromium.orgall_platforms="${all_platforms} x86-linux-gcc" 133474eb7536515fb785e925cc9375d22817c416851hclam@chromium.orgall_platforms="${all_platforms} x86-linux-icc" 1345c1d3b27608a3f3f6028c069b9bf066a4de474b6hclam@chromium.orgall_platforms="${all_platforms} x86-os2-gcc" 135474eb7536515fb785e925cc9375d22817c416851hclam@chromium.orgall_platforms="${all_platforms} x86-solaris-gcc" 136474eb7536515fb785e925cc9375d22817c416851hclam@chromium.orgall_platforms="${all_platforms} x86-win32-gcc" 137474eb7536515fb785e925cc9375d22817c416851hclam@chromium.orgall_platforms="${all_platforms} x86-win32-vs7" 138474eb7536515fb785e925cc9375d22817c416851hclam@chromium.orgall_platforms="${all_platforms} x86-win32-vs8" 139474eb7536515fb785e925cc9375d22817c416851hclam@chromium.orgall_platforms="${all_platforms} x86-win32-vs9" 14010a9a0d835561a7f2300c561c514efcf374554d6fgalligan@chromium.orgall_platforms="${all_platforms} x86-win32-vs10" 14110a9a0d835561a7f2300c561c514efcf374554d6fgalligan@chromium.orgall_platforms="${all_platforms} x86-win32-vs11" 142d851b91d14ef0bd71acdce7b90c9a8f1af1181adjohannkoenig@chromium.orgall_platforms="${all_platforms} x86-win32-vs12" 143474eb7536515fb785e925cc9375d22817c416851hclam@chromium.orgall_platforms="${all_platforms} x86_64-darwin9-gcc" 144474eb7536515fb785e925cc9375d22817c416851hclam@chromium.orgall_platforms="${all_platforms} x86_64-darwin10-gcc" 145167514562bbce1eb0566271d6cb41d90d2b5ffa0hclam@chromium.orgall_platforms="${all_platforms} x86_64-darwin11-gcc" 1465c1d3b27608a3f3f6028c069b9bf066a4de474b6hclam@chromium.orgall_platforms="${all_platforms} x86_64-darwin12-gcc" 14747265f8fe3a36a426773454ad90d20c9aa616c24johannkoenig@chromium.orgall_platforms="${all_platforms} x86_64-darwin13-gcc" 14888b47b29cc274dd19cddc37c1ce1834d97df282efgalligan@chromium.orgall_platforms="${all_platforms} x86_64-iphonesimulator-gcc" 149474eb7536515fb785e925cc9375d22817c416851hclam@chromium.orgall_platforms="${all_platforms} x86_64-linux-gcc" 150474eb7536515fb785e925cc9375d22817c416851hclam@chromium.orgall_platforms="${all_platforms} x86_64-linux-icc" 151474eb7536515fb785e925cc9375d22817c416851hclam@chromium.orgall_platforms="${all_platforms} x86_64-solaris-gcc" 152167514562bbce1eb0566271d6cb41d90d2b5ffa0hclam@chromium.orgall_platforms="${all_platforms} x86_64-win64-gcc" 153474eb7536515fb785e925cc9375d22817c416851hclam@chromium.orgall_platforms="${all_platforms} x86_64-win64-vs8" 154474eb7536515fb785e925cc9375d22817c416851hclam@chromium.orgall_platforms="${all_platforms} x86_64-win64-vs9" 15510a9a0d835561a7f2300c561c514efcf374554d6fgalligan@chromium.orgall_platforms="${all_platforms} x86_64-win64-vs10" 15610a9a0d835561a7f2300c561c514efcf374554d6fgalligan@chromium.orgall_platforms="${all_platforms} x86_64-win64-vs11" 157d851b91d14ef0bd71acdce7b90c9a8f1af1181adjohannkoenig@chromium.orgall_platforms="${all_platforms} x86_64-win64-vs12" 158474eb7536515fb785e925cc9375d22817c416851hclam@chromium.orgall_platforms="${all_platforms} universal-darwin8-gcc" 159474eb7536515fb785e925cc9375d22817c416851hclam@chromium.orgall_platforms="${all_platforms} universal-darwin9-gcc" 1605c1d3b27608a3f3f6028c069b9bf066a4de474b6hclam@chromium.orgall_platforms="${all_platforms} universal-darwin10-gcc" 1615c1d3b27608a3f3f6028c069b9bf066a4de474b6hclam@chromium.orgall_platforms="${all_platforms} universal-darwin11-gcc" 1625c1d3b27608a3f3f6028c069b9bf066a4de474b6hclam@chromium.orgall_platforms="${all_platforms} universal-darwin12-gcc" 16347265f8fe3a36a426773454ad90d20c9aa616c24johannkoenig@chromium.orgall_platforms="${all_platforms} universal-darwin13-gcc" 164474eb7536515fb785e925cc9375d22817c416851hclam@chromium.orgall_platforms="${all_platforms} generic-gnu" 165474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org 166474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org# all_targets is a list of all targets that can be configured 167474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org# note that these should be in dependency order for now. 168474eb7536515fb785e925cc9375d22817c416851hclam@chromium.orgall_targets="libs examples docs" 169474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org 170474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org# all targets available are enabled, by default. 171474eb7536515fb785e925cc9375d22817c416851hclam@chromium.orgfor t in ${all_targets}; do 172693441efe611de7ca09c00f4e79776f604b689f4joeyparrish@google.com [ -f "${source_path}/${t}.mk" ] && enable_feature ${t} 173474eb7536515fb785e925cc9375d22817c416851hclam@chromium.orgdone 174474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org 17593a74791c8e808ea76001ee07693aa2a5fdd3500johannkoenig@chromium.orgif ! perl --version >/dev/null; then 17693a74791c8e808ea76001ee07693aa2a5fdd3500johannkoenig@chromium.org die "Perl is required to build" 17793a74791c8e808ea76001ee07693aa2a5fdd3500johannkoenig@chromium.orgfi 17893a74791c8e808ea76001ee07693aa2a5fdd3500johannkoenig@chromium.org 17993a74791c8e808ea76001ee07693aa2a5fdd3500johannkoenig@chromium.org 180693441efe611de7ca09c00f4e79776f604b689f4joeyparrish@google.comif [ "`cd \"${source_path}\" && pwd`" != "`pwd`" ]; then 18193a74791c8e808ea76001ee07693aa2a5fdd3500johannkoenig@chromium.org # test to see if source_path already configured 182693441efe611de7ca09c00f4e79776f604b689f4joeyparrish@google.com if [ -f "${source_path}/vpx_config.h" ]; then 18393a74791c8e808ea76001ee07693aa2a5fdd3500johannkoenig@chromium.org die "source directory already configured; run 'make distclean' there first" 18493a74791c8e808ea76001ee07693aa2a5fdd3500johannkoenig@chromium.org fi 18593a74791c8e808ea76001ee07693aa2a5fdd3500johannkoenig@chromium.orgfi 18693a74791c8e808ea76001ee07693aa2a5fdd3500johannkoenig@chromium.org 187474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org# check installed doxygen version 188474eb7536515fb785e925cc9375d22817c416851hclam@chromium.orgdoxy_version=$(doxygen --version 2>/dev/null) 189474eb7536515fb785e925cc9375d22817c416851hclam@chromium.orgdoxy_major=${doxy_version%%.*} 190474eb7536515fb785e925cc9375d22817c416851hclam@chromium.orgif [ ${doxy_major:-0} -ge 1 ]; then 191474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org doxy_version=${doxy_version#*.} 192474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org doxy_minor=${doxy_version%%.*} 193474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org doxy_patch=${doxy_version##*.} 194474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org 19553a13f1fa964820f7a8f9d3932a6f3c0433f8bf5fgalligan@chromium.org [ $doxy_major -gt 1 ] && enable_feature doxygen 19653a13f1fa964820f7a8f9d3932a6f3c0433f8bf5fgalligan@chromium.org [ $doxy_minor -gt 5 ] && enable_feature doxygen 19753a13f1fa964820f7a8f9d3932a6f3c0433f8bf5fgalligan@chromium.org [ $doxy_minor -eq 5 ] && [ $doxy_patch -ge 3 ] && enable_feature doxygen 198474eb7536515fb785e925cc9375d22817c416851hclam@chromium.orgfi 199474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org 200474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org# install everything except the sources, by default. sources will have 201474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org# to be enabled when doing dist builds, since that's no longer a common 202474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org# case. 2037765c078fa920ba6c949c15f16b6cc979d8bb95bjohannkoenig@chromium.orgenabled doxygen && enable_feature install_docs 20453a13f1fa964820f7a8f9d3932a6f3c0433f8bf5fgalligan@chromium.orgenable_feature install_bins 20553a13f1fa964820f7a8f9d3932a6f3c0433f8bf5fgalligan@chromium.orgenable_feature install_libs 20653a13f1fa964820f7a8f9d3932a6f3c0433f8bf5fgalligan@chromium.org 20753a13f1fa964820f7a8f9d3932a6f3c0433f8bf5fgalligan@chromium.orgenable_feature static 20853a13f1fa964820f7a8f9d3932a6f3c0433f8bf5fgalligan@chromium.orgenable_feature optimizations 20953a13f1fa964820f7a8f9d3932a6f3c0433f8bf5fgalligan@chromium.orgenable_feature fast_unaligned #allow unaligned accesses, if supported by hw 21053a13f1fa964820f7a8f9d3932a6f3c0433f8bf5fgalligan@chromium.orgenable_feature spatial_resampling 21153a13f1fa964820f7a8f9d3932a6f3c0433f8bf5fgalligan@chromium.orgenable_feature multithread 21253a13f1fa964820f7a8f9d3932a6f3c0433f8bf5fgalligan@chromium.orgenable_feature os_support 21353a13f1fa964820f7a8f9d3932a6f3c0433f8bf5fgalligan@chromium.orgenable_feature temporal_denoising 21453a13f1fa964820f7a8f9d3932a6f3c0433f8bf5fgalligan@chromium.org 215693441efe611de7ca09c00f4e79776f604b689f4joeyparrish@google.com[ -d "${source_path}/../include" ] && enable_feature alt_tree_layout 2166fefe538d859300e7febe78271828198c10f1b52fgalligan@chromium.orgfor d in vp8 vp9; do 217693441efe611de7ca09c00f4e79776f604b689f4joeyparrish@google.com [ -d "${source_path}/${d}" ] && disable_feature alt_tree_layout; 218474eb7536515fb785e925cc9375d22817c416851hclam@chromium.orgdone 219474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org 220474eb7536515fb785e925cc9375d22817c416851hclam@chromium.orgif ! enabled alt_tree_layout; then 221474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org# development environment 222693441efe611de7ca09c00f4e79776f604b689f4joeyparrish@google.com[ -d "${source_path}/vp8" ] && CODECS="${CODECS} vp8_encoder vp8_decoder" 223693441efe611de7ca09c00f4e79776f604b689f4joeyparrish@google.com[ -d "${source_path}/vp9" ] && CODECS="${CODECS} vp9_encoder vp9_decoder" 224474eb7536515fb785e925cc9375d22817c416851hclam@chromium.orgelse 225474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org# customer environment 226693441efe611de7ca09c00f4e79776f604b689f4joeyparrish@google.com[ -f "${source_path}/../include/vpx/vp8cx.h" ] && CODECS="${CODECS} vp8_encoder" 227693441efe611de7ca09c00f4e79776f604b689f4joeyparrish@google.com[ -f "${source_path}/../include/vpx/vp8dx.h" ] && CODECS="${CODECS} vp8_decoder" 228693441efe611de7ca09c00f4e79776f604b689f4joeyparrish@google.com[ -f "${source_path}/../include/vpx/vp9cx.h" ] && CODECS="${CODECS} vp9_encoder" 229693441efe611de7ca09c00f4e79776f604b689f4joeyparrish@google.com[ -f "${source_path}/../include/vpx/vp9dx.h" ] && CODECS="${CODECS} vp9_decoder" 230693441efe611de7ca09c00f4e79776f604b689f4joeyparrish@google.com[ -f "${source_path}/../include/vpx/vp8cx.h" ] || disable_feature vp8_encoder 231693441efe611de7ca09c00f4e79776f604b689f4joeyparrish@google.com[ -f "${source_path}/../include/vpx/vp8dx.h" ] || disable_feature vp8_decoder 232693441efe611de7ca09c00f4e79776f604b689f4joeyparrish@google.com[ -f "${source_path}/../include/vpx/vp9cx.h" ] || disable_feature vp9_encoder 233693441efe611de7ca09c00f4e79776f604b689f4joeyparrish@google.com[ -f "${source_path}/../include/vpx/vp9dx.h" ] || disable_feature vp9_decoder 234693441efe611de7ca09c00f4e79776f604b689f4joeyparrish@google.com 235693441efe611de7ca09c00f4e79776f604b689f4joeyparrish@google.com[ -f "${source_path}/../lib/*/*mt.lib" ] && soft_enable static_msvcrt 236474eb7536515fb785e925cc9375d22817c416851hclam@chromium.orgfi 237474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org 238474eb7536515fb785e925cc9375d22817c416851hclam@chromium.orgCODECS="$(echo ${CODECS} | tr ' ' '\n')" 239474eb7536515fb785e925cc9375d22817c416851hclam@chromium.orgCODEC_FAMILIES="$(for c in ${CODECS}; do echo ${c%_*}; done | sort | uniq)" 240474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org 241474eb7536515fb785e925cc9375d22817c416851hclam@chromium.orgARCH_LIST=" 242474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org arm 243474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org mips 244474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org x86 245474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org x86_64 246474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org ppc32 247474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org ppc64 248474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org" 249474eb7536515fb785e925cc9375d22817c416851hclam@chromium.orgARCH_EXT_LIST=" 2505c1d3b27608a3f3f6028c069b9bf066a4de474b6hclam@chromium.org edsp 2515c1d3b27608a3f3f6028c069b9bf066a4de474b6hclam@chromium.org media 2525c1d3b27608a3f3f6028c069b9bf066a4de474b6hclam@chromium.org neon 2537765c078fa920ba6c949c15f16b6cc979d8bb95bjohannkoenig@chromium.org neon_asm 254474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org 255474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org mips32 256ed759d81a39febed3a8a395386639d54307504aagrunell@chromium.org dspr2 257474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org 258ace65784417788374f0b19ce5a8abd06c9ccd007johannkoenig@chromium.org mips64 259ace65784417788374f0b19ce5a8abd06c9ccd007johannkoenig@chromium.org 260474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org mmx 261474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org sse 262474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org sse2 263474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org sse3 264474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org ssse3 265474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org sse4_1 266085cab8fbb48aa8b9f7e3e6d5a2694afd0ffe2e0johannkoenig@chromium.org avx 267085cab8fbb48aa8b9f7e3e6d5a2694afd0ffe2e0johannkoenig@chromium.org avx2 268474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org 269474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org altivec 270474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org" 271474eb7536515fb785e925cc9375d22817c416851hclam@chromium.orgHAVE_LIST=" 272474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org ${ARCH_EXT_LIST} 273474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org vpx_ports 274474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org stdint_h 275474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org alt_tree_layout 276474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org pthread_h 277474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org sys_mman_h 278474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org unistd_h 279474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org" 2806fefe538d859300e7febe78271828198c10f1b52fgalligan@chromium.orgEXPERIMENT_LIST=" 28188b47b29cc274dd19cddc37c1ce1834d97df282efgalligan@chromium.org spatial_svc 28241294d96d7dbf9bc215b09832a8336c5fb158f0bjohannkoenig@chromium.org vp9_temporal_denoising 283e2064011d36b2008099446503f28e64d445060ecjohannkoenig@chromium.org fp_mb_stats 28487997d490ae52aa962a985c95b3cddf7f8832641johannkoenig@chromium.org emulate_hardware_highbitdepth 2856fefe538d859300e7febe78271828198c10f1b52fgalligan@chromium.org" 286474eb7536515fb785e925cc9375d22817c416851hclam@chromium.orgCONFIG_LIST=" 287474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org external_build 288474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org install_docs 289474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org install_bins 290474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org install_libs 291474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org install_srcs 29253a13f1fa964820f7a8f9d3932a6f3c0433f8bf5fgalligan@chromium.org use_x86inc 293474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org debug 294474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org gprof 295474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org gcov 296474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org rvct 297474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org gcc 298474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org msvs 299474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org pic 300474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org big_endian 301474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org 302474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org codec_srcs 303474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org debug_libs 304474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org fast_unaligned 305474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org mem_manager 306474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org mem_tracker 307474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org mem_checks 308474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org 309474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org dequant_tokens 310474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org dc_recon 311474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org runtime_cpu_detect 312474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org postproc 313f9586bb54d74c97d07b09eb2512f8569c9c1c025fgalligan@chromium.org vp9_postproc 314474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org multithread 315474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org internal_stats 316474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org ${CODECS} 317474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org ${CODEC_FAMILIES} 318474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org encoders 319474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org decoders 320474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org static_msvcrt 321474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org spatial_resampling 322474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org realtime_only 3235c1d3b27608a3f3f6028c069b9bf066a4de474b6hclam@chromium.org onthefly_bitpacking 324474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org error_concealment 325474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org shared 326474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org static 327474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org small 328474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org postproc_visualizer 329474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org os_support 330167514562bbce1eb0566271d6cb41d90d2b5ffa0hclam@chromium.org unit_tests 33193a74791c8e808ea76001ee07693aa2a5fdd3500johannkoenig@chromium.org webm_io 33288b47b29cc274dd19cddc37c1ce1834d97df282efgalligan@chromium.org libyuv 333d851b91d14ef0bd71acdce7b90c9a8f1af1181adjohannkoenig@chromium.org decode_perf_tests 33441294d96d7dbf9bc215b09832a8336c5fb158f0bjohannkoenig@chromium.org encode_perf_tests 335167514562bbce1eb0566271d6cb41d90d2b5ffa0hclam@chromium.org multi_res_encoding 3365c1d3b27608a3f3f6028c069b9bf066a4de474b6hclam@chromium.org temporal_denoising 33741294d96d7dbf9bc215b09832a8336c5fb158f0bjohannkoenig@chromium.org coefficient_range_checking 338d95585fb0ec024f6abd96f7b02e0df58019d46afjohannkoenig@chromium.org vp9_highbitdepth 3396fefe538d859300e7febe78271828198c10f1b52fgalligan@chromium.org experimental 340ac4e313c19203132648a2a271703b6ee76fe4284johannkoenig@chromium.org size_limit 3416fefe538d859300e7febe78271828198c10f1b52fgalligan@chromium.org ${EXPERIMENT_LIST} 342474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org" 343474eb7536515fb785e925cc9375d22817c416851hclam@chromium.orgCMDLINE_SELECT=" 3446fefe538d859300e7febe78271828198c10f1b52fgalligan@chromium.org external_build 345474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org extra_warnings 346474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org werror 347474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org install_docs 348474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org install_bins 349474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org install_libs 350474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org install_srcs 351474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org debug 352474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org gprof 353474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org gcov 354474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org pic 35553a13f1fa964820f7a8f9d3932a6f3c0433f8bf5fgalligan@chromium.org use_x86inc 356474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org optimizations 357474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org ccache 358474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org runtime_cpu_detect 35910a9a0d835561a7f2300c561c514efcf374554d6fgalligan@chromium.org thumb 360474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org 361474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org libs 362474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org examples 363ed759d81a39febed3a8a395386639d54307504aagrunell@chromium.org docs 364474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org libc 365474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org as 366ac4e313c19203132648a2a271703b6ee76fe4284johannkoenig@chromium.org size_limit 367474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org fast_unaligned 368474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org codec_srcs 369474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org debug_libs 370474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org 371474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org dequant_tokens 372474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org dc_recon 373474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org postproc 374f9586bb54d74c97d07b09eb2512f8569c9c1c025fgalligan@chromium.org vp9_postproc 375474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org multithread 376474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org internal_stats 377474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org ${CODECS} 378474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org ${CODEC_FAMILIES} 379474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org static_msvcrt 380474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org mem_tracker 381474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org spatial_resampling 382474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org realtime_only 3835c1d3b27608a3f3f6028c069b9bf066a4de474b6hclam@chromium.org onthefly_bitpacking 384474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org error_concealment 385474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org shared 386474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org static 387474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org small 388474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org postproc_visualizer 389167514562bbce1eb0566271d6cb41d90d2b5ffa0hclam@chromium.org unit_tests 39093a74791c8e808ea76001ee07693aa2a5fdd3500johannkoenig@chromium.org webm_io 39188b47b29cc274dd19cddc37c1ce1834d97df282efgalligan@chromium.org libyuv 392d851b91d14ef0bd71acdce7b90c9a8f1af1181adjohannkoenig@chromium.org decode_perf_tests 39341294d96d7dbf9bc215b09832a8336c5fb158f0bjohannkoenig@chromium.org encode_perf_tests 394167514562bbce1eb0566271d6cb41d90d2b5ffa0hclam@chromium.org multi_res_encoding 3955c1d3b27608a3f3f6028c069b9bf066a4de474b6hclam@chromium.org temporal_denoising 39641294d96d7dbf9bc215b09832a8336c5fb158f0bjohannkoenig@chromium.org coefficient_range_checking 397d95585fb0ec024f6abd96f7b02e0df58019d46afjohannkoenig@chromium.org vp9_highbitdepth 3986fefe538d859300e7febe78271828198c10f1b52fgalligan@chromium.org experimental 399474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org" 400474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org 401474eb7536515fb785e925cc9375d22817c416851hclam@chromium.orgprocess_cmdline() { 402474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org for opt do 403474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org optval="${opt#*=}" 404474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org case "$opt" in 40553a13f1fa964820f7a8f9d3932a6f3c0433f8bf5fgalligan@chromium.org --disable-codecs) for c in ${CODECS}; do disable_feature $c; done ;; 4066fefe538d859300e7febe78271828198c10f1b52fgalligan@chromium.org --enable-?*|--disable-?*) 4076fefe538d859300e7febe78271828198c10f1b52fgalligan@chromium.org eval `echo "$opt" | sed 's/--/action=/;s/-/ option=/;s/-/_/g'` 4086fefe538d859300e7febe78271828198c10f1b52fgalligan@chromium.org if echo "${EXPERIMENT_LIST}" | grep "^ *$option\$" >/dev/null; then 4096fefe538d859300e7febe78271828198c10f1b52fgalligan@chromium.org if enabled experimental; then 41053a13f1fa964820f7a8f9d3932a6f3c0433f8bf5fgalligan@chromium.org ${action}_feature $option 4116fefe538d859300e7febe78271828198c10f1b52fgalligan@chromium.org else 4126fefe538d859300e7febe78271828198c10f1b52fgalligan@chromium.org log_echo "Ignoring $opt -- not in experimental mode." 4136fefe538d859300e7febe78271828198c10f1b52fgalligan@chromium.org fi 4146fefe538d859300e7febe78271828198c10f1b52fgalligan@chromium.org else 4156fefe538d859300e7febe78271828198c10f1b52fgalligan@chromium.org process_common_cmdline $opt 4166fefe538d859300e7febe78271828198c10f1b52fgalligan@chromium.org fi 4176fefe538d859300e7febe78271828198c10f1b52fgalligan@chromium.org ;; 418474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org *) process_common_cmdline "$opt" 419474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org ;; 420474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org esac 421474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org done 422474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org} 423474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org 424474eb7536515fb785e925cc9375d22817c416851hclam@chromium.orgpost_process_cmdline() { 42541294d96d7dbf9bc215b09832a8336c5fb158f0bjohannkoenig@chromium.org c="" 426474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org 427474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org # If the codec family is disabled, disable all components of that family. 428474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org # If the codec family is enabled, enable all components of that family. 429474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org log_echo "Configuring selected codecs" 430474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org for c in ${CODECS}; do 43153a13f1fa964820f7a8f9d3932a6f3c0433f8bf5fgalligan@chromium.org disabled ${c%%_*} && disable_feature ${c} 43253a13f1fa964820f7a8f9d3932a6f3c0433f8bf5fgalligan@chromium.org enabled ${c%%_*} && enable_feature ${c} 433474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org done 434474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org 435474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org # Enable all detected codecs, if they haven't been disabled 436474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org for c in ${CODECS}; do soft_enable $c; done 437474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org 438474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org # Enable the codec family if any component of that family is enabled 439474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org for c in ${CODECS}; do 44053a13f1fa964820f7a8f9d3932a6f3c0433f8bf5fgalligan@chromium.org enabled $c && enable_feature ${c%_*} 441474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org done 442474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org 443474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org # Set the {en,de}coders variable if any algorithm in that class is enabled 444474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org for c in ${CODECS}; do 44553a13f1fa964820f7a8f9d3932a6f3c0433f8bf5fgalligan@chromium.org enabled ${c} && enable_feature ${c##*_}s 446474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org done 447474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org} 448474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org 449474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org 450474eb7536515fb785e925cc9375d22817c416851hclam@chromium.orgprocess_targets() { 451474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org enabled child || write_common_config_banner 452474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org enabled universal || write_common_target_config_h ${BUILD_PFX}vpx_config.h 453474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org 454474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org # TODO: add host tools target (obj_int_extract, etc) 455474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org 456474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org # For fat binaries, call configure recursively to configure for each 457474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org # binary architecture to be included. 458474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org if enabled universal; then 459474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org # Call configure (ourselves) for each subarchitecture 460474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org for arch in $fat_bin_archs; do 461474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org BUILD_PFX=${arch}/ toolchain=${arch} $self --child $cmdline_args || exit $? 462474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org done 463474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org fi 464474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org 465474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org # The write_common_config (config.mk) logic is deferred until after the 466085cab8fbb48aa8b9f7e3e6d5a2694afd0ffe2e0johannkoenig@chromium.org # recursive calls to configure complete, because we want our universal 467474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org # targets to be executed last. 468474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org write_common_config_targets 469474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org enabled universal && echo "FAT_ARCHS=${fat_bin_archs}" >> config.mk 470474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org 471474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org # Calculate the default distribution name, based on the enabled features 47241294d96d7dbf9bc215b09832a8336c5fb158f0bjohannkoenig@chromium.org cf="" 47341294d96d7dbf9bc215b09832a8336c5fb158f0bjohannkoenig@chromium.org DIST_DIR=vpx 474474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org for cf in $CODEC_FAMILIES; do 475474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org if enabled ${cf}_encoder && enabled ${cf}_decoder; then 476474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org DIST_DIR="${DIST_DIR}-${cf}" 477474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org elif enabled ${cf}_encoder; then 478474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org DIST_DIR="${DIST_DIR}-${cf}cx" 479474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org elif enabled ${cf}_decoder; then 480474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org DIST_DIR="${DIST_DIR}-${cf}dx" 481474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org fi 482474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org done 483474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org enabled debug_libs && DIST_DIR="${DIST_DIR}-debug" 484474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org enabled codec_srcs && DIST_DIR="${DIST_DIR}-src" 485f9586bb54d74c97d07b09eb2512f8569c9c1c025fgalligan@chromium.org ! enabled postproc && ! enabled vp9_postproc && DIST_DIR="${DIST_DIR}-nopost" 486474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org ! enabled multithread && DIST_DIR="${DIST_DIR}-nomt" 487474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org ! enabled install_docs && DIST_DIR="${DIST_DIR}-nodocs" 488474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org DIST_DIR="${DIST_DIR}-${tgt_isa}-${tgt_os}" 489474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org case "${tgt_os}" in 490474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org win*) enabled static_msvcrt && DIST_DIR="${DIST_DIR}mt" || DIST_DIR="${DIST_DIR}md" 491474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org DIST_DIR="${DIST_DIR}-${tgt_cc}" 492474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org ;; 493474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org esac 494474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org if [ -f "${source_path}/build/make/version.sh" ]; then 49541294d96d7dbf9bc215b09832a8336c5fb158f0bjohannkoenig@chromium.org ver=`"$source_path/build/make/version.sh" --bare "$source_path"` 496474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org DIST_DIR="${DIST_DIR}-${ver}" 497474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org VERSION_STRING=${ver} 498474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org ver=${ver%%-*} 499474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org VERSION_PATCH=${ver##*.} 500474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org ver=${ver%.*} 501474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org VERSION_MINOR=${ver##*.} 502474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org ver=${ver#v} 503474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org VERSION_MAJOR=${ver%.*} 504474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org fi 505474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org enabled child || cat <<EOF >> config.mk 506474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org 507474eb7536515fb785e925cc9375d22817c416851hclam@chromium.orgPREFIX=${prefix} 508474eb7536515fb785e925cc9375d22817c416851hclam@chromium.orgifeq (\$(MAKECMDGOALS),dist) 509474eb7536515fb785e925cc9375d22817c416851hclam@chromium.orgDIST_DIR?=${DIST_DIR} 510474eb7536515fb785e925cc9375d22817c416851hclam@chromium.orgelse 511474eb7536515fb785e925cc9375d22817c416851hclam@chromium.orgDIST_DIR?=\$(DESTDIR)${prefix} 512474eb7536515fb785e925cc9375d22817c416851hclam@chromium.orgendif 513474eb7536515fb785e925cc9375d22817c416851hclam@chromium.orgLIBSUBDIR=${libdir##${prefix}/} 514474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org 515474eb7536515fb785e925cc9375d22817c416851hclam@chromium.orgVERSION_STRING=${VERSION_STRING} 516474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org 517474eb7536515fb785e925cc9375d22817c416851hclam@chromium.orgVERSION_MAJOR=${VERSION_MAJOR} 518474eb7536515fb785e925cc9375d22817c416851hclam@chromium.orgVERSION_MINOR=${VERSION_MINOR} 519474eb7536515fb785e925cc9375d22817c416851hclam@chromium.orgVERSION_PATCH=${VERSION_PATCH} 520474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org 521474eb7536515fb785e925cc9375d22817c416851hclam@chromium.orgCONFIGURE_ARGS=${CONFIGURE_ARGS} 522474eb7536515fb785e925cc9375d22817c416851hclam@chromium.orgEOF 523474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org enabled child || echo "CONFIGURE_ARGS?=${CONFIGURE_ARGS}" >> config.mk 524474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org 525474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org # 526474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org # Write makefiles for all enabled targets 527474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org # 528474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org for tgt in libs examples docs solution; do 52941294d96d7dbf9bc215b09832a8336c5fb158f0bjohannkoenig@chromium.org tgt_fn="$tgt-$toolchain.mk" 530474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org 531474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org if enabled $tgt; then 532474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org echo "Creating makefiles for ${toolchain} ${tgt}" 533474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org write_common_target_config_mk $tgt_fn ${BUILD_PFX}vpx_config.h 534474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org #write_${tgt}_config 535474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org fi 536474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org done 537474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org 538474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org} 539474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org 540474eb7536515fb785e925cc9375d22817c416851hclam@chromium.orgprocess_detect() { 541474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org if enabled shared; then 542474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org # Can only build shared libs on a subset of platforms. Doing this check 543474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org # here rather than at option parse time because the target auto-detect 544474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org # magic happens after the command line has been parsed. 545ed759d81a39febed3a8a395386639d54307504aagrunell@chromium.org if ! enabled linux; then 546ed759d81a39febed3a8a395386639d54307504aagrunell@chromium.org if enabled gnu; then 547ed759d81a39febed3a8a395386639d54307504aagrunell@chromium.org echo "--enable-shared is only supported on ELF; assuming this is OK" 548ed759d81a39febed3a8a395386639d54307504aagrunell@chromium.org else 549ed759d81a39febed3a8a395386639d54307504aagrunell@chromium.org die "--enable-shared only supported on ELF for now" 550ed759d81a39febed3a8a395386639d54307504aagrunell@chromium.org fi 551ed759d81a39febed3a8a395386639d54307504aagrunell@chromium.org fi 552474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org fi 5536fefe538d859300e7febe78271828198c10f1b52fgalligan@chromium.org if [ -z "$CC" ] || enabled external_build; then 554474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org echo "Bypassing toolchain for environment detection." 55553a13f1fa964820f7a8f9d3932a6f3c0433f8bf5fgalligan@chromium.org enable_feature external_build 556474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org check_header() { 557474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org log fake_check_header "$@" 558474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org header=$1 559474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org shift 560474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org var=`echo $header | sed 's/[^A-Za-z0-9_]/_/g'` 56153a13f1fa964820f7a8f9d3932a6f3c0433f8bf5fgalligan@chromium.org disable_feature $var 5626fefe538d859300e7febe78271828198c10f1b52fgalligan@chromium.org # Headers common to all environments 563474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org case $header in 564474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org stdio.h) 565474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org true; 566474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org ;; 567474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org *) 56841294d96d7dbf9bc215b09832a8336c5fb158f0bjohannkoenig@chromium.org result=false 569474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org for d in "$@"; do 570474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org [ -f "${d##-I}/$header" ] && result=true && break 571474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org done 572474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org ${result:-true} 57353a13f1fa964820f7a8f9d3932a6f3c0433f8bf5fgalligan@chromium.org esac && enable_feature $var 5746fefe538d859300e7febe78271828198c10f1b52fgalligan@chromium.org 5756fefe538d859300e7febe78271828198c10f1b52fgalligan@chromium.org # Specialize windows and POSIX environments. 5766fefe538d859300e7febe78271828198c10f1b52fgalligan@chromium.org case $toolchain in 5776fefe538d859300e7febe78271828198c10f1b52fgalligan@chromium.org *-win*-*) 5786fefe538d859300e7febe78271828198c10f1b52fgalligan@chromium.org case $header-$toolchain in 5796fefe538d859300e7febe78271828198c10f1b52fgalligan@chromium.org stdint*-gcc) true;; 5806fefe538d859300e7febe78271828198c10f1b52fgalligan@chromium.org *) false;; 58153a13f1fa964820f7a8f9d3932a6f3c0433f8bf5fgalligan@chromium.org esac && enable_feature $var 5826fefe538d859300e7febe78271828198c10f1b52fgalligan@chromium.org ;; 5836fefe538d859300e7febe78271828198c10f1b52fgalligan@chromium.org *) 5846fefe538d859300e7febe78271828198c10f1b52fgalligan@chromium.org case $header in 5856fefe538d859300e7febe78271828198c10f1b52fgalligan@chromium.org stdint.h) true;; 5866fefe538d859300e7febe78271828198c10f1b52fgalligan@chromium.org pthread.h) true;; 5876fefe538d859300e7febe78271828198c10f1b52fgalligan@chromium.org sys/mman.h) true;; 5886fefe538d859300e7febe78271828198c10f1b52fgalligan@chromium.org unistd.h) true;; 5896fefe538d859300e7febe78271828198c10f1b52fgalligan@chromium.org *) false;; 59053a13f1fa964820f7a8f9d3932a6f3c0433f8bf5fgalligan@chromium.org esac && enable_feature $var 5916fefe538d859300e7febe78271828198c10f1b52fgalligan@chromium.org esac 5926fefe538d859300e7febe78271828198c10f1b52fgalligan@chromium.org enabled $var 593474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org } 594474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org check_ld() { 595474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org true 596474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org } 597474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org fi 598474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org check_header stdio.h || die "Unable to invoke compiler: ${CC} ${CFLAGS}" 599474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org check_ld <<EOF || die "Toolchain is unable to link executables" 600474eb7536515fb785e925cc9375d22817c416851hclam@chromium.orgint main(void) {return 0;} 601474eb7536515fb785e925cc9375d22817c416851hclam@chromium.orgEOF 602474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org # check system headers 603474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org check_header stdint.h 604474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org check_header pthread.h 605474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org check_header sys/mman.h 6066fefe538d859300e7febe78271828198c10f1b52fgalligan@chromium.org check_header unistd.h # for sysconf(3) and friends. 607474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org 60853a13f1fa964820f7a8f9d3932a6f3c0433f8bf5fgalligan@chromium.org check_header vpx/vpx_integer.h -I${source_path} && enable_feature vpx_ports 609474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org} 610474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org 611474eb7536515fb785e925cc9375d22817c416851hclam@chromium.orgprocess_toolchain() { 612474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org process_common_toolchain 613474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org 614474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org # Handle universal binaries for this architecture 615474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org case $toolchain in 616474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org universal-darwin*) 61741294d96d7dbf9bc215b09832a8336c5fb158f0bjohannkoenig@chromium.org darwin_ver=${tgt_os##darwin} 618474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org 6195c1d3b27608a3f3f6028c069b9bf066a4de474b6hclam@chromium.org # Snow Leopard (10.6/darwin10) dropped support for PPC 6205c1d3b27608a3f3f6028c069b9bf066a4de474b6hclam@chromium.org # Include PPC support for all prior versions 6215c1d3b27608a3f3f6028c069b9bf066a4de474b6hclam@chromium.org if [ $darwin_ver -lt 10 ]; then 6225c1d3b27608a3f3f6028c069b9bf066a4de474b6hclam@chromium.org fat_bin_archs="$fat_bin_archs ppc32-${tgt_os}-gcc" 6235c1d3b27608a3f3f6028c069b9bf066a4de474b6hclam@chromium.org fi 6245c1d3b27608a3f3f6028c069b9bf066a4de474b6hclam@chromium.org 6255c1d3b27608a3f3f6028c069b9bf066a4de474b6hclam@chromium.org # Tiger (10.4/darwin8) brought support for x86 6265c1d3b27608a3f3f6028c069b9bf066a4de474b6hclam@chromium.org if [ $darwin_ver -ge 8 ]; then 6275c1d3b27608a3f3f6028c069b9bf066a4de474b6hclam@chromium.org fat_bin_archs="$fat_bin_archs x86-${tgt_os}-${tgt_cc}" 6285c1d3b27608a3f3f6028c069b9bf066a4de474b6hclam@chromium.org fi 6295c1d3b27608a3f3f6028c069b9bf066a4de474b6hclam@chromium.org 6305c1d3b27608a3f3f6028c069b9bf066a4de474b6hclam@chromium.org # Leopard (10.5/darwin9) brought 64 bit support 6315c1d3b27608a3f3f6028c069b9bf066a4de474b6hclam@chromium.org if [ $darwin_ver -ge 9 ]; then 632474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org fat_bin_archs="$fat_bin_archs x86_64-${tgt_os}-${tgt_cc}" 633474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org fi 634474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org ;; 635474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org esac 636474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org 637474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org 638474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org # Enable some useful compiler flags 639474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org if enabled gcc; then 640474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org enabled werror && check_add_cflags -Werror 641474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org check_add_cflags -Wall 642474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org check_add_cflags -Wdeclaration-after-statement 643474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org check_add_cflags -Wdisabled-optimization 644474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org check_add_cflags -Wpointer-arith 645474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org check_add_cflags -Wtype-limits 646474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org check_add_cflags -Wcast-qual 6476fefe538d859300e7febe78271828198c10f1b52fgalligan@chromium.org check_add_cflags -Wvla 6485c1d3b27608a3f3f6028c069b9bf066a4de474b6hclam@chromium.org check_add_cflags -Wimplicit-function-declaration 6495c1d3b27608a3f3f6028c069b9bf066a4de474b6hclam@chromium.org check_add_cflags -Wuninitialized 6505c1d3b27608a3f3f6028c069b9bf066a4de474b6hclam@chromium.org check_add_cflags -Wunused-variable 65110a9a0d835561a7f2300c561c514efcf374554d6fgalligan@chromium.org case ${CC} in 652085cab8fbb48aa8b9f7e3e6d5a2694afd0ffe2e0johannkoenig@chromium.org *clang*) 653085cab8fbb48aa8b9f7e3e6d5a2694afd0ffe2e0johannkoenig@chromium.org # libvpx and/or clang have issues with aliasing: 654085cab8fbb48aa8b9f7e3e6d5a2694afd0ffe2e0johannkoenig@chromium.org # https://code.google.com/p/webm/issues/detail?id=603 655085cab8fbb48aa8b9f7e3e6d5a2694afd0ffe2e0johannkoenig@chromium.org # work around them until they are fixed 656085cab8fbb48aa8b9f7e3e6d5a2694afd0ffe2e0johannkoenig@chromium.org check_add_cflags -fno-strict-aliasing 657085cab8fbb48aa8b9f7e3e6d5a2694afd0ffe2e0johannkoenig@chromium.org ;; 65810a9a0d835561a7f2300c561c514efcf374554d6fgalligan@chromium.org *) check_add_cflags -Wunused-but-set-variable ;; 65910a9a0d835561a7f2300c561c514efcf374554d6fgalligan@chromium.org esac 660474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org enabled extra_warnings || check_add_cflags -Wno-unused-function 661474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org fi 662474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org 663474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org if enabled icc; then 664474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org enabled werror && check_add_cflags -Werror 665474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org check_add_cflags -Wall 666474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org check_add_cflags -Wpointer-arith 667474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org 668474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org # ICC has a number of floating point optimizations that we disable 669474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org # in favor of deterministic output WRT to other compilers 670474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org add_cflags -fp-model precise 671474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org fi 672474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org 673474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org # Enable extra, harmless warnings. These might provide additional insight 674474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org # to what the compiler is doing and why, but in general, but they shouldn't 675474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org # be treated as fatal, even if we're treating warnings as errors. 676474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org GCC_EXTRA_WARNINGS=" 677474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org -Wdisabled-optimization 678474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org -Winline 679474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org " 680474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org enabled gcc && EXTRA_WARNINGS="${GCC_EXTRA_WARNINGS}" 681474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org RVCT_EXTRA_WARNINGS=" 682474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org --remarks 683474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org " 684474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org enabled rvct && EXTRA_WARNINGS="${RVCT_EXTRA_WARNINGS}" 685474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org if enabled extra_warnings; then 686474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org for w in ${EXTRA_WARNINGS}; do 687474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org check_add_cflags ${w} 688474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org enabled gcc && enabled werror && check_add_cflags -Wno-error=${w} 689474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org done 690474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org fi 691474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org 692474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org # ccache only really works on gcc toolchains 693474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org enabled gcc || soft_disable ccache 694474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org if enabled mips; then 69553a13f1fa964820f7a8f9d3932a6f3c0433f8bf5fgalligan@chromium.org enable_feature dequant_tokens 69653a13f1fa964820f7a8f9d3932a6f3c0433f8bf5fgalligan@chromium.org enable_feature dc_recon 697474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org fi 698474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org 699f9586bb54d74c97d07b09eb2512f8569c9c1c025fgalligan@chromium.org if enabled internal_stats; then 700f9586bb54d74c97d07b09eb2512f8569c9c1c025fgalligan@chromium.org enable_feature vp9_postproc 701f9586bb54d74c97d07b09eb2512f8569c9c1c025fgalligan@chromium.org fi 702f9586bb54d74c97d07b09eb2512f8569c9c1c025fgalligan@chromium.org 703474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org # Enable the postbuild target if building for visual studio. 704474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org case "$tgt_cc" in 70553a13f1fa964820f7a8f9d3932a6f3c0433f8bf5fgalligan@chromium.org vs*) enable_feature msvs 70653a13f1fa964820f7a8f9d3932a6f3c0433f8bf5fgalligan@chromium.org enable_feature solution 707474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org vs_version=${tgt_cc##vs} 70810a9a0d835561a7f2300c561c514efcf374554d6fgalligan@chromium.org case $vs_version in 70910a9a0d835561a7f2300c561c514efcf374554d6fgalligan@chromium.org [789]) 71010a9a0d835561a7f2300c561c514efcf374554d6fgalligan@chromium.org VCPROJ_SFX=vcproj 71110a9a0d835561a7f2300c561c514efcf374554d6fgalligan@chromium.org gen_vcproj_cmd=${source_path}/build/make/gen_msvs_proj.sh 71210a9a0d835561a7f2300c561c514efcf374554d6fgalligan@chromium.org ;; 713d851b91d14ef0bd71acdce7b90c9a8f1af1181adjohannkoenig@chromium.org 10|11|12) 71410a9a0d835561a7f2300c561c514efcf374554d6fgalligan@chromium.org VCPROJ_SFX=vcxproj 71510a9a0d835561a7f2300c561c514efcf374554d6fgalligan@chromium.org gen_vcproj_cmd=${source_path}/build/make/gen_msvs_vcxproj.sh 71693a74791c8e808ea76001ee07693aa2a5fdd3500johannkoenig@chromium.org enabled werror && gen_vcproj_cmd="${gen_vcproj_cmd} --enable-werror" 71710a9a0d835561a7f2300c561c514efcf374554d6fgalligan@chromium.org ;; 71810a9a0d835561a7f2300c561c514efcf374554d6fgalligan@chromium.org esac 719474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org all_targets="${all_targets} solution" 720923acb6a717b7f2719ed21184c1bc533b0a14888johannkoenig@chromium.org INLINE="__forceinline" 721474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org ;; 722474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org esac 723474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org 724474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org # Other toolchain specific defaults 725474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org case $toolchain in x86*|ppc*|universal*) soft_enable postproc;; esac 726474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org 727474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org if enabled postproc_visualizer; then 728474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org enabled postproc || die "postproc_visualizer requires postproc to be enabled" 729474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org fi 730ed759d81a39febed3a8a395386639d54307504aagrunell@chromium.org 731da24c9017693dec11c2925131958a7e0e0b9f1cffgalligan@chromium.org # Enable unit tests by default if we have a working C++ compiler. 732ed759d81a39febed3a8a395386639d54307504aagrunell@chromium.org case "$toolchain" in 733ed759d81a39febed3a8a395386639d54307504aagrunell@chromium.org *-vs*) 734ed759d81a39febed3a8a395386639d54307504aagrunell@chromium.org soft_enable unit_tests 735693441efe611de7ca09c00f4e79776f604b689f4joeyparrish@google.com soft_enable webm_io 73688b47b29cc274dd19cddc37c1ce1834d97df282efgalligan@chromium.org soft_enable libyuv 737ed759d81a39febed3a8a395386639d54307504aagrunell@chromium.org ;; 738ed759d81a39febed3a8a395386639d54307504aagrunell@chromium.org *-android-*) 739810cf1767dc8df4783e02ba8a712072f50ddc99efgalligan@chromium.org soft_enable webm_io 74088b47b29cc274dd19cddc37c1ce1834d97df282efgalligan@chromium.org soft_enable libyuv 741ed759d81a39febed3a8a395386639d54307504aagrunell@chromium.org # GTestLog must be modified to use Android logging utilities. 742ed759d81a39febed3a8a395386639d54307504aagrunell@chromium.org ;; 743d348b8d765c019ee7250075d663a83db00c65c08tomfinegan@chromium.org *-darwin-*) 744d348b8d765c019ee7250075d663a83db00c65c08tomfinegan@chromium.org # iOS/ARM builds do not work with gtest. This does not match 745d348b8d765c019ee7250075d663a83db00c65c08tomfinegan@chromium.org # x86 targets. 746d348b8d765c019ee7250075d663a83db00c65c08tomfinegan@chromium.org ;; 74788b47b29cc274dd19cddc37c1ce1834d97df282efgalligan@chromium.org *-iphonesimulator-*) 74888b47b29cc274dd19cddc37c1ce1834d97df282efgalligan@chromium.org soft_enable webm_io 74988b47b29cc274dd19cddc37c1ce1834d97df282efgalligan@chromium.org soft_enable libyuv 75088b47b29cc274dd19cddc37c1ce1834d97df282efgalligan@chromium.org ;; 75147265f8fe3a36a426773454ad90d20c9aa616c24johannkoenig@chromium.org *-win*) 75247265f8fe3a36a426773454ad90d20c9aa616c24johannkoenig@chromium.org # Some mingw toolchains don't have pthread available by default. 75347265f8fe3a36a426773454ad90d20c9aa616c24johannkoenig@chromium.org # Treat these more like visual studio where threading in gtest 75447265f8fe3a36a426773454ad90d20c9aa616c24johannkoenig@chromium.org # would be disabled for the same reason. 75547265f8fe3a36a426773454ad90d20c9aa616c24johannkoenig@chromium.org check_cxx "$@" <<EOF && soft_enable unit_tests 75647265f8fe3a36a426773454ad90d20c9aa616c24johannkoenig@chromium.orgint z; 75747265f8fe3a36a426773454ad90d20c9aa616c24johannkoenig@chromium.orgEOF 758693441efe611de7ca09c00f4e79776f604b689f4joeyparrish@google.com check_cxx "$@" <<EOF && soft_enable webm_io 759693441efe611de7ca09c00f4e79776f604b689f4joeyparrish@google.comint z; 760693441efe611de7ca09c00f4e79776f604b689f4joeyparrish@google.comEOF 76188b47b29cc274dd19cddc37c1ce1834d97df282efgalligan@chromium.org check_cxx "$@" <<EOF && soft_enable libyuv 76288b47b29cc274dd19cddc37c1ce1834d97df282efgalligan@chromium.orgint z; 76388b47b29cc274dd19cddc37c1ce1834d97df282efgalligan@chromium.orgEOF 76447265f8fe3a36a426773454ad90d20c9aa616c24johannkoenig@chromium.org ;; 765ed759d81a39febed3a8a395386639d54307504aagrunell@chromium.org *) 766d0351deb5037171ecec154298d37e3a74d992b0dfgalligan@chromium.org enabled pthread_h && check_cxx "$@" <<EOF && soft_enable unit_tests 767ed759d81a39febed3a8a395386639d54307504aagrunell@chromium.orgint z; 768ed759d81a39febed3a8a395386639d54307504aagrunell@chromium.orgEOF 769693441efe611de7ca09c00f4e79776f604b689f4joeyparrish@google.com check_cxx "$@" <<EOF && soft_enable webm_io 770693441efe611de7ca09c00f4e79776f604b689f4joeyparrish@google.comint z; 771693441efe611de7ca09c00f4e79776f604b689f4joeyparrish@google.comEOF 77288b47b29cc274dd19cddc37c1ce1834d97df282efgalligan@chromium.org check_cxx "$@" <<EOF && soft_enable libyuv 77388b47b29cc274dd19cddc37c1ce1834d97df282efgalligan@chromium.orgint z; 77488b47b29cc274dd19cddc37c1ce1834d97df282efgalligan@chromium.orgEOF 775ed759d81a39febed3a8a395386639d54307504aagrunell@chromium.org ;; 776ed759d81a39febed3a8a395386639d54307504aagrunell@chromium.org esac 777693441efe611de7ca09c00f4e79776f604b689f4joeyparrish@google.com # libwebm needs to be linked with C++ standard library 778693441efe611de7ca09c00f4e79776f604b689f4joeyparrish@google.com enabled webm_io && LD=${CXX} 779474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org} 780474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org 781474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org 782474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org## 783474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org## END APPLICATION SPECIFIC CONFIGURATION 784474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org## 785474eb7536515fb785e925cc9375d22817c416851hclam@chromium.orgCONFIGURE_ARGS="$@" 786474eb7536515fb785e925cc9375d22817c416851hclam@chromium.orgprocess "$@" 787167514562bbce1eb0566271d6cb41d90d2b5ffa0hclam@chromium.orgprint_webm_license ${BUILD_PFX}vpx_config.c "/*" " */" 788167514562bbce1eb0566271d6cb41d90d2b5ffa0hclam@chromium.orgcat <<EOF >> ${BUILD_PFX}vpx_config.c 789474eb7536515fb785e925cc9375d22817c416851hclam@chromium.orgstatic const char* const cfg = "$CONFIGURE_ARGS"; 790474eb7536515fb785e925cc9375d22817c416851hclam@chromium.orgconst char *vpx_codec_build_config(void) {return cfg;} 791474eb7536515fb785e925cc9375d22817c416851hclam@chromium.orgEOF 792