diff options
author | trav90 <travawine@palemoon.org> | 2018-10-15 21:45:30 -0500 |
---|---|---|
committer | trav90 <travawine@palemoon.org> | 2018-10-15 21:45:30 -0500 |
commit | 68569dee1416593955c1570d638b3d9250b33012 (patch) | |
tree | d960f017cd7eba3f125b7e8a813789ee2e076310 /third_party/aom/configure | |
parent | 07c17b6b98ed32fcecff15c083ab0fd878de3cf0 (diff) | |
download | UXP-68569dee1416593955c1570d638b3d9250b33012.tar UXP-68569dee1416593955c1570d638b3d9250b33012.tar.gz UXP-68569dee1416593955c1570d638b3d9250b33012.tar.lz UXP-68569dee1416593955c1570d638b3d9250b33012.tar.xz UXP-68569dee1416593955c1570d638b3d9250b33012.zip |
Import aom library
This is the reference implementation for the Alliance for Open Media's av1 video code.
The commit used was 4d668d7feb1f8abd809d1bca0418570a7f142a36.
Diffstat (limited to 'third_party/aom/configure')
-rwxr-xr-x | third_party/aom/configure | 865 |
1 files changed, 865 insertions, 0 deletions
diff --git a/third_party/aom/configure b/third_party/aom/configure new file mode 100755 index 000000000..83ec996ce --- /dev/null +++ b/third_party/aom/configure @@ -0,0 +1,865 @@ +#!/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_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_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_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} armv6-linux-rvct" +all_platforms="${all_platforms} armv6-linux-gcc" +all_platforms="${all_platforms} armv6-none-rvct" +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} 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_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} 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" + +# all targets available are enabled, by default. +for t in ${all_targets}; do + [ -f "${source_path}/${t}.mk" ] && enable_feature ${t} +done + +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 + +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=" + edsp + media + 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 + var_tx + rect_tx + ref_mv + tpl_mv + dual_filter + convolve_round + compound_round + ext_tx + tx64x64 + sub8x8_mc + ext_intra + intra_interp + filter_intra + intrabc + ext_inter + interintra + wedge + compound_segment + ext_refs + global_motion + new_quant + supertx + ans + ec_multisymbol + new_tokenset + loop_restoration + ext_partition + ext_partition_types + unpoison_partition_ctx + ext_tile + motion_var + ncobmc + warped_motion + q_adapt_probs + subframe_prob_update + bitstream_debug + alt_intra + palette + palette_delta_encoding + daala_ec + rawbits + ec_smallmul + pvq + cfl + xiphrc + cb4x4 + chroma_2x2 + chroma_sub8x8 + frame_size + delta_q + ext_delta_q + adapt_scan + filter_7bit + parallel_deblocking + parallel_deblocking_15tap + loopfiltering_across_tiles + tile_groups + ec_adapt + tempmv_signaling + rd_debug + reference_buffer + coef_interleave + entropy_stats + masked_tx + dependent_horztiles + daala_dist + tripred + palette_throughput + ref_adapt + lv_map + txk_sel + mv_compress + frame_superres + new_multisymbol + compound_singleref + aom_qm + lowdelay_compound +" +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} + encoders + decoders + static_msvcrt + spatial_resampling + realtime_only + onthefly_bitpacking + error_concealment + shared + static + small + postproc_visualizer + os_support + unit_tests + webm_io + libyuv + accounting + inspection + decode_perf_tests + encode_perf_tests + 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 + libc + as + size_limit + codec_srcs + debug_libs + + 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 + accounting + inspection + decode_perf_tests + encode_perf_tests + coefficient_range_checking + lowbitdepth + aom_highbitdepth + highbitdepth + experimental +" + +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 adopted experiments by default + soft_enable ref_mv + soft_enable cb4x4 + soft_enable filter_7bit + soft_enable reference_buffer + soft_enable delta_q + soft_enable tile_groups + soft_enable rect_tx + soft_enable global_motion + soft_enable cdef + soft_enable ec_adapt + soft_enable new_tokenset + soft_enable ext_intra + soft_enable mv_compress + soft_enable ext_refs + soft_enable dual_filter + soft_enable motion_var + soft_enable warped_motion + soft_enable ext_delta_q + + # Backwards/jenkins compatibility with --enable-aom-highbitdepth + enabled aom_highbitdepth && enable_feature highbitdepth + + # Enable low-bitdepth pixel pipeline by default + soft_enable lowbitdepth + + ! enabled ans && soft_enable daala_ec + soft_enable ec_multisymbol + soft_enable palette + soft_enable alt_intra + soft_enable palette_throughput + + # Fix up experiment dependencies + enabled pvq && enable_feature ec_adapt + enabled ec_adapt && enable_feature ec_multisymbol + enabled new_tokenset && enable_feature ec_multisymbol + enabled new_multisymbol && enable_feature ec_multisymbol + enabled ec_multisymbol && ! enabled ans && soft_enable daala_ec + enabled ec_multisymbol && ! enabled daala_ec && soft_enable ans + enabled palette_throughput && soft_enable palette + enabled ext_delta_q && soft_enable delta_q + enabled txk_sel && soft_enable lv_map + enabled compound_round && soft_enable convolve_round + if enabled rawbits && ! enabled daala_ec; then + log_echo "rawbits requires daala_ec, so disabling rawbits" + disable_feature rawbits + fi + if enabled ec_smallmul && ! enabled daala_ec; then + log_echo "ec_smallmul requires daala_ec, so disabling ec_smallmul" + disable_feature ec_smallmul + fi + if enabled ext_tile; then + log_echo "ext_tile not compatible with reference_buffer, so" + log_echo "disabling reference_buffer" + disable_feature reference_buffer + fi + if enabled ext_tile; then + log_echo "ext_tile not compatible with tile_groups, so" + log_echo "disabling tile_groups" + disable_feature tile_groups + fi + # Enable accounting and inspection when building the analyzer + if enabled analyzer; then + soft_enable accounting + soft_enable inspection + 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 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 -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 |