123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787 |
- #!/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_tools} tools
- ${toggle_docs} documentation
- ${toggle_unit_tests} unit tests
- ${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]
- ${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_vp9_highbitdepth} use VP9 high bit depth (10/12) profiles
- ${toggle_better_hw_compatibility}
- enable encoder to produce streams with better
- hardware decoder compatibility
- ${toggle_vp8} VP8 codec support
- ${toggle_vp9} VP9 codec support
- ${toggle_internal_stats} output of encoder internal stats for debug, if supported (encoders)
- ${toggle_postproc} postprocessing
- ${toggle_vp9_postproc} vp9 specific 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_onthefly_bitpacking} enable on-the-fly bitpacking in real-time encoding
- ${toggle_error_concealment} enable this option to get a decoder which is able to conceal losses
- ${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_multi_res_encoding} enable multiple-resolution encoding
- ${toggle_temporal_denoising} enable temporal denoising and disable the spatial denoiser
- ${toggle_vp9_temporal_denoising}
- enable vp9 temporal denoising
- ${toggle_webm_io} enable input from and output to WebM container
- ${toggle_libyuv} enable libyuv
- 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-android-gcc"
- all_platforms="${all_platforms} arm64-darwin-gcc"
- all_platforms="${all_platforms} arm64-linux-gcc"
- all_platforms="${all_platforms} arm64-win64-gcc"
- all_platforms="${all_platforms} arm64-win64-vs15"
- 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-gcc"
- 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} ppc64le-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-darwin17-gcc"
- all_platforms="${all_platforms} x86-darwin18-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-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-darwin17-gcc"
- all_platforms="${all_platforms} x86_64-darwin18-gcc"
- all_platforms="${all_platforms} x86_64-darwin19-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-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 tools docs"
- # 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}/vpx_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}/vp8" ] || disable_codec vp8
- [ -d "${source_path}/vp9" ] || disable_codec vp9
- # 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 temporal_denoising
- CODECS="
- vp8_encoder
- vp8_decoder
- vp9_encoder
- vp9_decoder
- "
- CODEC_FAMILIES="
- vp8
- vp9
- "
- ARCH_LIST="
- arm
- mips
- x86
- x86_64
- ppc
- "
- ARCH_EXT_LIST_X86="
- mmx
- sse
- sse2
- sse3
- ssse3
- sse4_1
- avx
- avx2
- avx512
- "
- ARCH_EXT_LIST_LOONGSON="
- mmi
- "
- ARCH_EXT_LIST="
- neon
- neon_asm
- mips32
- dspr2
- msa
- mips64
- ${ARCH_EXT_LIST_X86}
- vsx
- ${ARCH_EXT_LIST_LOONGSON}
- "
- HAVE_LIST="
- ${ARCH_EXT_LIST}
- vpx_ports
- pthread_h
- unistd_h
- "
- EXPERIMENT_LIST="
- fp_mb_stats
- emulate_hardware
- non_greedy_mv
- "
- 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
- dequant_tokens
- dc_recon
- runtime_cpu_detect
- postproc
- vp9_postproc
- multithread
- internal_stats
- ${CODECS}
- ${CODEC_FAMILIES}
- encoders
- decoders
- static_msvcrt
- spatial_resampling
- realtime_only
- onthefly_bitpacking
- error_concealment
- shared
- static
- small
- postproc_visualizer
- os_support
- unit_tests
- webm_io
- libyuv
- decode_perf_tests
- encode_perf_tests
- multi_res_encoding
- temporal_denoising
- vp9_temporal_denoising
- consistent_recode
- coefficient_range_checking
- vp9_highbitdepth
- better_hw_compatibility
- experimental
- size_limit
- always_adjust_bpm
- bitstream_debug
- mismatch_debug
- ${EXPERIMENT_LIST}
- "
- 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
- tools
- docs
- libc
- as
- size_limit
- codec_srcs
- debug_libs
- dequant_tokens
- dc_recon
- postproc
- vp9_postproc
- multithread
- internal_stats
- ${CODECS}
- ${CODEC_FAMILIES}
- static_msvcrt
- spatial_resampling
- realtime_only
- onthefly_bitpacking
- error_concealment
- shared
- static
- small
- postproc_visualizer
- unit_tests
- webm_io
- libyuv
- decode_perf_tests
- encode_perf_tests
- multi_res_encoding
- temporal_denoising
- vp9_temporal_denoising
- consistent_recode
- coefficient_range_checking
- better_hw_compatibility
- vp9_highbitdepth
- experimental
- always_adjust_bpm
- bitstream_debug
- mismatch_debug
- "
- 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() {
- if enabled coefficient_range_checking; then
- echo "coefficient-range-checking is for decoders only, disabling encoders:"
- soft_disable vp8_encoder
- soft_disable vp9_encoder
- fi
- 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
- }
- process_targets() {
- enabled child || write_common_config_banner
- write_common_target_config_h ${BUILD_PFX}vpx_config.h
- write_common_config_targets
- enabled win_arm64_neon_h_workaround && write_win_arm64_neon_h_workaround ${BUILD_PFX}arm_neon.h
- # Calculate the default distribution name, based on the enabled features
- cf=""
- DIST_DIR=vpx
- 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 && ! enabled vp9_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 tools docs 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}vpx_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|solaris|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
- }
- check_lib() {
- 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
- # Use both check_header and check_lib here, since check_lib
- # could be a stub that always returns true.
- check_header pthread.h && check_lib -lpthread <<EOF || disable_feature pthread_h
- #include <pthread.h>
- #include <stddef.h>
- void *thread_check (void *);
- void *thread_check (void *obj){ return obj;};
- int main(void) { pthread_t thread_id; return pthread_create(&thread_id, NULL, thread_check, NULL); }
- EOF
- check_header unistd.h # for sysconf(3) and friends.
- check_header vpx/vpx_integer.h -I${source_path} && enable_feature vpx_ports
- if enabled neon && ! enabled external_build; then
- check_header arm_neon.h || die "Unable to find arm_neon.h"
- fi
- }
- 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 -Wdeclaration-after-statement
- check_add_cflags -Wdisabled-optimization
- check_add_cflags -Wfloat-conversion
- check_add_cflags -Wparentheses-equality
- check_add_cflags -Wpointer-arith
- check_add_cflags -Wtype-limits
- check_add_cflags -Wcast-qual
- check_add_cflags -Wvla
- check_add_cflags -Wimplicit-function-declaration
- check_add_cflags -Wmissing-declarations
- check_add_cflags -Wmissing-prototypes
- check_add_cflags -Wuninitialized
- check_add_cflags -Wunused
- check_add_cflags -Wextra
- # check_add_cflags also adds to cxxflags. gtest does not do well with
- # these flags so add them explicitly to CFLAGS only.
- check_cflags -Wundef && add_cflags_only -Wundef
- check_cflags -Wframe-larger-than=52000 && \
- add_cflags_only -Wframe-larger-than=52000
- if enabled mips || [ -z "${INLINE}" ]; then
- enabled extra_warnings || check_add_cflags -Wno-unused-function
- fi
- # Enforce c89 for c files. Don't be too strict about it though. Allow
- # gnu extensions like "//" for comments.
- check_cflags -std=gnu89 && add_cflags_only -std=gnu89
- # 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
- # Quiet gcc 6 vs 7 abi warnings:
- # https://gcc.gnu.org/bugzilla/show_bug.cgi?id=77728
- if enabled arm; then
- check_add_cxxflags -Wno-psabi
- fi
- # disable some warnings specific to libyuv.
- check_cxxflags -Wno-missing-declarations \
- && LIBYUV_CXXFLAGS="${LIBYUV_CXXFLAGS} -Wno-missing-declarations"
- check_cxxflags -Wno-missing-prototypes \
- && LIBYUV_CXXFLAGS="${LIBYUV_CXXFLAGS} -Wno-missing-prototypes"
- check_cxxflags -Wno-unused-parameter \
- && LIBYUV_CXXFLAGS="${LIBYUV_CXXFLAGS} -Wno-unused-parameter"
- 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
- # 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
- if enabled mips; then
- enable_feature dequant_tokens
- enable_feature dc_recon
- fi
- if enabled internal_stats; then
- enable_feature vp9_postproc
- fi
- # 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="__inline"
- ;;
- 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-*)
- check_add_cxxflags -std=c++11 && 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-*)
- check_add_cxxflags -std=c++11 && 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_add_cxxflags -std=c++11 && soft_enable unit_tests \
- && soft_enable webm_io
- check_cxx "$@" <<EOF && soft_enable libyuv
- int z;
- EOF
- ;;
- *)
- enabled pthread_h && check_add_cxxflags -std=c++11 \
- && soft_enable unit_tests
- check_add_cxxflags -std=c++11 && soft_enable webm_io
- 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}vpx_config.c "/*" " */"
- cat <<EOF >> ${BUILD_PFX}vpx_config.c
- #include "vpx/vpx_codec.h"
- static const char* const cfg = "$CONFIGURE_ARGS";
- const char *vpx_codec_build_config(void) {return cfg;}
- EOF
|