11184aebb761cbeac9124c37189a80a1a58f04b6bhkuang#!/bin/sh 290d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber## 3f71323e297a928af368937089d3ed71239786f86Andreas Huber## configure.sh 490d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber## 5f71323e297a928af368937089d3ed71239786f86Andreas Huber## This script is sourced by the main configure script and contains 6f71323e297a928af368937089d3ed71239786f86Andreas Huber## utility functions and other common bits that aren't strictly libvpx 7f71323e297a928af368937089d3ed71239786f86Andreas Huber## related. 8f71323e297a928af368937089d3ed71239786f86Andreas Huber## 9f71323e297a928af368937089d3ed71239786f86Andreas Huber## This build system is based in part on the FFmpeg configure script. 1090d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber## 1190d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber 1290d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber 1390d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber# 1490d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber# Logging / Output Functions 1590d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber# 1690d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huberdie_unknown(){ 17da49e34c1fb5e99681f4ad99c21d9cfd83eddb96Vignesh Venkatasubramanian echo "Unknown option \"$1\"." 18da49e34c1fb5e99681f4ad99c21d9cfd83eddb96Vignesh Venkatasubramanian echo "See $0 --help for available options." 19da49e34c1fb5e99681f4ad99c21d9cfd83eddb96Vignesh Venkatasubramanian clean_temp_files 20da49e34c1fb5e99681f4ad99c21d9cfd83eddb96Vignesh Venkatasubramanian exit 1 2190d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber} 2290d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber 2390d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huberdie() { 24da49e34c1fb5e99681f4ad99c21d9cfd83eddb96Vignesh Venkatasubramanian echo "$@" 25da49e34c1fb5e99681f4ad99c21d9cfd83eddb96Vignesh Venkatasubramanian echo 26da49e34c1fb5e99681f4ad99c21d9cfd83eddb96Vignesh Venkatasubramanian echo "Configuration failed. This could reflect a misconfiguration of your" 27da49e34c1fb5e99681f4ad99c21d9cfd83eddb96Vignesh Venkatasubramanian echo "toolchains, improper options selected, or another problem. If you" 28da49e34c1fb5e99681f4ad99c21d9cfd83eddb96Vignesh Venkatasubramanian echo "don't see any useful error messages above, the next step is to look" 29da49e34c1fb5e99681f4ad99c21d9cfd83eddb96Vignesh Venkatasubramanian echo "at the configure error log file ($logfile) to determine what" 30da49e34c1fb5e99681f4ad99c21d9cfd83eddb96Vignesh Venkatasubramanian echo "configure was trying to do when it died." 31da49e34c1fb5e99681f4ad99c21d9cfd83eddb96Vignesh Venkatasubramanian clean_temp_files 32da49e34c1fb5e99681f4ad99c21d9cfd83eddb96Vignesh Venkatasubramanian exit 1 3390d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber} 3490d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber 3590d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huberlog(){ 36da49e34c1fb5e99681f4ad99c21d9cfd83eddb96Vignesh Venkatasubramanian echo "$@" >>$logfile 3790d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber} 3890d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber 3990d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huberlog_file(){ 40da49e34c1fb5e99681f4ad99c21d9cfd83eddb96Vignesh Venkatasubramanian log BEGIN $1 41da49e34c1fb5e99681f4ad99c21d9cfd83eddb96Vignesh Venkatasubramanian cat -n $1 >>$logfile 42da49e34c1fb5e99681f4ad99c21d9cfd83eddb96Vignesh Venkatasubramanian log END $1 4390d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber} 4490d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber 4590d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huberlog_echo() { 46da49e34c1fb5e99681f4ad99c21d9cfd83eddb96Vignesh Venkatasubramanian echo "$@" 47da49e34c1fb5e99681f4ad99c21d9cfd83eddb96Vignesh Venkatasubramanian log "$@" 4890d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber} 4990d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber 5090d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huberfwrite () { 51da49e34c1fb5e99681f4ad99c21d9cfd83eddb96Vignesh Venkatasubramanian outfile=$1 52da49e34c1fb5e99681f4ad99c21d9cfd83eddb96Vignesh Venkatasubramanian shift 53da49e34c1fb5e99681f4ad99c21d9cfd83eddb96Vignesh Venkatasubramanian echo "$@" >> ${outfile} 5490d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber} 5590d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber 5690d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Hubershow_help_pre(){ 57da49e34c1fb5e99681f4ad99c21d9cfd83eddb96Vignesh Venkatasubramanian for opt in ${CMDLINE_SELECT}; do 58da49e34c1fb5e99681f4ad99c21d9cfd83eddb96Vignesh Venkatasubramanian opt2=`echo $opt | sed -e 's;_;-;g'` 59da49e34c1fb5e99681f4ad99c21d9cfd83eddb96Vignesh Venkatasubramanian if enabled $opt; then 60da49e34c1fb5e99681f4ad99c21d9cfd83eddb96Vignesh Venkatasubramanian eval "toggle_${opt}=\"--disable-${opt2}\"" 61da49e34c1fb5e99681f4ad99c21d9cfd83eddb96Vignesh Venkatasubramanian else 62da49e34c1fb5e99681f4ad99c21d9cfd83eddb96Vignesh Venkatasubramanian eval "toggle_${opt}=\"--enable-${opt2} \"" 63da49e34c1fb5e99681f4ad99c21d9cfd83eddb96Vignesh Venkatasubramanian fi 64da49e34c1fb5e99681f4ad99c21d9cfd83eddb96Vignesh Venkatasubramanian done 6590d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber 66da49e34c1fb5e99681f4ad99c21d9cfd83eddb96Vignesh Venkatasubramanian cat <<EOF 6790d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas HuberUsage: configure [options] 6890d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas HuberOptions: 6990d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber 7090d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas HuberBuild options: 7190d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber --help print this message 7291037db265ecdd914a26e056cf69207b4f50924ehkuang --log=yes|no|FILE file configure log is written to [config.log] 7390d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber --target=TARGET target platform tuple [generic-gnu] 7490d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber --cpu=CPU optimize for a specific cpu rather than a family 7579f15823c34ae1e423108295e416213200bb280fAndreas Huber --extra-cflags=ECFLAGS add ECFLAGS to CFLAGS [$CFLAGS] 762263fc984bdc858ee931d3e35c87c404de923950Johann --extra-cxxflags=ECXXFLAGS add ECXXFLAGS to CXXFLAGS [$CXXFLAGS] 7790d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber ${toggle_extra_warnings} emit harmless warnings (always non-fatal) 7890d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber ${toggle_werror} treat warnings as errors, if possible 7990d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber (not available with all compilers) 8090d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber ${toggle_optimizations} turn on/off compiler optimization flags 8179f15823c34ae1e423108295e416213200bb280fAndreas Huber ${toggle_pic} turn on/off Position Independent Code 8290d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber ${toggle_ccache} turn on/off compiler cache 8390d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber ${toggle_debug} enable/disable debug mode 8490d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber ${toggle_gprof} enable/disable gprof profiling instrumentation 8590d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber ${toggle_gcov} enable/disable gcov coverage instrumentation 86ba164dffc5a6795bce97fae02b51ccf3330e15e4hkuang ${toggle_thumb} enable/disable building arm assembly in thumb mode 87da49e34c1fb5e99681f4ad99c21d9cfd83eddb96Vignesh Venkatasubramanian ${toggle_dependency_tracking} 88da49e34c1fb5e99681f4ad99c21d9cfd83eddb96Vignesh Venkatasubramanian disable to speed up one-time build 8990d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber 9090d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas HuberInstall options: 9190d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber ${toggle_install_docs} control whether docs are installed 9290d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber ${toggle_install_bins} control whether binaries are installed 9390d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber ${toggle_install_libs} control whether libraries are installed 9490d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber ${toggle_install_srcs} control whether sources are installed 9590d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber 9690d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber 9790d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas HuberEOF 9890d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber} 9990d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber 10090d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Hubershow_help_post(){ 101da49e34c1fb5e99681f4ad99c21d9cfd83eddb96Vignesh Venkatasubramanian cat <<EOF 10290d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber 10390d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber 10490d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas HuberNOTES: 10590d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber Object files are built at the place where configure is launched. 10690d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber 10790d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber All boolean options can be negated. The default value is the opposite 10890d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber of that shown above. If the option --disable-foo is listed, then 10990d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber the default value for foo is enabled. 11090d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber 11190d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas HuberSupported targets: 11290d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas HuberEOF 11390d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber show_targets ${all_platforms} 11490d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber echo 11590d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber exit 1 11690d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber} 11790d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber 11890d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Hubershow_targets() { 119da49e34c1fb5e99681f4ad99c21d9cfd83eddb96Vignesh Venkatasubramanian while [ -n "$*" ]; do 120da49e34c1fb5e99681f4ad99c21d9cfd83eddb96Vignesh Venkatasubramanian if [ "${1%%-*}" = "${2%%-*}" ]; then 121da49e34c1fb5e99681f4ad99c21d9cfd83eddb96Vignesh Venkatasubramanian if [ "${2%%-*}" = "${3%%-*}" ]; then 122da49e34c1fb5e99681f4ad99c21d9cfd83eddb96Vignesh Venkatasubramanian printf " %-24s %-24s %-24s\n" "$1" "$2" "$3" 123da49e34c1fb5e99681f4ad99c21d9cfd83eddb96Vignesh Venkatasubramanian shift; shift; shift 124da49e34c1fb5e99681f4ad99c21d9cfd83eddb96Vignesh Venkatasubramanian else 125da49e34c1fb5e99681f4ad99c21d9cfd83eddb96Vignesh Venkatasubramanian printf " %-24s %-24s\n" "$1" "$2" 126da49e34c1fb5e99681f4ad99c21d9cfd83eddb96Vignesh Venkatasubramanian shift; shift 127da49e34c1fb5e99681f4ad99c21d9cfd83eddb96Vignesh Venkatasubramanian fi 128da49e34c1fb5e99681f4ad99c21d9cfd83eddb96Vignesh Venkatasubramanian else 129da49e34c1fb5e99681f4ad99c21d9cfd83eddb96Vignesh Venkatasubramanian printf " %-24s\n" "$1" 130da49e34c1fb5e99681f4ad99c21d9cfd83eddb96Vignesh Venkatasubramanian shift 131da49e34c1fb5e99681f4ad99c21d9cfd83eddb96Vignesh Venkatasubramanian fi 132da49e34c1fb5e99681f4ad99c21d9cfd83eddb96Vignesh Venkatasubramanian done 13390d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber} 13490d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber 13590d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Hubershow_help() { 136da49e34c1fb5e99681f4ad99c21d9cfd83eddb96Vignesh Venkatasubramanian show_help_pre 137da49e34c1fb5e99681f4ad99c21d9cfd83eddb96Vignesh Venkatasubramanian show_help_post 13890d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber} 13990d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber 14090d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber# 14190d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber# List Processing Functions 14290d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber# 14390d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huberset_all(){ 144da49e34c1fb5e99681f4ad99c21d9cfd83eddb96Vignesh Venkatasubramanian value=$1 145da49e34c1fb5e99681f4ad99c21d9cfd83eddb96Vignesh Venkatasubramanian shift 146da49e34c1fb5e99681f4ad99c21d9cfd83eddb96Vignesh Venkatasubramanian for var in $*; do 147da49e34c1fb5e99681f4ad99c21d9cfd83eddb96Vignesh Venkatasubramanian eval $var=$value 148da49e34c1fb5e99681f4ad99c21d9cfd83eddb96Vignesh Venkatasubramanian done 14990d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber} 15090d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber 15190d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huberis_in(){ 152da49e34c1fb5e99681f4ad99c21d9cfd83eddb96Vignesh Venkatasubramanian value=$1 153da49e34c1fb5e99681f4ad99c21d9cfd83eddb96Vignesh Venkatasubramanian shift 154da49e34c1fb5e99681f4ad99c21d9cfd83eddb96Vignesh Venkatasubramanian for var in $*; do 155da49e34c1fb5e99681f4ad99c21d9cfd83eddb96Vignesh Venkatasubramanian [ $var = $value ] && return 0 156da49e34c1fb5e99681f4ad99c21d9cfd83eddb96Vignesh Venkatasubramanian done 157da49e34c1fb5e99681f4ad99c21d9cfd83eddb96Vignesh Venkatasubramanian return 1 15890d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber} 15990d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber 16090d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huberadd_cflags() { 161da49e34c1fb5e99681f4ad99c21d9cfd83eddb96Vignesh Venkatasubramanian CFLAGS="${CFLAGS} $@" 162da49e34c1fb5e99681f4ad99c21d9cfd83eddb96Vignesh Venkatasubramanian CXXFLAGS="${CXXFLAGS} $@" 1631b362b15af34006e6a11974088a46d42b903418eJohann} 1641b362b15af34006e6a11974088a46d42b903418eJohann 1651b362b15af34006e6a11974088a46d42b903418eJohannadd_cflags_only() { 166da49e34c1fb5e99681f4ad99c21d9cfd83eddb96Vignesh Venkatasubramanian CFLAGS="${CFLAGS} $@" 1671b362b15af34006e6a11974088a46d42b903418eJohann} 1681b362b15af34006e6a11974088a46d42b903418eJohann 1691b362b15af34006e6a11974088a46d42b903418eJohannadd_cxxflags_only() { 170da49e34c1fb5e99681f4ad99c21d9cfd83eddb96Vignesh Venkatasubramanian CXXFLAGS="${CXXFLAGS} $@" 17190d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber} 17290d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber 17390d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huberadd_ldflags() { 174da49e34c1fb5e99681f4ad99c21d9cfd83eddb96Vignesh Venkatasubramanian LDFLAGS="${LDFLAGS} $@" 17590d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber} 17690d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber 17790d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huberadd_asflags() { 178da49e34c1fb5e99681f4ad99c21d9cfd83eddb96Vignesh Venkatasubramanian ASFLAGS="${ASFLAGS} $@" 17990d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber} 18090d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber 18190d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huberadd_extralibs() { 182da49e34c1fb5e99681f4ad99c21d9cfd83eddb96Vignesh Venkatasubramanian extralibs="${extralibs} $@" 18390d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber} 18490d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber 18590d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber# 18690d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber# Boolean Manipulation Functions 18790d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber# 1881184aebb761cbeac9124c37189a80a1a58f04b6bhkuangenable_feature(){ 189da49e34c1fb5e99681f4ad99c21d9cfd83eddb96Vignesh Venkatasubramanian set_all yes $* 19090d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber} 19190d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber 1921184aebb761cbeac9124c37189a80a1a58f04b6bhkuangdisable_feature(){ 193da49e34c1fb5e99681f4ad99c21d9cfd83eddb96Vignesh Venkatasubramanian set_all no $* 19490d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber} 19590d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber 19690d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huberenabled(){ 197da49e34c1fb5e99681f4ad99c21d9cfd83eddb96Vignesh Venkatasubramanian eval test "x\$$1" = "xyes" 19890d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber} 19990d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber 20090d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huberdisabled(){ 201da49e34c1fb5e99681f4ad99c21d9cfd83eddb96Vignesh Venkatasubramanian eval test "x\$$1" = "xno" 20290d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber} 20390d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber 2042263fc984bdc858ee931d3e35c87c404de923950Johann# Iterates through positional parameters, checks to confirm the parameter has 2052263fc984bdc858ee931d3e35c87c404de923950Johann# not been explicitly (force) disabled, and enables the setting controlled by 2062263fc984bdc858ee931d3e35c87c404de923950Johann# the parameter when the setting is not disabled. 2072263fc984bdc858ee931d3e35c87c404de923950Johann# Note: Does NOT alter RTCD generation options ($RTCD_OPTIONS). 20890d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Hubersoft_enable() { 209da49e34c1fb5e99681f4ad99c21d9cfd83eddb96Vignesh Venkatasubramanian for var in $*; do 210da49e34c1fb5e99681f4ad99c21d9cfd83eddb96Vignesh Venkatasubramanian if ! disabled $var; then 211da49e34c1fb5e99681f4ad99c21d9cfd83eddb96Vignesh Venkatasubramanian enabled $var || log_echo " enabling $var" 212da49e34c1fb5e99681f4ad99c21d9cfd83eddb96Vignesh Venkatasubramanian enable_feature $var 213da49e34c1fb5e99681f4ad99c21d9cfd83eddb96Vignesh Venkatasubramanian fi 214da49e34c1fb5e99681f4ad99c21d9cfd83eddb96Vignesh Venkatasubramanian done 21590d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber} 21690d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber 2172263fc984bdc858ee931d3e35c87c404de923950Johann# Iterates through positional parameters, checks to confirm the parameter has 2182263fc984bdc858ee931d3e35c87c404de923950Johann# not been explicitly (force) enabled, and disables the setting controlled by 2192263fc984bdc858ee931d3e35c87c404de923950Johann# the parameter when the setting is not enabled. 2202263fc984bdc858ee931d3e35c87c404de923950Johann# Note: Does NOT alter RTCD generation options ($RTCD_OPTIONS). 22190d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Hubersoft_disable() { 222da49e34c1fb5e99681f4ad99c21d9cfd83eddb96Vignesh Venkatasubramanian for var in $*; do 223da49e34c1fb5e99681f4ad99c21d9cfd83eddb96Vignesh Venkatasubramanian if ! enabled $var; then 224da49e34c1fb5e99681f4ad99c21d9cfd83eddb96Vignesh Venkatasubramanian disabled $var || log_echo " disabling $var" 225da49e34c1fb5e99681f4ad99c21d9cfd83eddb96Vignesh Venkatasubramanian disable_feature $var 226da49e34c1fb5e99681f4ad99c21d9cfd83eddb96Vignesh Venkatasubramanian fi 227da49e34c1fb5e99681f4ad99c21d9cfd83eddb96Vignesh Venkatasubramanian done 22890d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber} 22990d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber 23090d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber# 23190d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber# Text Processing Functions 23290d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber# 23390d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Hubertoupper(){ 234da49e34c1fb5e99681f4ad99c21d9cfd83eddb96Vignesh Venkatasubramanian echo "$@" | tr abcdefghijklmnopqrstuvwxyz ABCDEFGHIJKLMNOPQRSTUVWXYZ 23590d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber} 23690d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber 23790d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Hubertolower(){ 238da49e34c1fb5e99681f4ad99c21d9cfd83eddb96Vignesh Venkatasubramanian echo "$@" | tr ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyz 23990d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber} 24090d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber 24190d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber# 24290d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber# Temporary File Functions 24390d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber# 24490d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Hubersource_path=${0%/*} 2451184aebb761cbeac9124c37189a80a1a58f04b6bhkuangenable_feature source_path_used 246ba6c59e9d7d7013b3906b6f4230b663422681848Vignesh Venkatasubramanianif [ -z "$source_path" ] || [ "$source_path" = "." ]; then 247da49e34c1fb5e99681f4ad99c21d9cfd83eddb96Vignesh Venkatasubramanian source_path="`pwd`" 248da49e34c1fb5e99681f4ad99c21d9cfd83eddb96Vignesh Venkatasubramanian disable_feature source_path_used 24990d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huberfi 25090d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber 25190d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huberif test ! -z "$TMPDIR" ; then 252da49e34c1fb5e99681f4ad99c21d9cfd83eddb96Vignesh Venkatasubramanian TMPDIRx="${TMPDIR}" 25390d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huberelif test ! -z "$TEMPDIR" ; then 254da49e34c1fb5e99681f4ad99c21d9cfd83eddb96Vignesh Venkatasubramanian TMPDIRx="${TEMPDIR}" 25590d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huberelse 256da49e34c1fb5e99681f4ad99c21d9cfd83eddb96Vignesh Venkatasubramanian TMPDIRx="/tmp" 25790d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huberfi 2581184aebb761cbeac9124c37189a80a1a58f04b6bhkuangRAND=$(awk 'BEGIN { srand(); printf "%d\n",(rand() * 32768)}') 2591184aebb761cbeac9124c37189a80a1a58f04b6bhkuangTMP_H="${TMPDIRx}/vpx-conf-$$-${RAND}.h" 2601184aebb761cbeac9124c37189a80a1a58f04b6bhkuangTMP_C="${TMPDIRx}/vpx-conf-$$-${RAND}.c" 2611184aebb761cbeac9124c37189a80a1a58f04b6bhkuangTMP_CC="${TMPDIRx}/vpx-conf-$$-${RAND}.cc" 2621184aebb761cbeac9124c37189a80a1a58f04b6bhkuangTMP_O="${TMPDIRx}/vpx-conf-$$-${RAND}.o" 2631184aebb761cbeac9124c37189a80a1a58f04b6bhkuangTMP_X="${TMPDIRx}/vpx-conf-$$-${RAND}.x" 2641184aebb761cbeac9124c37189a80a1a58f04b6bhkuangTMP_ASM="${TMPDIRx}/vpx-conf-$$-${RAND}.asm" 26590d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber 26690d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huberclean_temp_files() { 267da49e34c1fb5e99681f4ad99c21d9cfd83eddb96Vignesh Venkatasubramanian rm -f ${TMP_C} ${TMP_CC} ${TMP_H} ${TMP_O} ${TMP_X} ${TMP_ASM} 268da49e34c1fb5e99681f4ad99c21d9cfd83eddb96Vignesh Venkatasubramanian enabled gcov && rm -f ${TMP_C%.c}.gcno ${TMP_CC%.cc}.gcno 26990d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber} 27090d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber 27190d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber# 27290d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber# Toolchain Check Functions 27390d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber# 27490d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Hubercheck_cmd() { 275da49e34c1fb5e99681f4ad99c21d9cfd83eddb96Vignesh Venkatasubramanian enabled external_build && return 276da49e34c1fb5e99681f4ad99c21d9cfd83eddb96Vignesh Venkatasubramanian log "$@" 277da49e34c1fb5e99681f4ad99c21d9cfd83eddb96Vignesh Venkatasubramanian "$@" >>${logfile} 2>&1 27890d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber} 27990d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber 28090d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Hubercheck_cc() { 281da49e34c1fb5e99681f4ad99c21d9cfd83eddb96Vignesh Venkatasubramanian log check_cc "$@" 282da49e34c1fb5e99681f4ad99c21d9cfd83eddb96Vignesh Venkatasubramanian cat >${TMP_C} 283da49e34c1fb5e99681f4ad99c21d9cfd83eddb96Vignesh Venkatasubramanian log_file ${TMP_C} 284da49e34c1fb5e99681f4ad99c21d9cfd83eddb96Vignesh Venkatasubramanian check_cmd ${CC} ${CFLAGS} "$@" -c -o ${TMP_O} ${TMP_C} 28590d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber} 28690d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber 2871b362b15af34006e6a11974088a46d42b903418eJohanncheck_cxx() { 288da49e34c1fb5e99681f4ad99c21d9cfd83eddb96Vignesh Venkatasubramanian log check_cxx "$@" 289da49e34c1fb5e99681f4ad99c21d9cfd83eddb96Vignesh Venkatasubramanian cat >${TMP_CC} 290da49e34c1fb5e99681f4ad99c21d9cfd83eddb96Vignesh Venkatasubramanian log_file ${TMP_CC} 291da49e34c1fb5e99681f4ad99c21d9cfd83eddb96Vignesh Venkatasubramanian check_cmd ${CXX} ${CXXFLAGS} "$@" -c -o ${TMP_O} ${TMP_CC} 2921b362b15af34006e6a11974088a46d42b903418eJohann} 2931b362b15af34006e6a11974088a46d42b903418eJohann 29490d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Hubercheck_cpp() { 295da49e34c1fb5e99681f4ad99c21d9cfd83eddb96Vignesh Venkatasubramanian log check_cpp "$@" 296da49e34c1fb5e99681f4ad99c21d9cfd83eddb96Vignesh Venkatasubramanian cat > ${TMP_C} 297da49e34c1fb5e99681f4ad99c21d9cfd83eddb96Vignesh Venkatasubramanian log_file ${TMP_C} 298da49e34c1fb5e99681f4ad99c21d9cfd83eddb96Vignesh Venkatasubramanian check_cmd ${CC} ${CFLAGS} "$@" -E -o ${TMP_O} ${TMP_C} 29990d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber} 30090d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber 30190d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Hubercheck_ld() { 302da49e34c1fb5e99681f4ad99c21d9cfd83eddb96Vignesh Venkatasubramanian log check_ld "$@" 303da49e34c1fb5e99681f4ad99c21d9cfd83eddb96Vignesh Venkatasubramanian check_cc $@ \ 304da49e34c1fb5e99681f4ad99c21d9cfd83eddb96Vignesh Venkatasubramanian && check_cmd ${LD} ${LDFLAGS} "$@" -o ${TMP_X} ${TMP_O} ${extralibs} 30590d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber} 30690d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber 30790d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Hubercheck_header(){ 308da49e34c1fb5e99681f4ad99c21d9cfd83eddb96Vignesh Venkatasubramanian log check_header "$@" 309da49e34c1fb5e99681f4ad99c21d9cfd83eddb96Vignesh Venkatasubramanian header=$1 310da49e34c1fb5e99681f4ad99c21d9cfd83eddb96Vignesh Venkatasubramanian shift 311da49e34c1fb5e99681f4ad99c21d9cfd83eddb96Vignesh Venkatasubramanian var=`echo $header | sed 's/[^A-Za-z0-9_]/_/g'` 312da49e34c1fb5e99681f4ad99c21d9cfd83eddb96Vignesh Venkatasubramanian disable_feature $var 313da49e34c1fb5e99681f4ad99c21d9cfd83eddb96Vignesh Venkatasubramanian check_cpp "$@" <<EOF && enable_feature $var 31490d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber#include "$header" 31590d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huberint x; 31690d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas HuberEOF 31790d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber} 31890d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber 31990d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Hubercheck_cflags() { 320da49e34c1fb5e99681f4ad99c21d9cfd83eddb96Vignesh Venkatasubramanian log check_cflags "$@" 321da49e34c1fb5e99681f4ad99c21d9cfd83eddb96Vignesh Venkatasubramanian check_cc -Werror "$@" <<EOF 32290d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huberint x; 32390d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas HuberEOF 32490d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber} 32590d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber 3261b362b15af34006e6a11974088a46d42b903418eJohanncheck_cxxflags() { 327da49e34c1fb5e99681f4ad99c21d9cfd83eddb96Vignesh Venkatasubramanian log check_cxxflags "$@" 3281b362b15af34006e6a11974088a46d42b903418eJohann 329da49e34c1fb5e99681f4ad99c21d9cfd83eddb96Vignesh Venkatasubramanian # Catch CFLAGS that trigger CXX warnings 330da49e34c1fb5e99681f4ad99c21d9cfd83eddb96Vignesh Venkatasubramanian case "$CXX" in 331da49e34c1fb5e99681f4ad99c21d9cfd83eddb96Vignesh Venkatasubramanian *c++-analyzer|*clang++|*g++*) 332da49e34c1fb5e99681f4ad99c21d9cfd83eddb96Vignesh Venkatasubramanian check_cxx -Werror "$@" <<EOF 3331b362b15af34006e6a11974088a46d42b903418eJohannint x; 3341b362b15af34006e6a11974088a46d42b903418eJohannEOF 3351b362b15af34006e6a11974088a46d42b903418eJohann ;; 336da49e34c1fb5e99681f4ad99c21d9cfd83eddb96Vignesh Venkatasubramanian *) 337da49e34c1fb5e99681f4ad99c21d9cfd83eddb96Vignesh Venkatasubramanian check_cxx -Werror "$@" <<EOF 3381b362b15af34006e6a11974088a46d42b903418eJohannint x; 3391b362b15af34006e6a11974088a46d42b903418eJohannEOF 3401b362b15af34006e6a11974088a46d42b903418eJohann ;; 3411b362b15af34006e6a11974088a46d42b903418eJohann esac 3421b362b15af34006e6a11974088a46d42b903418eJohann} 3431b362b15af34006e6a11974088a46d42b903418eJohann 34490d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Hubercheck_add_cflags() { 345da49e34c1fb5e99681f4ad99c21d9cfd83eddb96Vignesh Venkatasubramanian check_cxxflags "$@" && add_cxxflags_only "$@" 346da49e34c1fb5e99681f4ad99c21d9cfd83eddb96Vignesh Venkatasubramanian check_cflags "$@" && add_cflags_only "$@" 34790d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber} 34890d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber 3492263fc984bdc858ee931d3e35c87c404de923950Johanncheck_add_cxxflags() { 3502263fc984bdc858ee931d3e35c87c404de923950Johann check_cxxflags "$@" && add_cxxflags_only "$@" 3512263fc984bdc858ee931d3e35c87c404de923950Johann} 3522263fc984bdc858ee931d3e35c87c404de923950Johann 35390d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Hubercheck_add_asflags() { 354da49e34c1fb5e99681f4ad99c21d9cfd83eddb96Vignesh Venkatasubramanian log add_asflags "$@" 355da49e34c1fb5e99681f4ad99c21d9cfd83eddb96Vignesh Venkatasubramanian add_asflags "$@" 35690d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber} 35790d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber 35890d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Hubercheck_add_ldflags() { 359da49e34c1fb5e99681f4ad99c21d9cfd83eddb96Vignesh Venkatasubramanian log add_ldflags "$@" 360da49e34c1fb5e99681f4ad99c21d9cfd83eddb96Vignesh Venkatasubramanian add_ldflags "$@" 36190d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber} 36290d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber 363538f6170b788de7408b06efc6613dc98579aa6a6Andreas Hubercheck_asm_align() { 364da49e34c1fb5e99681f4ad99c21d9cfd83eddb96Vignesh Venkatasubramanian log check_asm_align "$@" 365da49e34c1fb5e99681f4ad99c21d9cfd83eddb96Vignesh Venkatasubramanian cat >${TMP_ASM} <<EOF 366538f6170b788de7408b06efc6613dc98579aa6a6Andreas Hubersection .rodata 367538f6170b788de7408b06efc6613dc98579aa6a6Andreas Huberalign 16 368538f6170b788de7408b06efc6613dc98579aa6a6Andreas HuberEOF 369da49e34c1fb5e99681f4ad99c21d9cfd83eddb96Vignesh Venkatasubramanian log_file ${TMP_ASM} 370da49e34c1fb5e99681f4ad99c21d9cfd83eddb96Vignesh Venkatasubramanian check_cmd ${AS} ${ASFLAGS} -o ${TMP_O} ${TMP_ASM} 371da49e34c1fb5e99681f4ad99c21d9cfd83eddb96Vignesh Venkatasubramanian readelf -WS ${TMP_O} >${TMP_X} 372da49e34c1fb5e99681f4ad99c21d9cfd83eddb96Vignesh Venkatasubramanian log_file ${TMP_X} 373da49e34c1fb5e99681f4ad99c21d9cfd83eddb96Vignesh Venkatasubramanian if ! grep -q '\.rodata .* 16$' ${TMP_X}; then 374da49e34c1fb5e99681f4ad99c21d9cfd83eddb96Vignesh Venkatasubramanian die "${AS} ${ASFLAGS} does not support section alignment (nasm <=2.08?)" 375da49e34c1fb5e99681f4ad99c21d9cfd83eddb96Vignesh Venkatasubramanian fi 376538f6170b788de7408b06efc6613dc98579aa6a6Andreas Huber} 377538f6170b788de7408b06efc6613dc98579aa6a6Andreas Huber 3782ec72e65689c948e92b826ae1e867bf369e72f13Vignesh Venkatasubramanian# tests for -m$1 toggling the feature given in $2. If $2 is empty $1 is used. 3792ec72e65689c948e92b826ae1e867bf369e72f13Vignesh Venkatasubramaniancheck_gcc_machine_option() { 380da49e34c1fb5e99681f4ad99c21d9cfd83eddb96Vignesh Venkatasubramanian opt="$1" 381da49e34c1fb5e99681f4ad99c21d9cfd83eddb96Vignesh Venkatasubramanian feature="$2" 382da49e34c1fb5e99681f4ad99c21d9cfd83eddb96Vignesh Venkatasubramanian [ -n "$feature" ] || feature="$opt" 383da49e34c1fb5e99681f4ad99c21d9cfd83eddb96Vignesh Venkatasubramanian 384da49e34c1fb5e99681f4ad99c21d9cfd83eddb96Vignesh Venkatasubramanian if enabled gcc && ! disabled "$feature" && ! check_cflags "-m$opt"; then 385da49e34c1fb5e99681f4ad99c21d9cfd83eddb96Vignesh Venkatasubramanian RTCD_OPTIONS="${RTCD_OPTIONS}--disable-$feature " 386da49e34c1fb5e99681f4ad99c21d9cfd83eddb96Vignesh Venkatasubramanian else 387da49e34c1fb5e99681f4ad99c21d9cfd83eddb96Vignesh Venkatasubramanian soft_enable "$feature" 388da49e34c1fb5e99681f4ad99c21d9cfd83eddb96Vignesh Venkatasubramanian fi 3892ec72e65689c948e92b826ae1e867bf369e72f13Vignesh Venkatasubramanian} 3902ec72e65689c948e92b826ae1e867bf369e72f13Vignesh Venkatasubramanian 39190d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huberwrite_common_config_banner() { 392da49e34c1fb5e99681f4ad99c21d9cfd83eddb96Vignesh Venkatasubramanian print_webm_license config.mk "##" "" 393da49e34c1fb5e99681f4ad99c21d9cfd83eddb96Vignesh Venkatasubramanian echo '# This file automatically generated by configure. Do not edit!' >> config.mk 394da49e34c1fb5e99681f4ad99c21d9cfd83eddb96Vignesh Venkatasubramanian echo "TOOLCHAIN := ${toolchain}" >> config.mk 39590d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber 396da49e34c1fb5e99681f4ad99c21d9cfd83eddb96Vignesh Venkatasubramanian case ${toolchain} in 397da49e34c1fb5e99681f4ad99c21d9cfd83eddb96Vignesh Venkatasubramanian *-linux-rvct) 398da49e34c1fb5e99681f4ad99c21d9cfd83eddb96Vignesh Venkatasubramanian echo "ALT_LIBC := ${alt_libc}" >> config.mk 399da49e34c1fb5e99681f4ad99c21d9cfd83eddb96Vignesh Venkatasubramanian ;; 400da49e34c1fb5e99681f4ad99c21d9cfd83eddb96Vignesh Venkatasubramanian esac 40190d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber} 40290d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber 40390d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huberwrite_common_config_targets() { 404da49e34c1fb5e99681f4ad99c21d9cfd83eddb96Vignesh Venkatasubramanian for t in ${all_targets}; do 405da49e34c1fb5e99681f4ad99c21d9cfd83eddb96Vignesh Venkatasubramanian if enabled ${t}; then 406da49e34c1fb5e99681f4ad99c21d9cfd83eddb96Vignesh Venkatasubramanian if enabled child; then 407da49e34c1fb5e99681f4ad99c21d9cfd83eddb96Vignesh Venkatasubramanian fwrite config.mk "ALL_TARGETS += ${t}-${toolchain}" 408da49e34c1fb5e99681f4ad99c21d9cfd83eddb96Vignesh Venkatasubramanian else 409da49e34c1fb5e99681f4ad99c21d9cfd83eddb96Vignesh Venkatasubramanian fwrite config.mk "ALL_TARGETS += ${t}" 410da49e34c1fb5e99681f4ad99c21d9cfd83eddb96Vignesh Venkatasubramanian fi 411da49e34c1fb5e99681f4ad99c21d9cfd83eddb96Vignesh Venkatasubramanian fi 41290d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber true; 413da49e34c1fb5e99681f4ad99c21d9cfd83eddb96Vignesh Venkatasubramanian done 414da49e34c1fb5e99681f4ad99c21d9cfd83eddb96Vignesh Venkatasubramanian true 41590d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber} 41690d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber 41790d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huberwrite_common_target_config_mk() { 418da49e34c1fb5e99681f4ad99c21d9cfd83eddb96Vignesh Venkatasubramanian saved_CC="${CC}" 419da49e34c1fb5e99681f4ad99c21d9cfd83eddb96Vignesh Venkatasubramanian saved_CXX="${CXX}" 420da49e34c1fb5e99681f4ad99c21d9cfd83eddb96Vignesh Venkatasubramanian enabled ccache && CC="ccache ${CC}" 421da49e34c1fb5e99681f4ad99c21d9cfd83eddb96Vignesh Venkatasubramanian enabled ccache && CXX="ccache ${CXX}" 422da49e34c1fb5e99681f4ad99c21d9cfd83eddb96Vignesh Venkatasubramanian print_webm_license $1 "##" "" 42390d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber 424da49e34c1fb5e99681f4ad99c21d9cfd83eddb96Vignesh Venkatasubramanian cat >> $1 << EOF 42590d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber# This file automatically generated by configure. Do not edit! 42690d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas HuberSRC_PATH="$source_path" 42790d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas HuberSRC_PATH_BARE=$source_path 42890d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas HuberBUILD_PFX=${BUILD_PFX} 42990d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas HuberTOOLCHAIN=${toolchain} 43090d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas HuberASM_CONVERSION=${asm_conversion_cmd:-${source_path}/build/make/ads2gas.pl} 431ba164dffc5a6795bce97fae02b51ccf3330e15e4hkuangGEN_VCPROJ=${gen_vcproj_cmd} 432ba164dffc5a6795bce97fae02b51ccf3330e15e4hkuangMSVS_ARCH_DIR=${msvs_arch_dir} 43390d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber 43490d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas HuberCC=${CC} 4351b362b15af34006e6a11974088a46d42b903418eJohannCXX=${CXX} 43690d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas HuberAR=${AR} 43790d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas HuberLD=${LD} 43890d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas HuberAS=${AS} 43990d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas HuberSTRIP=${STRIP} 44090d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas HuberNM=${NM} 44190d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber 442f71323e297a928af368937089d3ed71239786f86Andreas HuberCFLAGS = ${CFLAGS} 4431b362b15af34006e6a11974088a46d42b903418eJohannCXXFLAGS = ${CXXFLAGS} 4442263fc984bdc858ee931d3e35c87c404de923950JohannARFLAGS = -crs\$(if \$(quiet),,v) 44590d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas HuberLDFLAGS = ${LDFLAGS} 44690d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas HuberASFLAGS = ${ASFLAGS} 44790d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huberextralibs = ${extralibs} 44890d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas HuberAS_SFX = ${AS_SFX:-.asm} 4491b362b15af34006e6a11974088a46d42b903418eJohannEXE_SFX = ${EXE_SFX} 450ba164dffc5a6795bce97fae02b51ccf3330e15e4hkuangVCPROJ_SFX = ${VCPROJ_SFX} 4511b362b15af34006e6a11974088a46d42b903418eJohannRTCD_OPTIONS = ${RTCD_OPTIONS} 45290d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas HuberEOF 45390d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber 454da49e34c1fb5e99681f4ad99c21d9cfd83eddb96Vignesh Venkatasubramanian if enabled rvct; then cat >> $1 << EOF 455ba164dffc5a6795bce97fae02b51ccf3330e15e4hkuangfmt_deps = sed -e 's;^__image.axf;\${@:.d=.o} \$@;' #hide 45690d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas HuberEOF 457da49e34c1fb5e99681f4ad99c21d9cfd83eddb96Vignesh Venkatasubramanian else cat >> $1 << EOF 458ba164dffc5a6795bce97fae02b51ccf3330e15e4hkuangfmt_deps = sed -e 's;^\([a-zA-Z0-9_]*\)\.o;\${@:.d=.o} \$@;' 45990d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas HuberEOF 460da49e34c1fb5e99681f4ad99c21d9cfd83eddb96Vignesh Venkatasubramanian fi 46190d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber 462da49e34c1fb5e99681f4ad99c21d9cfd83eddb96Vignesh Venkatasubramanian print_config_mk ARCH "${1}" ${ARCH_LIST} 463da49e34c1fb5e99681f4ad99c21d9cfd83eddb96Vignesh Venkatasubramanian print_config_mk HAVE "${1}" ${HAVE_LIST} 464da49e34c1fb5e99681f4ad99c21d9cfd83eddb96Vignesh Venkatasubramanian print_config_mk CONFIG "${1}" ${CONFIG_LIST} 465da49e34c1fb5e99681f4ad99c21d9cfd83eddb96Vignesh Venkatasubramanian print_config_mk HAVE "${1}" gnu_strip 46690d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber 467da49e34c1fb5e99681f4ad99c21d9cfd83eddb96Vignesh Venkatasubramanian enabled msvs && echo "CONFIG_VS_VERSION=${vs_version}" >> "${1}" 46890d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber 469da49e34c1fb5e99681f4ad99c21d9cfd83eddb96Vignesh Venkatasubramanian CC="${saved_CC}" 470da49e34c1fb5e99681f4ad99c21d9cfd83eddb96Vignesh Venkatasubramanian CXX="${saved_CXX}" 47190d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber} 47290d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber 47390d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huberwrite_common_target_config_h() { 474da49e34c1fb5e99681f4ad99c21d9cfd83eddb96Vignesh Venkatasubramanian print_webm_license ${TMP_H} "/*" " */" 475da49e34c1fb5e99681f4ad99c21d9cfd83eddb96Vignesh Venkatasubramanian cat >> ${TMP_H} << EOF 47690d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber/* This file automatically generated by configure. Do not edit! */ 4771b362b15af34006e6a11974088a46d42b903418eJohann#ifndef VPX_CONFIG_H 4781b362b15af34006e6a11974088a46d42b903418eJohann#define VPX_CONFIG_H 47990d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber#define RESTRICT ${RESTRICT} 480ba164dffc5a6795bce97fae02b51ccf3330e15e4hkuang#define INLINE ${INLINE} 48190d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas HuberEOF 482da49e34c1fb5e99681f4ad99c21d9cfd83eddb96Vignesh Venkatasubramanian print_config_h ARCH "${TMP_H}" ${ARCH_LIST} 483da49e34c1fb5e99681f4ad99c21d9cfd83eddb96Vignesh Venkatasubramanian print_config_h HAVE "${TMP_H}" ${HAVE_LIST} 484da49e34c1fb5e99681f4ad99c21d9cfd83eddb96Vignesh Venkatasubramanian print_config_h CONFIG "${TMP_H}" ${CONFIG_LIST} 485da49e34c1fb5e99681f4ad99c21d9cfd83eddb96Vignesh Venkatasubramanian print_config_vars_h "${TMP_H}" ${VAR_LIST} 486da49e34c1fb5e99681f4ad99c21d9cfd83eddb96Vignesh Venkatasubramanian echo "#endif /* VPX_CONFIG_H */" >> ${TMP_H} 487da49e34c1fb5e99681f4ad99c21d9cfd83eddb96Vignesh Venkatasubramanian mkdir -p `dirname "$1"` 488da49e34c1fb5e99681f4ad99c21d9cfd83eddb96Vignesh Venkatasubramanian cmp "$1" ${TMP_H} >/dev/null 2>&1 || mv ${TMP_H} "$1" 48990d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber} 49090d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber 49190d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huberprocess_common_cmdline() { 492da49e34c1fb5e99681f4ad99c21d9cfd83eddb96Vignesh Venkatasubramanian for opt in "$@"; do 493da49e34c1fb5e99681f4ad99c21d9cfd83eddb96Vignesh Venkatasubramanian optval="${opt#*=}" 494da49e34c1fb5e99681f4ad99c21d9cfd83eddb96Vignesh Venkatasubramanian case "$opt" in 495da49e34c1fb5e99681f4ad99c21d9cfd83eddb96Vignesh Venkatasubramanian --child) 496da49e34c1fb5e99681f4ad99c21d9cfd83eddb96Vignesh Venkatasubramanian enable_feature child 49790d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber ;; 498da49e34c1fb5e99681f4ad99c21d9cfd83eddb96Vignesh Venkatasubramanian --log*) 49990d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber logging="$optval" 50090d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber if ! disabled logging ; then 501da49e34c1fb5e99681f4ad99c21d9cfd83eddb96Vignesh Venkatasubramanian enabled logging || logfile="$logging" 50290d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber else 503da49e34c1fb5e99681f4ad99c21d9cfd83eddb96Vignesh Venkatasubramanian logfile=/dev/null 50490d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber fi 50590d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber ;; 506da49e34c1fb5e99681f4ad99c21d9cfd83eddb96Vignesh Venkatasubramanian --target=*) 507da49e34c1fb5e99681f4ad99c21d9cfd83eddb96Vignesh Venkatasubramanian toolchain="${toolchain:-${optval}}" 50890d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber ;; 509da49e34c1fb5e99681f4ad99c21d9cfd83eddb96Vignesh Venkatasubramanian --force-target=*) 510da49e34c1fb5e99681f4ad99c21d9cfd83eddb96Vignesh Venkatasubramanian toolchain="${toolchain:-${optval}}" 511da49e34c1fb5e99681f4ad99c21d9cfd83eddb96Vignesh Venkatasubramanian enable_feature force_toolchain 51290d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber ;; 513da49e34c1fb5e99681f4ad99c21d9cfd83eddb96Vignesh Venkatasubramanian --cpu=*) 514da49e34c1fb5e99681f4ad99c21d9cfd83eddb96Vignesh Venkatasubramanian tune_cpu="$optval" 51590d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber ;; 516da49e34c1fb5e99681f4ad99c21d9cfd83eddb96Vignesh Venkatasubramanian --extra-cflags=*) 51779f15823c34ae1e423108295e416213200bb280fAndreas Huber extra_cflags="${optval}" 51879f15823c34ae1e423108295e416213200bb280fAndreas Huber ;; 5192263fc984bdc858ee931d3e35c87c404de923950Johann --extra-cxxflags=*) 5202263fc984bdc858ee931d3e35c87c404de923950Johann extra_cxxflags="${optval}" 5212263fc984bdc858ee931d3e35c87c404de923950Johann ;; 522da49e34c1fb5e99681f4ad99c21d9cfd83eddb96Vignesh Venkatasubramanian --enable-?*|--disable-?*) 52390d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber eval `echo "$opt" | sed 's/--/action=/;s/-/ option=/;s/-/_/g'` 5241b362b15af34006e6a11974088a46d42b903418eJohann if echo "${ARCH_EXT_LIST}" | grep "^ *$option\$" >/dev/null; then 525da49e34c1fb5e99681f4ad99c21d9cfd83eddb96Vignesh Venkatasubramanian [ $action = "disable" ] && RTCD_OPTIONS="${RTCD_OPTIONS}--disable-${option} " 5261b362b15af34006e6a11974088a46d42b903418eJohann elif [ $action = "disable" ] && ! disabled $option ; then 5271b362b15af34006e6a11974088a46d42b903418eJohann echo "${CMDLINE_SELECT}" | grep "^ *$option\$" >/dev/null || 5281b362b15af34006e6a11974088a46d42b903418eJohann die_unknown $opt 529da49e34c1fb5e99681f4ad99c21d9cfd83eddb96Vignesh Venkatasubramanian log_echo " disabling $option" 5301b362b15af34006e6a11974088a46d42b903418eJohann elif [ $action = "enable" ] && ! enabled $option ; then 5311b362b15af34006e6a11974088a46d42b903418eJohann echo "${CMDLINE_SELECT}" | grep "^ *$option\$" >/dev/null || 5321b362b15af34006e6a11974088a46d42b903418eJohann die_unknown $opt 533da49e34c1fb5e99681f4ad99c21d9cfd83eddb96Vignesh Venkatasubramanian log_echo " enabling $option" 5341b362b15af34006e6a11974088a46d42b903418eJohann fi 5351184aebb761cbeac9124c37189a80a1a58f04b6bhkuang ${action}_feature $option 53690d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber ;; 537da49e34c1fb5e99681f4ad99c21d9cfd83eddb96Vignesh Venkatasubramanian --require-?*) 5381b362b15af34006e6a11974088a46d42b903418eJohann eval `echo "$opt" | sed 's/--/action=/;s/-/ option=/;s/-/_/g'` 5391b362b15af34006e6a11974088a46d42b903418eJohann if echo "${ARCH_EXT_LIST}" none | grep "^ *$option\$" >/dev/null; then 5401b362b15af34006e6a11974088a46d42b903418eJohann RTCD_OPTIONS="${RTCD_OPTIONS}${opt} " 5411b362b15af34006e6a11974088a46d42b903418eJohann else 5421b362b15af34006e6a11974088a46d42b903418eJohann die_unknown $opt 5431b362b15af34006e6a11974088a46d42b903418eJohann fi 5441b362b15af34006e6a11974088a46d42b903418eJohann ;; 545da49e34c1fb5e99681f4ad99c21d9cfd83eddb96Vignesh Venkatasubramanian --force-enable-?*|--force-disable-?*) 54690d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber eval `echo "$opt" | sed 's/--force-/action=/;s/-/ option=/;s/-/_/g'` 5471184aebb761cbeac9124c37189a80a1a58f04b6bhkuang ${action}_feature $option 54890d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber ;; 549da49e34c1fb5e99681f4ad99c21d9cfd83eddb96Vignesh Venkatasubramanian --libc=*) 55090d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber [ -d "${optval}" ] || die "Not a directory: ${optval}" 5511184aebb761cbeac9124c37189a80a1a58f04b6bhkuang disable_feature builtin_libc 55290d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber alt_libc="${optval}" 55390d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber ;; 554da49e34c1fb5e99681f4ad99c21d9cfd83eddb96Vignesh Venkatasubramanian --as=*) 555ba6c59e9d7d7013b3906b6f4230b663422681848Vignesh Venkatasubramanian [ "${optval}" = yasm ] || [ "${optval}" = nasm ] \ 556da49e34c1fb5e99681f4ad99c21d9cfd83eddb96Vignesh Venkatasubramanian || [ "${optval}" = auto ] \ 557da49e34c1fb5e99681f4ad99c21d9cfd83eddb96Vignesh Venkatasubramanian || die "Must be yasm, nasm or auto: ${optval}" 558538f6170b788de7408b06efc6613dc98579aa6a6Andreas Huber alt_as="${optval}" 559538f6170b788de7408b06efc6613dc98579aa6a6Andreas Huber ;; 560da49e34c1fb5e99681f4ad99c21d9cfd83eddb96Vignesh Venkatasubramanian --size-limit=*) 561ba6c59e9d7d7013b3906b6f4230b663422681848Vignesh Venkatasubramanian w="${optval%%x*}" 562ba6c59e9d7d7013b3906b6f4230b663422681848Vignesh Venkatasubramanian h="${optval##*x}" 563ba6c59e9d7d7013b3906b6f4230b663422681848Vignesh Venkatasubramanian VAR_LIST="DECODE_WIDTH_LIMIT ${w} DECODE_HEIGHT_LIMIT ${h}" 564ba6c59e9d7d7013b3906b6f4230b663422681848Vignesh Venkatasubramanian [ ${w} -gt 0 ] && [ ${h} -gt 0 ] || die "Invalid size-limit: too small." 565ba6c59e9d7d7013b3906b6f4230b663422681848Vignesh Venkatasubramanian [ ${w} -lt 65536 ] && [ ${h} -lt 65536 ] \ 566ba6c59e9d7d7013b3906b6f4230b663422681848Vignesh Venkatasubramanian || die "Invalid size-limit: too big." 567ba6c59e9d7d7013b3906b6f4230b663422681848Vignesh Venkatasubramanian enable_feature size_limit 568ba6c59e9d7d7013b3906b6f4230b663422681848Vignesh Venkatasubramanian ;; 569da49e34c1fb5e99681f4ad99c21d9cfd83eddb96Vignesh Venkatasubramanian --prefix=*) 570f71323e297a928af368937089d3ed71239786f86Andreas Huber prefix="${optval}" 571f71323e297a928af368937089d3ed71239786f86Andreas Huber ;; 572da49e34c1fb5e99681f4ad99c21d9cfd83eddb96Vignesh Venkatasubramanian --libdir=*) 573f71323e297a928af368937089d3ed71239786f86Andreas Huber libdir="${optval}" 574f71323e297a928af368937089d3ed71239786f86Andreas Huber ;; 575da49e34c1fb5e99681f4ad99c21d9cfd83eddb96Vignesh Venkatasubramanian --sdk-path=*) 5761b362b15af34006e6a11974088a46d42b903418eJohann [ -d "${optval}" ] || die "Not a directory: ${optval}" 5771b362b15af34006e6a11974088a46d42b903418eJohann sdk_path="${optval}" 5781b362b15af34006e6a11974088a46d42b903418eJohann ;; 579da49e34c1fb5e99681f4ad99c21d9cfd83eddb96Vignesh Venkatasubramanian --libc|--as|--prefix|--libdir|--sdk-path) 58090d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber die "Option ${opt} requires argument" 58190d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber ;; 582da49e34c1fb5e99681f4ad99c21d9cfd83eddb96Vignesh Venkatasubramanian --help|-h) 583da49e34c1fb5e99681f4ad99c21d9cfd83eddb96Vignesh Venkatasubramanian show_help 58490d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber ;; 585da49e34c1fb5e99681f4ad99c21d9cfd83eddb96Vignesh Venkatasubramanian *) 586da49e34c1fb5e99681f4ad99c21d9cfd83eddb96Vignesh Venkatasubramanian die_unknown $opt 58790d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber ;; 588da49e34c1fb5e99681f4ad99c21d9cfd83eddb96Vignesh Venkatasubramanian esac 589da49e34c1fb5e99681f4ad99c21d9cfd83eddb96Vignesh Venkatasubramanian done 59090d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber} 59190d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber 59290d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huberprocess_cmdline() { 593da49e34c1fb5e99681f4ad99c21d9cfd83eddb96Vignesh Venkatasubramanian for opt do 594da49e34c1fb5e99681f4ad99c21d9cfd83eddb96Vignesh Venkatasubramanian optval="${opt#*=}" 595da49e34c1fb5e99681f4ad99c21d9cfd83eddb96Vignesh Venkatasubramanian case "$opt" in 596da49e34c1fb5e99681f4ad99c21d9cfd83eddb96Vignesh Venkatasubramanian *) 597da49e34c1fb5e99681f4ad99c21d9cfd83eddb96Vignesh Venkatasubramanian process_common_cmdline $opt 59890d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber ;; 599da49e34c1fb5e99681f4ad99c21d9cfd83eddb96Vignesh Venkatasubramanian esac 600da49e34c1fb5e99681f4ad99c21d9cfd83eddb96Vignesh Venkatasubramanian done 60190d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber} 60290d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber 603f71323e297a928af368937089d3ed71239786f86Andreas Huberpost_process_common_cmdline() { 604da49e34c1fb5e99681f4ad99c21d9cfd83eddb96Vignesh Venkatasubramanian prefix="${prefix:-/usr/local}" 605da49e34c1fb5e99681f4ad99c21d9cfd83eddb96Vignesh Venkatasubramanian prefix="${prefix%/}" 606da49e34c1fb5e99681f4ad99c21d9cfd83eddb96Vignesh Venkatasubramanian libdir="${libdir:-${prefix}/lib}" 607da49e34c1fb5e99681f4ad99c21d9cfd83eddb96Vignesh Venkatasubramanian libdir="${libdir%/}" 608da49e34c1fb5e99681f4ad99c21d9cfd83eddb96Vignesh Venkatasubramanian if [ "${libdir#${prefix}}" = "${libdir}" ]; then 609da49e34c1fb5e99681f4ad99c21d9cfd83eddb96Vignesh Venkatasubramanian die "Libdir ${libdir} must be a subdirectory of ${prefix}" 610da49e34c1fb5e99681f4ad99c21d9cfd83eddb96Vignesh Venkatasubramanian fi 611f71323e297a928af368937089d3ed71239786f86Andreas Huber} 612f71323e297a928af368937089d3ed71239786f86Andreas Huber 61390d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huberpost_process_cmdline() { 614da49e34c1fb5e99681f4ad99c21d9cfd83eddb96Vignesh Venkatasubramanian true; 61590d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber} 61690d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber 61790d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Hubersetup_gnu_toolchain() { 618da49e34c1fb5e99681f4ad99c21d9cfd83eddb96Vignesh Venkatasubramanian CC=${CC:-${CROSS}gcc} 619da49e34c1fb5e99681f4ad99c21d9cfd83eddb96Vignesh Venkatasubramanian CXX=${CXX:-${CROSS}g++} 620da49e34c1fb5e99681f4ad99c21d9cfd83eddb96Vignesh Venkatasubramanian AR=${AR:-${CROSS}ar} 621da49e34c1fb5e99681f4ad99c21d9cfd83eddb96Vignesh Venkatasubramanian LD=${LD:-${CROSS}${link_with_cc:-ld}} 622da49e34c1fb5e99681f4ad99c21d9cfd83eddb96Vignesh Venkatasubramanian AS=${AS:-${CROSS}as} 623da49e34c1fb5e99681f4ad99c21d9cfd83eddb96Vignesh Venkatasubramanian STRIP=${STRIP:-${CROSS}strip} 624da49e34c1fb5e99681f4ad99c21d9cfd83eddb96Vignesh Venkatasubramanian NM=${NM:-${CROSS}nm} 625da49e34c1fb5e99681f4ad99c21d9cfd83eddb96Vignesh Venkatasubramanian AS_SFX=.s 626da49e34c1fb5e99681f4ad99c21d9cfd83eddb96Vignesh Venkatasubramanian EXE_SFX= 62790d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber} 62890d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber 629da49e34c1fb5e99681f4ad99c21d9cfd83eddb96Vignesh Venkatasubramanian# Reliably find the newest available Darwin SDKs. (Older versions of 630da49e34c1fb5e99681f4ad99c21d9cfd83eddb96Vignesh Venkatasubramanian# xcrun don't support --show-sdk-path.) 631da49e34c1fb5e99681f4ad99c21d9cfd83eddb96Vignesh Venkatasubramanianshow_darwin_sdk_path() { 632da49e34c1fb5e99681f4ad99c21d9cfd83eddb96Vignesh Venkatasubramanian xcrun --sdk $1 --show-sdk-path 2>/dev/null || 633da49e34c1fb5e99681f4ad99c21d9cfd83eddb96Vignesh Venkatasubramanian xcodebuild -sdk $1 -version Path 2>/dev/null 634da49e34c1fb5e99681f4ad99c21d9cfd83eddb96Vignesh Venkatasubramanian} 635f71323e297a928af368937089d3ed71239786f86Andreas Huber 6362263fc984bdc858ee931d3e35c87c404de923950Johann# Print the major version number of the Darwin SDK specified by $1. 6372263fc984bdc858ee931d3e35c87c404de923950Johannshow_darwin_sdk_major_version() { 6382263fc984bdc858ee931d3e35c87c404de923950Johann xcrun --sdk $1 --show-sdk-version 2>/dev/null | cut -d. -f1 6392263fc984bdc858ee931d3e35c87c404de923950Johann} 6402263fc984bdc858ee931d3e35c87c404de923950Johann 641da49e34c1fb5e99681f4ad99c21d9cfd83eddb96Vignesh Venkatasubramanianprocess_common_toolchain() { 642da49e34c1fb5e99681f4ad99c21d9cfd83eddb96Vignesh Venkatasubramanian if [ -z "$toolchain" ]; then 643da49e34c1fb5e99681f4ad99c21d9cfd83eddb96Vignesh Venkatasubramanian gcctarget="${CHOST:-$(gcc -dumpmachine 2> /dev/null)}" 644f71323e297a928af368937089d3ed71239786f86Andreas Huber 645da49e34c1fb5e99681f4ad99c21d9cfd83eddb96Vignesh Venkatasubramanian # detect tgt_isa 646da49e34c1fb5e99681f4ad99c21d9cfd83eddb96Vignesh Venkatasubramanian case "$gcctarget" in 647da49e34c1fb5e99681f4ad99c21d9cfd83eddb96Vignesh Venkatasubramanian armv6*) 648da49e34c1fb5e99681f4ad99c21d9cfd83eddb96Vignesh Venkatasubramanian tgt_isa=armv6 649da49e34c1fb5e99681f4ad99c21d9cfd83eddb96Vignesh Venkatasubramanian ;; 650da49e34c1fb5e99681f4ad99c21d9cfd83eddb96Vignesh Venkatasubramanian armv7*-hardfloat*) 651da49e34c1fb5e99681f4ad99c21d9cfd83eddb96Vignesh Venkatasubramanian tgt_isa=armv7 652da49e34c1fb5e99681f4ad99c21d9cfd83eddb96Vignesh Venkatasubramanian float_abi=hard 653da49e34c1fb5e99681f4ad99c21d9cfd83eddb96Vignesh Venkatasubramanian ;; 654da49e34c1fb5e99681f4ad99c21d9cfd83eddb96Vignesh Venkatasubramanian armv7*) 655da49e34c1fb5e99681f4ad99c21d9cfd83eddb96Vignesh Venkatasubramanian tgt_isa=armv7 656da49e34c1fb5e99681f4ad99c21d9cfd83eddb96Vignesh Venkatasubramanian float_abi=softfp 657da49e34c1fb5e99681f4ad99c21d9cfd83eddb96Vignesh Venkatasubramanian ;; 658da49e34c1fb5e99681f4ad99c21d9cfd83eddb96Vignesh Venkatasubramanian *x86_64*|*amd64*) 659da49e34c1fb5e99681f4ad99c21d9cfd83eddb96Vignesh Venkatasubramanian tgt_isa=x86_64 660da49e34c1fb5e99681f4ad99c21d9cfd83eddb96Vignesh Venkatasubramanian ;; 661da49e34c1fb5e99681f4ad99c21d9cfd83eddb96Vignesh Venkatasubramanian *i[3456]86*) 662da49e34c1fb5e99681f4ad99c21d9cfd83eddb96Vignesh Venkatasubramanian tgt_isa=x86 663da49e34c1fb5e99681f4ad99c21d9cfd83eddb96Vignesh Venkatasubramanian ;; 664da49e34c1fb5e99681f4ad99c21d9cfd83eddb96Vignesh Venkatasubramanian *sparc*) 665da49e34c1fb5e99681f4ad99c21d9cfd83eddb96Vignesh Venkatasubramanian tgt_isa=sparc 666da49e34c1fb5e99681f4ad99c21d9cfd83eddb96Vignesh Venkatasubramanian ;; 667da49e34c1fb5e99681f4ad99c21d9cfd83eddb96Vignesh Venkatasubramanian esac 66890d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber 669da49e34c1fb5e99681f4ad99c21d9cfd83eddb96Vignesh Venkatasubramanian # detect tgt_os 670da49e34c1fb5e99681f4ad99c21d9cfd83eddb96Vignesh Venkatasubramanian case "$gcctarget" in 671da49e34c1fb5e99681f4ad99c21d9cfd83eddb96Vignesh Venkatasubramanian *darwin10*) 672da49e34c1fb5e99681f4ad99c21d9cfd83eddb96Vignesh Venkatasubramanian tgt_isa=x86_64 673da49e34c1fb5e99681f4ad99c21d9cfd83eddb96Vignesh Venkatasubramanian tgt_os=darwin10 674da49e34c1fb5e99681f4ad99c21d9cfd83eddb96Vignesh Venkatasubramanian ;; 675da49e34c1fb5e99681f4ad99c21d9cfd83eddb96Vignesh Venkatasubramanian *darwin11*) 676da49e34c1fb5e99681f4ad99c21d9cfd83eddb96Vignesh Venkatasubramanian tgt_isa=x86_64 677da49e34c1fb5e99681f4ad99c21d9cfd83eddb96Vignesh Venkatasubramanian tgt_os=darwin11 678da49e34c1fb5e99681f4ad99c21d9cfd83eddb96Vignesh Venkatasubramanian ;; 679da49e34c1fb5e99681f4ad99c21d9cfd83eddb96Vignesh Venkatasubramanian *darwin12*) 680da49e34c1fb5e99681f4ad99c21d9cfd83eddb96Vignesh Venkatasubramanian tgt_isa=x86_64 681da49e34c1fb5e99681f4ad99c21d9cfd83eddb96Vignesh Venkatasubramanian tgt_os=darwin12 682da49e34c1fb5e99681f4ad99c21d9cfd83eddb96Vignesh Venkatasubramanian ;; 683da49e34c1fb5e99681f4ad99c21d9cfd83eddb96Vignesh Venkatasubramanian *darwin13*) 684da49e34c1fb5e99681f4ad99c21d9cfd83eddb96Vignesh Venkatasubramanian tgt_isa=x86_64 685da49e34c1fb5e99681f4ad99c21d9cfd83eddb96Vignesh Venkatasubramanian tgt_os=darwin13 686da49e34c1fb5e99681f4ad99c21d9cfd83eddb96Vignesh Venkatasubramanian ;; 687da49e34c1fb5e99681f4ad99c21d9cfd83eddb96Vignesh Venkatasubramanian *darwin14*) 688da49e34c1fb5e99681f4ad99c21d9cfd83eddb96Vignesh Venkatasubramanian tgt_isa=x86_64 689da49e34c1fb5e99681f4ad99c21d9cfd83eddb96Vignesh Venkatasubramanian tgt_os=darwin14 690da49e34c1fb5e99681f4ad99c21d9cfd83eddb96Vignesh Venkatasubramanian ;; 691da49e34c1fb5e99681f4ad99c21d9cfd83eddb96Vignesh Venkatasubramanian x86_64*mingw32*) 692da49e34c1fb5e99681f4ad99c21d9cfd83eddb96Vignesh Venkatasubramanian tgt_os=win64 693da49e34c1fb5e99681f4ad99c21d9cfd83eddb96Vignesh Venkatasubramanian ;; 694da49e34c1fb5e99681f4ad99c21d9cfd83eddb96Vignesh Venkatasubramanian *mingw32*|*cygwin*) 695da49e34c1fb5e99681f4ad99c21d9cfd83eddb96Vignesh Venkatasubramanian [ -z "$tgt_isa" ] && tgt_isa=x86 696da49e34c1fb5e99681f4ad99c21d9cfd83eddb96Vignesh Venkatasubramanian tgt_os=win32 697da49e34c1fb5e99681f4ad99c21d9cfd83eddb96Vignesh Venkatasubramanian ;; 698da49e34c1fb5e99681f4ad99c21d9cfd83eddb96Vignesh Venkatasubramanian *linux*|*bsd*) 699da49e34c1fb5e99681f4ad99c21d9cfd83eddb96Vignesh Venkatasubramanian tgt_os=linux 700da49e34c1fb5e99681f4ad99c21d9cfd83eddb96Vignesh Venkatasubramanian ;; 701da49e34c1fb5e99681f4ad99c21d9cfd83eddb96Vignesh Venkatasubramanian *solaris2.10) 702da49e34c1fb5e99681f4ad99c21d9cfd83eddb96Vignesh Venkatasubramanian tgt_os=solaris 703da49e34c1fb5e99681f4ad99c21d9cfd83eddb96Vignesh Venkatasubramanian ;; 704da49e34c1fb5e99681f4ad99c21d9cfd83eddb96Vignesh Venkatasubramanian *os2*) 705da49e34c1fb5e99681f4ad99c21d9cfd83eddb96Vignesh Venkatasubramanian tgt_os=os2 706da49e34c1fb5e99681f4ad99c21d9cfd83eddb96Vignesh Venkatasubramanian ;; 707da49e34c1fb5e99681f4ad99c21d9cfd83eddb96Vignesh Venkatasubramanian esac 70890d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber 709da49e34c1fb5e99681f4ad99c21d9cfd83eddb96Vignesh Venkatasubramanian if [ -n "$tgt_isa" ] && [ -n "$tgt_os" ]; then 710da49e34c1fb5e99681f4ad99c21d9cfd83eddb96Vignesh Venkatasubramanian toolchain=${tgt_isa}-${tgt_os}-gcc 711da49e34c1fb5e99681f4ad99c21d9cfd83eddb96Vignesh Venkatasubramanian fi 712da49e34c1fb5e99681f4ad99c21d9cfd83eddb96Vignesh Venkatasubramanian fi 71390d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber 714da49e34c1fb5e99681f4ad99c21d9cfd83eddb96Vignesh Venkatasubramanian toolchain=${toolchain:-generic-gnu} 71590d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber 716da49e34c1fb5e99681f4ad99c21d9cfd83eddb96Vignesh Venkatasubramanian is_in ${toolchain} ${all_platforms} || enabled force_toolchain \ 717da49e34c1fb5e99681f4ad99c21d9cfd83eddb96Vignesh Venkatasubramanian || die "Unrecognized toolchain '${toolchain}'" 71890d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber 719da49e34c1fb5e99681f4ad99c21d9cfd83eddb96Vignesh Venkatasubramanian enabled child || log_echo "Configuring for target '${toolchain}'" 72090d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber 721da49e34c1fb5e99681f4ad99c21d9cfd83eddb96Vignesh Venkatasubramanian # 722da49e34c1fb5e99681f4ad99c21d9cfd83eddb96Vignesh Venkatasubramanian # Set up toolchain variables 723da49e34c1fb5e99681f4ad99c21d9cfd83eddb96Vignesh Venkatasubramanian # 724da49e34c1fb5e99681f4ad99c21d9cfd83eddb96Vignesh Venkatasubramanian tgt_isa=$(echo ${toolchain} | awk 'BEGIN{FS="-"}{print $1}') 725da49e34c1fb5e99681f4ad99c21d9cfd83eddb96Vignesh Venkatasubramanian tgt_os=$(echo ${toolchain} | awk 'BEGIN{FS="-"}{print $2}') 726da49e34c1fb5e99681f4ad99c21d9cfd83eddb96Vignesh Venkatasubramanian tgt_cc=$(echo ${toolchain} | awk 'BEGIN{FS="-"}{print $3}') 727538f6170b788de7408b06efc6613dc98579aa6a6Andreas Huber 728da49e34c1fb5e99681f4ad99c21d9cfd83eddb96Vignesh Venkatasubramanian # Mark the specific ISA requested as enabled 729da49e34c1fb5e99681f4ad99c21d9cfd83eddb96Vignesh Venkatasubramanian soft_enable ${tgt_isa} 730da49e34c1fb5e99681f4ad99c21d9cfd83eddb96Vignesh Venkatasubramanian enable_feature ${tgt_os} 731da49e34c1fb5e99681f4ad99c21d9cfd83eddb96Vignesh Venkatasubramanian enable_feature ${tgt_cc} 7321b362b15af34006e6a11974088a46d42b903418eJohann 733da49e34c1fb5e99681f4ad99c21d9cfd83eddb96Vignesh Venkatasubramanian # Enable the architecture family 734da49e34c1fb5e99681f4ad99c21d9cfd83eddb96Vignesh Venkatasubramanian case ${tgt_isa} in 735da49e34c1fb5e99681f4ad99c21d9cfd83eddb96Vignesh Venkatasubramanian arm*) 736da49e34c1fb5e99681f4ad99c21d9cfd83eddb96Vignesh Venkatasubramanian enable_feature arm 737da49e34c1fb5e99681f4ad99c21d9cfd83eddb96Vignesh Venkatasubramanian ;; 738da49e34c1fb5e99681f4ad99c21d9cfd83eddb96Vignesh Venkatasubramanian mips*) 739da49e34c1fb5e99681f4ad99c21d9cfd83eddb96Vignesh Venkatasubramanian enable_feature mips 740da49e34c1fb5e99681f4ad99c21d9cfd83eddb96Vignesh Venkatasubramanian ;; 741da49e34c1fb5e99681f4ad99c21d9cfd83eddb96Vignesh Venkatasubramanian esac 742da49e34c1fb5e99681f4ad99c21d9cfd83eddb96Vignesh Venkatasubramanian 743da49e34c1fb5e99681f4ad99c21d9cfd83eddb96Vignesh Venkatasubramanian # PIC is probably what we want when building shared libs 744da49e34c1fb5e99681f4ad99c21d9cfd83eddb96Vignesh Venkatasubramanian enabled shared && soft_enable pic 745da49e34c1fb5e99681f4ad99c21d9cfd83eddb96Vignesh Venkatasubramanian 746da49e34c1fb5e99681f4ad99c21d9cfd83eddb96Vignesh Venkatasubramanian # Minimum iOS version for all target platforms (darwin and iphonesimulator). 747da49e34c1fb5e99681f4ad99c21d9cfd83eddb96Vignesh Venkatasubramanian IOS_VERSION_MIN="6.0" 748da49e34c1fb5e99681f4ad99c21d9cfd83eddb96Vignesh Venkatasubramanian 749da49e34c1fb5e99681f4ad99c21d9cfd83eddb96Vignesh Venkatasubramanian # Handle darwin variants. Newer SDKs allow targeting older 750da49e34c1fb5e99681f4ad99c21d9cfd83eddb96Vignesh Venkatasubramanian # platforms, so use the newest one available. 751da49e34c1fb5e99681f4ad99c21d9cfd83eddb96Vignesh Venkatasubramanian case ${toolchain} in 752da49e34c1fb5e99681f4ad99c21d9cfd83eddb96Vignesh Venkatasubramanian arm*-darwin*) 7532263fc984bdc858ee931d3e35c87c404de923950Johann add_cflags "-miphoneos-version-min=${IOS_VERSION_MIN}" 7542263fc984bdc858ee931d3e35c87c404de923950Johann iphoneos_sdk_dir="$(show_darwin_sdk_path iphoneos)" 7552263fc984bdc858ee931d3e35c87c404de923950Johann if [ -d "${iphoneos_sdk_dir}" ]; then 7562263fc984bdc858ee931d3e35c87c404de923950Johann add_cflags "-isysroot ${iphoneos_sdk_dir}" 7572263fc984bdc858ee931d3e35c87c404de923950Johann add_ldflags "-isysroot ${iphoneos_sdk_dir}" 758da49e34c1fb5e99681f4ad99c21d9cfd83eddb96Vignesh Venkatasubramanian fi 759da49e34c1fb5e99681f4ad99c21d9cfd83eddb96Vignesh Venkatasubramanian ;; 7602263fc984bdc858ee931d3e35c87c404de923950Johann x86*-darwin*) 761da49e34c1fb5e99681f4ad99c21d9cfd83eddb96Vignesh Venkatasubramanian osx_sdk_dir="$(show_darwin_sdk_path macosx)" 762da49e34c1fb5e99681f4ad99c21d9cfd83eddb96Vignesh Venkatasubramanian if [ -d "${osx_sdk_dir}" ]; then 7631b362b15af34006e6a11974088a46d42b903418eJohann add_cflags "-isysroot ${osx_sdk_dir}" 7641b362b15af34006e6a11974088a46d42b903418eJohann add_ldflags "-isysroot ${osx_sdk_dir}" 765da49e34c1fb5e99681f4ad99c21d9cfd83eddb96Vignesh Venkatasubramanian fi 766da49e34c1fb5e99681f4ad99c21d9cfd83eddb96Vignesh Venkatasubramanian ;; 767da49e34c1fb5e99681f4ad99c21d9cfd83eddb96Vignesh Venkatasubramanian esac 7681b362b15af34006e6a11974088a46d42b903418eJohann 769da49e34c1fb5e99681f4ad99c21d9cfd83eddb96Vignesh Venkatasubramanian case ${toolchain} in 770da49e34c1fb5e99681f4ad99c21d9cfd83eddb96Vignesh Venkatasubramanian *-darwin8-*) 771da49e34c1fb5e99681f4ad99c21d9cfd83eddb96Vignesh Venkatasubramanian add_cflags "-mmacosx-version-min=10.4" 772da49e34c1fb5e99681f4ad99c21d9cfd83eddb96Vignesh Venkatasubramanian add_ldflags "-mmacosx-version-min=10.4" 773da49e34c1fb5e99681f4ad99c21d9cfd83eddb96Vignesh Venkatasubramanian ;; 774da49e34c1fb5e99681f4ad99c21d9cfd83eddb96Vignesh Venkatasubramanian *-darwin9-*) 775da49e34c1fb5e99681f4ad99c21d9cfd83eddb96Vignesh Venkatasubramanian add_cflags "-mmacosx-version-min=10.5" 776da49e34c1fb5e99681f4ad99c21d9cfd83eddb96Vignesh Venkatasubramanian add_ldflags "-mmacosx-version-min=10.5" 777da49e34c1fb5e99681f4ad99c21d9cfd83eddb96Vignesh Venkatasubramanian ;; 778da49e34c1fb5e99681f4ad99c21d9cfd83eddb96Vignesh Venkatasubramanian *-darwin10-*) 779da49e34c1fb5e99681f4ad99c21d9cfd83eddb96Vignesh Venkatasubramanian add_cflags "-mmacosx-version-min=10.6" 780da49e34c1fb5e99681f4ad99c21d9cfd83eddb96Vignesh Venkatasubramanian add_ldflags "-mmacosx-version-min=10.6" 781da49e34c1fb5e99681f4ad99c21d9cfd83eddb96Vignesh Venkatasubramanian ;; 782da49e34c1fb5e99681f4ad99c21d9cfd83eddb96Vignesh Venkatasubramanian *-darwin11-*) 783da49e34c1fb5e99681f4ad99c21d9cfd83eddb96Vignesh Venkatasubramanian add_cflags "-mmacosx-version-min=10.7" 784da49e34c1fb5e99681f4ad99c21d9cfd83eddb96Vignesh Venkatasubramanian add_ldflags "-mmacosx-version-min=10.7" 785da49e34c1fb5e99681f4ad99c21d9cfd83eddb96Vignesh Venkatasubramanian ;; 786da49e34c1fb5e99681f4ad99c21d9cfd83eddb96Vignesh Venkatasubramanian *-darwin12-*) 787da49e34c1fb5e99681f4ad99c21d9cfd83eddb96Vignesh Venkatasubramanian add_cflags "-mmacosx-version-min=10.8" 788da49e34c1fb5e99681f4ad99c21d9cfd83eddb96Vignesh Venkatasubramanian add_ldflags "-mmacosx-version-min=10.8" 789da49e34c1fb5e99681f4ad99c21d9cfd83eddb96Vignesh Venkatasubramanian ;; 790da49e34c1fb5e99681f4ad99c21d9cfd83eddb96Vignesh Venkatasubramanian *-darwin13-*) 791da49e34c1fb5e99681f4ad99c21d9cfd83eddb96Vignesh Venkatasubramanian add_cflags "-mmacosx-version-min=10.9" 792da49e34c1fb5e99681f4ad99c21d9cfd83eddb96Vignesh Venkatasubramanian add_ldflags "-mmacosx-version-min=10.9" 793da49e34c1fb5e99681f4ad99c21d9cfd83eddb96Vignesh Venkatasubramanian ;; 794da49e34c1fb5e99681f4ad99c21d9cfd83eddb96Vignesh Venkatasubramanian *-darwin14-*) 795da49e34c1fb5e99681f4ad99c21d9cfd83eddb96Vignesh Venkatasubramanian add_cflags "-mmacosx-version-min=10.10" 796da49e34c1fb5e99681f4ad99c21d9cfd83eddb96Vignesh Venkatasubramanian add_ldflags "-mmacosx-version-min=10.10" 797da49e34c1fb5e99681f4ad99c21d9cfd83eddb96Vignesh Venkatasubramanian ;; 798da49e34c1fb5e99681f4ad99c21d9cfd83eddb96Vignesh Venkatasubramanian *-iphonesimulator-*) 799da49e34c1fb5e99681f4ad99c21d9cfd83eddb96Vignesh Venkatasubramanian add_cflags "-miphoneos-version-min=${IOS_VERSION_MIN}" 800da49e34c1fb5e99681f4ad99c21d9cfd83eddb96Vignesh Venkatasubramanian add_ldflags "-miphoneos-version-min=${IOS_VERSION_MIN}" 801da49e34c1fb5e99681f4ad99c21d9cfd83eddb96Vignesh Venkatasubramanian iossim_sdk_dir="$(show_darwin_sdk_path iphonesimulator)" 802da49e34c1fb5e99681f4ad99c21d9cfd83eddb96Vignesh Venkatasubramanian if [ -d "${iossim_sdk_dir}" ]; then 803da49e34c1fb5e99681f4ad99c21d9cfd83eddb96Vignesh Venkatasubramanian add_cflags "-isysroot ${iossim_sdk_dir}" 804da49e34c1fb5e99681f4ad99c21d9cfd83eddb96Vignesh Venkatasubramanian add_ldflags "-isysroot ${iossim_sdk_dir}" 805da49e34c1fb5e99681f4ad99c21d9cfd83eddb96Vignesh Venkatasubramanian fi 806da49e34c1fb5e99681f4ad99c21d9cfd83eddb96Vignesh Venkatasubramanian ;; 807da49e34c1fb5e99681f4ad99c21d9cfd83eddb96Vignesh Venkatasubramanian esac 80890d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber 809da49e34c1fb5e99681f4ad99c21d9cfd83eddb96Vignesh Venkatasubramanian # Handle Solaris variants. Solaris 10 needs -lposix4 810da49e34c1fb5e99681f4ad99c21d9cfd83eddb96Vignesh Venkatasubramanian case ${toolchain} in 811da49e34c1fb5e99681f4ad99c21d9cfd83eddb96Vignesh Venkatasubramanian sparc-solaris-*) 812da49e34c1fb5e99681f4ad99c21d9cfd83eddb96Vignesh Venkatasubramanian add_extralibs -lposix4 813da49e34c1fb5e99681f4ad99c21d9cfd83eddb96Vignesh Venkatasubramanian ;; 814da49e34c1fb5e99681f4ad99c21d9cfd83eddb96Vignesh Venkatasubramanian *-solaris-*) 815da49e34c1fb5e99681f4ad99c21d9cfd83eddb96Vignesh Venkatasubramanian add_extralibs -lposix4 816da49e34c1fb5e99681f4ad99c21d9cfd83eddb96Vignesh Venkatasubramanian ;; 817da49e34c1fb5e99681f4ad99c21d9cfd83eddb96Vignesh Venkatasubramanian esac 818538f6170b788de7408b06efc6613dc98579aa6a6Andreas Huber 819da49e34c1fb5e99681f4ad99c21d9cfd83eddb96Vignesh Venkatasubramanian # Process ARM architecture variants 820da49e34c1fb5e99681f4ad99c21d9cfd83eddb96Vignesh Venkatasubramanian case ${toolchain} in 8211b362b15af34006e6a11974088a46d42b903418eJohann arm*) 822da49e34c1fb5e99681f4ad99c21d9cfd83eddb96Vignesh Venkatasubramanian # on arm, isa versions are supersets 823da49e34c1fb5e99681f4ad99c21d9cfd83eddb96Vignesh Venkatasubramanian case ${tgt_isa} in 824ba6c59e9d7d7013b3906b6f4230b663422681848Vignesh Venkatasubramanian arm64|armv8) 825da49e34c1fb5e99681f4ad99c21d9cfd83eddb96Vignesh Venkatasubramanian soft_enable neon 826da49e34c1fb5e99681f4ad99c21d9cfd83eddb96Vignesh Venkatasubramanian ;; 827ba6c59e9d7d7013b3906b6f4230b663422681848Vignesh Venkatasubramanian armv7|armv7s) 828da49e34c1fb5e99681f4ad99c21d9cfd83eddb96Vignesh Venkatasubramanian soft_enable neon 829da49e34c1fb5e99681f4ad99c21d9cfd83eddb96Vignesh Venkatasubramanian # Only enable neon_asm when neon is also enabled. 830da49e34c1fb5e99681f4ad99c21d9cfd83eddb96Vignesh Venkatasubramanian enabled neon && soft_enable neon_asm 831da49e34c1fb5e99681f4ad99c21d9cfd83eddb96Vignesh Venkatasubramanian # If someone tries to force it through, die. 832da49e34c1fb5e99681f4ad99c21d9cfd83eddb96Vignesh Venkatasubramanian if disabled neon && enabled neon_asm; then 833da49e34c1fb5e99681f4ad99c21d9cfd83eddb96Vignesh Venkatasubramanian die "Disabling neon while keeping neon-asm is not supported" 834da49e34c1fb5e99681f4ad99c21d9cfd83eddb96Vignesh Venkatasubramanian fi 835da49e34c1fb5e99681f4ad99c21d9cfd83eddb96Vignesh Venkatasubramanian case ${toolchain} in 8362263fc984bdc858ee931d3e35c87c404de923950Johann # Apple iOS SDKs no longer support armv6 as of the version 9 8372263fc984bdc858ee931d3e35c87c404de923950Johann # release (coincides with release of Xcode 7). Only enable media 8382263fc984bdc858ee931d3e35c87c404de923950Johann # when using earlier SDK releases. 839da49e34c1fb5e99681f4ad99c21d9cfd83eddb96Vignesh Venkatasubramanian *-darwin*) 8402263fc984bdc858ee931d3e35c87c404de923950Johann if [ "$(show_darwin_sdk_major_version iphoneos)" -lt 9 ]; then 8412263fc984bdc858ee931d3e35c87c404de923950Johann soft_enable media 8422263fc984bdc858ee931d3e35c87c404de923950Johann else 8432263fc984bdc858ee931d3e35c87c404de923950Johann soft_disable media 8442263fc984bdc858ee931d3e35c87c404de923950Johann RTCD_OPTIONS="${RTCD_OPTIONS}--disable-media " 8452263fc984bdc858ee931d3e35c87c404de923950Johann fi 846da49e34c1fb5e99681f4ad99c21d9cfd83eddb96Vignesh Venkatasubramanian ;; 847da49e34c1fb5e99681f4ad99c21d9cfd83eddb96Vignesh Venkatasubramanian *) 848da49e34c1fb5e99681f4ad99c21d9cfd83eddb96Vignesh Venkatasubramanian soft_enable media 8492263fc984bdc858ee931d3e35c87c404de923950Johann ;; 850da49e34c1fb5e99681f4ad99c21d9cfd83eddb96Vignesh Venkatasubramanian esac 851da49e34c1fb5e99681f4ad99c21d9cfd83eddb96Vignesh Venkatasubramanian ;; 8521b362b15af34006e6a11974088a46d42b903418eJohann armv6) 8532263fc984bdc858ee931d3e35c87c404de923950Johann case ${toolchain} in 8542263fc984bdc858ee931d3e35c87c404de923950Johann *-darwin*) 8552263fc984bdc858ee931d3e35c87c404de923950Johann if [ "$(show_darwin_sdk_major_version iphoneos)" -lt 9 ]; then 8562263fc984bdc858ee931d3e35c87c404de923950Johann soft_enable media 8572263fc984bdc858ee931d3e35c87c404de923950Johann else 8582263fc984bdc858ee931d3e35c87c404de923950Johann die "Your iOS SDK does not support armv6." 8592263fc984bdc858ee931d3e35c87c404de923950Johann fi 8602263fc984bdc858ee931d3e35c87c404de923950Johann ;; 8612263fc984bdc858ee931d3e35c87c404de923950Johann *) 8622263fc984bdc858ee931d3e35c87c404de923950Johann soft_enable media 8632263fc984bdc858ee931d3e35c87c404de923950Johann ;; 8642263fc984bdc858ee931d3e35c87c404de923950Johann esac 865da49e34c1fb5e99681f4ad99c21d9cfd83eddb96Vignesh Venkatasubramanian ;; 866da49e34c1fb5e99681f4ad99c21d9cfd83eddb96Vignesh Venkatasubramanian esac 86790d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber 868da49e34c1fb5e99681f4ad99c21d9cfd83eddb96Vignesh Venkatasubramanian asm_conversion_cmd="cat" 86990d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber 870da49e34c1fb5e99681f4ad99c21d9cfd83eddb96Vignesh Venkatasubramanian case ${tgt_cc} in 87190d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber gcc) 872da49e34c1fb5e99681f4ad99c21d9cfd83eddb96Vignesh Venkatasubramanian CROSS=${CROSS:-arm-none-linux-gnueabi-} 873da49e34c1fb5e99681f4ad99c21d9cfd83eddb96Vignesh Venkatasubramanian link_with_cc=gcc 874da49e34c1fb5e99681f4ad99c21d9cfd83eddb96Vignesh Venkatasubramanian setup_gnu_toolchain 875da49e34c1fb5e99681f4ad99c21d9cfd83eddb96Vignesh Venkatasubramanian arch_int=${tgt_isa##armv} 876da49e34c1fb5e99681f4ad99c21d9cfd83eddb96Vignesh Venkatasubramanian arch_int=${arch_int%%te} 877da49e34c1fb5e99681f4ad99c21d9cfd83eddb96Vignesh Venkatasubramanian check_add_asflags --defsym ARCHITECTURE=${arch_int} 878da49e34c1fb5e99681f4ad99c21d9cfd83eddb96Vignesh Venkatasubramanian tune_cflags="-mtune=" 879da49e34c1fb5e99681f4ad99c21d9cfd83eddb96Vignesh Venkatasubramanian if [ ${tgt_isa} = "armv7" ] || [ ${tgt_isa} = "armv7s" ]; then 880da49e34c1fb5e99681f4ad99c21d9cfd83eddb96Vignesh Venkatasubramanian if [ -z "${float_abi}" ]; then 881da49e34c1fb5e99681f4ad99c21d9cfd83eddb96Vignesh Venkatasubramanian check_cpp <<EOF && float_abi=hard || float_abi=softfp 882ba164dffc5a6795bce97fae02b51ccf3330e15e4hkuang#ifndef __ARM_PCS_VFP 883ba164dffc5a6795bce97fae02b51ccf3330e15e4hkuang#error "not hardfp" 884ba164dffc5a6795bce97fae02b51ccf3330e15e4hkuang#endif 885ba164dffc5a6795bce97fae02b51ccf3330e15e4hkuangEOF 88690d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber fi 887da49e34c1fb5e99681f4ad99c21d9cfd83eddb96Vignesh Venkatasubramanian check_add_cflags -march=armv7-a -mfloat-abi=${float_abi} 888da49e34c1fb5e99681f4ad99c21d9cfd83eddb96Vignesh Venkatasubramanian check_add_asflags -march=armv7-a -mfloat-abi=${float_abi} 8891b362b15af34006e6a11974088a46d42b903418eJohann 890da49e34c1fb5e99681f4ad99c21d9cfd83eddb96Vignesh Venkatasubramanian if enabled neon || enabled neon_asm; then 891da49e34c1fb5e99681f4ad99c21d9cfd83eddb96Vignesh Venkatasubramanian check_add_cflags -mfpu=neon #-ftree-vectorize 892da49e34c1fb5e99681f4ad99c21d9cfd83eddb96Vignesh Venkatasubramanian check_add_asflags -mfpu=neon 893ba164dffc5a6795bce97fae02b51ccf3330e15e4hkuang fi 894da49e34c1fb5e99681f4ad99c21d9cfd83eddb96Vignesh Venkatasubramanian else 895da49e34c1fb5e99681f4ad99c21d9cfd83eddb96Vignesh Venkatasubramanian check_add_cflags -march=${tgt_isa} 896da49e34c1fb5e99681f4ad99c21d9cfd83eddb96Vignesh Venkatasubramanian check_add_asflags -march=${tgt_isa} 897da49e34c1fb5e99681f4ad99c21d9cfd83eddb96Vignesh Venkatasubramanian fi 898da49e34c1fb5e99681f4ad99c21d9cfd83eddb96Vignesh Venkatasubramanian 899da49e34c1fb5e99681f4ad99c21d9cfd83eddb96Vignesh Venkatasubramanian enabled debug && add_asflags -g 900da49e34c1fb5e99681f4ad99c21d9cfd83eddb96Vignesh Venkatasubramanian asm_conversion_cmd="${source_path}/build/make/ads2gas.pl" 901da49e34c1fb5e99681f4ad99c21d9cfd83eddb96Vignesh Venkatasubramanian if enabled thumb; then 902da49e34c1fb5e99681f4ad99c21d9cfd83eddb96Vignesh Venkatasubramanian asm_conversion_cmd="$asm_conversion_cmd -thumb" 903da49e34c1fb5e99681f4ad99c21d9cfd83eddb96Vignesh Venkatasubramanian check_add_cflags -mthumb 904da49e34c1fb5e99681f4ad99c21d9cfd83eddb96Vignesh Venkatasubramanian check_add_asflags -mthumb -mimplicit-it=always 905da49e34c1fb5e99681f4ad99c21d9cfd83eddb96Vignesh Venkatasubramanian fi 906da49e34c1fb5e99681f4ad99c21d9cfd83eddb96Vignesh Venkatasubramanian ;; 907ba164dffc5a6795bce97fae02b51ccf3330e15e4hkuang vs*) 908da49e34c1fb5e99681f4ad99c21d9cfd83eddb96Vignesh Venkatasubramanian asm_conversion_cmd="${source_path}/build/make/ads2armasm_ms.pl" 909da49e34c1fb5e99681f4ad99c21d9cfd83eddb96Vignesh Venkatasubramanian AS_SFX=.s 910da49e34c1fb5e99681f4ad99c21d9cfd83eddb96Vignesh Venkatasubramanian msvs_arch_dir=arm-msvs 911da49e34c1fb5e99681f4ad99c21d9cfd83eddb96Vignesh Venkatasubramanian disable_feature multithread 912da49e34c1fb5e99681f4ad99c21d9cfd83eddb96Vignesh Venkatasubramanian disable_feature unit_tests 913da49e34c1fb5e99681f4ad99c21d9cfd83eddb96Vignesh Venkatasubramanian vs_version=${tgt_cc##vs} 914da49e34c1fb5e99681f4ad99c21d9cfd83eddb96Vignesh Venkatasubramanian if [ $vs_version -ge 12 ]; then 915da49e34c1fb5e99681f4ad99c21d9cfd83eddb96Vignesh Venkatasubramanian # MSVC 2013 doesn't allow doing plain .exe projects for ARM, 916da49e34c1fb5e99681f4ad99c21d9cfd83eddb96Vignesh Venkatasubramanian # only "AppContainerApplication" which requires an AppxManifest. 917da49e34c1fb5e99681f4ad99c21d9cfd83eddb96Vignesh Venkatasubramanian # Therefore disable the examples, just build the library. 918da49e34c1fb5e99681f4ad99c21d9cfd83eddb96Vignesh Venkatasubramanian disable_feature examples 919da49e34c1fb5e99681f4ad99c21d9cfd83eddb96Vignesh Venkatasubramanian fi 920da49e34c1fb5e99681f4ad99c21d9cfd83eddb96Vignesh Venkatasubramanian ;; 92190d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber rvct) 922da49e34c1fb5e99681f4ad99c21d9cfd83eddb96Vignesh Venkatasubramanian CC=armcc 923da49e34c1fb5e99681f4ad99c21d9cfd83eddb96Vignesh Venkatasubramanian AR=armar 924da49e34c1fb5e99681f4ad99c21d9cfd83eddb96Vignesh Venkatasubramanian AS=armasm 925da49e34c1fb5e99681f4ad99c21d9cfd83eddb96Vignesh Venkatasubramanian LD="${source_path}/build/make/armlink_adapter.sh" 926da49e34c1fb5e99681f4ad99c21d9cfd83eddb96Vignesh Venkatasubramanian STRIP=arm-none-linux-gnueabi-strip 927da49e34c1fb5e99681f4ad99c21d9cfd83eddb96Vignesh Venkatasubramanian NM=arm-none-linux-gnueabi-nm 928da49e34c1fb5e99681f4ad99c21d9cfd83eddb96Vignesh Venkatasubramanian tune_cflags="--cpu=" 929da49e34c1fb5e99681f4ad99c21d9cfd83eddb96Vignesh Venkatasubramanian tune_asflags="--cpu=" 930da49e34c1fb5e99681f4ad99c21d9cfd83eddb96Vignesh Venkatasubramanian if [ -z "${tune_cpu}" ]; then 931da49e34c1fb5e99681f4ad99c21d9cfd83eddb96Vignesh Venkatasubramanian if [ ${tgt_isa} = "armv7" ]; then 932da49e34c1fb5e99681f4ad99c21d9cfd83eddb96Vignesh Venkatasubramanian if enabled neon || enabled neon_asm 933da49e34c1fb5e99681f4ad99c21d9cfd83eddb96Vignesh Venkatasubramanian then 934da49e34c1fb5e99681f4ad99c21d9cfd83eddb96Vignesh Venkatasubramanian check_add_cflags --fpu=softvfp+vfpv3 935da49e34c1fb5e99681f4ad99c21d9cfd83eddb96Vignesh Venkatasubramanian check_add_asflags --fpu=softvfp+vfpv3 936da49e34c1fb5e99681f4ad99c21d9cfd83eddb96Vignesh Venkatasubramanian fi 937da49e34c1fb5e99681f4ad99c21d9cfd83eddb96Vignesh Venkatasubramanian check_add_cflags --cpu=Cortex-A8 938da49e34c1fb5e99681f4ad99c21d9cfd83eddb96Vignesh Venkatasubramanian check_add_asflags --cpu=Cortex-A8 939da49e34c1fb5e99681f4ad99c21d9cfd83eddb96Vignesh Venkatasubramanian else 940da49e34c1fb5e99681f4ad99c21d9cfd83eddb96Vignesh Venkatasubramanian check_add_cflags --cpu=${tgt_isa##armv} 941da49e34c1fb5e99681f4ad99c21d9cfd83eddb96Vignesh Venkatasubramanian check_add_asflags --cpu=${tgt_isa##armv} 94290d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber fi 943da49e34c1fb5e99681f4ad99c21d9cfd83eddb96Vignesh Venkatasubramanian fi 944da49e34c1fb5e99681f4ad99c21d9cfd83eddb96Vignesh Venkatasubramanian arch_int=${tgt_isa##armv} 945da49e34c1fb5e99681f4ad99c21d9cfd83eddb96Vignesh Venkatasubramanian arch_int=${arch_int%%te} 946da49e34c1fb5e99681f4ad99c21d9cfd83eddb96Vignesh Venkatasubramanian check_add_asflags --pd "\"ARCHITECTURE SETA ${arch_int}\"" 947da49e34c1fb5e99681f4ad99c21d9cfd83eddb96Vignesh Venkatasubramanian enabled debug && add_asflags -g 948da49e34c1fb5e99681f4ad99c21d9cfd83eddb96Vignesh Venkatasubramanian add_cflags --gnu 949da49e34c1fb5e99681f4ad99c21d9cfd83eddb96Vignesh Venkatasubramanian add_cflags --enum_is_int 950da49e34c1fb5e99681f4ad99c21d9cfd83eddb96Vignesh Venkatasubramanian add_cflags --wchar32 951da49e34c1fb5e99681f4ad99c21d9cfd83eddb96Vignesh Venkatasubramanian ;; 952da49e34c1fb5e99681f4ad99c21d9cfd83eddb96Vignesh Venkatasubramanian esac 95390d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber 954da49e34c1fb5e99681f4ad99c21d9cfd83eddb96Vignesh Venkatasubramanian case ${tgt_os} in 95579f15823c34ae1e423108295e416213200bb280fAndreas Huber none*) 956da49e34c1fb5e99681f4ad99c21d9cfd83eddb96Vignesh Venkatasubramanian disable_feature multithread 957da49e34c1fb5e99681f4ad99c21d9cfd83eddb96Vignesh Venkatasubramanian disable_feature os_support 958da49e34c1fb5e99681f4ad99c21d9cfd83eddb96Vignesh Venkatasubramanian ;; 9591b362b15af34006e6a11974088a46d42b903418eJohann 9601b362b15af34006e6a11974088a46d42b903418eJohann android*) 961da49e34c1fb5e99681f4ad99c21d9cfd83eddb96Vignesh Venkatasubramanian SDK_PATH=${sdk_path} 962da49e34c1fb5e99681f4ad99c21d9cfd83eddb96Vignesh Venkatasubramanian COMPILER_LOCATION=`find "${SDK_PATH}" \ 963da49e34c1fb5e99681f4ad99c21d9cfd83eddb96Vignesh Venkatasubramanian -name "arm-linux-androideabi-gcc*" -print -quit` 964da49e34c1fb5e99681f4ad99c21d9cfd83eddb96Vignesh Venkatasubramanian TOOLCHAIN_PATH=${COMPILER_LOCATION%/*}/arm-linux-androideabi- 965da49e34c1fb5e99681f4ad99c21d9cfd83eddb96Vignesh Venkatasubramanian CC=${TOOLCHAIN_PATH}gcc 966da49e34c1fb5e99681f4ad99c21d9cfd83eddb96Vignesh Venkatasubramanian CXX=${TOOLCHAIN_PATH}g++ 967da49e34c1fb5e99681f4ad99c21d9cfd83eddb96Vignesh Venkatasubramanian AR=${TOOLCHAIN_PATH}ar 968da49e34c1fb5e99681f4ad99c21d9cfd83eddb96Vignesh Venkatasubramanian LD=${TOOLCHAIN_PATH}gcc 969da49e34c1fb5e99681f4ad99c21d9cfd83eddb96Vignesh Venkatasubramanian AS=${TOOLCHAIN_PATH}as 970da49e34c1fb5e99681f4ad99c21d9cfd83eddb96Vignesh Venkatasubramanian STRIP=${TOOLCHAIN_PATH}strip 971da49e34c1fb5e99681f4ad99c21d9cfd83eddb96Vignesh Venkatasubramanian NM=${TOOLCHAIN_PATH}nm 972da49e34c1fb5e99681f4ad99c21d9cfd83eddb96Vignesh Venkatasubramanian 973da49e34c1fb5e99681f4ad99c21d9cfd83eddb96Vignesh Venkatasubramanian if [ -z "${alt_libc}" ]; then 974da49e34c1fb5e99681f4ad99c21d9cfd83eddb96Vignesh Venkatasubramanian alt_libc=`find "${SDK_PATH}" -name arch-arm -print | \ 975da49e34c1fb5e99681f4ad99c21d9cfd83eddb96Vignesh Venkatasubramanian awk '{n = split($0,a,"/"); \ 976da49e34c1fb5e99681f4ad99c21d9cfd83eddb96Vignesh Venkatasubramanian split(a[n-1],b,"-"); \ 977da49e34c1fb5e99681f4ad99c21d9cfd83eddb96Vignesh Venkatasubramanian print $0 " " b[2]}' | \ 978da49e34c1fb5e99681f4ad99c21d9cfd83eddb96Vignesh Venkatasubramanian sort -g -k 2 | \ 979da49e34c1fb5e99681f4ad99c21d9cfd83eddb96Vignesh Venkatasubramanian awk '{ print $1 }' | tail -1` 980da49e34c1fb5e99681f4ad99c21d9cfd83eddb96Vignesh Venkatasubramanian fi 981da49e34c1fb5e99681f4ad99c21d9cfd83eddb96Vignesh Venkatasubramanian 982da49e34c1fb5e99681f4ad99c21d9cfd83eddb96Vignesh Venkatasubramanian add_cflags "--sysroot=${alt_libc}" 983da49e34c1fb5e99681f4ad99c21d9cfd83eddb96Vignesh Venkatasubramanian add_ldflags "--sysroot=${alt_libc}" 984da49e34c1fb5e99681f4ad99c21d9cfd83eddb96Vignesh Venkatasubramanian 985da49e34c1fb5e99681f4ad99c21d9cfd83eddb96Vignesh Venkatasubramanian # linker flag that routes around a CPU bug in some 986da49e34c1fb5e99681f4ad99c21d9cfd83eddb96Vignesh Venkatasubramanian # Cortex-A8 implementations (NDK Dev Guide) 987da49e34c1fb5e99681f4ad99c21d9cfd83eddb96Vignesh Venkatasubramanian add_ldflags "-Wl,--fix-cortex-a8" 988da49e34c1fb5e99681f4ad99c21d9cfd83eddb96Vignesh Venkatasubramanian 989da49e34c1fb5e99681f4ad99c21d9cfd83eddb96Vignesh Venkatasubramanian enable_feature pic 990da49e34c1fb5e99681f4ad99c21d9cfd83eddb96Vignesh Venkatasubramanian soft_enable realtime_only 991da49e34c1fb5e99681f4ad99c21d9cfd83eddb96Vignesh Venkatasubramanian if [ ${tgt_isa} = "armv7" ]; then 992da49e34c1fb5e99681f4ad99c21d9cfd83eddb96Vignesh Venkatasubramanian soft_enable runtime_cpu_detect 993da49e34c1fb5e99681f4ad99c21d9cfd83eddb96Vignesh Venkatasubramanian fi 994da49e34c1fb5e99681f4ad99c21d9cfd83eddb96Vignesh Venkatasubramanian if enabled runtime_cpu_detect; then 995da49e34c1fb5e99681f4ad99c21d9cfd83eddb96Vignesh Venkatasubramanian add_cflags "-I${SDK_PATH}/sources/android/cpufeatures" 996da49e34c1fb5e99681f4ad99c21d9cfd83eddb96Vignesh Venkatasubramanian fi 9971b362b15af34006e6a11974088a46d42b903418eJohann ;; 9981b362b15af34006e6a11974088a46d42b903418eJohann 99990d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber darwin*) 1000da49e34c1fb5e99681f4ad99c21d9cfd83eddb96Vignesh Venkatasubramanian XCRUN_FIND="xcrun --sdk iphoneos --find" 1001da49e34c1fb5e99681f4ad99c21d9cfd83eddb96Vignesh Venkatasubramanian CXX="$(${XCRUN_FIND} clang++)" 1002da49e34c1fb5e99681f4ad99c21d9cfd83eddb96Vignesh Venkatasubramanian CC="$(${XCRUN_FIND} clang)" 1003da49e34c1fb5e99681f4ad99c21d9cfd83eddb96Vignesh Venkatasubramanian AR="$(${XCRUN_FIND} ar)" 1004da49e34c1fb5e99681f4ad99c21d9cfd83eddb96Vignesh Venkatasubramanian AS="$(${XCRUN_FIND} as)" 1005da49e34c1fb5e99681f4ad99c21d9cfd83eddb96Vignesh Venkatasubramanian STRIP="$(${XCRUN_FIND} strip)" 1006da49e34c1fb5e99681f4ad99c21d9cfd83eddb96Vignesh Venkatasubramanian NM="$(${XCRUN_FIND} nm)" 1007da49e34c1fb5e99681f4ad99c21d9cfd83eddb96Vignesh Venkatasubramanian RANLIB="$(${XCRUN_FIND} ranlib)" 1008da49e34c1fb5e99681f4ad99c21d9cfd83eddb96Vignesh Venkatasubramanian AS_SFX=.s 1009da49e34c1fb5e99681f4ad99c21d9cfd83eddb96Vignesh Venkatasubramanian 1010da49e34c1fb5e99681f4ad99c21d9cfd83eddb96Vignesh Venkatasubramanian # Special handling of ld for armv6 because libclang_rt.ios.a does 1011da49e34c1fb5e99681f4ad99c21d9cfd83eddb96Vignesh Venkatasubramanian # not contain armv6 support in Apple's clang package: 1012da49e34c1fb5e99681f4ad99c21d9cfd83eddb96Vignesh Venkatasubramanian # Apple LLVM version 5.1 (clang-503.0.40) (based on LLVM 3.4svn). 1013da49e34c1fb5e99681f4ad99c21d9cfd83eddb96Vignesh Venkatasubramanian # TODO(tomfinegan): Remove this. Our minimum iOS version (6.0) 1014da49e34c1fb5e99681f4ad99c21d9cfd83eddb96Vignesh Venkatasubramanian # renders support for armv6 unnecessary because the 3GS and up 1015da49e34c1fb5e99681f4ad99c21d9cfd83eddb96Vignesh Venkatasubramanian # support neon. 1016da49e34c1fb5e99681f4ad99c21d9cfd83eddb96Vignesh Venkatasubramanian if [ "${tgt_isa}" = "armv6" ]; then 10172ec72e65689c948e92b826ae1e867bf369e72f13Vignesh Venkatasubramanian LD="$(${XCRUN_FIND} ld)" 1018da49e34c1fb5e99681f4ad99c21d9cfd83eddb96Vignesh Venkatasubramanian else 1019da49e34c1fb5e99681f4ad99c21d9cfd83eddb96Vignesh Venkatasubramanian LD="${CXX:-$(${XCRUN_FIND} ld)}" 1020da49e34c1fb5e99681f4ad99c21d9cfd83eddb96Vignesh Venkatasubramanian fi 1021da49e34c1fb5e99681f4ad99c21d9cfd83eddb96Vignesh Venkatasubramanian 1022da49e34c1fb5e99681f4ad99c21d9cfd83eddb96Vignesh Venkatasubramanian # ASFLAGS is written here instead of using check_add_asflags 1023da49e34c1fb5e99681f4ad99c21d9cfd83eddb96Vignesh Venkatasubramanian # because we need to overwrite all of ASFLAGS and purge the 1024da49e34c1fb5e99681f4ad99c21d9cfd83eddb96Vignesh Venkatasubramanian # options that were put in above 1025da49e34c1fb5e99681f4ad99c21d9cfd83eddb96Vignesh Venkatasubramanian ASFLAGS="-arch ${tgt_isa} -g" 1026da49e34c1fb5e99681f4ad99c21d9cfd83eddb96Vignesh Venkatasubramanian 1027da49e34c1fb5e99681f4ad99c21d9cfd83eddb96Vignesh Venkatasubramanian add_cflags -arch ${tgt_isa} 1028da49e34c1fb5e99681f4ad99c21d9cfd83eddb96Vignesh Venkatasubramanian add_ldflags -arch ${tgt_isa} 1029da49e34c1fb5e99681f4ad99c21d9cfd83eddb96Vignesh Venkatasubramanian 1030da49e34c1fb5e99681f4ad99c21d9cfd83eddb96Vignesh Venkatasubramanian alt_libc="$(show_darwin_sdk_path iphoneos)" 1031da49e34c1fb5e99681f4ad99c21d9cfd83eddb96Vignesh Venkatasubramanian if [ -d "${alt_libc}" ]; then 1032da49e34c1fb5e99681f4ad99c21d9cfd83eddb96Vignesh Venkatasubramanian add_cflags -isysroot ${alt_libc} 1033da49e34c1fb5e99681f4ad99c21d9cfd83eddb96Vignesh Venkatasubramanian fi 1034da49e34c1fb5e99681f4ad99c21d9cfd83eddb96Vignesh Venkatasubramanian 1035da49e34c1fb5e99681f4ad99c21d9cfd83eddb96Vignesh Venkatasubramanian if [ "${LD}" = "${CXX}" ]; then 1036da49e34c1fb5e99681f4ad99c21d9cfd83eddb96Vignesh Venkatasubramanian add_ldflags -miphoneos-version-min="${IOS_VERSION_MIN}" 1037da49e34c1fb5e99681f4ad99c21d9cfd83eddb96Vignesh Venkatasubramanian else 1038da49e34c1fb5e99681f4ad99c21d9cfd83eddb96Vignesh Venkatasubramanian add_ldflags -ios_version_min "${IOS_VERSION_MIN}" 1039da49e34c1fb5e99681f4ad99c21d9cfd83eddb96Vignesh Venkatasubramanian fi 1040da49e34c1fb5e99681f4ad99c21d9cfd83eddb96Vignesh Venkatasubramanian 1041da49e34c1fb5e99681f4ad99c21d9cfd83eddb96Vignesh Venkatasubramanian for d in lib usr/lib usr/lib/system; do 1042da49e34c1fb5e99681f4ad99c21d9cfd83eddb96Vignesh Venkatasubramanian try_dir="${alt_libc}/${d}" 1043da49e34c1fb5e99681f4ad99c21d9cfd83eddb96Vignesh Venkatasubramanian [ -d "${try_dir}" ] && add_ldflags -L"${try_dir}" 1044da49e34c1fb5e99681f4ad99c21d9cfd83eddb96Vignesh Venkatasubramanian done 1045da49e34c1fb5e99681f4ad99c21d9cfd83eddb96Vignesh Venkatasubramanian 1046da49e34c1fb5e99681f4ad99c21d9cfd83eddb96Vignesh Venkatasubramanian asm_conversion_cmd="${source_path}/build/make/ads2gas_apple.pl" 10472263fc984bdc858ee931d3e35c87c404de923950Johann 10482263fc984bdc858ee931d3e35c87c404de923950Johann if [ "$(show_darwin_sdk_major_version iphoneos)" -gt 8 ]; then 10492263fc984bdc858ee931d3e35c87c404de923950Johann check_add_cflags -fembed-bitcode 10502263fc984bdc858ee931d3e35c87c404de923950Johann check_add_asflags -fembed-bitcode 10512263fc984bdc858ee931d3e35c87c404de923950Johann check_add_ldflags -fembed-bitcode 10522263fc984bdc858ee931d3e35c87c404de923950Johann fi 1053da49e34c1fb5e99681f4ad99c21d9cfd83eddb96Vignesh Venkatasubramanian ;; 105490d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber 105590d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber linux*) 1056da49e34c1fb5e99681f4ad99c21d9cfd83eddb96Vignesh Venkatasubramanian enable_feature linux 1057da49e34c1fb5e99681f4ad99c21d9cfd83eddb96Vignesh Venkatasubramanian if enabled rvct; then 1058da49e34c1fb5e99681f4ad99c21d9cfd83eddb96Vignesh Venkatasubramanian # Check if we have CodeSourcery GCC in PATH. Needed for 1059da49e34c1fb5e99681f4ad99c21d9cfd83eddb96Vignesh Venkatasubramanian # libraries 1060da49e34c1fb5e99681f4ad99c21d9cfd83eddb96Vignesh Venkatasubramanian hash arm-none-linux-gnueabi-gcc 2>&- || \ 1061da49e34c1fb5e99681f4ad99c21d9cfd83eddb96Vignesh Venkatasubramanian die "Couldn't find CodeSourcery GCC from PATH" 1062da49e34c1fb5e99681f4ad99c21d9cfd83eddb96Vignesh Venkatasubramanian 1063da49e34c1fb5e99681f4ad99c21d9cfd83eddb96Vignesh Venkatasubramanian # Use armcc as a linker to enable translation of 1064da49e34c1fb5e99681f4ad99c21d9cfd83eddb96Vignesh Venkatasubramanian # some gcc specific options such as -lm and -lpthread. 1065da49e34c1fb5e99681f4ad99c21d9cfd83eddb96Vignesh Venkatasubramanian LD="armcc --translate_gcc" 1066da49e34c1fb5e99681f4ad99c21d9cfd83eddb96Vignesh Venkatasubramanian 1067da49e34c1fb5e99681f4ad99c21d9cfd83eddb96Vignesh Venkatasubramanian # create configuration file (uses path to CodeSourcery GCC) 1068da49e34c1fb5e99681f4ad99c21d9cfd83eddb96Vignesh Venkatasubramanian armcc --arm_linux_configure --arm_linux_config_file=arm_linux.cfg 1069da49e34c1fb5e99681f4ad99c21d9cfd83eddb96Vignesh Venkatasubramanian 1070da49e34c1fb5e99681f4ad99c21d9cfd83eddb96Vignesh Venkatasubramanian add_cflags --arm_linux_paths --arm_linux_config_file=arm_linux.cfg 1071da49e34c1fb5e99681f4ad99c21d9cfd83eddb96Vignesh Venkatasubramanian add_asflags --no_hide_all --apcs=/interwork 1072da49e34c1fb5e99681f4ad99c21d9cfd83eddb96Vignesh Venkatasubramanian add_ldflags --arm_linux_paths --arm_linux_config_file=arm_linux.cfg 1073da49e34c1fb5e99681f4ad99c21d9cfd83eddb96Vignesh Venkatasubramanian enabled pic && add_cflags --apcs=/fpic 1074da49e34c1fb5e99681f4ad99c21d9cfd83eddb96Vignesh Venkatasubramanian enabled pic && add_asflags --apcs=/fpic 1075da49e34c1fb5e99681f4ad99c21d9cfd83eddb96Vignesh Venkatasubramanian enabled shared && add_cflags --shared 1076da49e34c1fb5e99681f4ad99c21d9cfd83eddb96Vignesh Venkatasubramanian fi 1077da49e34c1fb5e99681f4ad99c21d9cfd83eddb96Vignesh Venkatasubramanian ;; 1078da49e34c1fb5e99681f4ad99c21d9cfd83eddb96Vignesh Venkatasubramanian esac 1079da49e34c1fb5e99681f4ad99c21d9cfd83eddb96Vignesh Venkatasubramanian ;; 108090d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber mips*) 1081da49e34c1fb5e99681f4ad99c21d9cfd83eddb96Vignesh Venkatasubramanian link_with_cc=gcc 1082da49e34c1fb5e99681f4ad99c21d9cfd83eddb96Vignesh Venkatasubramanian setup_gnu_toolchain 1083da49e34c1fb5e99681f4ad99c21d9cfd83eddb96Vignesh Venkatasubramanian tune_cflags="-mtune=" 1084da49e34c1fb5e99681f4ad99c21d9cfd83eddb96Vignesh Venkatasubramanian if enabled dspr2; then 1085da49e34c1fb5e99681f4ad99c21d9cfd83eddb96Vignesh Venkatasubramanian check_add_cflags -mips32r2 -mdspr2 1086da49e34c1fb5e99681f4ad99c21d9cfd83eddb96Vignesh Venkatasubramanian fi 1087da49e34c1fb5e99681f4ad99c21d9cfd83eddb96Vignesh Venkatasubramanian 1088da49e34c1fb5e99681f4ad99c21d9cfd83eddb96Vignesh Venkatasubramanian if enabled runtime_cpu_detect; then 1089da49e34c1fb5e99681f4ad99c21d9cfd83eddb96Vignesh Venkatasubramanian disable_feature runtime_cpu_detect 1090da49e34c1fb5e99681f4ad99c21d9cfd83eddb96Vignesh Venkatasubramanian fi 1091da49e34c1fb5e99681f4ad99c21d9cfd83eddb96Vignesh Venkatasubramanian 1092da49e34c1fb5e99681f4ad99c21d9cfd83eddb96Vignesh Venkatasubramanian if [ -n "${tune_cpu}" ]; then 1093da49e34c1fb5e99681f4ad99c21d9cfd83eddb96Vignesh Venkatasubramanian case ${tune_cpu} in 1094da49e34c1fb5e99681f4ad99c21d9cfd83eddb96Vignesh Venkatasubramanian p5600) 1095da49e34c1fb5e99681f4ad99c21d9cfd83eddb96Vignesh Venkatasubramanian check_add_cflags -mips32r5 -funroll-loops -mload-store-pairs 1096da49e34c1fb5e99681f4ad99c21d9cfd83eddb96Vignesh Venkatasubramanian check_add_cflags -msched-weight -mhard-float -mfp64 1097da49e34c1fb5e99681f4ad99c21d9cfd83eddb96Vignesh Venkatasubramanian check_add_asflags -mips32r5 -mhard-float -mfp64 1098da49e34c1fb5e99681f4ad99c21d9cfd83eddb96Vignesh Venkatasubramanian check_add_ldflags -mfp64 10991b362b15af34006e6a11974088a46d42b903418eJohann ;; 1100da49e34c1fb5e99681f4ad99c21d9cfd83eddb96Vignesh Venkatasubramanian i6400) 1101da49e34c1fb5e99681f4ad99c21d9cfd83eddb96Vignesh Venkatasubramanian check_add_cflags -mips64r6 -mabi=64 -funroll-loops -msched-weight 1102da49e34c1fb5e99681f4ad99c21d9cfd83eddb96Vignesh Venkatasubramanian check_add_cflags -mload-store-pairs -mhard-float -mfp64 1103da49e34c1fb5e99681f4ad99c21d9cfd83eddb96Vignesh Venkatasubramanian check_add_asflags -mips64r6 -mabi=64 -mhard-float -mfp64 1104da49e34c1fb5e99681f4ad99c21d9cfd83eddb96Vignesh Venkatasubramanian check_add_ldflags -mips64r6 -mabi=64 -mfp64 11051b362b15af34006e6a11974088a46d42b903418eJohann ;; 110690d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber esac 110790d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber 1108da49e34c1fb5e99681f4ad99c21d9cfd83eddb96Vignesh Venkatasubramanian if enabled msa; then 1109da49e34c1fb5e99681f4ad99c21d9cfd83eddb96Vignesh Venkatasubramanian add_cflags -mmsa 1110da49e34c1fb5e99681f4ad99c21d9cfd83eddb96Vignesh Venkatasubramanian add_asflags -mmsa 1111da49e34c1fb5e99681f4ad99c21d9cfd83eddb96Vignesh Venkatasubramanian add_ldflags -mmsa 1112da49e34c1fb5e99681f4ad99c21d9cfd83eddb96Vignesh Venkatasubramanian fi 1113da49e34c1fb5e99681f4ad99c21d9cfd83eddb96Vignesh Venkatasubramanian fi 1114da49e34c1fb5e99681f4ad99c21d9cfd83eddb96Vignesh Venkatasubramanian 1115da49e34c1fb5e99681f4ad99c21d9cfd83eddb96Vignesh Venkatasubramanian check_add_cflags -march=${tgt_isa} 1116da49e34c1fb5e99681f4ad99c21d9cfd83eddb96Vignesh Venkatasubramanian check_add_asflags -march=${tgt_isa} 1117da49e34c1fb5e99681f4ad99c21d9cfd83eddb96Vignesh Venkatasubramanian check_add_asflags -KPIC 1118da49e34c1fb5e99681f4ad99c21d9cfd83eddb96Vignesh Venkatasubramanian ;; 1119da49e34c1fb5e99681f4ad99c21d9cfd83eddb96Vignesh Venkatasubramanian x86*) 1120da49e34c1fb5e99681f4ad99c21d9cfd83eddb96Vignesh Venkatasubramanian case ${tgt_os} in 1121da49e34c1fb5e99681f4ad99c21d9cfd83eddb96Vignesh Venkatasubramanian win*) 1122da49e34c1fb5e99681f4ad99c21d9cfd83eddb96Vignesh Venkatasubramanian enabled gcc && add_cflags -fno-common 1123da49e34c1fb5e99681f4ad99c21d9cfd83eddb96Vignesh Venkatasubramanian ;; 1124da49e34c1fb5e99681f4ad99c21d9cfd83eddb96Vignesh Venkatasubramanian solaris*) 1125da49e34c1fb5e99681f4ad99c21d9cfd83eddb96Vignesh Venkatasubramanian CC=${CC:-${CROSS}gcc} 1126da49e34c1fb5e99681f4ad99c21d9cfd83eddb96Vignesh Venkatasubramanian CXX=${CXX:-${CROSS}g++} 1127da49e34c1fb5e99681f4ad99c21d9cfd83eddb96Vignesh Venkatasubramanian LD=${LD:-${CROSS}gcc} 1128da49e34c1fb5e99681f4ad99c21d9cfd83eddb96Vignesh Venkatasubramanian CROSS=${CROSS:-g} 1129da49e34c1fb5e99681f4ad99c21d9cfd83eddb96Vignesh Venkatasubramanian ;; 1130da49e34c1fb5e99681f4ad99c21d9cfd83eddb96Vignesh Venkatasubramanian os2) 11312263fc984bdc858ee931d3e35c87c404de923950Johann disable_feature pic 1132da49e34c1fb5e99681f4ad99c21d9cfd83eddb96Vignesh Venkatasubramanian AS=${AS:-nasm} 11332263fc984bdc858ee931d3e35c87c404de923950Johann add_ldflags -Zhigh-mem 1134da49e34c1fb5e99681f4ad99c21d9cfd83eddb96Vignesh Venkatasubramanian ;; 1135da49e34c1fb5e99681f4ad99c21d9cfd83eddb96Vignesh Venkatasubramanian esac 1136da49e34c1fb5e99681f4ad99c21d9cfd83eddb96Vignesh Venkatasubramanian 1137da49e34c1fb5e99681f4ad99c21d9cfd83eddb96Vignesh Venkatasubramanian AS="${alt_as:-${AS:-auto}}" 1138da49e34c1fb5e99681f4ad99c21d9cfd83eddb96Vignesh Venkatasubramanian case ${tgt_cc} in 1139da49e34c1fb5e99681f4ad99c21d9cfd83eddb96Vignesh Venkatasubramanian icc*) 1140da49e34c1fb5e99681f4ad99c21d9cfd83eddb96Vignesh Venkatasubramanian CC=${CC:-icc} 1141da49e34c1fb5e99681f4ad99c21d9cfd83eddb96Vignesh Venkatasubramanian LD=${LD:-icc} 1142da49e34c1fb5e99681f4ad99c21d9cfd83eddb96Vignesh Venkatasubramanian setup_gnu_toolchain 1143da49e34c1fb5e99681f4ad99c21d9cfd83eddb96Vignesh Venkatasubramanian add_cflags -use-msasm # remove -use-msasm too? 1144da49e34c1fb5e99681f4ad99c21d9cfd83eddb96Vignesh Venkatasubramanian # add -no-intel-extensions to suppress warning #10237 1145da49e34c1fb5e99681f4ad99c21d9cfd83eddb96Vignesh Venkatasubramanian # refer to http://software.intel.com/en-us/forums/topic/280199 1146da49e34c1fb5e99681f4ad99c21d9cfd83eddb96Vignesh Venkatasubramanian add_ldflags -i-static -no-intel-extensions 1147da49e34c1fb5e99681f4ad99c21d9cfd83eddb96Vignesh Venkatasubramanian enabled x86_64 && add_cflags -ipo -static -O3 -no-prec-div 1148da49e34c1fb5e99681f4ad99c21d9cfd83eddb96Vignesh Venkatasubramanian enabled x86_64 && AR=xiar 1149da49e34c1fb5e99681f4ad99c21d9cfd83eddb96Vignesh Venkatasubramanian case ${tune_cpu} in 1150da49e34c1fb5e99681f4ad99c21d9cfd83eddb96Vignesh Venkatasubramanian atom*) 1151da49e34c1fb5e99681f4ad99c21d9cfd83eddb96Vignesh Venkatasubramanian tune_cflags="-x" 1152da49e34c1fb5e99681f4ad99c21d9cfd83eddb96Vignesh Venkatasubramanian tune_cpu="SSE3_ATOM" 1153da49e34c1fb5e99681f4ad99c21d9cfd83eddb96Vignesh Venkatasubramanian ;; 1154da49e34c1fb5e99681f4ad99c21d9cfd83eddb96Vignesh Venkatasubramanian *) 1155da49e34c1fb5e99681f4ad99c21d9cfd83eddb96Vignesh Venkatasubramanian tune_cflags="-march=" 1156da49e34c1fb5e99681f4ad99c21d9cfd83eddb96Vignesh Venkatasubramanian ;; 1157da49e34c1fb5e99681f4ad99c21d9cfd83eddb96Vignesh Venkatasubramanian esac 1158da49e34c1fb5e99681f4ad99c21d9cfd83eddb96Vignesh Venkatasubramanian ;; 1159da49e34c1fb5e99681f4ad99c21d9cfd83eddb96Vignesh Venkatasubramanian gcc*) 1160da49e34c1fb5e99681f4ad99c21d9cfd83eddb96Vignesh Venkatasubramanian link_with_cc=gcc 1161da49e34c1fb5e99681f4ad99c21d9cfd83eddb96Vignesh Venkatasubramanian tune_cflags="-march=" 1162da49e34c1fb5e99681f4ad99c21d9cfd83eddb96Vignesh Venkatasubramanian setup_gnu_toolchain 1163da49e34c1fb5e99681f4ad99c21d9cfd83eddb96Vignesh Venkatasubramanian #for 32 bit x86 builds, -O3 did not turn on this flag 1164da49e34c1fb5e99681f4ad99c21d9cfd83eddb96Vignesh Venkatasubramanian enabled optimizations && disabled gprof && check_add_cflags -fomit-frame-pointer 1165da49e34c1fb5e99681f4ad99c21d9cfd83eddb96Vignesh Venkatasubramanian ;; 1166da49e34c1fb5e99681f4ad99c21d9cfd83eddb96Vignesh Venkatasubramanian vs*) 1167da49e34c1fb5e99681f4ad99c21d9cfd83eddb96Vignesh Venkatasubramanian # When building with Microsoft Visual Studio the assembler is 1168da49e34c1fb5e99681f4ad99c21d9cfd83eddb96Vignesh Venkatasubramanian # invoked directly. Checking at configure time is unnecessary. 1169da49e34c1fb5e99681f4ad99c21d9cfd83eddb96Vignesh Venkatasubramanian # Skip the check by setting AS arbitrarily 1170da49e34c1fb5e99681f4ad99c21d9cfd83eddb96Vignesh Venkatasubramanian AS=msvs 1171da49e34c1fb5e99681f4ad99c21d9cfd83eddb96Vignesh Venkatasubramanian msvs_arch_dir=x86-msvs 1172da49e34c1fb5e99681f4ad99c21d9cfd83eddb96Vignesh Venkatasubramanian vc_version=${tgt_cc##vs} 1173da49e34c1fb5e99681f4ad99c21d9cfd83eddb96Vignesh Venkatasubramanian case $vc_version in 1174da49e34c1fb5e99681f4ad99c21d9cfd83eddb96Vignesh Venkatasubramanian 7|8|9|10) 1175da49e34c1fb5e99681f4ad99c21d9cfd83eddb96Vignesh Venkatasubramanian echo "${tgt_cc} does not support avx/avx2, disabling....." 1176da49e34c1fb5e99681f4ad99c21d9cfd83eddb96Vignesh Venkatasubramanian RTCD_OPTIONS="${RTCD_OPTIONS}--disable-avx --disable-avx2 " 1177da49e34c1fb5e99681f4ad99c21d9cfd83eddb96Vignesh Venkatasubramanian soft_disable avx 1178da49e34c1fb5e99681f4ad99c21d9cfd83eddb96Vignesh Venkatasubramanian soft_disable avx2 1179da49e34c1fb5e99681f4ad99c21d9cfd83eddb96Vignesh Venkatasubramanian ;; 1180da49e34c1fb5e99681f4ad99c21d9cfd83eddb96Vignesh Venkatasubramanian esac 1181da49e34c1fb5e99681f4ad99c21d9cfd83eddb96Vignesh Venkatasubramanian ;; 1182da49e34c1fb5e99681f4ad99c21d9cfd83eddb96Vignesh Venkatasubramanian esac 1183da49e34c1fb5e99681f4ad99c21d9cfd83eddb96Vignesh Venkatasubramanian 1184da49e34c1fb5e99681f4ad99c21d9cfd83eddb96Vignesh Venkatasubramanian bits=32 1185da49e34c1fb5e99681f4ad99c21d9cfd83eddb96Vignesh Venkatasubramanian enabled x86_64 && bits=64 1186da49e34c1fb5e99681f4ad99c21d9cfd83eddb96Vignesh Venkatasubramanian check_cpp <<EOF && bits=x32 1187da49e34c1fb5e99681f4ad99c21d9cfd83eddb96Vignesh Venkatasubramanian#if !defined(__ILP32__) || !defined(__x86_64__) 1188ba6c59e9d7d7013b3906b6f4230b663422681848Vignesh Venkatasubramanian#error "not x32" 1189ba6c59e9d7d7013b3906b6f4230b663422681848Vignesh Venkatasubramanian#endif 1190ba6c59e9d7d7013b3906b6f4230b663422681848Vignesh VenkatasubramanianEOF 1191da49e34c1fb5e99681f4ad99c21d9cfd83eddb96Vignesh Venkatasubramanian case ${tgt_cc} in 1192da49e34c1fb5e99681f4ad99c21d9cfd83eddb96Vignesh Venkatasubramanian gcc*) 1193da49e34c1fb5e99681f4ad99c21d9cfd83eddb96Vignesh Venkatasubramanian add_cflags -m${bits} 1194da49e34c1fb5e99681f4ad99c21d9cfd83eddb96Vignesh Venkatasubramanian add_ldflags -m${bits} 1195da49e34c1fb5e99681f4ad99c21d9cfd83eddb96Vignesh Venkatasubramanian ;; 1196da49e34c1fb5e99681f4ad99c21d9cfd83eddb96Vignesh Venkatasubramanian esac 1197da49e34c1fb5e99681f4ad99c21d9cfd83eddb96Vignesh Venkatasubramanian 1198da49e34c1fb5e99681f4ad99c21d9cfd83eddb96Vignesh Venkatasubramanian soft_enable runtime_cpu_detect 1199da49e34c1fb5e99681f4ad99c21d9cfd83eddb96Vignesh Venkatasubramanian # We can't use 'check_cflags' until the compiler is configured and CC is 1200da49e34c1fb5e99681f4ad99c21d9cfd83eddb96Vignesh Venkatasubramanian # populated. 1201da49e34c1fb5e99681f4ad99c21d9cfd83eddb96Vignesh Venkatasubramanian check_gcc_machine_option mmx 1202da49e34c1fb5e99681f4ad99c21d9cfd83eddb96Vignesh Venkatasubramanian check_gcc_machine_option sse 1203da49e34c1fb5e99681f4ad99c21d9cfd83eddb96Vignesh Venkatasubramanian check_gcc_machine_option sse2 1204da49e34c1fb5e99681f4ad99c21d9cfd83eddb96Vignesh Venkatasubramanian check_gcc_machine_option sse3 1205da49e34c1fb5e99681f4ad99c21d9cfd83eddb96Vignesh Venkatasubramanian check_gcc_machine_option ssse3 1206da49e34c1fb5e99681f4ad99c21d9cfd83eddb96Vignesh Venkatasubramanian check_gcc_machine_option sse4 sse4_1 1207da49e34c1fb5e99681f4ad99c21d9cfd83eddb96Vignesh Venkatasubramanian check_gcc_machine_option avx 1208da49e34c1fb5e99681f4ad99c21d9cfd83eddb96Vignesh Venkatasubramanian check_gcc_machine_option avx2 1209da49e34c1fb5e99681f4ad99c21d9cfd83eddb96Vignesh Venkatasubramanian 1210da49e34c1fb5e99681f4ad99c21d9cfd83eddb96Vignesh Venkatasubramanian case "${AS}" in 1211da49e34c1fb5e99681f4ad99c21d9cfd83eddb96Vignesh Venkatasubramanian auto|"") 1212da49e34c1fb5e99681f4ad99c21d9cfd83eddb96Vignesh Venkatasubramanian which nasm >/dev/null 2>&1 && AS=nasm 1213da49e34c1fb5e99681f4ad99c21d9cfd83eddb96Vignesh Venkatasubramanian which yasm >/dev/null 2>&1 && AS=yasm 1214da49e34c1fb5e99681f4ad99c21d9cfd83eddb96Vignesh Venkatasubramanian if [ "${AS}" = nasm ] ; then 1215da49e34c1fb5e99681f4ad99c21d9cfd83eddb96Vignesh Venkatasubramanian # Apple ships version 0.98 of nasm through at least Xcode 6. Revisit 1216da49e34c1fb5e99681f4ad99c21d9cfd83eddb96Vignesh Venkatasubramanian # this check if they start shipping a compatible version. 1217da49e34c1fb5e99681f4ad99c21d9cfd83eddb96Vignesh Venkatasubramanian apple=`nasm -v | grep "Apple"` 1218da49e34c1fb5e99681f4ad99c21d9cfd83eddb96Vignesh Venkatasubramanian [ -n "${apple}" ] \ 1219da49e34c1fb5e99681f4ad99c21d9cfd83eddb96Vignesh Venkatasubramanian && echo "Unsupported version of nasm: ${apple}" \ 1220da49e34c1fb5e99681f4ad99c21d9cfd83eddb96Vignesh Venkatasubramanian && AS="" 1221da49e34c1fb5e99681f4ad99c21d9cfd83eddb96Vignesh Venkatasubramanian fi 1222da49e34c1fb5e99681f4ad99c21d9cfd83eddb96Vignesh Venkatasubramanian [ "${AS}" = auto ] || [ -z "${AS}" ] \ 12232263fc984bdc858ee931d3e35c87c404de923950Johann && die "Neither yasm nor nasm have been found." \ 12242263fc984bdc858ee931d3e35c87c404de923950Johann "See the prerequisites section in the README for more info." 1225da49e34c1fb5e99681f4ad99c21d9cfd83eddb96Vignesh Venkatasubramanian ;; 1226da49e34c1fb5e99681f4ad99c21d9cfd83eddb96Vignesh Venkatasubramanian esac 1227da49e34c1fb5e99681f4ad99c21d9cfd83eddb96Vignesh Venkatasubramanian log_echo " using $AS" 1228da49e34c1fb5e99681f4ad99c21d9cfd83eddb96Vignesh Venkatasubramanian [ "${AS##*/}" = nasm ] && add_asflags -Ox 1229da49e34c1fb5e99681f4ad99c21d9cfd83eddb96Vignesh Venkatasubramanian AS_SFX=.asm 1230da49e34c1fb5e99681f4ad99c21d9cfd83eddb96Vignesh Venkatasubramanian case ${tgt_os} in 1231da49e34c1fb5e99681f4ad99c21d9cfd83eddb96Vignesh Venkatasubramanian win32) 1232da49e34c1fb5e99681f4ad99c21d9cfd83eddb96Vignesh Venkatasubramanian add_asflags -f win32 1233da49e34c1fb5e99681f4ad99c21d9cfd83eddb96Vignesh Venkatasubramanian enabled debug && add_asflags -g cv8 1234da49e34c1fb5e99681f4ad99c21d9cfd83eddb96Vignesh Venkatasubramanian EXE_SFX=.exe 1235da49e34c1fb5e99681f4ad99c21d9cfd83eddb96Vignesh Venkatasubramanian ;; 1236da49e34c1fb5e99681f4ad99c21d9cfd83eddb96Vignesh Venkatasubramanian win64) 1237da49e34c1fb5e99681f4ad99c21d9cfd83eddb96Vignesh Venkatasubramanian add_asflags -f x64 1238da49e34c1fb5e99681f4ad99c21d9cfd83eddb96Vignesh Venkatasubramanian enabled debug && add_asflags -g cv8 1239da49e34c1fb5e99681f4ad99c21d9cfd83eddb96Vignesh Venkatasubramanian EXE_SFX=.exe 1240da49e34c1fb5e99681f4ad99c21d9cfd83eddb96Vignesh Venkatasubramanian ;; 1241da49e34c1fb5e99681f4ad99c21d9cfd83eddb96Vignesh Venkatasubramanian linux*|solaris*|android*) 1242da49e34c1fb5e99681f4ad99c21d9cfd83eddb96Vignesh Venkatasubramanian add_asflags -f elf${bits} 1243da49e34c1fb5e99681f4ad99c21d9cfd83eddb96Vignesh Venkatasubramanian enabled debug && [ "${AS}" = yasm ] && add_asflags -g dwarf2 1244da49e34c1fb5e99681f4ad99c21d9cfd83eddb96Vignesh Venkatasubramanian enabled debug && [ "${AS}" = nasm ] && add_asflags -g 1245da49e34c1fb5e99681f4ad99c21d9cfd83eddb96Vignesh Venkatasubramanian [ "${AS##*/}" = nasm ] && check_asm_align 1246da49e34c1fb5e99681f4ad99c21d9cfd83eddb96Vignesh Venkatasubramanian ;; 1247da49e34c1fb5e99681f4ad99c21d9cfd83eddb96Vignesh Venkatasubramanian darwin*) 1248da49e34c1fb5e99681f4ad99c21d9cfd83eddb96Vignesh Venkatasubramanian add_asflags -f macho${bits} 1249da49e34c1fb5e99681f4ad99c21d9cfd83eddb96Vignesh Venkatasubramanian enabled x86 && darwin_arch="-arch i386" || darwin_arch="-arch x86_64" 1250da49e34c1fb5e99681f4ad99c21d9cfd83eddb96Vignesh Venkatasubramanian add_cflags ${darwin_arch} 1251da49e34c1fb5e99681f4ad99c21d9cfd83eddb96Vignesh Venkatasubramanian add_ldflags ${darwin_arch} 1252da49e34c1fb5e99681f4ad99c21d9cfd83eddb96Vignesh Venkatasubramanian # -mdynamic-no-pic is still a bit of voodoo -- it was required at 1253da49e34c1fb5e99681f4ad99c21d9cfd83eddb96Vignesh Venkatasubramanian # one time, but does not seem to be now, and it breaks some of the 1254da49e34c1fb5e99681f4ad99c21d9cfd83eddb96Vignesh Venkatasubramanian # code that still relies on inline assembly. 1255da49e34c1fb5e99681f4ad99c21d9cfd83eddb96Vignesh Venkatasubramanian # enabled icc && ! enabled pic && add_cflags -fno-pic -mdynamic-no-pic 1256da49e34c1fb5e99681f4ad99c21d9cfd83eddb96Vignesh Venkatasubramanian enabled icc && ! enabled pic && add_cflags -fno-pic 1257da49e34c1fb5e99681f4ad99c21d9cfd83eddb96Vignesh Venkatasubramanian ;; 1258da49e34c1fb5e99681f4ad99c21d9cfd83eddb96Vignesh Venkatasubramanian iphonesimulator) 1259da49e34c1fb5e99681f4ad99c21d9cfd83eddb96Vignesh Venkatasubramanian add_asflags -f macho${bits} 1260da49e34c1fb5e99681f4ad99c21d9cfd83eddb96Vignesh Venkatasubramanian enabled x86 && sim_arch="-arch i386" || sim_arch="-arch x86_64" 1261da49e34c1fb5e99681f4ad99c21d9cfd83eddb96Vignesh Venkatasubramanian add_cflags ${sim_arch} 1262da49e34c1fb5e99681f4ad99c21d9cfd83eddb96Vignesh Venkatasubramanian add_ldflags ${sim_arch} 12632263fc984bdc858ee931d3e35c87c404de923950Johann 12642263fc984bdc858ee931d3e35c87c404de923950Johann if [ "$(show_darwin_sdk_major_version iphonesimulator)" -gt 8 ]; then 12652263fc984bdc858ee931d3e35c87c404de923950Johann # yasm v1.3.0 doesn't know what -fembed-bitcode means, so turning it 12662263fc984bdc858ee931d3e35c87c404de923950Johann # on is pointless (unless building a C-only lib). Warn the user, but 12672263fc984bdc858ee931d3e35c87c404de923950Johann # do nothing here. 12682263fc984bdc858ee931d3e35c87c404de923950Johann log "Warning: Bitcode embed disabled for simulator targets." 12692263fc984bdc858ee931d3e35c87c404de923950Johann fi 1270da49e34c1fb5e99681f4ad99c21d9cfd83eddb96Vignesh Venkatasubramanian ;; 1271da49e34c1fb5e99681f4ad99c21d9cfd83eddb96Vignesh Venkatasubramanian os2) 1272da49e34c1fb5e99681f4ad99c21d9cfd83eddb96Vignesh Venkatasubramanian add_asflags -f aout 1273da49e34c1fb5e99681f4ad99c21d9cfd83eddb96Vignesh Venkatasubramanian enabled debug && add_asflags -g 1274da49e34c1fb5e99681f4ad99c21d9cfd83eddb96Vignesh Venkatasubramanian EXE_SFX=.exe 1275da49e34c1fb5e99681f4ad99c21d9cfd83eddb96Vignesh Venkatasubramanian ;; 1276da49e34c1fb5e99681f4ad99c21d9cfd83eddb96Vignesh Venkatasubramanian *) 1277da49e34c1fb5e99681f4ad99c21d9cfd83eddb96Vignesh Venkatasubramanian log "Warning: Unknown os $tgt_os while setting up $AS flags" 1278da49e34c1fb5e99681f4ad99c21d9cfd83eddb96Vignesh Venkatasubramanian ;; 1279da49e34c1fb5e99681f4ad99c21d9cfd83eddb96Vignesh Venkatasubramanian esac 1280da49e34c1fb5e99681f4ad99c21d9cfd83eddb96Vignesh Venkatasubramanian ;; 1281da49e34c1fb5e99681f4ad99c21d9cfd83eddb96Vignesh Venkatasubramanian *-gcc|generic-gnu) 1282da49e34c1fb5e99681f4ad99c21d9cfd83eddb96Vignesh Venkatasubramanian link_with_cc=gcc 1283da49e34c1fb5e99681f4ad99c21d9cfd83eddb96Vignesh Venkatasubramanian enable_feature gcc 1284da49e34c1fb5e99681f4ad99c21d9cfd83eddb96Vignesh Venkatasubramanian setup_gnu_toolchain 1285da49e34c1fb5e99681f4ad99c21d9cfd83eddb96Vignesh Venkatasubramanian ;; 1286da49e34c1fb5e99681f4ad99c21d9cfd83eddb96Vignesh Venkatasubramanian esac 128790d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber 1288da49e34c1fb5e99681f4ad99c21d9cfd83eddb96Vignesh Venkatasubramanian # Try to enable CPU specific tuning 1289da49e34c1fb5e99681f4ad99c21d9cfd83eddb96Vignesh Venkatasubramanian if [ -n "${tune_cpu}" ]; then 1290da49e34c1fb5e99681f4ad99c21d9cfd83eddb96Vignesh Venkatasubramanian if [ -n "${tune_cflags}" ]; then 1291da49e34c1fb5e99681f4ad99c21d9cfd83eddb96Vignesh Venkatasubramanian check_add_cflags ${tune_cflags}${tune_cpu} || \ 1292da49e34c1fb5e99681f4ad99c21d9cfd83eddb96Vignesh Venkatasubramanian die "Requested CPU '${tune_cpu}' not supported by compiler" 1293da49e34c1fb5e99681f4ad99c21d9cfd83eddb96Vignesh Venkatasubramanian fi 129490d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber if [ -n "${tune_asflags}" ]; then 1295da49e34c1fb5e99681f4ad99c21d9cfd83eddb96Vignesh Venkatasubramanian check_add_asflags ${tune_asflags}${tune_cpu} || \ 1296da49e34c1fb5e99681f4ad99c21d9cfd83eddb96Vignesh Venkatasubramanian die "Requested CPU '${tune_cpu}' not supported by assembler" 1297da49e34c1fb5e99681f4ad99c21d9cfd83eddb96Vignesh Venkatasubramanian fi 129890d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber if [ -z "${tune_cflags}${tune_asflags}" ]; then 1299da49e34c1fb5e99681f4ad99c21d9cfd83eddb96Vignesh Venkatasubramanian log_echo "Warning: CPU tuning not supported by this toolchain" 130090d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber fi 1301da49e34c1fb5e99681f4ad99c21d9cfd83eddb96Vignesh Venkatasubramanian fi 1302da49e34c1fb5e99681f4ad99c21d9cfd83eddb96Vignesh Venkatasubramanian 1303da49e34c1fb5e99681f4ad99c21d9cfd83eddb96Vignesh Venkatasubramanian if enabled debug; then 1304da49e34c1fb5e99681f4ad99c21d9cfd83eddb96Vignesh Venkatasubramanian check_add_cflags -g && check_add_ldflags -g 1305da49e34c1fb5e99681f4ad99c21d9cfd83eddb96Vignesh Venkatasubramanian else 1306da49e34c1fb5e99681f4ad99c21d9cfd83eddb96Vignesh Venkatasubramanian check_add_cflags -DNDEBUG 1307da49e34c1fb5e99681f4ad99c21d9cfd83eddb96Vignesh Venkatasubramanian fi 1308da49e34c1fb5e99681f4ad99c21d9cfd83eddb96Vignesh Venkatasubramanian 1309da49e34c1fb5e99681f4ad99c21d9cfd83eddb96Vignesh Venkatasubramanian enabled gprof && check_add_cflags -pg && check_add_ldflags -pg 1310da49e34c1fb5e99681f4ad99c21d9cfd83eddb96Vignesh Venkatasubramanian enabled gcov && 1311da49e34c1fb5e99681f4ad99c21d9cfd83eddb96Vignesh Venkatasubramanian check_add_cflags -fprofile-arcs -ftest-coverage && 1312da49e34c1fb5e99681f4ad99c21d9cfd83eddb96Vignesh Venkatasubramanian check_add_ldflags -fprofile-arcs -ftest-coverage 1313da49e34c1fb5e99681f4ad99c21d9cfd83eddb96Vignesh Venkatasubramanian 1314da49e34c1fb5e99681f4ad99c21d9cfd83eddb96Vignesh Venkatasubramanian if enabled optimizations; then 1315da49e34c1fb5e99681f4ad99c21d9cfd83eddb96Vignesh Venkatasubramanian if enabled rvct; then 1316da49e34c1fb5e99681f4ad99c21d9cfd83eddb96Vignesh Venkatasubramanian enabled small && check_add_cflags -Ospace || check_add_cflags -Otime 1317ba6c59e9d7d7013b3906b6f4230b663422681848Vignesh Venkatasubramanian else 1318da49e34c1fb5e99681f4ad99c21d9cfd83eddb96Vignesh Venkatasubramanian enabled small && check_add_cflags -O2 || check_add_cflags -O3 1319ba6c59e9d7d7013b3906b6f4230b663422681848Vignesh Venkatasubramanian fi 1320da49e34c1fb5e99681f4ad99c21d9cfd83eddb96Vignesh Venkatasubramanian fi 1321ba6c59e9d7d7013b3906b6f4230b663422681848Vignesh Venkatasubramanian 1322da49e34c1fb5e99681f4ad99c21d9cfd83eddb96Vignesh Venkatasubramanian if [ "${tgt_isa}" = "x86_64" ] || [ "${tgt_isa}" = "x86" ]; then 1323da49e34c1fb5e99681f4ad99c21d9cfd83eddb96Vignesh Venkatasubramanian soft_enable use_x86inc 1324da49e34c1fb5e99681f4ad99c21d9cfd83eddb96Vignesh Venkatasubramanian fi 132590d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber 1326da49e34c1fb5e99681f4ad99c21d9cfd83eddb96Vignesh Venkatasubramanian # Position Independent Code (PIC) support, for building relocatable 1327da49e34c1fb5e99681f4ad99c21d9cfd83eddb96Vignesh Venkatasubramanian # shared objects 1328da49e34c1fb5e99681f4ad99c21d9cfd83eddb96Vignesh Venkatasubramanian enabled gcc && enabled pic && check_add_cflags -fPIC 1329f3bed9137f66ef693bd406e43b17e9a1114f1e14hkuang 1330da49e34c1fb5e99681f4ad99c21d9cfd83eddb96Vignesh Venkatasubramanian # Work around longjmp interception on glibc >= 2.11, to improve binary 1331da49e34c1fb5e99681f4ad99c21d9cfd83eddb96Vignesh Venkatasubramanian # compatibility. See http://code.google.com/p/webm/issues/detail?id=166 1332da49e34c1fb5e99681f4ad99c21d9cfd83eddb96Vignesh Venkatasubramanian enabled linux && check_add_cflags -U_FORTIFY_SOURCE -D_FORTIFY_SOURCE=0 133390d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber 1334da49e34c1fb5e99681f4ad99c21d9cfd83eddb96Vignesh Venkatasubramanian # Check for strip utility variant 1335da49e34c1fb5e99681f4ad99c21d9cfd83eddb96Vignesh Venkatasubramanian ${STRIP} -V 2>/dev/null | grep GNU >/dev/null && enable_feature gnu_strip 13361b362b15af34006e6a11974088a46d42b903418eJohann 1337da49e34c1fb5e99681f4ad99c21d9cfd83eddb96Vignesh Venkatasubramanian # Try to determine target endianness 1338da49e34c1fb5e99681f4ad99c21d9cfd83eddb96Vignesh Venkatasubramanian check_cc <<EOF 1339da49e34c1fb5e99681f4ad99c21d9cfd83eddb96Vignesh Venkatasubramanianunsigned int e = 'O'<<24 | '2'<<16 | 'B'<<8 | 'E'; 134090d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas HuberEOF 134190d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber [ -f "${TMP_O}" ] && od -A n -t x1 "${TMP_O}" | tr -d '\n' | 13421184aebb761cbeac9124c37189a80a1a58f04b6bhkuang grep '4f *32 *42 *45' >/dev/null 2>&1 && enable_feature big_endian 134390d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber 1344ba164dffc5a6795bce97fae02b51ccf3330e15e4hkuang # Try to find which inline keywords are supported 1345ba164dffc5a6795bce97fae02b51ccf3330e15e4hkuang check_cc <<EOF && INLINE="inline" 1346da49e34c1fb5e99681f4ad99c21d9cfd83eddb96Vignesh Venkatasubramanianstatic inline function() {} 1347ba164dffc5a6795bce97fae02b51ccf3330e15e4hkuangEOF 1348ba164dffc5a6795bce97fae02b51ccf3330e15e4hkuang 1349da49e34c1fb5e99681f4ad99c21d9cfd83eddb96Vignesh Venkatasubramanian # Almost every platform uses pthreads. 1350da49e34c1fb5e99681f4ad99c21d9cfd83eddb96Vignesh Venkatasubramanian if enabled multithread; then 13511b362b15af34006e6a11974088a46d42b903418eJohann case ${toolchain} in 1352da49e34c1fb5e99681f4ad99c21d9cfd83eddb96Vignesh Venkatasubramanian *-win*-vs*) 1353da49e34c1fb5e99681f4ad99c21d9cfd83eddb96Vignesh Venkatasubramanian ;; 1354da49e34c1fb5e99681f4ad99c21d9cfd83eddb96Vignesh Venkatasubramanian *-android-gcc) 1355da49e34c1fb5e99681f4ad99c21d9cfd83eddb96Vignesh Venkatasubramanian ;; 1356da49e34c1fb5e99681f4ad99c21d9cfd83eddb96Vignesh Venkatasubramanian *) 1357da49e34c1fb5e99681f4ad99c21d9cfd83eddb96Vignesh Venkatasubramanian check_header pthread.h && add_extralibs -lpthread 13581b362b15af34006e6a11974088a46d42b903418eJohann ;; 13591b362b15af34006e6a11974088a46d42b903418eJohann esac 1360da49e34c1fb5e99681f4ad99c21d9cfd83eddb96Vignesh Venkatasubramanian fi 13611b362b15af34006e6a11974088a46d42b903418eJohann 1362da49e34c1fb5e99681f4ad99c21d9cfd83eddb96Vignesh Venkatasubramanian # only for MIPS platforms 1363da49e34c1fb5e99681f4ad99c21d9cfd83eddb96Vignesh Venkatasubramanian case ${toolchain} in 1364da49e34c1fb5e99681f4ad99c21d9cfd83eddb96Vignesh Venkatasubramanian mips*) 1365da49e34c1fb5e99681f4ad99c21d9cfd83eddb96Vignesh Venkatasubramanian if enabled big_endian; then 1366da49e34c1fb5e99681f4ad99c21d9cfd83eddb96Vignesh Venkatasubramanian if enabled dspr2; then 1367da49e34c1fb5e99681f4ad99c21d9cfd83eddb96Vignesh Venkatasubramanian echo "dspr2 optimizations are available only for little endian platforms" 1368da49e34c1fb5e99681f4ad99c21d9cfd83eddb96Vignesh Venkatasubramanian disable_feature dspr2 1369da49e34c1fb5e99681f4ad99c21d9cfd83eddb96Vignesh Venkatasubramanian fi 1370da49e34c1fb5e99681f4ad99c21d9cfd83eddb96Vignesh Venkatasubramanian if enabled msa; then 1371da49e34c1fb5e99681f4ad99c21d9cfd83eddb96Vignesh Venkatasubramanian echo "msa optimizations are available only for little endian platforms" 1372da49e34c1fb5e99681f4ad99c21d9cfd83eddb96Vignesh Venkatasubramanian disable_feature msa 1373da49e34c1fb5e99681f4ad99c21d9cfd83eddb96Vignesh Venkatasubramanian fi 1374da49e34c1fb5e99681f4ad99c21d9cfd83eddb96Vignesh Venkatasubramanian fi 1375da49e34c1fb5e99681f4ad99c21d9cfd83eddb96Vignesh Venkatasubramanian ;; 1376da49e34c1fb5e99681f4ad99c21d9cfd83eddb96Vignesh Venkatasubramanian esac 1377da49e34c1fb5e99681f4ad99c21d9cfd83eddb96Vignesh Venkatasubramanian 1378da49e34c1fb5e99681f4ad99c21d9cfd83eddb96Vignesh Venkatasubramanian # glibc needs these 1379da49e34c1fb5e99681f4ad99c21d9cfd83eddb96Vignesh Venkatasubramanian if enabled linux; then 1380da49e34c1fb5e99681f4ad99c21d9cfd83eddb96Vignesh Venkatasubramanian add_cflags -D_LARGEFILE_SOURCE 1381da49e34c1fb5e99681f4ad99c21d9cfd83eddb96Vignesh Venkatasubramanian add_cflags -D_FILE_OFFSET_BITS=64 1382da49e34c1fb5e99681f4ad99c21d9cfd83eddb96Vignesh Venkatasubramanian fi 138390d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber} 138490d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber 138590d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huberprocess_toolchain() { 1386da49e34c1fb5e99681f4ad99c21d9cfd83eddb96Vignesh Venkatasubramanian process_common_toolchain 138790d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber} 138890d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber 138990d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huberprint_config_mk() { 1390da49e34c1fb5e99681f4ad99c21d9cfd83eddb96Vignesh Venkatasubramanian saved_prefix="${prefix}" 1391da49e34c1fb5e99681f4ad99c21d9cfd83eddb96Vignesh Venkatasubramanian prefix=$1 1392da49e34c1fb5e99681f4ad99c21d9cfd83eddb96Vignesh Venkatasubramanian makefile=$2 1393da49e34c1fb5e99681f4ad99c21d9cfd83eddb96Vignesh Venkatasubramanian shift 2 1394da49e34c1fb5e99681f4ad99c21d9cfd83eddb96Vignesh Venkatasubramanian for cfg; do 1395da49e34c1fb5e99681f4ad99c21d9cfd83eddb96Vignesh Venkatasubramanian if enabled $cfg; then 1396da49e34c1fb5e99681f4ad99c21d9cfd83eddb96Vignesh Venkatasubramanian upname="`toupper $cfg`" 1397da49e34c1fb5e99681f4ad99c21d9cfd83eddb96Vignesh Venkatasubramanian echo "${prefix}_${upname}=yes" >> $makefile 1398da49e34c1fb5e99681f4ad99c21d9cfd83eddb96Vignesh Venkatasubramanian fi 1399da49e34c1fb5e99681f4ad99c21d9cfd83eddb96Vignesh Venkatasubramanian done 1400da49e34c1fb5e99681f4ad99c21d9cfd83eddb96Vignesh Venkatasubramanian prefix="${saved_prefix}" 140190d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber} 140290d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber 140390d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huberprint_config_h() { 1404da49e34c1fb5e99681f4ad99c21d9cfd83eddb96Vignesh Venkatasubramanian saved_prefix="${prefix}" 1405da49e34c1fb5e99681f4ad99c21d9cfd83eddb96Vignesh Venkatasubramanian prefix=$1 1406da49e34c1fb5e99681f4ad99c21d9cfd83eddb96Vignesh Venkatasubramanian header=$2 1407da49e34c1fb5e99681f4ad99c21d9cfd83eddb96Vignesh Venkatasubramanian shift 2 1408da49e34c1fb5e99681f4ad99c21d9cfd83eddb96Vignesh Venkatasubramanian for cfg; do 1409da49e34c1fb5e99681f4ad99c21d9cfd83eddb96Vignesh Venkatasubramanian upname="`toupper $cfg`" 1410da49e34c1fb5e99681f4ad99c21d9cfd83eddb96Vignesh Venkatasubramanian if enabled $cfg; then 1411da49e34c1fb5e99681f4ad99c21d9cfd83eddb96Vignesh Venkatasubramanian echo "#define ${prefix}_${upname} 1" >> $header 1412da49e34c1fb5e99681f4ad99c21d9cfd83eddb96Vignesh Venkatasubramanian else 1413da49e34c1fb5e99681f4ad99c21d9cfd83eddb96Vignesh Venkatasubramanian echo "#define ${prefix}_${upname} 0" >> $header 1414da49e34c1fb5e99681f4ad99c21d9cfd83eddb96Vignesh Venkatasubramanian fi 1415da49e34c1fb5e99681f4ad99c21d9cfd83eddb96Vignesh Venkatasubramanian done 1416da49e34c1fb5e99681f4ad99c21d9cfd83eddb96Vignesh Venkatasubramanian prefix="${saved_prefix}" 1417ba6c59e9d7d7013b3906b6f4230b663422681848Vignesh Venkatasubramanian} 1418ba6c59e9d7d7013b3906b6f4230b663422681848Vignesh Venkatasubramanian 1419ba6c59e9d7d7013b3906b6f4230b663422681848Vignesh Venkatasubramanianprint_config_vars_h() { 1420da49e34c1fb5e99681f4ad99c21d9cfd83eddb96Vignesh Venkatasubramanian header=$1 1421da49e34c1fb5e99681f4ad99c21d9cfd83eddb96Vignesh Venkatasubramanian shift 1422da49e34c1fb5e99681f4ad99c21d9cfd83eddb96Vignesh Venkatasubramanian while [ $# -gt 0 ]; do 1423da49e34c1fb5e99681f4ad99c21d9cfd83eddb96Vignesh Venkatasubramanian upname="`toupper $1`" 1424da49e34c1fb5e99681f4ad99c21d9cfd83eddb96Vignesh Venkatasubramanian echo "#define ${upname} $2" >> $header 1425da49e34c1fb5e99681f4ad99c21d9cfd83eddb96Vignesh Venkatasubramanian shift 2 1426da49e34c1fb5e99681f4ad99c21d9cfd83eddb96Vignesh Venkatasubramanian done 142790d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber} 142890d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber 14291b362b15af34006e6a11974088a46d42b903418eJohannprint_webm_license() { 1430da49e34c1fb5e99681f4ad99c21d9cfd83eddb96Vignesh Venkatasubramanian saved_prefix="${prefix}" 1431da49e34c1fb5e99681f4ad99c21d9cfd83eddb96Vignesh Venkatasubramanian destination=$1 1432da49e34c1fb5e99681f4ad99c21d9cfd83eddb96Vignesh Venkatasubramanian prefix="$2" 1433da49e34c1fb5e99681f4ad99c21d9cfd83eddb96Vignesh Venkatasubramanian suffix="$3" 1434da49e34c1fb5e99681f4ad99c21d9cfd83eddb96Vignesh Venkatasubramanian shift 3 1435da49e34c1fb5e99681f4ad99c21d9cfd83eddb96Vignesh Venkatasubramanian cat <<EOF > ${destination} 14361b362b15af34006e6a11974088a46d42b903418eJohann${prefix} Copyright (c) 2011 The WebM project authors. All Rights Reserved.${suffix} 14371b362b15af34006e6a11974088a46d42b903418eJohann${prefix} ${suffix} 14381b362b15af34006e6a11974088a46d42b903418eJohann${prefix} Use of this source code is governed by a BSD-style license${suffix} 14391b362b15af34006e6a11974088a46d42b903418eJohann${prefix} that can be found in the LICENSE file in the root of the source${suffix} 14401b362b15af34006e6a11974088a46d42b903418eJohann${prefix} tree. An additional intellectual property rights grant can be found${suffix} 14411b362b15af34006e6a11974088a46d42b903418eJohann${prefix} in the file PATENTS. All contributing project authors may${suffix} 14421b362b15af34006e6a11974088a46d42b903418eJohann${prefix} be found in the AUTHORS file in the root of the source tree.${suffix} 14431b362b15af34006e6a11974088a46d42b903418eJohannEOF 1444da49e34c1fb5e99681f4ad99c21d9cfd83eddb96Vignesh Venkatasubramanian prefix="${saved_prefix}" 14451b362b15af34006e6a11974088a46d42b903418eJohann} 14461b362b15af34006e6a11974088a46d42b903418eJohann 144790d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huberprocess_targets() { 1448da49e34c1fb5e99681f4ad99c21d9cfd83eddb96Vignesh Venkatasubramanian true; 144990d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber} 145090d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber 145190d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huberprocess_detect() { 1452da49e34c1fb5e99681f4ad99c21d9cfd83eddb96Vignesh Venkatasubramanian true; 145390d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber} 145490d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber 14551184aebb761cbeac9124c37189a80a1a58f04b6bhkuangenable_feature logging 145691037db265ecdd914a26e056cf69207b4f50924ehkuanglogfile="config.log" 145790d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huberself=$0 145890d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huberprocess() { 1459da49e34c1fb5e99681f4ad99c21d9cfd83eddb96Vignesh Venkatasubramanian cmdline_args="$@" 1460da49e34c1fb5e99681f4ad99c21d9cfd83eddb96Vignesh Venkatasubramanian process_cmdline "$@" 1461da49e34c1fb5e99681f4ad99c21d9cfd83eddb96Vignesh Venkatasubramanian if enabled child; then 1462da49e34c1fb5e99681f4ad99c21d9cfd83eddb96Vignesh Venkatasubramanian echo "# ${self} $@" >> ${logfile} 1463da49e34c1fb5e99681f4ad99c21d9cfd83eddb96Vignesh Venkatasubramanian else 1464da49e34c1fb5e99681f4ad99c21d9cfd83eddb96Vignesh Venkatasubramanian echo "# ${self} $@" > ${logfile} 1465da49e34c1fb5e99681f4ad99c21d9cfd83eddb96Vignesh Venkatasubramanian fi 1466da49e34c1fb5e99681f4ad99c21d9cfd83eddb96Vignesh Venkatasubramanian post_process_common_cmdline 1467da49e34c1fb5e99681f4ad99c21d9cfd83eddb96Vignesh Venkatasubramanian post_process_cmdline 1468da49e34c1fb5e99681f4ad99c21d9cfd83eddb96Vignesh Venkatasubramanian process_toolchain 1469da49e34c1fb5e99681f4ad99c21d9cfd83eddb96Vignesh Venkatasubramanian process_detect 1470da49e34c1fb5e99681f4ad99c21d9cfd83eddb96Vignesh Venkatasubramanian process_targets 1471da49e34c1fb5e99681f4ad99c21d9cfd83eddb96Vignesh Venkatasubramanian 1472da49e34c1fb5e99681f4ad99c21d9cfd83eddb96Vignesh Venkatasubramanian OOT_INSTALLS="${OOT_INSTALLS}" 1473da49e34c1fb5e99681f4ad99c21d9cfd83eddb96Vignesh Venkatasubramanian if enabled source_path_used; then 1474da49e34c1fb5e99681f4ad99c21d9cfd83eddb96Vignesh Venkatasubramanian # Prepare the PWD for building. 1475da49e34c1fb5e99681f4ad99c21d9cfd83eddb96Vignesh Venkatasubramanian for f in ${OOT_INSTALLS}; do 1476da49e34c1fb5e99681f4ad99c21d9cfd83eddb96Vignesh Venkatasubramanian install -D "${source_path}/$f" "$f" 1477da49e34c1fb5e99681f4ad99c21d9cfd83eddb96Vignesh Venkatasubramanian done 1478da49e34c1fb5e99681f4ad99c21d9cfd83eddb96Vignesh Venkatasubramanian fi 1479da49e34c1fb5e99681f4ad99c21d9cfd83eddb96Vignesh Venkatasubramanian cp "${source_path}/build/make/Makefile" . 1480da49e34c1fb5e99681f4ad99c21d9cfd83eddb96Vignesh Venkatasubramanian 1481da49e34c1fb5e99681f4ad99c21d9cfd83eddb96Vignesh Venkatasubramanian clean_temp_files 1482da49e34c1fb5e99681f4ad99c21d9cfd83eddb96Vignesh Venkatasubramanian true 148390d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber} 1484