789 lines · 24.5 KB · Text
RawDownload
#!/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 << EOFAdvanced 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-A8all_platforms="${all_platforms} armv7-darwin-gcc"    #neon Cortex-A8all_platforms="${all_platforms} armv7-linux-rvct"    #neon Cortex-A8all_platforms="${all_platforms} armv7-linux-gcc"     #neon Cortex-A8all_platforms="${all_platforms} armv7-none-rvct"     #neon Cortex-A8all_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-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-win32-vs16"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} x86_64-win64-vs16"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"  fifi # check installed doxygen versiondoxy_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 doxygenfi # 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_docsenable_feature install_binsenable_feature install_libs enable_feature staticenable_feature optimizationsenable_feature dependency_trackingenable_feature spatial_resamplingenable_feature multithreadenable_feature os_supportenable_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    rate_ctrl"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}elseDIST_DIR?=\$(DESTDIR)${prefix}endif

Lines 1–500 of 789.

Keyboard shortcuts

General

Show keyboard shortcuts
?
Focus the current search
/

Issues and pull requests

Open filters
f

Issues, pull requests and Inbox

Select next item
j↓
Select previous item
k↑
Open selected item
Enter
Dismiss filters or clear selection
Esc

Repository code

Go to file
t