configure revision 90d3ed91ae9228e1c8bab561b6138d4cb8c1e4fd
190d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber#!/bin/bash 290d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber## 390d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber## Copyright (c) 2010 The VP8 project authors. All Rights Reserved. 490d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber## 590d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber## Use of this source code is governed by a BSD-style license and patent 690d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber## grant that can be found in the LICENSE file in the root of the source 790d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber## tree. All contributing project authors may be found in the AUTHORS 890d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber## file in the root of the source tree. 990d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber## 1090d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber 1190d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber 1290d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber#source_path="`dirname \"$0\"`" 1390d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Hubersource_path=${0%/*} 1490d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber. "${source_path}/build/make/configure.sh" 1590d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber 1690d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Hubershow_help(){ 1790d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber show_help_pre 1890d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber cat << EOF 1990d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas HuberAdvanced options: 2090d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber ${toggle_libs} don't build libraries 2190d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber ${toggle_examples} don't build examples 2290d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber --libc=PATH path to alternate libc 2390d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber ${toggle_fast_unaligned} don't use unaligned accesses, even when 2490d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber supported by hardware [auto] 2590d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber ${toggle_codec_srcs} in/exclude codec library source code 2690d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber ${toggle_debug_libs} in/exclude debug version of libraries 2790d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber ${toggle_eval_limit} enable limited evaluation build 2890d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber ${toggle_md5} support for output of checksum data 2990d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber ${toggle_static_msvcrt} use static MSVCRT (VS builds only) 3090d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber ${toggle_vp8} VP8 codec support 3190d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber ${toggle_psnr} output of PSNR data, if supported (encoders) 3290d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber ${toggle_mem_tracker} track memory usage 3390d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber ${toggle_eval_limit} decoder limitted to 500 frames 3490d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber ${toggle_postproc} postprocessing 3590d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber ${toggle_multithread} multithreaded encoding and decoding. 3690d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber ${toggle_spatial_resampling} spatial sampling (scaling) support 3790d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber ${toggle_realtime_only} enable this option while building for real-time encoding 3890d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber ${toggle_runtime_cpu_detect} runtime cpu detection 3990d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber 4090d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas HuberCodecs: 4190d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber Codecs can be selectively enabled or disabled individually, or by family: 4290d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber --disable-<codec> 4390d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber is equivalent to: 4490d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber --disable-<codec>-encoder 4590d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber --disable-<codec>-decoder 4690d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber 4790d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber Codecs available in this distribution: 4890d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas HuberEOF 4990d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber#restore editor state ' 5090d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber 5190d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber local family; 5290d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber local last_family; 5390d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber local c; 5490d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber local str; 5590d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber for c in ${CODECS}; do 5690d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber family=${c%_*} 5790d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber if [ "${family}" != "${last_family}" ]; then 5890d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber [ -z "${str}" ] || echo "${str}" 5990d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber str="$(printf ' %10s:' ${family})" 6090d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber fi 6190d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber str="${str} $(printf '%10s' ${c#*_})" 6290d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber last_family=${family} 6390d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber done 6490d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber echo "${str}" 6590d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber show_help_post 6690d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber} 6790d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber 6890d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber## 6990d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber## BEGIN APPLICATION SPECIFIC CONFIGURATION 7090d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber## 7190d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber 7290d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber# all_platforms is a list of all supported target platforms. Maintain 7390d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber# alphabetically by architecture, generic-gnu last. 7490d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huberall_platforms="${all_platforms} armv5te-linux-rvct" 7590d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huberall_platforms="${all_platforms} armv5te-linux-gcc" 7690d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huberall_platforms="${all_platforms} armv5te-symbian-gcc" 7790d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huberall_platforms="${all_platforms} armv5te-wince-vs8" 7890d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huberall_platforms="${all_platforms} armv6-darwin-gcc" 7990d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huberall_platforms="${all_platforms} armv6-linux-rvct" 8090d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huberall_platforms="${all_platforms} armv6-linux-gcc" 8190d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huberall_platforms="${all_platforms} armv6-symbian-gcc" 8290d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huberall_platforms="${all_platforms} armv6-wince-vs8" 8390d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huberall_platforms="${all_platforms} iwmmxt-linux-rvct" 8490d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huberall_platforms="${all_platforms} iwmmxt-linux-gcc" 8590d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huberall_platforms="${all_platforms} iwmmxt-wince-vs8" 8690d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huberall_platforms="${all_platforms} iwmmxt2-linux-rvct" 8790d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huberall_platforms="${all_platforms} iwmmxt2-linux-gcc" 8890d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huberall_platforms="${all_platforms} iwmmxt2-wince-vs8" 8990d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huberall_platforms="${all_platforms} armv7-darwin-gcc" #neon Cortex-A8 9090d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huberall_platforms="${all_platforms} armv7-linux-rvct" #neon Cortex-A8 9190d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huberall_platforms="${all_platforms} armv7-linux-gcc" #neon Cortex-A8 9290d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huberall_platforms="${all_platforms} mips32-linux-gcc" 9390d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huberall_platforms="${all_platforms} ppc32-darwin8-gcc" 9490d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huberall_platforms="${all_platforms} ppc32-darwin9-gcc" 9590d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huberall_platforms="${all_platforms} ppc64-darwin8-gcc" 9690d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huberall_platforms="${all_platforms} ppc64-darwin9-gcc" 9790d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huberall_platforms="${all_platforms} ppc64-linux-gcc" 9890d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huberall_platforms="${all_platforms} x86-darwin8-gcc" 9990d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huberall_platforms="${all_platforms} x86-darwin8-icc" 10090d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huberall_platforms="${all_platforms} x86-darwin9-gcc" 10190d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huberall_platforms="${all_platforms} x86-darwin9-icc" 10290d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huberall_platforms="${all_platforms} x86-linux-gcc" 10390d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huberall_platforms="${all_platforms} x86-linux-icc" 10490d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huberall_platforms="${all_platforms} x86-solaris-gcc" 10590d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huberall_platforms="${all_platforms} x86-win32-gcc" 10690d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huberall_platforms="${all_platforms} x86-win32-vs7" 10790d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huberall_platforms="${all_platforms} x86-win32-vs8" 10890d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huberall_platforms="${all_platforms} x86_64-darwin9-gcc" 10990d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huberall_platforms="${all_platforms} x86_64-linux-gcc" 11090d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huberall_platforms="${all_platforms} x86_64-solaris-gcc" 11190d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huberall_platforms="${all_platforms} x86_64-win64-vs8" 11290d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huberall_platforms="${all_platforms} universal-darwin8-gcc" 11390d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huberall_platforms="${all_platforms} universal-darwin9-gcc" 11490d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huberall_platforms="${all_platforms} generic-gnu" 11590d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber 11690d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber# all_targets is a list of all targets that can be configured 11790d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber# note that these should be in dependency order for now. 11890d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huberall_targets="libs examples docs" 11990d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber 12090d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber# all targets available are enabled, by default. 12190d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huberfor t in ${all_targets}; do 12290d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber [ -f ${source_path}/${t}.mk ] && enable ${t} 12390d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huberdone 12490d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber 12590d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber# check installed doxygen version 12690d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huberdoxy_version=$(doxygen --version 2>/dev/null) 12790d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huberdoxy_major=${doxy_version%%.*} 12890d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huberif [ ${doxy_major:-0} -ge 1 ]; then 12990d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber doxy_version=${doxy_version#*.} 13090d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber doxy_minor=${doxy_version%%.*} 13190d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber doxy_patch=${doxy_version##*.} 13290d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber 13390d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber [ $doxy_major -gt 1 ] && enable doxygen 13490d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber [ $doxy_minor -gt 5 ] && enable doxygen 13590d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber [ $doxy_minor -eq 5 ] && [ $doxy_patch -ge 3 ] && enable doxygen 13690d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huberfi 13790d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber 13890d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber# install everything, by default 13990d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huberenabled doxygen && php -v >/dev/null 2>&1 && enable install_docs 14090d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huberenable install_bins 14190d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huberenable install_libs 14290d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huberenable install_srcs 14390d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber 14490d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huberenable optimizations 14590d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huberenable fast_unaligned #allow unaligned accesses, if supported by hw 14690d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huberenable md5 14790d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huberenable spatial_resampling 14890d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huberenable multithread 14990d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber 15090d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber[ -d ${source_path}/../include ] && enable alt_tree_layout 15190d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huberfor d in vp8; do 15290d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber [ -d ${source_path}/${d} ] && disable alt_tree_layout; 15390d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huberdone 15490d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber 15590d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huberif ! enabled alt_tree_layout; then 15690d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber# development environment 15790d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber[ -d ${source_path}/vp8 ] && CODECS="${CODECS} vp8_encoder vp8_decoder" 15890d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huberelse 15990d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber# customer environment 16090d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber[ -f ${source_path}/../include/vp8cx.h ] && CODECS="${CODECS} vp8_encoder" 16190d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber[ -f ${source_path}/../include/vp8dx.h ] && CODECS="${CODECS} vp8_decoder" 16290d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber 16390d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber[ -f ${source_path}/../lib/*/*mt.lib ] && soft_enable static_msvcrt 16490d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huberfi 16590d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber 16690d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas HuberCODECS="$(echo ${CODECS} | tr ' ' '\n')" 16790d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas HuberCODEC_FAMILIES="$(for c in ${CODECS}; do echo ${c%_*}; done | sort | uniq)" 16890d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber 16990d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas HuberARCH_LIST=" 17090d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber arm 17190d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber mips 17290d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber x86 17390d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber x86_64 17490d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber ppc32 17590d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber ppc64 17690d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber" 17790d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas HuberARCH_EXT_LIST=" 17890d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber armv5te 17990d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber armv6 18090d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber armv7 18190d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber iwmmxt 18290d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber iwmmxt2 18390d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber 18490d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber mips32 18590d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber 18690d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber mmx 18790d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber sse 18890d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber sse2 18990d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber sse3 19090d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber ssse3 19190d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber 19290d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber altivec 19390d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber" 19490d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas HuberHAVE_LIST=" 19590d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber ${ARCH_EXT_LIST} 19690d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber vpx_ports 19790d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber stdint_h 19890d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber alt_tree_layout 19990d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber pthread_h 20090d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber sys_mman_h 20190d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber" 20290d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas HuberCONFIG_LIST=" 20390d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber external_build 20490d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber install_docs 20590d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber install_bins 20690d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber install_libs 20790d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber install_srcs 20890d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber debug 20990d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber gprof 21090d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber gcov 21190d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber rvct 21290d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber gcc 21390d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber msvs 21490d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber pic 21590d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber big_endian 21690d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber 21790d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber codec_srcs 21890d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber debug_libs 21990d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber fast_unaligned 22090d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber mem_manager 22190d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber mem_tracker 22290d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber mem_checks 22390d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber md5 22490d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber 22590d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber dequant_tokens 22690d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber dc_recon 22790d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber new_tokens 22890d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber eval_limit 22990d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber runtime_cpu_detect 23090d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber postproc 23190d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber postproc_generic 23290d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber multithread 23390d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber psnr 23490d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber ${CODECS} 23590d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber ${CODEC_FAMILIES} 23690d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber encoders 23790d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber decoders 23890d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber static_msvcrt 23990d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber spatial_resampling 24090d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber realtime_only 24190d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber" 24290d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas HuberCMDLINE_SELECT=" 24390d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber extra_warnings 24490d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber werror 24590d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber install_docs 24690d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber install_bins 24790d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber install_libs 24890d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber install_srcs 24990d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber debug 25090d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber gprof 25190d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber gcov 25290d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber pic 25390d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber optimizations 25490d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber ccache 25590d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber runtime_cpu_detect 25690d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber 25790d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber libs 25890d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber examples 25990d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber libc 26090d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber fast_unaligned 26190d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber codec_srcs 26290d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber debug_libs 26390d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber md5 26490d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber 26590d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber dequant_tokens 26690d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber dc_recon 26790d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber new_tokens 26890d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber eval_limit 26990d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber postproc 27090d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber postproc_generic 27190d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber multithread 27290d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber psnr 27390d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber ${CODECS} 27490d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber ${CODEC_FAMILIES} 27590d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber static_msvcrt 27690d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber mem_tracker 27790d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber spatial_resampling 27890d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber realtime_only 27990d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber" 28090d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber 28190d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huberprocess_cmdline() { 28290d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber for opt do 28390d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber optval="${opt#*=}" 28490d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber case "$opt" in 28590d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber --disable-codecs) for c in ${CODECS}; do disable $c; done ;; 28690d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber *) process_common_cmdline $opt 28790d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber ;; 28890d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber esac 28990d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber done 29090d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber} 29190d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber 29290d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huberpost_process_cmdline() { 29390d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber local c 29490d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber 29590d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber # If the codec family is disabled, disable all components of that family. 29690d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber # If the codec family is enabled, enable all components of that family. 29790d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber log_echo "Configuring selected codecs" 29890d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber for c in ${CODECS}; do 29990d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber disabled ${c%%_*} && disable ${c} 30090d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber enabled ${c%%_*} && enable ${c} 30190d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber done 30290d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber 30390d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber # Enable all detected codecs, if they haven't been disabled 30490d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber for c in ${CODECS}; do soft_enable $c; done 30590d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber 30690d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber # Enable the codec family if any component of that family is enabled 30790d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber for c in ${CODECS}; do 30890d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber enabled $c && enable ${c%_*} 30990d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber done 31090d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber 31190d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber # Set the {en,de}coders variable if any algorithm in that class is enabled 31290d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber for c in ${CODECS}; do 31390d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber enabled ${c} && enable ${c##*_}s 31490d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber done 31590d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber 31690d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber 31790d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber} 31890d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber 31990d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber 32090d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huberprocess_targets() { 32190d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber enabled child || write_common_config_banner 32290d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber enabled universal || write_common_target_config_h ${BUILD_PFX}vpx_config.h 32390d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber 32490d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber # TODO: add host tools target (obj_int_extract, etc) 32590d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber 32690d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber # For fat binaries, call configure recursively to configure for each 32790d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber # binary architecture to be included. 32890d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber if enabled universal; then 32990d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber # Call configure (ourselves) for each subarchitecture 33090d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber for arch in $fat_bin_archs; do 33190d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber BUILD_PFX=${arch}/ toolchain=${arch} $self --child $cmdline_args || exit $? 33290d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber done 33390d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber fi 33490d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber 33590d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber # The write_common_config (config.mk) logic is deferred until after the 33690d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber # recursive calls to configure complete, becuase we want our universal 33790d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber # targets to be executed last. 33890d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber write_common_config_targets 33990d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber enabled universal && echo "FAT_ARCHS=${fat_bin_archs}" >> config.mk 34090d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber 34190d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber # Calculate the default distribution name, based on the enabled features 34290d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber local cf 34390d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber local DIST_DIR=vpx 34490d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber for cf in $CODEC_FAMILIES; do 34590d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber if enabled ${cf}_encoder && enabled ${cf}_decoder; then 34690d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber DIST_DIR="${DIST_DIR}-${cf}" 34790d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber elif enabled ${cf}_encoder; then 34890d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber DIST_DIR="${DIST_DIR}-${cf}cx" 34990d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber elif enabled ${cf}_decoder; then 35090d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber DIST_DIR="${DIST_DIR}-${cf}dx" 35190d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber fi 35290d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber done 35390d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber enabled debug_libs && DIST_DIR="${DIST_DIR}-debug" 35490d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber enabled codec_srcs && DIST_DIR="${DIST_DIR}-src" 35590d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber ! enabled postproc && DIST_DIR="${DIST_DIR}-nopost" 35690d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber ! enabled multithread && DIST_DIR="${DIST_DIR}-nomt" 35790d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber enabled eval_limit && DIST_DIR="${DIST_DIR}-eval" 35890d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber ! enabled install_docs && DIST_DIR="${DIST_DIR}-nodocs" 35990d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber DIST_DIR="${DIST_DIR}-${tgt_isa}-${tgt_os}" 36090d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber case "${tgt_os}" in 36190d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber win*) enabled static_msvcrt && DIST_DIR="${DIST_DIR}mt" || DIST_DIR="${DIST_DIR}md" 36290d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber DIST_DIR="${DIST_DIR}-${tgt_cc}" 36390d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber ;; 36490d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber esac 36590d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber if [ -f "${source_path}/build/make/version.sh" ]; then 36690d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber local ver=`"$source_path/build/make/version.sh" --bare $source_path` 36790d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber DIST_DIR="${DIST_DIR}-${ver}" 36890d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber fi 36990d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber enabled child || echo "DIST_DIR?=${DIST_DIR}" >> config.mk 37090d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber enabled child || echo "CONFIGURE_ARGS?=${CONFIGURE_ARGS}" >> config.mk 37190d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber 37290d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber # 37390d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber # Write makefiles for all enabled targets 37490d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber # 37590d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber for tgt in libs examples docs solution; do 37690d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber local tgt_fn="$tgt-$toolchain.mk" 37790d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber 37890d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber if enabled $tgt; then 37990d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber echo "Creating makefiles for ${toolchain} ${tgt}" 38090d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber write_common_target_config_mk $tgt_fn ${BUILD_PFX}vpx_config.h 38190d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber #write_${tgt}_config 38290d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber fi 38390d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber done 38490d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber 38590d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber} 38690d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber 38790d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huberprocess_detect() { 38890d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber if [ -z "$CC" ]; then 38990d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber echo "Bypassing toolchain for environment detection." 39090d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber enable external_build 39190d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber check_header() { 39290d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber log fake_check_header "$@" 39390d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber header=$1 39490d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber shift 39590d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber var=`echo $header | sed 's/[^A-Za-z0-9_]/_/g'` 39690d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber disable $var 39790d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber case $header in 39890d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber stdio.h) 39990d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber true; 40090d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber ;; 40190d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber *) 40290d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber local result=false 40390d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber for d in "$@"; do 40490d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber [ -f "${d##-I}/$header" ] && result=true && break 40590d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber done 40690d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber ${result:-true} 40790d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber esac && enable $var 40890d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber } 40990d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber check_ld() { 41090d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber true 41190d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber } 41290d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber fi 41390d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber check_header stdio.h || die "Unable to invoke compiler: ${CC} ${CFLAGS}" 41490d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber check_ld <<EOF || die "Toolchain is unable to link executables" 41590d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huberint main(void) {return 0;} 41690d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas HuberEOF 41790d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber # check system headers 41890d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber check_header stdint.h 41990d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber check_header pthread.h 42090d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber check_header sys/mman.h 42190d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber 42290d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber check_header vpx_ports/vpx_integer.h -I${source_path} && enable vpx_ports 42390d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber} 42490d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber 42590d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huberprocess_toolchain() { 42690d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber process_common_toolchain 42790d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber 42890d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber # Handle universal binaries for this architecture 42990d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber case $toolchain in 43090d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber universal-darwin*) 43190d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber local darwin_ver=${tgt_os##darwin} 43290d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber fat_bin_archs="$fat_bin_archs ppc32-${tgt_os}-gcc" 43390d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber 43490d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber # Intel 43590d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber fat_bin_archs="$fat_bin_archs x86-${tgt_os}-${tgt_cc}" 43690d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber if [ $darwin_ver -gt 8 ]; then 43790d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber fat_bin_archs="$fat_bin_archs x86_64-${tgt_os}-${tgt_cc}" 43890d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber fi 43990d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber ;; 44090d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber esac 44190d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber 44290d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber 44390d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber # Enable some useful compiler flags 44490d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber if enabled gcc; then 44590d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber enabled werror && check_add_cflags -Werror 44690d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber check_add_cflags -Wall 44790d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber check_add_cflags -Wdeclaration-after-statement 44890d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber check_add_cflags -Wdisabled-optimization 44990d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber check_add_cflags -Wpointer-arith 45090d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber check_add_cflags -Wtype-limits 45190d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber check_add_cflags -Wcast-qual 45290d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber enabled extra_warnings || check_add_cflags -Wno-unused 45390d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber fi 45490d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber 45590d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber if enabled icc; then 45690d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber enabled werror && check_add_cflags -Werror 45790d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber check_add_cflags -Wall 45890d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber check_add_cflags -Wpointer-arith 45990d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber 46090d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber # ICC has a number of floating point optimizations that we disable 46190d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber # in favor of deterministic output WRT to other compilers 46290d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber add_cflags -fp-model precise 46390d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber fi 46490d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber 46590d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber # Enable extra, harmless warnings. These might provide additional insight 46690d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber # to what the compiler is doing and why, but in general, but they shouldn't 46790d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber # be treated as fatal, even if we're treating warnings as errors. 46890d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber GCC_EXTRA_WARNINGS=" 46990d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber -Wdisabled-optimization 47090d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber -Winline 47190d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber " 47290d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber enabled gcc && EXTRA_WARNINGS="${GCC_EXTRA_WARNINGS}" 47390d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber RVCT_EXTRA_WARNINGS=" 47490d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber --remarks 47590d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber " 47690d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber enabled rvct && EXTRA_WARNINGS="${RVCT_EXTRA_WARNINGS}" 47790d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber if enabled extra_warnings; then 47890d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber for w in ${EXTRA_WARNINGS}; do 47990d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber check_add_cflags ${w} 48090d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber enabled gcc && enabled werror && check_add_cflags -Wno-error=${w} 48190d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber done 48290d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber fi 48390d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber 48490d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber # ccache only really works on gcc toolchains 48590d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber enabled gcc || soft_disable ccache 48690d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber if enabled mips; then 48790d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber enable dequant_tokens 48890d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber enable dc_recon 48990d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber fi 49090d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber 49190d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber # Enable the postbuild target if building for visual studio. 49290d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber case "$tgt_cc" in 49390d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber vs*) enable msvs 49490d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber enable solution 49590d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber vs_version=${tgt_cc##vs} 49690d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber all_targets="${all_targets} solution" 49790d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber INLINE=__inline 49890d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber FORCEINLINE=__forceinline 49990d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber ;; 50090d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber esac 50190d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber 50290d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber # Other toolchain specific defaults 50390d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber case $toolchain in x86*|ppc*|universal*) soft_enable postproc;; esac 50490d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber} 50590d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber 50690d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber 50790d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber## 50890d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber## END APPLICATION SPECIFIC CONFIGURATION 50990d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber## 51090d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas HuberCONFIGURE_ARGS="$@" 51190d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huberprocess "$@" 51290d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Hubercat <<EOF > ${BUILD_PFX}vpx_config.c 51390d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huberstatic const char* const cfg = "$CONFIGURE_ARGS"; 51490d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huberconst char *vpx_codec_build_config(void) {return cfg;} 51590d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas HuberEOF 516