summaryrefslogtreecommitdiffstats
path: root/third_party/aom/configure
diff options
context:
space:
mode:
Diffstat (limited to 'third_party/aom/configure')
-rwxr-xr-xthird_party/aom/configure977
1 files changed, 0 insertions, 977 deletions
diff --git a/third_party/aom/configure b/third_party/aom/configure
deleted file mode 100755
index 50a5fb266..000000000
--- a/third_party/aom/configure
+++ /dev/null
@@ -1,977 +0,0 @@
-#!/bin/sh
-##
-## configure
-##
-## This script is the front-end to the build system. It provides a similar
-## interface to standard configure scripts with some extra bits for dealing
-## with toolchains that differ from the standard POSIX interface and
-## for extracting subsets of the source tree. In theory, reusable parts
-## of this script were intended to live in build/make/configure.sh,
-## but in practice, the line is pretty blurry.
-##
-## This build system is based in part on the FFmpeg configure script.
-##
-
-#source_path="`dirname \"$0\"`"
-source_path=${0%/*}
-. "${source_path}/build/make/configure.sh"
-
-show_help(){
- show_help_pre
- cat << EOF
-Advanced options:
- ${toggle_libs} libraries
- ${toggle_examples} examples
- ${toggle_analyzer} analyzer
- ${toggle_docs} documentation
- ${toggle_unit_tests} unit tests
- ${toggle_tools} tools
- ${toggle_decode_perf_tests} build decoder perf tests with unit tests
- ${toggle_encode_perf_tests} build encoder perf tests with unit tests
- --cpu=CPU tune for the specified CPU (ARM: cortex-a8, X86: sse3)
- --libc=PATH path to alternate libc
- --size-limit=WxH max size to allow in the decoder
- --as={yasm|nasm|auto} use specified assembler [auto, yasm preferred]
- --sdk-path=PATH path to root of sdk (android builds only)
- ${toggle_codec_srcs} in/exclude codec library source code
- ${toggle_debug_libs} in/exclude debug version of libraries
- ${toggle_static_msvcrt} use static MSVCRT (VS builds only)
- ${toggle_highbitdepth} enable 16-bit generic pixel pipeline (used by high bitdepth profiles)
- ${toggle_lowbitdepth} enable 8-bit optimized pixel pipeline
- ${toggle_av1} AV1 codec support
- ${toggle_internal_stats} output of encoder internal stats for debug, if supported (encoders)
- ${toggle_postproc} postprocessing
- ${toggle_multithread} multithreaded encoding and decoding
- ${toggle_spatial_resampling} spatial sampling (scaling) support
- ${toggle_realtime_only} enable this option while building for real-time encoding
- ${toggle_coefficient_range_checking}
- enable decoder to check if intermediate
- transform coefficients are in valid range
- ${toggle_runtime_cpu_detect} runtime cpu detection
- ${toggle_shared} shared library support
- ${toggle_static} static library support
- ${toggle_small} favor smaller size over speed
- ${toggle_postproc_visualizer} macro block / block level visualizers
- ${toggle_webm_io} enable input from and output to WebM container
- ${toggle_libyuv} enable libyuv
- ${toggle_accounting} enable bit accounting
- ${toggle_inspection} enable bitstream inspection
-
-Codecs:
- Codecs can be selectively enabled or disabled individually, or by family:
- --disable-<codec>
- is equivalent to:
- --disable-<codec>-encoder
- --disable-<codec>-decoder
-
- Codecs available in this distribution:
-EOF
-#restore editor state '
-
- family="";
- last_family="";
- c="";
- str="";
- for c in ${CODECS}; do
- family=${c%_*}
- if [ "${family}" != "${last_family}" ]; then
- [ -z "${str}" ] || echo "${str}"
- str="$(printf ' %10s:' ${family})"
- fi
- str="${str} $(printf '%10s' ${c#*_})"
- last_family=${family}
- done
- echo "${str}"
- show_help_post
-}
-
-##
-## BEGIN APPLICATION SPECIFIC CONFIGURATION
-##
-
-# all_platforms is a list of all supported target platforms. Maintain
-# alphabetically by architecture, generic-gnu last.
-all_platforms="${all_platforms} arm64-darwin-gcc"
-all_platforms="${all_platforms} arm64-linux-gcc"
-all_platforms="${all_platforms} armv7-android-gcc" #neon Cortex-A8
-all_platforms="${all_platforms} armv7-darwin-gcc" #neon Cortex-A8
-all_platforms="${all_platforms} armv7-linux-rvct" #neon Cortex-A8
-all_platforms="${all_platforms} armv7-linux-gcc" #neon Cortex-A8
-all_platforms="${all_platforms} armv7-none-rvct" #neon Cortex-A8
-all_platforms="${all_platforms} armv7-win32-vs12"
-all_platforms="${all_platforms} armv7-win32-vs14"
-all_platforms="${all_platforms} armv7-win32-vs15"
-all_platforms="${all_platforms} armv7s-darwin-gcc"
-all_platforms="${all_platforms} armv8-linux-gcc"
-all_platforms="${all_platforms} mips32-linux-gcc"
-all_platforms="${all_platforms} mips64-linux-gcc"
-all_platforms="${all_platforms} sparc-solaris-gcc"
-all_platforms="${all_platforms} x86-android-gcc"
-all_platforms="${all_platforms} x86-darwin8-gcc"
-all_platforms="${all_platforms} x86-darwin8-icc"
-all_platforms="${all_platforms} x86-darwin9-gcc"
-all_platforms="${all_platforms} x86-darwin9-icc"
-all_platforms="${all_platforms} x86-darwin10-gcc"
-all_platforms="${all_platforms} x86-darwin11-gcc"
-all_platforms="${all_platforms} x86-darwin12-gcc"
-all_platforms="${all_platforms} x86-darwin13-gcc"
-all_platforms="${all_platforms} x86-darwin14-gcc"
-all_platforms="${all_platforms} x86-darwin15-gcc"
-all_platforms="${all_platforms} x86-darwin16-gcc"
-all_platforms="${all_platforms} x86-iphonesimulator-gcc"
-all_platforms="${all_platforms} x86-linux-gcc"
-all_platforms="${all_platforms} x86-linux-icc"
-all_platforms="${all_platforms} x86-os2-gcc"
-all_platforms="${all_platforms} x86-solaris-gcc"
-all_platforms="${all_platforms} x86-win32-gcc"
-all_platforms="${all_platforms} x86-win32-vs12"
-all_platforms="${all_platforms} x86-win32-vs14"
-all_platforms="${all_platforms} x86-win32-vs15"
-all_platforms="${all_platforms} x86_64-android-gcc"
-all_platforms="${all_platforms} x86_64-darwin9-gcc"
-all_platforms="${all_platforms} x86_64-darwin10-gcc"
-all_platforms="${all_platforms} x86_64-darwin11-gcc"
-all_platforms="${all_platforms} x86_64-darwin12-gcc"
-all_platforms="${all_platforms} x86_64-darwin13-gcc"
-all_platforms="${all_platforms} x86_64-darwin14-gcc"
-all_platforms="${all_platforms} x86_64-darwin15-gcc"
-all_platforms="${all_platforms} x86_64-darwin16-gcc"
-all_platforms="${all_platforms} x86_64-iphonesimulator-gcc"
-all_platforms="${all_platforms} x86_64-linux-gcc"
-all_platforms="${all_platforms} x86_64-linux-icc"
-all_platforms="${all_platforms} x86_64-solaris-gcc"
-all_platforms="${all_platforms} x86_64-win64-gcc"
-all_platforms="${all_platforms} x86_64-win64-vs12"
-all_platforms="${all_platforms} x86_64-win64-vs14"
-all_platforms="${all_platforms} x86_64-win64-vs15"
-all_platforms="${all_platforms} generic-gnu"
-
-# all_targets is a list of all targets that can be configured
-# note that these should be in dependency order for now.
-all_targets="libs examples docs tools"
-
-# all targets available are enabled, by default.
-for t in ${all_targets}; do
- [ -f "${source_path}/${t}.mk" ] && enable_feature ${t}
-done
-
-if ! diff --version >/dev/null; then
- die "diff missing: Try installing diffutils via your package manager."
-fi
-
-if ! perl --version >/dev/null; then
- die "Perl is required to build"
-fi
-
-
-if [ "`cd \"${source_path}\" && pwd`" != "`pwd`" ]; then
- # test to see if source_path already configured
- if [ -f "${source_path}/aom_config.h" ]; then
- die "source directory already configured; run 'make distclean' there first"
- fi
-fi
-
-# check installed doxygen version
-doxy_version=$(doxygen --version 2>/dev/null)
-doxy_major=${doxy_version%%.*}
-if [ ${doxy_major:-0} -ge 1 ]; then
- doxy_version=${doxy_version#*.}
- doxy_minor=${doxy_version%%.*}
- doxy_patch=${doxy_version##*.}
-
- [ $doxy_major -gt 1 ] && enable_feature doxygen
- [ $doxy_minor -gt 5 ] && enable_feature doxygen
- [ $doxy_minor -eq 5 ] && [ $doxy_patch -ge 3 ] && enable_feature doxygen
-fi
-
-# disable codecs when their source directory does not exist
-[ -d "${source_path}/av1" ] || disable_codec av1
-
-# install everything except the sources, by default. sources will have
-# to be enabled when doing dist builds, since that's no longer a common
-# case.
-enabled doxygen && enable_feature install_docs
-enable_feature install_bins
-enable_feature install_libs
-
-enable_feature static
-enable_feature optimizations
-enable_feature dependency_tracking
-enable_feature spatial_resampling
-enable_feature multithread
-enable_feature os_support
-enable_feature highbitdepth
-
-CODECS="
- av1_encoder
- av1_decoder
-"
-CODEC_FAMILIES="
- av1
-"
-
-ARCH_LIST="
- arm
- mips
- x86
- x86_64
-"
-ARCH_EXT_LIST_X86="
- mmx
- sse
- sse2
- sse3
- ssse3
- sse4_1
- avx
- avx2
-"
-ARCH_EXT_LIST="
- neon
- neon_asm
-
- mips32
- dspr2
- msa
- mips64
-
- ${ARCH_EXT_LIST_X86}
-"
-HAVE_LIST="
- ${ARCH_EXT_LIST}
- aom_ports
- fexcept
- pthread_h
- unistd_h
- wxwidgets
-"
-EXPERIMENT_LIST="
- fp_mb_stats
- cdef
- cdef_singlepass
- var_tx
- rect_tx
- rect_tx_ext
- tpl_mv
- dual_filter
- convolve_round
- compound_round
- ext_tx
- tx64x64
- ext_intra
- intra_interp
- filter_intra
- intra_edge
- intrabc
- interintra
- wedge
- compound_segment
- ext_refs
- global_motion
- new_quant
- supertx
- ans
- loop_restoration
- striped_loop_restoration
- ext_partition
- ext_partition_types
- ext_partition_types_ab
- unpoison_partition_ctx
- ext_tile
- motion_var
- ncobmc
- warped_motion
- q_adapt_probs
- inter_stats_only
- palette_delta_encoding
- rawbits
- kf_ctx
- pvq
- cfl
- xiphrc
- dct_only
- daala_tx
- daala_dct4
- daala_dct8
- daala_dct16
- daala_dct32
- daala_dct64
- cb4x4
- chroma_2x2
- chroma_sub8x8
- frame_size
- ext_delta_q
- adapt_scan
- parallel_deblocking
- deblock_13tap
- loopfiltering_across_tiles
- tempmv_signaling
- rd_debug
- reference_buffer
- coef_interleave
- entropy_stats
- masked_tx
- dependent_horztiles
- dist_8x8
- palette_throughput
- ref_adapt
- lv_map
- ctx1d
- txk_sel
- mv_compress
- segment_zeromv
- frame_superres
- new_multisymbol
- compound_singleref
- aom_qm
- one_sided_compound
- ext_comp_refs
- smooth_hv
- var_refs
- lgt
- lgt_from_pred
- sbl_symbol
- ncobmc_adapt_weight
- bgsprite
- var_tx_no_tx_mode
- mrc_tx
- lpf_direct
- loopfilter_level
- no_frame_context_signaling
- txmg
- max_tile
- hash_me
- colorspace_headers
- mfmv
- frame_marker
- jnt_comp
- frame_sign_bias
- ext_skip
- obu
- amvr
- lpf_sb
- opt_ref_mv
- tmv
- restrict_compressed_hdr
- horzonly_frame_superres
-"
-CONFIG_LIST="
- dependency_tracking
- external_build
- install_docs
- install_bins
- install_libs
- install_srcs
- debug
- gprof
- gcov
- rvct
- gcc
- msvs
- pic
- big_endian
-
- codec_srcs
- debug_libs
-
- runtime_cpu_detect
- postproc
- multithread
- internal_stats
- ${CODECS}
- ${CODEC_FAMILIES}
- static_msvcrt
- spatial_resampling
- realtime_only
- shared
- static
- small
- postproc_visualizer
- os_support
- unit_tests
- webm_io
- libyuv
- accounting
- inspection
- decode_perf_tests
- encode_perf_tests
- bitstream_debug
- symbolrate
- coefficient_range_checking
- lowbitdepth
- highbitdepth
- experimental
- size_limit
- ${EXPERIMENT_LIST}
- analyzer
-"
-CMDLINE_SELECT="
- dependency_tracking
- external_build
- extra_warnings
- werror
- install_docs
- install_bins
- install_libs
- install_srcs
- debug
- gprof
- gcov
- pic
- optimizations
- ccache
- runtime_cpu_detect
- thumb
-
- libs
- examples
- analyzer
- docs
- tools
- libc
- as
- size_limit
- codec_srcs
- debug_libs
-
- postproc
- multithread
- internal_stats
- ${CODECS}
- ${CODEC_FAMILIES}
- static_msvcrt
- spatial_resampling
- realtime_only
- shared
- static
- small
- postproc_visualizer
- unit_tests
- webm_io
- libyuv
- accounting
- inspection
- decode_perf_tests
- encode_perf_tests
- coefficient_range_checking
- bitstream_debug
- symbolrate
- lowbitdepth
- highbitdepth
- experimental
- adopted_experiments
- colorspace_headers
-"
-
-process_cmdline() {
- for opt do
- optval="${opt#*=}"
- case "$opt" in
- --disable-codecs)
- for c in ${CODEC_FAMILIES}; do disable_codec $c; done
- ;;
- --enable-?*|--disable-?*)
- eval `echo "$opt" | sed 's/--/action=/;s/-/ option=/;s/-/_/g'`
- if is_in ${option} ${EXPERIMENT_LIST}; then
- if enabled experimental; then
- ${action}_feature $option
- else
- log_echo "Ignoring $opt -- not in experimental mode."
- fi
- elif is_in ${option} "${CODECS} ${CODEC_FAMILIES}"; then
- ${action}_codec ${option}
- else
- process_common_cmdline $opt
- fi
- ;;
- *) process_common_cmdline "$opt"
- ;;
- esac
- done
-}
-
-post_process_cmdline() {
- c=""
-
- # Enable all detected codecs, if they haven't been disabled
- for c in ${CODECS}; do soft_enable $c; done
-
- # Enable the codec family if any component of that family is enabled
- for c in ${CODECS}; do
- enabled $c && enable_feature ${c%_*}
- done
-
- # Set the {en,de}coders variable if any algorithm in that class is enabled
- for c in ${CODECS}; do
- enabled ${c} && enable_feature ${c##*_}s
- done
-
- enable_feature cb4x4
-
- # Enable adopted experiments by default
- soft_enable adopted_experiments
- if enabled adopted_experiments; then
- soft_enable chroma_sub8x8
- soft_enable rect_tx
- soft_enable global_motion
- soft_enable ext_tx
- soft_enable cdef
- soft_enable ext_intra
- soft_enable intra_edge
- soft_enable mv_compress
- soft_enable ext_refs
- soft_enable dual_filter
- soft_enable motion_var
- soft_enable warped_motion
- soft_enable var_tx
- soft_enable wedge
- soft_enable compound_segment
- soft_enable interintra
- soft_enable one_sided_compound
- soft_enable convolve_round
- soft_enable aom_qm
- soft_enable dist_8x8
- soft_enable cdef_singlepass
- soft_enable loop_restoration
-
- # Provisional adopted
- soft_enable reference_buffer
- soft_enable loopfiltering_across_tiles
- soft_enable palette_throughput
- soft_enable smooth_hv
- soft_enable tempmv_signaling
- soft_enable ext_comp_refs
- soft_enable ext_delta_q
- soft_enable parallel_deblocking
- fi
-
- # Enable low-bitdepth pixel pipeline by default
- soft_enable lowbitdepth
-
- # Enable LBD/HBD txfm consistency tool
- soft_enable txmg
-
- # Fix up experiment dependencies
- enabled pvq && disable_feature chroma_2x2
- enabled pvq && disable_feature rect_tx
- enabled pvq && disable_feature ext_tx
- enabled pvq && disable_feature var_tx
- enabled pvq && disable_feature highbitdepth
- enabled pvq && disable_feature lgt
- enabled pvq && disable_feature mrc_tx
- enabled lv_map && disable_feature mrc_tx
- enabled supertx && disable_feature mrc_tx
- enabled coef_interleave && disable_feature mrc_tx
- enabled pvq && disable_feature palette_throughput
- enabled mrc_tx && enable_feature ext_tx
- enabled mrc_tx && enable_feature var_tx
- enabled txk_sel && soft_enable lv_map
- enabled ctx1d && soft_enable lv_map
- enabled ctx1d && soft_enable ext_tx
- enabled compound_round && soft_enable convolve_round
- enabled intra_edge && enable_feature ext_intra
- enabled chroma_2x2 && disable_feature chroma_sub8x8
- enabled chroma_sub8x8 && enable_feature cb4x4
- enabled ncobmc_adapt_weight && enable_feature motion_var
- enabled bgsprite && enable_feature global_motion
- enabled ext_comp_refs && enable_feature ext_refs
- enabled ext_comp_refs && enable_feature one_sided_compound
- enabled rect_tx_ext && enable_feature rect_tx
- enabled lgt_from_pred && enable_feature ext_tx
- enabled lgt_from_pred && disable_feature mrc_tx
- enabled cfl && enable_feature smooth_hv
- enabled cdef_singlepass && enable_feature cdef
- enabled new_multisymbol && enable_feature restrict_compressed_hdr
- enabled mfmv && enable_feature frame_marker
- enabled jnt_comp && enable_feature frame_marker
- enabled frame_sign_bias && enable_feature frame_marker
- enabled txmg && enable_feature highbitdepth
- enabled ext_skip && enable_feature frame_marker
- enabled ext_skip && enable_feature ext_refs
- enabled horzonly_frame_superres && enable_feature frame_superres
-
- if enabled rawbits && enabled ans; then
- log_echo "rawbits requires not ans, so disabling rawbits"
- disable_feature rawbits
- fi
- if enabled daala_tx; then
- enable_feature daala_dct4
- enable_feature daala_dct8
- enable_feature daala_dct16
- enable_feature daala_dct32
- enable_feature daala_dct64
- fi
- if enabled daala_dct64 && ! enabled tx64x64; then
- log_echo "daala_dct64 requires tx64x64, so disabling daala_dct64"
- disable_feature daala_dct64
- fi
- if enabled daala_dct4 || enabled daala_dct8 || enabled daala_dct16 ||
- enabled daala_dct32 || enabled daala_dct64; then
- disable_feature lgt
- enable_feature lowbitdepth
- fi
- if enabled var_tx_no_tx_mode && ! enabled var_tx; then
- log_echo "var_tx_no_tx_mode requires var_tx, so disabling var_tx_no_tx_mode"
- disable_feature var_tx_no_tx_mode
- fi
- if enabled ext_partition_types; then
- if enabled fp_mb_stats; then
- log_echo "ext_partition_types not compatible with fp_mb_stats;"
- log_echo "disabling fp_mb_stats"
- disable_feature fp_mb_stats
- fi
- if enabled supertx; then
- log_echo "ext_partition_types not compatible with supertx;"
- log_echo "disabling supertx"
- disable_feature supertx
- fi
- if ! enabled rect_tx; then
- log_echo "ext_partition_types requires rect_tx;"
- log_echo "enabling rect_tx;"
- enable_feature rect_tx
- fi
- fi
- # Enable accounting and inspection when building the analyzer
- if enabled analyzer; then
- soft_enable accounting
- soft_enable inspection
- fi
- # Enable hash_me if amvr is enabled
- if enabled amvr; then
- log_echo "amvr requires hash_me"
- enable_feature hash_me
- fi
-
- if enabled striped_loop_restoration && ! enabled loop_restoration ; then
- log_echo "striped_loop_restoration requires loop_restoration"
- log_echo "enable loop_restoration"
- enable_feature loop_restoration
- fi
- if enabled striped_loop_restoration && enabled frame_superres ; then
- log_echo "striped_loop_restoration not compatible with frame_superres"
- log_echo "disabling striped_loop_restoration"
- disable_feature striped_loop_restoration
- fi
-}
-
-process_targets() {
- enabled child || write_common_config_banner
- write_common_target_config_h ${BUILD_PFX}aom_config.h
- write_common_config_targets
-
- # Calculate the default distribution name, based on the enabled features
- cf=""
- DIST_DIR=aom
- for cf in $CODEC_FAMILIES; do
- if enabled ${cf}_encoder && enabled ${cf}_decoder; then
- DIST_DIR="${DIST_DIR}-${cf}"
- elif enabled ${cf}_encoder; then
- DIST_DIR="${DIST_DIR}-${cf}cx"
- elif enabled ${cf}_decoder; then
- DIST_DIR="${DIST_DIR}-${cf}dx"
- fi
- done
- enabled debug_libs && DIST_DIR="${DIST_DIR}-debug"
- enabled codec_srcs && DIST_DIR="${DIST_DIR}-src"
- ! enabled postproc && DIST_DIR="${DIST_DIR}-nopost"
- ! enabled multithread && DIST_DIR="${DIST_DIR}-nomt"
- ! enabled install_docs && DIST_DIR="${DIST_DIR}-nodocs"
- DIST_DIR="${DIST_DIR}-${tgt_isa}-${tgt_os}"
- case "${tgt_os}" in
- win*) enabled static_msvcrt && DIST_DIR="${DIST_DIR}mt" || DIST_DIR="${DIST_DIR}md"
- DIST_DIR="${DIST_DIR}-${tgt_cc}"
- ;;
- esac
- if [ -f "${source_path}/build/make/version.sh" ]; then
- ver=`"$source_path/build/make/version.sh" --bare "$source_path"`
- DIST_DIR="${DIST_DIR}-${ver}"
- VERSION_STRING=${ver}
- ver=${ver%%-*}
- VERSION_PATCH=${ver##*.}
- ver=${ver%.*}
- VERSION_MINOR=${ver##*.}
- ver=${ver#v}
- VERSION_MAJOR=${ver%.*}
- fi
- enabled child || cat <<EOF >> config.mk
-
-PREFIX=${prefix}
-ifeq (\$(MAKECMDGOALS),dist)
-DIST_DIR?=${DIST_DIR}
-else
-DIST_DIR?=\$(DESTDIR)${prefix}
-endif
-LIBSUBDIR=${libdir##${prefix}/}
-
-VERSION_STRING=${VERSION_STRING}
-
-VERSION_MAJOR=${VERSION_MAJOR}
-VERSION_MINOR=${VERSION_MINOR}
-VERSION_PATCH=${VERSION_PATCH}
-
-CONFIGURE_ARGS=${CONFIGURE_ARGS}
-EOF
- enabled child || echo "CONFIGURE_ARGS?=${CONFIGURE_ARGS}" >> config.mk
-
- #
- # Write makefiles for all enabled targets
- #
- for tgt in libs examples docs tools solution; do
- tgt_fn="$tgt-$toolchain.mk"
-
- if enabled $tgt; then
- echo "Creating makefiles for ${toolchain} ${tgt}"
- write_common_target_config_mk $tgt_fn ${BUILD_PFX}aom_config.h
- #write_${tgt}_config
- fi
- done
-
-}
-
-process_detect() {
- if enabled shared; then
- # Can only build shared libs on a subset of platforms. Doing this check
- # here rather than at option parse time because the target auto-detect
- # magic happens after the command line has been parsed.
- case "${tgt_os}" in
- linux|os2|darwin*|iphonesimulator*)
- # Supported platforms
- ;;
- *)
- if enabled gnu; then
- echo "--enable-shared is only supported on ELF; assuming this is OK"
- else
- die "--enable-shared only supported on ELF, OS/2, and Darwin for now"
- fi
- ;;
- esac
- fi
- if [ -z "$CC" ] || enabled external_build; then
- echo "Bypassing toolchain for environment detection."
- enable_feature external_build
- check_header() {
- log fake_check_header "$@"
- header=$1
- shift
- var=`echo $header | sed 's/[^A-Za-z0-9_]/_/g'`
- disable_feature $var
- # Headers common to all environments
- case $header in
- stdio.h)
- true;
- ;;
- *)
- result=false
- for d in "$@"; do
- [ -f "${d##-I}/$header" ] && result=true && break
- done
- ${result:-true}
- esac && enable_feature $var
-
- # Specialize windows and POSIX environments.
- case $toolchain in
- *-win*-*)
- # Don't check for any headers in Windows builds.
- false
- ;;
- *)
- case $header in
- pthread.h) true;;
- unistd.h) true;;
- *) false;;
- esac && enable_feature $var
- esac
- enabled $var
- }
- check_ld() {
- true
- }
- fi
- check_header stdio.h || die "Unable to invoke compiler: ${CC} ${CFLAGS}"
- check_ld <<EOF || die "Toolchain is unable to link executables"
-int main(void) {return 0;}
-EOF
- # check system headers
- check_header pthread.h
- check_header unistd.h # for sysconf(3) and friends.
-
- check_header aom/aom_integer.h -I${source_path} && enable_feature aom_ports
-
- check_ld <<EOF && enable_feature fexcept
-#define _GNU_SOURCE
-#include <fenv.h>
-int main(void) { (void)feenableexcept(FE_DIVBYZERO | FE_INVALID); return 0; }
-EOF
-}
-
-process_toolchain() {
- process_common_toolchain
-
- # Enable some useful compiler flags
- if enabled gcc; then
- enabled werror && check_add_cflags -Werror
- check_add_cflags -Wall
- check_add_cflags -Wdisabled-optimization
- check_add_cflags -Wfloat-conversion
- check_add_cflags -Wpointer-arith
- check_add_cflags -Wtype-limits
- check_add_cflags -Wvla
- check_add_cflags -Wimplicit-function-declaration
- check_add_cflags -Wuninitialized
- check_add_cflags -Wunused
- check_add_cflags -Wsign-compare
- check_add_cflags -Wstring-conversion
- check_add_cflags -Wlogical-op
- check_add_cflags -Wstack-usage=320000
- # Enabling the following warning (in combination with -Wunused above)
- # for C++ generates errors in third_party code including googletest and
- # libyuv. So enable it only for C code.
- check_cflags "-Wextra" && add_cflags_only "-Wextra"
- # Enabling the following warning for C++ generates some useless warnings
- # about some function parameters shadowing class member function names.
- # So, only enable this warning for C code.
- check_cflags "-Wshadow" && add_cflags_only "-Wshadow"
- if enabled mips || [ -z "${INLINE}" ]; then
- enabled extra_warnings || check_add_cflags -Wno-unused-function
- fi
- # gtest makes heavy use of undefined pre-processor symbols
- check_cflags "-Wundef" && add_cflags_only "-Wundef"
- # Avoid this warning for third_party C++ sources. Some reorganization
- # would be needed to apply this only to test/*.cc.
- check_cflags -Wshorten-64-to-32 && add_cflags_only -Wshorten-64-to-32
- fi
-
- if enabled icc; then
- enabled werror && check_add_cflags -Werror
- check_add_cflags -Wall
- check_add_cflags -Wpointer-arith
-
- # ICC has a number of floating point optimizations that we disable
- # in favor of deterministic output WRT to other compilers
- add_cflags -fp-model precise
- fi
-
- if enabled analyzer; then
- soft_enable wxwidgets
- if ! wx-config --version > /dev/null; then
- die "Couldn't find wx-config"
- fi
-
- add_cxxflags_only $(wx-config --cppflags)
- add_extralibs $(wx-config --libs)
- fi
-
- # Enable extra, harmless warnings. These might provide additional insight
- # to what the compiler is doing and why, but in general, but they shouldn't
- # be treated as fatal, even if we're treating warnings as errors.
- GCC_EXTRA_WARNINGS="
- -Wdisabled-optimization
- -Winline
- "
- enabled gcc && EXTRA_WARNINGS="${GCC_EXTRA_WARNINGS}"
- RVCT_EXTRA_WARNINGS="
- --remarks
- "
- enabled rvct && EXTRA_WARNINGS="${RVCT_EXTRA_WARNINGS}"
- if enabled extra_warnings; then
- for w in ${EXTRA_WARNINGS}; do
- check_add_cflags ${w}
- enabled gcc && enabled werror && check_add_cflags -Wno-error=${w}
- done
- fi
-
- # ccache only really works on gcc toolchains
- enabled gcc || soft_disable ccache
-
- # Enable the postbuild target if building for visual studio.
- case "$tgt_cc" in
- vs*) enable_feature msvs
- enable_feature solution
- vs_version=${tgt_cc##vs}
- VCPROJ_SFX=vcxproj
- gen_vcproj_cmd=${source_path}/build/make/gen_msvs_vcxproj.sh
- enabled werror && gen_vcproj_cmd="${gen_vcproj_cmd} --enable-werror"
- all_targets="${all_targets} solution"
- INLINE="__forceinline"
- ;;
- esac
-
- # Other toolchain specific defaults
- case $toolchain in x86*) soft_enable postproc;; esac
-
- if enabled postproc_visualizer; then
- enabled postproc || die "postproc_visualizer requires postproc to be enabled"
- fi
-
- # Enable unit tests by default if we have a working C++ compiler.
- case "$toolchain" in
- *-vs*)
- soft_enable unit_tests
- soft_enable webm_io
- soft_enable libyuv
- ;;
- *-android-*)
- soft_enable webm_io
- soft_enable libyuv
- # GTestLog must be modified to use Android logging utilities.
- ;;
- *-darwin-*)
- # iOS/ARM builds do not work with gtest. This does not match
- # x86 targets.
- ;;
- *-iphonesimulator-*)
- soft_enable webm_io
- soft_enable libyuv
- ;;
- *-win*)
- # Some mingw toolchains don't have pthread available by default.
- # Treat these more like visual studio where threading in gtest
- # would be disabled for the same reason.
- check_cxx "$@" <<EOF && soft_enable unit_tests
-int z;
-EOF
- check_cxx "$@" <<EOF && soft_enable webm_io
-int z;
-EOF
- check_cxx "$@" <<EOF && soft_enable libyuv
-int z;
-EOF
- ;;
- *)
- enabled pthread_h && check_cxx "$@" <<EOF && soft_enable unit_tests
-int z;
-EOF
- check_cxx "$@" <<EOF && soft_enable webm_io
-int z;
-EOF
- check_cxx "$@" <<EOF && soft_enable libyuv
-int z;
-EOF
- ;;
- esac
- # libwebm needs to be linked with C++ standard library
- enabled webm_io && LD=${CXX}
-
- # append any user defined extra cflags
- if [ -n "${extra_cflags}" ] ; then
- check_add_cflags ${extra_cflags} || \
- die "Requested extra CFLAGS '${extra_cflags}' not supported by compiler"
- fi
- if [ -n "${extra_cxxflags}" ]; then
- check_add_cxxflags ${extra_cxxflags} || \
- die "Requested extra CXXFLAGS '${extra_cxxflags}' not supported by compiler"
- fi
-}
-
-
-##
-## END APPLICATION SPECIFIC CONFIGURATION
-##
-CONFIGURE_ARGS="$@"
-process "$@"
-print_webm_license ${BUILD_PFX}aom_config.c "/*" " */"
-cat <<EOF >> ${BUILD_PFX}aom_config.c
-#include "aom/aom_codec.h"
-static const char* const cfg = "$CONFIGURE_ARGS";
-const char *aom_codec_build_config(void) {return cfg;}
-EOF