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(){
1790d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber    echo "Unknown option \"$1\"."
1890d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber    echo "See $0 --help for available options."
1990d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber    clean_temp_files
2090d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber    exit 1
2190d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber}
2290d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber
2390d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber
2490d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huberdie() {
2590d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber    echo "$@"
2690d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber    echo
2790d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber    echo "Configuration failed. This could reflect a misconfiguration of your"
2890d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber    echo "toolchains, improper options selected, or another problem. If you"
2990d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber    echo "don't see any useful error messages above, the next step is to look"
3090d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber    echo "at the configure error log file ($logfile) to determine what"
3190d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber    echo "configure was trying to do when it died."
3290d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber    clean_temp_files
3390d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber    exit 1
3490d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber}
3590d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber
3690d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber
3790d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huberlog(){
3890d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber    echo "$@" >>$logfile
3990d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber}
4090d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber
4190d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber
4290d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huberlog_file(){
4390d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber    log BEGIN $1
44b08e2e23eec181e9951df33cd704ac294c5407b6Vignesh Venkatasubramanian    cat -n $1 >>$logfile
4590d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber    log END $1
4690d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber}
4790d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber
4890d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber
4990d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huberlog_echo() {
5090d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber    echo "$@"
5190d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber    log "$@"
5290d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber}
5390d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber
5490d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber
5590d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huberfwrite () {
5690d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber    outfile=$1
5790d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber    shift
5890d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber    echo "$@" >> ${outfile}
5990d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber}
6090d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber
6190d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber
6290d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Hubershow_help_pre(){
6390d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber    for opt in ${CMDLINE_SELECT}; do
6490d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber        opt2=`echo $opt | sed -e 's;_;-;g'`
6590d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber        if enabled $opt; then
6690d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber            eval "toggle_${opt}=\"--disable-${opt2}\""
6790d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber        else
6890d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber            eval "toggle_${opt}=\"--enable-${opt2} \""
6990d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber        fi
7090d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber    done
7190d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber
7290d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber    cat <<EOF
7390d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas HuberUsage: configure [options]
7490d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas HuberOptions:
7590d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber
7690d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas HuberBuild options:
7790d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber  --help                      print this message
7891037db265ecdd914a26e056cf69207b4f50924ehkuang  --log=yes|no|FILE           file configure log is written to [config.log]
7990d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber  --target=TARGET             target platform tuple [generic-gnu]
8090d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber  --cpu=CPU                   optimize for a specific cpu rather than a family
8179f15823c34ae1e423108295e416213200bb280fAndreas Huber  --extra-cflags=ECFLAGS      add ECFLAGS to CFLAGS [$CFLAGS]
8290d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber  ${toggle_extra_warnings}    emit harmless warnings (always non-fatal)
8390d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber  ${toggle_werror}            treat warnings as errors, if possible
8490d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber                              (not available with all compilers)
8590d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber  ${toggle_optimizations}     turn on/off compiler optimization flags
8679f15823c34ae1e423108295e416213200bb280fAndreas Huber  ${toggle_pic}               turn on/off Position Independent Code
8790d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber  ${toggle_ccache}            turn on/off compiler cache
8890d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber  ${toggle_debug}             enable/disable debug mode
8990d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber  ${toggle_gprof}             enable/disable gprof profiling instrumentation
9090d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber  ${toggle_gcov}              enable/disable gcov coverage instrumentation
91ba164dffc5a6795bce97fae02b51ccf3330e15e4hkuang  ${toggle_thumb}             enable/disable building arm assembly in thumb mode
9290d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber
9390d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas HuberInstall options:
9490d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber  ${toggle_install_docs}      control whether docs are installed
9590d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber  ${toggle_install_bins}      control whether binaries are installed
9690d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber  ${toggle_install_libs}      control whether libraries are installed
9790d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber  ${toggle_install_srcs}      control whether sources are installed
9890d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber
9990d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber
10090d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas HuberEOF
10190d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber}
10290d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber
10390d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber
10490d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Hubershow_help_post(){
10590d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber    cat <<EOF
10690d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber
10790d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber
10890d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas HuberNOTES:
10990d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber    Object files are built at the place where configure is launched.
11090d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber
11190d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber    All boolean options can be negated. The default value is the opposite
11290d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber    of that shown above. If the option --disable-foo is listed, then
11390d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber    the default value for foo is enabled.
11490d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber
11590d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas HuberSupported targets:
11690d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas HuberEOF
11790d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber  show_targets ${all_platforms}
11890d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber  echo
11990d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber  exit 1
12090d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber}
12190d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber
12290d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber
12390d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Hubershow_targets() {
12490d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber    while [ -n "$*" ]; do
125f71323e297a928af368937089d3ed71239786f86Andreas Huber        if [ "${1%%-*}" = "${2%%-*}" ]; then
126f71323e297a928af368937089d3ed71239786f86Andreas Huber            if [ "${2%%-*}" = "${3%%-*}" ]; then
12790d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber                printf "    %-24s %-24s %-24s\n" "$1" "$2" "$3"
12890d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber                shift; shift; shift
12990d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber            else
13090d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber                printf "    %-24s %-24s\n" "$1" "$2"
13190d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber                shift; shift
13290d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber            fi
13390d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber        else
13490d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber            printf "    %-24s\n" "$1"
13590d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber            shift
13690d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber        fi
13790d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber    done
13890d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber}
13990d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber
14090d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber
14190d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Hubershow_help() {
14290d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber    show_help_pre
14390d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber    show_help_post
14490d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber}
14590d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber
14690d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber#
14790d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber# List Processing Functions
14890d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber#
14990d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huberset_all(){
15090d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber    value=$1
15190d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber    shift
15290d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber    for var in $*; do
15390d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber        eval $var=$value
15490d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber    done
15590d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber}
15690d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber
15790d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber
15890d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huberis_in(){
15990d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber    value=$1
16090d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber    shift
16190d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber    for var in $*; do
16290d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber        [ $var = $value ] && return 0
16390d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber    done
16490d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber    return 1
16590d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber}
16690d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber
16790d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber
16890d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huberadd_cflags() {
16990d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber    CFLAGS="${CFLAGS} $@"
1701b362b15af34006e6a11974088a46d42b903418eJohann    CXXFLAGS="${CXXFLAGS} $@"
1711b362b15af34006e6a11974088a46d42b903418eJohann}
1721b362b15af34006e6a11974088a46d42b903418eJohann
1731b362b15af34006e6a11974088a46d42b903418eJohann
1741b362b15af34006e6a11974088a46d42b903418eJohannadd_cflags_only() {
1751b362b15af34006e6a11974088a46d42b903418eJohann    CFLAGS="${CFLAGS} $@"
1761b362b15af34006e6a11974088a46d42b903418eJohann}
1771b362b15af34006e6a11974088a46d42b903418eJohann
1781b362b15af34006e6a11974088a46d42b903418eJohann
1791b362b15af34006e6a11974088a46d42b903418eJohannadd_cxxflags_only() {
1801b362b15af34006e6a11974088a46d42b903418eJohann    CXXFLAGS="${CXXFLAGS} $@"
18190d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber}
18290d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber
18390d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber
18490d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huberadd_ldflags() {
18590d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber    LDFLAGS="${LDFLAGS} $@"
18690d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber}
18790d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber
18890d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber
18990d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huberadd_asflags() {
19090d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber    ASFLAGS="${ASFLAGS} $@"
19190d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber}
19290d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber
19390d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber
19490d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huberadd_extralibs() {
19590d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber    extralibs="${extralibs} $@"
19690d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber}
19790d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber
19890d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber#
19990d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber# Boolean Manipulation Functions
20090d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber#
2011184aebb761cbeac9124c37189a80a1a58f04b6bhkuangenable_feature(){
20290d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber    set_all yes $*
20390d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber}
20490d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber
2051184aebb761cbeac9124c37189a80a1a58f04b6bhkuangdisable_feature(){
20690d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber    set_all no $*
20790d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber}
20890d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber
20990d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huberenabled(){
21090d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber    eval test "x\$$1" = "xyes"
21190d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber}
21290d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber
21390d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huberdisabled(){
21490d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber    eval test "x\$$1" = "xno"
21590d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber}
21690d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber
21790d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber
21890d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Hubersoft_enable() {
21990d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber    for var in $*; do
22090d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber        if ! disabled $var; then
22190d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber            log_echo "  enabling $var"
2221184aebb761cbeac9124c37189a80a1a58f04b6bhkuang            enable_feature $var
22390d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber        fi
22490d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber    done
22590d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber}
22690d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber
22790d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Hubersoft_disable() {
22890d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber    for var in $*; do
22990d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber        if ! enabled $var; then
23090d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber            log_echo "  disabling $var"
2311184aebb761cbeac9124c37189a80a1a58f04b6bhkuang            disable_feature $var
23290d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber        fi
23390d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber    done
23490d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber}
23590d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber
23690d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber
23790d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber#
23890d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber# Text Processing Functions
23990d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber#
24090d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Hubertoupper(){
24190d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber    echo "$@" | tr abcdefghijklmnopqrstuvwxyz ABCDEFGHIJKLMNOPQRSTUVWXYZ
24290d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber}
24390d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber
24490d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber
24590d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Hubertolower(){
24690d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber    echo "$@" | tr ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyz
24790d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber}
24890d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber
24990d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber
25090d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber#
25190d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber# Temporary File Functions
25290d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber#
25390d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Hubersource_path=${0%/*}
2541184aebb761cbeac9124c37189a80a1a58f04b6bhkuangenable_feature source_path_used
25590d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huberif test -z "$source_path" -o "$source_path" = "." ; then
25690d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber    source_path="`pwd`"
2571184aebb761cbeac9124c37189a80a1a58f04b6bhkuang    disable_feature source_path_used
25890d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huberfi
25990d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber
26090d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huberif test ! -z "$TMPDIR" ; then
26190d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber    TMPDIRx="${TMPDIR}"
26290d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huberelif test ! -z "$TEMPDIR" ; then
26390d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber    TMPDIRx="${TEMPDIR}"
26490d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huberelse
26590d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber    TMPDIRx="/tmp"
26690d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huberfi
2671184aebb761cbeac9124c37189a80a1a58f04b6bhkuangRAND=$(awk 'BEGIN { srand(); printf "%d\n",(rand() * 32768)}')
2681184aebb761cbeac9124c37189a80a1a58f04b6bhkuangTMP_H="${TMPDIRx}/vpx-conf-$$-${RAND}.h"
2691184aebb761cbeac9124c37189a80a1a58f04b6bhkuangTMP_C="${TMPDIRx}/vpx-conf-$$-${RAND}.c"
2701184aebb761cbeac9124c37189a80a1a58f04b6bhkuangTMP_CC="${TMPDIRx}/vpx-conf-$$-${RAND}.cc"
2711184aebb761cbeac9124c37189a80a1a58f04b6bhkuangTMP_O="${TMPDIRx}/vpx-conf-$$-${RAND}.o"
2721184aebb761cbeac9124c37189a80a1a58f04b6bhkuangTMP_X="${TMPDIRx}/vpx-conf-$$-${RAND}.x"
2731184aebb761cbeac9124c37189a80a1a58f04b6bhkuangTMP_ASM="${TMPDIRx}/vpx-conf-$$-${RAND}.asm"
27490d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber
27590d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huberclean_temp_files() {
276ba164dffc5a6795bce97fae02b51ccf3330e15e4hkuang    rm -f ${TMP_C} ${TMP_CC} ${TMP_H} ${TMP_O} ${TMP_X} ${TMP_ASM}
2776ac915abcdb404a00d927fe6308a47fcf09d9519hkuang    enabled gcov && rm -f ${TMP_C%.c}.gcno ${TMP_CC%.cc}.gcno
27890d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber}
27990d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber
28090d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber#
28190d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber# Toolchain Check Functions
28290d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber#
28390d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Hubercheck_cmd() {
284ba164dffc5a6795bce97fae02b51ccf3330e15e4hkuang    enabled external_build && return
28590d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber    log "$@"
28690d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber    "$@" >>${logfile} 2>&1
28790d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber}
28890d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber
28990d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Hubercheck_cc() {
29090d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber    log check_cc "$@"
29190d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber    cat >${TMP_C}
29290d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber    log_file ${TMP_C}
29390d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber    check_cmd ${CC} ${CFLAGS} "$@" -c -o ${TMP_O} ${TMP_C}
29490d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber}
29590d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber
2961b362b15af34006e6a11974088a46d42b903418eJohanncheck_cxx() {
2971b362b15af34006e6a11974088a46d42b903418eJohann    log check_cxx "$@"
298ba164dffc5a6795bce97fae02b51ccf3330e15e4hkuang    cat >${TMP_CC}
299ba164dffc5a6795bce97fae02b51ccf3330e15e4hkuang    log_file ${TMP_CC}
300ba164dffc5a6795bce97fae02b51ccf3330e15e4hkuang    check_cmd ${CXX} ${CXXFLAGS} "$@" -c -o ${TMP_O} ${TMP_CC}
3011b362b15af34006e6a11974088a46d42b903418eJohann}
3021b362b15af34006e6a11974088a46d42b903418eJohann
30390d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Hubercheck_cpp() {
30490d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber    log check_cpp "$@"
30590d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber    cat > ${TMP_C}
30690d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber    log_file ${TMP_C}
30790d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber    check_cmd ${CC} ${CFLAGS} "$@" -E -o ${TMP_O} ${TMP_C}
30890d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber}
30990d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber
31090d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Hubercheck_ld() {
31190d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber    log check_ld "$@"
31290d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber    check_cc $@ \
31390d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber        && check_cmd ${LD} ${LDFLAGS} "$@" -o ${TMP_X} ${TMP_O} ${extralibs}
31490d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber}
31590d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber
31690d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Hubercheck_header(){
31790d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber    log check_header "$@"
31890d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber    header=$1
31990d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber    shift
32090d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber    var=`echo $header | sed 's/[^A-Za-z0-9_]/_/g'`
3211184aebb761cbeac9124c37189a80a1a58f04b6bhkuang    disable_feature $var
3221184aebb761cbeac9124c37189a80a1a58f04b6bhkuang    check_cpp "$@" <<EOF && enable_feature $var
32390d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber#include "$header"
32490d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huberint x;
32590d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas HuberEOF
32690d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber}
32790d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber
32890d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber
32990d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Hubercheck_cflags() {
33090d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber    log check_cflags "$@"
331b08e2e23eec181e9951df33cd704ac294c5407b6Vignesh Venkatasubramanian    check_cc -Werror "$@" <<EOF
33290d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huberint x;
33390d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas HuberEOF
33490d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber}
33590d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber
3361b362b15af34006e6a11974088a46d42b903418eJohanncheck_cxxflags() {
3371b362b15af34006e6a11974088a46d42b903418eJohann    log check_cxxflags "$@"
3381b362b15af34006e6a11974088a46d42b903418eJohann
3391b362b15af34006e6a11974088a46d42b903418eJohann    # Catch CFLAGS that trigger CXX warnings
3401b362b15af34006e6a11974088a46d42b903418eJohann    case "$CXX" in
341b08e2e23eec181e9951df33cd704ac294c5407b6Vignesh Venkatasubramanian      *c++-analyzer|*clang++|*g++*) check_cxx -Werror "$@" <<EOF
3421b362b15af34006e6a11974088a46d42b903418eJohannint x;
3431b362b15af34006e6a11974088a46d42b903418eJohannEOF
3441b362b15af34006e6a11974088a46d42b903418eJohann      ;;
345b08e2e23eec181e9951df33cd704ac294c5407b6Vignesh Venkatasubramanian      *) check_cxx -Werror "$@" <<EOF
3461b362b15af34006e6a11974088a46d42b903418eJohannint x;
3471b362b15af34006e6a11974088a46d42b903418eJohannEOF
3481b362b15af34006e6a11974088a46d42b903418eJohann      ;;
3491b362b15af34006e6a11974088a46d42b903418eJohann    esac
3501b362b15af34006e6a11974088a46d42b903418eJohann}
3511b362b15af34006e6a11974088a46d42b903418eJohann
35290d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Hubercheck_add_cflags() {
3531b362b15af34006e6a11974088a46d42b903418eJohann    check_cxxflags "$@" && add_cxxflags_only "$@"
3541b362b15af34006e6a11974088a46d42b903418eJohann    check_cflags "$@" && add_cflags_only "$@"
35590d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber}
35690d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber
35790d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Hubercheck_add_asflags() {
35890d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber    log add_asflags "$@"
35990d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber    add_asflags "$@"
36090d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber}
36190d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber
36290d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Hubercheck_add_ldflags() {
36390d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber    log add_ldflags "$@"
36490d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber    add_ldflags "$@"
36590d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber}
36690d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber
367538f6170b788de7408b06efc6613dc98579aa6a6Andreas Hubercheck_asm_align() {
368538f6170b788de7408b06efc6613dc98579aa6a6Andreas Huber    log check_asm_align "$@"
369538f6170b788de7408b06efc6613dc98579aa6a6Andreas Huber    cat >${TMP_ASM} <<EOF
370538f6170b788de7408b06efc6613dc98579aa6a6Andreas Hubersection .rodata
371538f6170b788de7408b06efc6613dc98579aa6a6Andreas Huberalign 16
372538f6170b788de7408b06efc6613dc98579aa6a6Andreas HuberEOF
373538f6170b788de7408b06efc6613dc98579aa6a6Andreas Huber    log_file ${TMP_ASM}
374538f6170b788de7408b06efc6613dc98579aa6a6Andreas Huber    check_cmd ${AS} ${ASFLAGS} -o ${TMP_O} ${TMP_ASM}
375538f6170b788de7408b06efc6613dc98579aa6a6Andreas Huber    readelf -WS ${TMP_O} >${TMP_X}
376538f6170b788de7408b06efc6613dc98579aa6a6Andreas Huber    log_file ${TMP_X}
377538f6170b788de7408b06efc6613dc98579aa6a6Andreas Huber    if ! grep -q '\.rodata .* 16$' ${TMP_X}; then
378538f6170b788de7408b06efc6613dc98579aa6a6Andreas Huber        die "${AS} ${ASFLAGS} does not support section alignment (nasm <=2.08?)"
379538f6170b788de7408b06efc6613dc98579aa6a6Andreas Huber    fi
380538f6170b788de7408b06efc6613dc98579aa6a6Andreas Huber}
381538f6170b788de7408b06efc6613dc98579aa6a6Andreas Huber
382a72801d7d92ababb50eecf27a36bd222d031d2feVignesh Venkatasubramanian# tests for -m$1 toggling the feature given in $2. If $2 is empty $1 is used.
383a72801d7d92ababb50eecf27a36bd222d031d2feVignesh Venkatasubramaniancheck_gcc_machine_option() {
384a72801d7d92ababb50eecf27a36bd222d031d2feVignesh Venkatasubramanian    local opt="$1"
385a72801d7d92ababb50eecf27a36bd222d031d2feVignesh Venkatasubramanian    local feature="$2"
386a72801d7d92ababb50eecf27a36bd222d031d2feVignesh Venkatasubramanian    [ -n "$feature" ] || feature="$opt"
387a72801d7d92ababb50eecf27a36bd222d031d2feVignesh Venkatasubramanian
388a72801d7d92ababb50eecf27a36bd222d031d2feVignesh Venkatasubramanian    if enabled gcc && ! disabled "$feature" && ! check_cflags "-m$opt"; then
389a72801d7d92ababb50eecf27a36bd222d031d2feVignesh Venkatasubramanian        RTCD_OPTIONS="${RTCD_OPTIONS}--disable-$feature "
390a72801d7d92ababb50eecf27a36bd222d031d2feVignesh Venkatasubramanian    else
391a72801d7d92ababb50eecf27a36bd222d031d2feVignesh Venkatasubramanian        soft_enable "$feature"
392a72801d7d92ababb50eecf27a36bd222d031d2feVignesh Venkatasubramanian    fi
393a72801d7d92ababb50eecf27a36bd222d031d2feVignesh Venkatasubramanian}
394a72801d7d92ababb50eecf27a36bd222d031d2feVignesh Venkatasubramanian
39590d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huberwrite_common_config_banner() {
3961b362b15af34006e6a11974088a46d42b903418eJohann    print_webm_license config.mk "##" ""
3971b362b15af34006e6a11974088a46d42b903418eJohann    echo '# This file automatically generated by configure. Do not edit!' >> config.mk
39890d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber    echo "TOOLCHAIN := ${toolchain}" >> config.mk
39990d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber
40090d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber    case ${toolchain} in
40190d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber        *-linux-rvct)
40290d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber            echo "ALT_LIBC := ${alt_libc}" >> config.mk
40390d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber            ;;
40490d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber    esac
40590d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber}
40690d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber
40790d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huberwrite_common_config_targets() {
40890d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber    for t in ${all_targets}; do
40990d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber        if enabled ${t}; then
41090d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber            if enabled universal || enabled child; then
41190d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber                fwrite config.mk "ALL_TARGETS += ${t}-${toolchain}"
41290d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber            else
41390d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber                fwrite config.mk "ALL_TARGETS += ${t}"
41490d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber            fi
41590d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber        fi
41690d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber    true;
41790d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber    done
41890d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Hubertrue
41990d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber}
42090d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber
42190d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huberwrite_common_target_config_mk() {
422b08e2e23eec181e9951df33cd704ac294c5407b6Vignesh Venkatasubramanian    local CC="${CC}"
423b08e2e23eec181e9951df33cd704ac294c5407b6Vignesh Venkatasubramanian    local CXX="${CXX}"
42490d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber    enabled ccache && CC="ccache ${CC}"
4251b362b15af34006e6a11974088a46d42b903418eJohann    enabled ccache && CXX="ccache ${CXX}"
4261b362b15af34006e6a11974088a46d42b903418eJohann    print_webm_license $1 "##" ""
42790d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber
4281b362b15af34006e6a11974088a46d42b903418eJohann    cat >> $1 << EOF
42990d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber# This file automatically generated by configure. Do not edit!
43090d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas HuberSRC_PATH="$source_path"
43190d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas HuberSRC_PATH_BARE=$source_path
43290d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas HuberBUILD_PFX=${BUILD_PFX}
43390d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas HuberTOOLCHAIN=${toolchain}
43490d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas HuberASM_CONVERSION=${asm_conversion_cmd:-${source_path}/build/make/ads2gas.pl}
435ba164dffc5a6795bce97fae02b51ccf3330e15e4hkuangGEN_VCPROJ=${gen_vcproj_cmd}
436ba164dffc5a6795bce97fae02b51ccf3330e15e4hkuangMSVS_ARCH_DIR=${msvs_arch_dir}
43790d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber
43890d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas HuberCC=${CC}
4391b362b15af34006e6a11974088a46d42b903418eJohannCXX=${CXX}
44090d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas HuberAR=${AR}
44190d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas HuberLD=${LD}
44290d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas HuberAS=${AS}
44390d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas HuberSTRIP=${STRIP}
44490d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas HuberNM=${NM}
44590d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber
446f71323e297a928af368937089d3ed71239786f86Andreas HuberCFLAGS  = ${CFLAGS}
4471b362b15af34006e6a11974088a46d42b903418eJohannCXXFLAGS  = ${CXXFLAGS}
44890d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas HuberARFLAGS = -rus\$(if \$(quiet),c,v)
44990d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas HuberLDFLAGS = ${LDFLAGS}
45090d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas HuberASFLAGS = ${ASFLAGS}
45190d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huberextralibs = ${extralibs}
45290d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas HuberAS_SFX    = ${AS_SFX:-.asm}
4531b362b15af34006e6a11974088a46d42b903418eJohannEXE_SFX   = ${EXE_SFX}
454ba164dffc5a6795bce97fae02b51ccf3330e15e4hkuangVCPROJ_SFX = ${VCPROJ_SFX}
4551b362b15af34006e6a11974088a46d42b903418eJohannRTCD_OPTIONS = ${RTCD_OPTIONS}
45690d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas HuberEOF
45790d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber
45890d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber    if enabled rvct; then cat >> $1 << EOF
459ba164dffc5a6795bce97fae02b51ccf3330e15e4hkuangfmt_deps = sed -e 's;^__image.axf;\${@:.d=.o} \$@;' #hide
46090d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas HuberEOF
46190d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber    else cat >> $1 << EOF
462ba164dffc5a6795bce97fae02b51ccf3330e15e4hkuangfmt_deps = sed -e 's;^\([a-zA-Z0-9_]*\)\.o;\${@:.d=.o} \$@;'
46390d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas HuberEOF
46490d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber    fi
46590d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber
46690d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber    print_config_mk ARCH   "${1}" ${ARCH_LIST}
46790d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber    print_config_mk HAVE   "${1}" ${HAVE_LIST}
46890d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber    print_config_mk CONFIG "${1}" ${CONFIG_LIST}
46990d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber    print_config_mk HAVE   "${1}" gnu_strip
47090d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber
47190d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber    enabled msvs && echo "CONFIG_VS_VERSION=${vs_version}" >> "${1}"
47290d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber
47390d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber}
47490d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber
47590d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber
47690d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huberwrite_common_target_config_h() {
4771b362b15af34006e6a11974088a46d42b903418eJohann    print_webm_license ${TMP_H} "/*" " */"
4781b362b15af34006e6a11974088a46d42b903418eJohann    cat >> ${TMP_H} << EOF
47990d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber/* This file automatically generated by configure. Do not edit! */
4801b362b15af34006e6a11974088a46d42b903418eJohann#ifndef VPX_CONFIG_H
4811b362b15af34006e6a11974088a46d42b903418eJohann#define VPX_CONFIG_H
48290d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber#define RESTRICT    ${RESTRICT}
483ba164dffc5a6795bce97fae02b51ccf3330e15e4hkuang#define INLINE      ${INLINE}
48490d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas HuberEOF
48590d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber    print_config_h ARCH   "${TMP_H}" ${ARCH_LIST}
48690d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber    print_config_h HAVE   "${TMP_H}" ${HAVE_LIST}
48790d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber    print_config_h CONFIG "${TMP_H}" ${CONFIG_LIST}
4881b362b15af34006e6a11974088a46d42b903418eJohann    echo "#endif /* VPX_CONFIG_H */" >> ${TMP_H}
48990d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber    mkdir -p `dirname "$1"`
49090d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber    cmp "$1" ${TMP_H} >/dev/null 2>&1 || mv ${TMP_H} "$1"
49190d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber}
49290d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber
49390d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huberprocess_common_cmdline() {
49490d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber    for opt in "$@"; do
49590d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber        optval="${opt#*=}"
49690d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber        case "$opt" in
4971184aebb761cbeac9124c37189a80a1a58f04b6bhkuang        --child) enable_feature child
49890d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber        ;;
49990d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber        --log*)
50090d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber        logging="$optval"
50190d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber        if ! disabled logging ; then
50290d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber            enabled logging || logfile="$logging"
50390d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber        else
50490d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber            logfile=/dev/null
50590d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber        fi
50690d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber        ;;
50790d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber        --target=*) toolchain="${toolchain:-${optval}}"
50890d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber        ;;
5091184aebb761cbeac9124c37189a80a1a58f04b6bhkuang        --force-target=*) toolchain="${toolchain:-${optval}}"; enable_feature force_toolchain
51090d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber        ;;
51190d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber        --cpu)
51290d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber        ;;
51390d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber        --cpu=*) tune_cpu="$optval"
51490d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber        ;;
51579f15823c34ae1e423108295e416213200bb280fAndreas Huber        --extra-cflags=*)
51679f15823c34ae1e423108295e416213200bb280fAndreas Huber        extra_cflags="${optval}"
51779f15823c34ae1e423108295e416213200bb280fAndreas Huber        ;;
51890d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber        --enable-?*|--disable-?*)
51990d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber        eval `echo "$opt" | sed 's/--/action=/;s/-/ option=/;s/-/_/g'`
5201b362b15af34006e6a11974088a46d42b903418eJohann        if echo "${ARCH_EXT_LIST}" | grep "^ *$option\$" >/dev/null; then
5211b362b15af34006e6a11974088a46d42b903418eJohann            [ $action = "disable" ] && RTCD_OPTIONS="${RTCD_OPTIONS}${opt} "
5221b362b15af34006e6a11974088a46d42b903418eJohann        elif [ $action = "disable" ] && ! disabled $option ; then
5231b362b15af34006e6a11974088a46d42b903418eJohann          echo "${CMDLINE_SELECT}" | grep "^ *$option\$" >/dev/null ||
5241b362b15af34006e6a11974088a46d42b903418eJohann            die_unknown $opt
5251b362b15af34006e6a11974088a46d42b903418eJohann        elif [ $action = "enable" ] && ! enabled $option ; then
5261b362b15af34006e6a11974088a46d42b903418eJohann          echo "${CMDLINE_SELECT}" | grep "^ *$option\$" >/dev/null ||
5271b362b15af34006e6a11974088a46d42b903418eJohann            die_unknown $opt
5281b362b15af34006e6a11974088a46d42b903418eJohann        fi
5291184aebb761cbeac9124c37189a80a1a58f04b6bhkuang        ${action}_feature $option
53090d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber        ;;
5311b362b15af34006e6a11974088a46d42b903418eJohann        --require-?*)
5321b362b15af34006e6a11974088a46d42b903418eJohann        eval `echo "$opt" | sed 's/--/action=/;s/-/ option=/;s/-/_/g'`
5331b362b15af34006e6a11974088a46d42b903418eJohann        if echo "${ARCH_EXT_LIST}" none | grep "^ *$option\$" >/dev/null; then
5341b362b15af34006e6a11974088a46d42b903418eJohann            RTCD_OPTIONS="${RTCD_OPTIONS}${opt} "
5351b362b15af34006e6a11974088a46d42b903418eJohann        else
5361b362b15af34006e6a11974088a46d42b903418eJohann            die_unknown $opt
5371b362b15af34006e6a11974088a46d42b903418eJohann        fi
5381b362b15af34006e6a11974088a46d42b903418eJohann        ;;
53990d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber        --force-enable-?*|--force-disable-?*)
54090d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber        eval `echo "$opt" | sed 's/--force-/action=/;s/-/ option=/;s/-/_/g'`
5411184aebb761cbeac9124c37189a80a1a58f04b6bhkuang        ${action}_feature $option
54290d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber        ;;
54390d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber        --libc=*)
54490d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber        [ -d "${optval}" ] || die "Not a directory: ${optval}"
5451184aebb761cbeac9124c37189a80a1a58f04b6bhkuang        disable_feature builtin_libc
54690d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber        alt_libc="${optval}"
54790d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber        ;;
548538f6170b788de7408b06efc6613dc98579aa6a6Andreas Huber        --as=*)
549538f6170b788de7408b06efc6613dc98579aa6a6Andreas Huber        [ "${optval}" = yasm -o "${optval}" = nasm -o "${optval}" = auto ] \
550538f6170b788de7408b06efc6613dc98579aa6a6Andreas Huber            || die "Must be yasm, nasm or auto: ${optval}"
551538f6170b788de7408b06efc6613dc98579aa6a6Andreas Huber        alt_as="${optval}"
552538f6170b788de7408b06efc6613dc98579aa6a6Andreas Huber        ;;
553f71323e297a928af368937089d3ed71239786f86Andreas Huber        --prefix=*)
554f71323e297a928af368937089d3ed71239786f86Andreas Huber        prefix="${optval}"
555f71323e297a928af368937089d3ed71239786f86Andreas Huber        ;;
556f71323e297a928af368937089d3ed71239786f86Andreas Huber        --libdir=*)
557f71323e297a928af368937089d3ed71239786f86Andreas Huber        libdir="${optval}"
558f71323e297a928af368937089d3ed71239786f86Andreas Huber        ;;
5591b362b15af34006e6a11974088a46d42b903418eJohann        --sdk-path=*)
5601b362b15af34006e6a11974088a46d42b903418eJohann        [ -d "${optval}" ] || die "Not a directory: ${optval}"
5611b362b15af34006e6a11974088a46d42b903418eJohann        sdk_path="${optval}"
5621b362b15af34006e6a11974088a46d42b903418eJohann        ;;
5631b362b15af34006e6a11974088a46d42b903418eJohann        --libc|--as|--prefix|--libdir|--sdk-path)
56490d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber        die "Option ${opt} requires argument"
56590d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber        ;;
56690d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber        --help|-h) show_help
56790d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber        ;;
56890d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber        *) die_unknown $opt
56990d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber        ;;
57090d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber        esac
57190d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber    done
57290d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber}
57390d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber
57490d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huberprocess_cmdline() {
57590d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber    for opt do
57690d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber        optval="${opt#*=}"
57790d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber        case "$opt" in
57890d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber        *) process_common_cmdline $opt
57990d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber        ;;
58090d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber        esac
58190d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber    done
58290d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber}
58390d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber
584f71323e297a928af368937089d3ed71239786f86Andreas Huber
585f71323e297a928af368937089d3ed71239786f86Andreas Huberpost_process_common_cmdline() {
586f71323e297a928af368937089d3ed71239786f86Andreas Huber    prefix="${prefix:-/usr/local}"
587f71323e297a928af368937089d3ed71239786f86Andreas Huber    prefix="${prefix%/}"
588f71323e297a928af368937089d3ed71239786f86Andreas Huber    libdir="${libdir:-${prefix}/lib}"
589f71323e297a928af368937089d3ed71239786f86Andreas Huber    libdir="${libdir%/}"
590f71323e297a928af368937089d3ed71239786f86Andreas Huber    if [ "${libdir#${prefix}}" = "${libdir}" ]; then
591f71323e297a928af368937089d3ed71239786f86Andreas Huber        die "Libdir ${libdir} must be a subdirectory of ${prefix}"
592f71323e297a928af368937089d3ed71239786f86Andreas Huber    fi
593f71323e297a928af368937089d3ed71239786f86Andreas Huber}
594f71323e297a928af368937089d3ed71239786f86Andreas Huber
595f71323e297a928af368937089d3ed71239786f86Andreas Huber
59690d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huberpost_process_cmdline() {
59790d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber    true;
59890d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber}
59990d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber
60090d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Hubersetup_gnu_toolchain() {
60190d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber        CC=${CC:-${CROSS}gcc}
6021b362b15af34006e6a11974088a46d42b903418eJohann        CXX=${CXX:-${CROSS}g++}
60390d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber        AR=${AR:-${CROSS}ar}
60490d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber        LD=${LD:-${CROSS}${link_with_cc:-ld}}
60590d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber        AS=${AS:-${CROSS}as}
60690d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber    STRIP=${STRIP:-${CROSS}strip}
60790d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber    NM=${NM:-${CROSS}nm}
60890d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber        AS_SFX=.s
6091b362b15af34006e6a11974088a46d42b903418eJohann        EXE_SFX=
61090d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber}
61190d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber
61290d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huberprocess_common_toolchain() {
613f71323e297a928af368937089d3ed71239786f86Andreas Huber    if [ -z "$toolchain" ]; then
6141b362b15af34006e6a11974088a46d42b903418eJohann        gcctarget="${CHOST:-$(gcc -dumpmachine 2> /dev/null)}"
615f71323e297a928af368937089d3ed71239786f86Andreas Huber
616f71323e297a928af368937089d3ed71239786f86Andreas Huber        # detect tgt_isa
617f71323e297a928af368937089d3ed71239786f86Andreas Huber        case "$gcctarget" in
6181b362b15af34006e6a11974088a46d42b903418eJohann            armv6*)
6191b362b15af34006e6a11974088a46d42b903418eJohann                tgt_isa=armv6
6201b362b15af34006e6a11974088a46d42b903418eJohann                ;;
621ba164dffc5a6795bce97fae02b51ccf3330e15e4hkuang            armv7*-hardfloat*)
622ba164dffc5a6795bce97fae02b51ccf3330e15e4hkuang                tgt_isa=armv7
623ba164dffc5a6795bce97fae02b51ccf3330e15e4hkuang                float_abi=hard
624ba164dffc5a6795bce97fae02b51ccf3330e15e4hkuang                ;;
6251b362b15af34006e6a11974088a46d42b903418eJohann            armv7*)
6261b362b15af34006e6a11974088a46d42b903418eJohann                tgt_isa=armv7
627ba164dffc5a6795bce97fae02b51ccf3330e15e4hkuang                float_abi=softfp
6281b362b15af34006e6a11974088a46d42b903418eJohann                ;;
6291b362b15af34006e6a11974088a46d42b903418eJohann            armv5te*)
6301b362b15af34006e6a11974088a46d42b903418eJohann                tgt_isa=armv5te
6311b362b15af34006e6a11974088a46d42b903418eJohann                ;;
632f71323e297a928af368937089d3ed71239786f86Andreas Huber            *x86_64*|*amd64*)
633f71323e297a928af368937089d3ed71239786f86Andreas Huber                tgt_isa=x86_64
634f71323e297a928af368937089d3ed71239786f86Andreas Huber                ;;
635f71323e297a928af368937089d3ed71239786f86Andreas Huber            *i[3456]86*)
636f71323e297a928af368937089d3ed71239786f86Andreas Huber                tgt_isa=x86
637f71323e297a928af368937089d3ed71239786f86Andreas Huber                ;;
638538f6170b788de7408b06efc6613dc98579aa6a6Andreas Huber            *powerpc64*)
639538f6170b788de7408b06efc6613dc98579aa6a6Andreas Huber                tgt_isa=ppc64
640538f6170b788de7408b06efc6613dc98579aa6a6Andreas Huber                ;;
641538f6170b788de7408b06efc6613dc98579aa6a6Andreas Huber            *powerpc*)
642538f6170b788de7408b06efc6613dc98579aa6a6Andreas Huber                tgt_isa=ppc32
643538f6170b788de7408b06efc6613dc98579aa6a6Andreas Huber                ;;
644538f6170b788de7408b06efc6613dc98579aa6a6Andreas Huber            *sparc*)
645538f6170b788de7408b06efc6613dc98579aa6a6Andreas Huber                tgt_isa=sparc
646538f6170b788de7408b06efc6613dc98579aa6a6Andreas Huber                ;;
647f71323e297a928af368937089d3ed71239786f86Andreas Huber        esac
648f71323e297a928af368937089d3ed71239786f86Andreas Huber
649f71323e297a928af368937089d3ed71239786f86Andreas Huber        # detect tgt_os
650f71323e297a928af368937089d3ed71239786f86Andreas Huber        case "$gcctarget" in
651f71323e297a928af368937089d3ed71239786f86Andreas Huber            *darwin8*)
652f71323e297a928af368937089d3ed71239786f86Andreas Huber                tgt_isa=universal
653f71323e297a928af368937089d3ed71239786f86Andreas Huber                tgt_os=darwin8
654f71323e297a928af368937089d3ed71239786f86Andreas Huber                ;;
655f71323e297a928af368937089d3ed71239786f86Andreas Huber            *darwin9*)
656f71323e297a928af368937089d3ed71239786f86Andreas Huber                tgt_isa=universal
657f71323e297a928af368937089d3ed71239786f86Andreas Huber                tgt_os=darwin9
658f71323e297a928af368937089d3ed71239786f86Andreas Huber                ;;
65979f15823c34ae1e423108295e416213200bb280fAndreas Huber            *darwin10*)
66079f15823c34ae1e423108295e416213200bb280fAndreas Huber                tgt_isa=x86_64
66179f15823c34ae1e423108295e416213200bb280fAndreas Huber                tgt_os=darwin10
66279f15823c34ae1e423108295e416213200bb280fAndreas Huber                ;;
6631b362b15af34006e6a11974088a46d42b903418eJohann            *darwin11*)
6641b362b15af34006e6a11974088a46d42b903418eJohann                tgt_isa=x86_64
6651b362b15af34006e6a11974088a46d42b903418eJohann                tgt_os=darwin11
6661b362b15af34006e6a11974088a46d42b903418eJohann                ;;
6671b362b15af34006e6a11974088a46d42b903418eJohann            *darwin12*)
6681b362b15af34006e6a11974088a46d42b903418eJohann                tgt_isa=x86_64
6691b362b15af34006e6a11974088a46d42b903418eJohann                tgt_os=darwin12
6701b362b15af34006e6a11974088a46d42b903418eJohann                ;;
67191037db265ecdd914a26e056cf69207b4f50924ehkuang            *darwin13*)
67291037db265ecdd914a26e056cf69207b4f50924ehkuang                tgt_isa=x86_64
67391037db265ecdd914a26e056cf69207b4f50924ehkuang                tgt_os=darwin13
67491037db265ecdd914a26e056cf69207b4f50924ehkuang                ;;
675ba164dffc5a6795bce97fae02b51ccf3330e15e4hkuang            x86_64*mingw32*)
676ba164dffc5a6795bce97fae02b51ccf3330e15e4hkuang                tgt_os=win64
677ba164dffc5a6795bce97fae02b51ccf3330e15e4hkuang                ;;
678f71323e297a928af368937089d3ed71239786f86Andreas Huber            *mingw32*|*cygwin*)
679f71323e297a928af368937089d3ed71239786f86Andreas Huber                [ -z "$tgt_isa" ] && tgt_isa=x86
680f71323e297a928af368937089d3ed71239786f86Andreas Huber                tgt_os=win32
681f71323e297a928af368937089d3ed71239786f86Andreas Huber                ;;
682f71323e297a928af368937089d3ed71239786f86Andreas Huber            *linux*|*bsd*)
683f71323e297a928af368937089d3ed71239786f86Andreas Huber                tgt_os=linux
684f71323e297a928af368937089d3ed71239786f86Andreas Huber                ;;
685538f6170b788de7408b06efc6613dc98579aa6a6Andreas Huber            *solaris2.10)
686538f6170b788de7408b06efc6613dc98579aa6a6Andreas Huber                tgt_os=solaris
687538f6170b788de7408b06efc6613dc98579aa6a6Andreas Huber                ;;
6881b362b15af34006e6a11974088a46d42b903418eJohann            *os2*)
6891b362b15af34006e6a11974088a46d42b903418eJohann                tgt_os=os2
6901b362b15af34006e6a11974088a46d42b903418eJohann                ;;
691f71323e297a928af368937089d3ed71239786f86Andreas Huber        esac
692f71323e297a928af368937089d3ed71239786f86Andreas Huber
693f71323e297a928af368937089d3ed71239786f86Andreas Huber        if [ -n "$tgt_isa" ] && [ -n "$tgt_os" ]; then
694f71323e297a928af368937089d3ed71239786f86Andreas Huber            toolchain=${tgt_isa}-${tgt_os}-gcc
695f71323e297a928af368937089d3ed71239786f86Andreas Huber        fi
696f71323e297a928af368937089d3ed71239786f86Andreas Huber    fi
697f71323e297a928af368937089d3ed71239786f86Andreas Huber
69890d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber    toolchain=${toolchain:-generic-gnu}
69990d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber
70090d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber    is_in ${toolchain} ${all_platforms} || enabled force_toolchain \
70190d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber        || die "Unrecognized toolchain '${toolchain}'"
70290d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber
70390d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber    enabled child || log_echo "Configuring for target '${toolchain}'"
70490d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber
70590d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber    #
70690d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber    # Set up toolchain variables
70790d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber    #
70890d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber    tgt_isa=$(echo ${toolchain} | awk 'BEGIN{FS="-"}{print $1}')
70990d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber    tgt_os=$(echo ${toolchain} | awk 'BEGIN{FS="-"}{print $2}')
71090d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber    tgt_cc=$(echo ${toolchain} | awk 'BEGIN{FS="-"}{print $3}')
71190d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber
71290d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber    # Mark the specific ISA requested as enabled
71390d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber    soft_enable ${tgt_isa}
7141184aebb761cbeac9124c37189a80a1a58f04b6bhkuang    enable_feature ${tgt_os}
7151184aebb761cbeac9124c37189a80a1a58f04b6bhkuang    enable_feature ${tgt_cc}
71690d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber
71790d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber    # Enable the architecture family
71890d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber    case ${tgt_isa} in
7191184aebb761cbeac9124c37189a80a1a58f04b6bhkuang        arm*) enable_feature arm;;
7201184aebb761cbeac9124c37189a80a1a58f04b6bhkuang        mips*) enable_feature mips;;
72190d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber    esac
72290d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber
723538f6170b788de7408b06efc6613dc98579aa6a6Andreas Huber    # PIC is probably what we want when building shared libs
724538f6170b788de7408b06efc6613dc98579aa6a6Andreas Huber    enabled shared && soft_enable pic
725538f6170b788de7408b06efc6613dc98579aa6a6Andreas Huber
7261b362b15af34006e6a11974088a46d42b903418eJohann    # Handle darwin variants. Newer SDKs allow targeting older
7271b362b15af34006e6a11974088a46d42b903418eJohann    # platforms, so find the newest SDK available.
7281b362b15af34006e6a11974088a46d42b903418eJohann    case ${toolchain} in
7291b362b15af34006e6a11974088a46d42b903418eJohann        *-darwin*)
7301b362b15af34006e6a11974088a46d42b903418eJohann            if [ -z "${DEVELOPER_DIR}" ]; then
7311b362b15af34006e6a11974088a46d42b903418eJohann                DEVELOPER_DIR=`xcode-select -print-path 2> /dev/null`
7321b362b15af34006e6a11974088a46d42b903418eJohann                [ $? -ne 0 ] && OSX_SKIP_DIR_CHECK=1
7331b362b15af34006e6a11974088a46d42b903418eJohann            fi
7341b362b15af34006e6a11974088a46d42b903418eJohann            if [ -z "${OSX_SKIP_DIR_CHECK}" ]; then
7351b362b15af34006e6a11974088a46d42b903418eJohann                OSX_SDK_ROOTS="${DEVELOPER_DIR}/SDKs"
7361b362b15af34006e6a11974088a46d42b903418eJohann                OSX_SDK_VERSIONS="MacOSX10.4u.sdk MacOSX10.5.sdk MacOSX10.6.sdk"
7371b362b15af34006e6a11974088a46d42b903418eJohann                OSX_SDK_VERSIONS="${OSX_SDK_VERSIONS} MacOSX10.7.sdk"
7381b362b15af34006e6a11974088a46d42b903418eJohann                for v in ${OSX_SDK_VERSIONS}; do
7391b362b15af34006e6a11974088a46d42b903418eJohann                    if [ -d "${OSX_SDK_ROOTS}/${v}" ]; then
7401b362b15af34006e6a11974088a46d42b903418eJohann                        osx_sdk_dir="${OSX_SDK_ROOTS}/${v}"
7411b362b15af34006e6a11974088a46d42b903418eJohann                    fi
7421b362b15af34006e6a11974088a46d42b903418eJohann                done
7431b362b15af34006e6a11974088a46d42b903418eJohann            fi
7441b362b15af34006e6a11974088a46d42b903418eJohann            ;;
7451b362b15af34006e6a11974088a46d42b903418eJohann    esac
7461b362b15af34006e6a11974088a46d42b903418eJohann
7471b362b15af34006e6a11974088a46d42b903418eJohann    if [ -d "${osx_sdk_dir}" ]; then
7481b362b15af34006e6a11974088a46d42b903418eJohann        add_cflags  "-isysroot ${osx_sdk_dir}"
7491b362b15af34006e6a11974088a46d42b903418eJohann        add_ldflags "-isysroot ${osx_sdk_dir}"
7501b362b15af34006e6a11974088a46d42b903418eJohann    fi
7511b362b15af34006e6a11974088a46d42b903418eJohann
75290d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber    case ${toolchain} in
753538f6170b788de7408b06efc6613dc98579aa6a6Andreas Huber        *-darwin8-*)
75490d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber            add_cflags  "-mmacosx-version-min=10.4"
75590d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber            add_ldflags "-mmacosx-version-min=10.4"
75690d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber            ;;
757538f6170b788de7408b06efc6613dc98579aa6a6Andreas Huber        *-darwin9-*)
75890d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber            add_cflags  "-mmacosx-version-min=10.5"
75990d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber            add_ldflags "-mmacosx-version-min=10.5"
76090d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber            ;;
76179f15823c34ae1e423108295e416213200bb280fAndreas Huber        *-darwin10-*)
76279f15823c34ae1e423108295e416213200bb280fAndreas Huber            add_cflags  "-mmacosx-version-min=10.6"
76379f15823c34ae1e423108295e416213200bb280fAndreas Huber            add_ldflags "-mmacosx-version-min=10.6"
76479f15823c34ae1e423108295e416213200bb280fAndreas Huber            ;;
7651b362b15af34006e6a11974088a46d42b903418eJohann        *-darwin11-*)
7661b362b15af34006e6a11974088a46d42b903418eJohann            add_cflags  "-mmacosx-version-min=10.7"
7671b362b15af34006e6a11974088a46d42b903418eJohann            add_ldflags "-mmacosx-version-min=10.7"
7681b362b15af34006e6a11974088a46d42b903418eJohann            ;;
7691b362b15af34006e6a11974088a46d42b903418eJohann        *-darwin12-*)
7701b362b15af34006e6a11974088a46d42b903418eJohann            add_cflags  "-mmacosx-version-min=10.8"
7711b362b15af34006e6a11974088a46d42b903418eJohann            add_ldflags "-mmacosx-version-min=10.8"
7721b362b15af34006e6a11974088a46d42b903418eJohann            ;;
77391037db265ecdd914a26e056cf69207b4f50924ehkuang        *-darwin13-*)
77491037db265ecdd914a26e056cf69207b4f50924ehkuang            add_cflags  "-mmacosx-version-min=10.9"
77591037db265ecdd914a26e056cf69207b4f50924ehkuang            add_ldflags "-mmacosx-version-min=10.9"
77691037db265ecdd914a26e056cf69207b4f50924ehkuang            ;;
77790d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber    esac
77890d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber
779538f6170b788de7408b06efc6613dc98579aa6a6Andreas Huber    # Handle Solaris variants. Solaris 10 needs -lposix4
780538f6170b788de7408b06efc6613dc98579aa6a6Andreas Huber    case ${toolchain} in
78179f15823c34ae1e423108295e416213200bb280fAndreas Huber        sparc-solaris-*)
78279f15823c34ae1e423108295e416213200bb280fAndreas Huber            add_extralibs -lposix4
7831184aebb761cbeac9124c37189a80a1a58f04b6bhkuang            disable_feature fast_unaligned
78479f15823c34ae1e423108295e416213200bb280fAndreas Huber            ;;
785538f6170b788de7408b06efc6613dc98579aa6a6Andreas Huber        *-solaris-*)
786538f6170b788de7408b06efc6613dc98579aa6a6Andreas Huber            add_extralibs -lposix4
787538f6170b788de7408b06efc6613dc98579aa6a6Andreas Huber            ;;
788538f6170b788de7408b06efc6613dc98579aa6a6Andreas Huber    esac
789538f6170b788de7408b06efc6613dc98579aa6a6Andreas Huber
79090d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber    # Process ARM architecture variants
79190d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber    case ${toolchain} in
7921b362b15af34006e6a11974088a46d42b903418eJohann    arm*)
7931b362b15af34006e6a11974088a46d42b903418eJohann        # on arm, isa versions are supersets
7941b362b15af34006e6a11974088a46d42b903418eJohann        case ${tgt_isa} in
7951b362b15af34006e6a11974088a46d42b903418eJohann        armv7)
7961b362b15af34006e6a11974088a46d42b903418eJohann            soft_enable neon
7971b362b15af34006e6a11974088a46d42b903418eJohann            soft_enable media
7981b362b15af34006e6a11974088a46d42b903418eJohann            soft_enable edsp
7991b362b15af34006e6a11974088a46d42b903418eJohann            soft_enable fast_unaligned
8001b362b15af34006e6a11974088a46d42b903418eJohann            ;;
8011b362b15af34006e6a11974088a46d42b903418eJohann        armv6)
8021b362b15af34006e6a11974088a46d42b903418eJohann            soft_enable media
8031b362b15af34006e6a11974088a46d42b903418eJohann            soft_enable edsp
8041b362b15af34006e6a11974088a46d42b903418eJohann            soft_enable fast_unaligned
8051b362b15af34006e6a11974088a46d42b903418eJohann            ;;
8061b362b15af34006e6a11974088a46d42b903418eJohann        armv5te)
8071b362b15af34006e6a11974088a46d42b903418eJohann            soft_enable edsp
8081184aebb761cbeac9124c37189a80a1a58f04b6bhkuang            disable_feature fast_unaligned
8091b362b15af34006e6a11974088a46d42b903418eJohann            ;;
8101b362b15af34006e6a11974088a46d42b903418eJohann        esac
81190d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber
8121b362b15af34006e6a11974088a46d42b903418eJohann        asm_conversion_cmd="cat"
81390d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber
81490d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber        case ${tgt_cc} in
81590d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber        gcc)
8161b362b15af34006e6a11974088a46d42b903418eJohann            CROSS=${CROSS:-arm-none-linux-gnueabi-}
81790d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber            link_with_cc=gcc
81890d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber            setup_gnu_toolchain
81990d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber            arch_int=${tgt_isa##armv}
82090d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber            arch_int=${arch_int%%te}
82190d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber            check_add_asflags --defsym ARCHITECTURE=${arch_int}
82290d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber            tune_cflags="-mtune="
8231184aebb761cbeac9124c37189a80a1a58f04b6bhkuang            if [ ${tgt_isa} = "armv7" ]; then
824ba164dffc5a6795bce97fae02b51ccf3330e15e4hkuang                if [ -z "${float_abi}" ]; then
825ba164dffc5a6795bce97fae02b51ccf3330e15e4hkuang                    check_cpp <<EOF && float_abi=hard || float_abi=softfp
826ba164dffc5a6795bce97fae02b51ccf3330e15e4hkuang#ifndef __ARM_PCS_VFP
827ba164dffc5a6795bce97fae02b51ccf3330e15e4hkuang#error "not hardfp"
828ba164dffc5a6795bce97fae02b51ccf3330e15e4hkuang#endif
829ba164dffc5a6795bce97fae02b51ccf3330e15e4hkuangEOF
830ba164dffc5a6795bce97fae02b51ccf3330e15e4hkuang                fi
831ba164dffc5a6795bce97fae02b51ccf3330e15e4hkuang                check_add_cflags  -march=armv7-a -mfloat-abi=${float_abi}
832ba164dffc5a6795bce97fae02b51ccf3330e15e4hkuang                check_add_asflags -march=armv7-a -mfloat-abi=${float_abi}
8331b362b15af34006e6a11974088a46d42b903418eJohann
8341b362b15af34006e6a11974088a46d42b903418eJohann                if enabled neon
8351b362b15af34006e6a11974088a46d42b903418eJohann                then
8361b362b15af34006e6a11974088a46d42b903418eJohann                    check_add_cflags -mfpu=neon #-ftree-vectorize
8371b362b15af34006e6a11974088a46d42b903418eJohann                    check_add_asflags -mfpu=neon
8381b362b15af34006e6a11974088a46d42b903418eJohann                fi
8391b362b15af34006e6a11974088a46d42b903418eJohann
8401b362b15af34006e6a11974088a46d42b903418eJohann                if [ -z "${tune_cpu}" ]; then
8411b362b15af34006e6a11974088a46d42b903418eJohann                    tune_cpu=cortex-a8
8421b362b15af34006e6a11974088a46d42b903418eJohann                fi
84390d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber            else
84490d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber                check_add_cflags -march=${tgt_isa}
84590d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber                check_add_asflags -march=${tgt_isa}
84690d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber            fi
8471b362b15af34006e6a11974088a46d42b903418eJohann
84879f15823c34ae1e423108295e416213200bb280fAndreas Huber            enabled debug && add_asflags -g
84990d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber            asm_conversion_cmd="${source_path}/build/make/ads2gas.pl"
850ba164dffc5a6795bce97fae02b51ccf3330e15e4hkuang            if enabled thumb; then
851ba164dffc5a6795bce97fae02b51ccf3330e15e4hkuang                asm_conversion_cmd="$asm_conversion_cmd -thumb"
852ba164dffc5a6795bce97fae02b51ccf3330e15e4hkuang                check_add_cflags -mthumb
853ba164dffc5a6795bce97fae02b51ccf3330e15e4hkuang                check_add_asflags -mthumb -mimplicit-it=always
854ba164dffc5a6795bce97fae02b51ccf3330e15e4hkuang            fi
855ba164dffc5a6795bce97fae02b51ccf3330e15e4hkuang            ;;
856ba164dffc5a6795bce97fae02b51ccf3330e15e4hkuang        vs*)
857ba164dffc5a6795bce97fae02b51ccf3330e15e4hkuang            asm_conversion_cmd="${source_path}/build/make/ads2armasm_ms.pl"
858ba164dffc5a6795bce97fae02b51ccf3330e15e4hkuang            AS_SFX=.s
859ba164dffc5a6795bce97fae02b51ccf3330e15e4hkuang            msvs_arch_dir=arm-msvs
8601184aebb761cbeac9124c37189a80a1a58f04b6bhkuang            disable_feature multithread
8611184aebb761cbeac9124c37189a80a1a58f04b6bhkuang            disable_feature unit_tests
86290d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber            ;;
86390d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber        rvct)
86490d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber            CC=armcc
86590d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber            AR=armar
86690d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber            AS=armasm
86790d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber            LD=${source_path}/build/make/armlink_adapter.sh
86890d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber            STRIP=arm-none-linux-gnueabi-strip
86990d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber            NM=arm-none-linux-gnueabi-nm
87090d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber            tune_cflags="--cpu="
87190d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber            tune_asflags="--cpu="
87290d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber            if [ -z "${tune_cpu}" ]; then
8731184aebb761cbeac9124c37189a80a1a58f04b6bhkuang                if [ ${tgt_isa} = "armv7" ]; then
8741b362b15af34006e6a11974088a46d42b903418eJohann                    if enabled neon
8751b362b15af34006e6a11974088a46d42b903418eJohann                    then
8761b362b15af34006e6a11974088a46d42b903418eJohann                        check_add_cflags --fpu=softvfp+vfpv3
8771b362b15af34006e6a11974088a46d42b903418eJohann                        check_add_asflags --fpu=softvfp+vfpv3
8781b362b15af34006e6a11974088a46d42b903418eJohann                    fi
8791b362b15af34006e6a11974088a46d42b903418eJohann                    check_add_cflags --cpu=Cortex-A8
8801b362b15af34006e6a11974088a46d42b903418eJohann                    check_add_asflags --cpu=Cortex-A8
88190d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber                else
88290d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber                    check_add_cflags --cpu=${tgt_isa##armv}
88390d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber                    check_add_asflags --cpu=${tgt_isa##armv}
88490d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber                fi
88590d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber            fi
88690d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber            arch_int=${tgt_isa##armv}
88790d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber            arch_int=${arch_int%%te}
88890d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber            check_add_asflags --pd "\"ARCHITECTURE SETA ${arch_int}\""
88979f15823c34ae1e423108295e416213200bb280fAndreas Huber            enabled debug && add_asflags -g
89079f15823c34ae1e423108295e416213200bb280fAndreas Huber            add_cflags --gnu
89179f15823c34ae1e423108295e416213200bb280fAndreas Huber            add_cflags --enum_is_int
89279f15823c34ae1e423108295e416213200bb280fAndreas Huber            add_cflags --wchar32
89390d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber        ;;
89490d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber        esac
89590d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber
89690d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber        case ${tgt_os} in
89779f15823c34ae1e423108295e416213200bb280fAndreas Huber        none*)
8981184aebb761cbeac9124c37189a80a1a58f04b6bhkuang            disable_feature multithread
8991184aebb761cbeac9124c37189a80a1a58f04b6bhkuang            disable_feature os_support
90079f15823c34ae1e423108295e416213200bb280fAndreas Huber            ;;
9011b362b15af34006e6a11974088a46d42b903418eJohann
9021b362b15af34006e6a11974088a46d42b903418eJohann        android*)
9031b362b15af34006e6a11974088a46d42b903418eJohann            SDK_PATH=${sdk_path}
9041b362b15af34006e6a11974088a46d42b903418eJohann            COMPILER_LOCATION=`find "${SDK_PATH}" \
9051b362b15af34006e6a11974088a46d42b903418eJohann                               -name "arm-linux-androideabi-gcc*" -print -quit`
9061b362b15af34006e6a11974088a46d42b903418eJohann            TOOLCHAIN_PATH=${COMPILER_LOCATION%/*}/arm-linux-androideabi-
9071b362b15af34006e6a11974088a46d42b903418eJohann            CC=${TOOLCHAIN_PATH}gcc
9081b362b15af34006e6a11974088a46d42b903418eJohann            CXX=${TOOLCHAIN_PATH}g++
9091b362b15af34006e6a11974088a46d42b903418eJohann            AR=${TOOLCHAIN_PATH}ar
9101b362b15af34006e6a11974088a46d42b903418eJohann            LD=${TOOLCHAIN_PATH}gcc
9111b362b15af34006e6a11974088a46d42b903418eJohann            AS=${TOOLCHAIN_PATH}as
9121b362b15af34006e6a11974088a46d42b903418eJohann            STRIP=${TOOLCHAIN_PATH}strip
9131b362b15af34006e6a11974088a46d42b903418eJohann            NM=${TOOLCHAIN_PATH}nm
9141b362b15af34006e6a11974088a46d42b903418eJohann
9151b362b15af34006e6a11974088a46d42b903418eJohann            if [ -z "${alt_libc}" ]; then
9161b362b15af34006e6a11974088a46d42b903418eJohann                alt_libc=`find "${SDK_PATH}" -name arch-arm -print | \
9171b362b15af34006e6a11974088a46d42b903418eJohann                          awk '{n = split($0,a,"/"); \
9181b362b15af34006e6a11974088a46d42b903418eJohann                                split(a[n-1],b,"-"); \
9191b362b15af34006e6a11974088a46d42b903418eJohann                                print $0 " " b[2]}' | \
9201b362b15af34006e6a11974088a46d42b903418eJohann                          sort -g -k 2 | \
9211b362b15af34006e6a11974088a46d42b903418eJohann                          awk '{ print $1 }' | tail -1`
9221b362b15af34006e6a11974088a46d42b903418eJohann            fi
9231b362b15af34006e6a11974088a46d42b903418eJohann
9241b362b15af34006e6a11974088a46d42b903418eJohann            add_cflags "--sysroot=${alt_libc}"
9251b362b15af34006e6a11974088a46d42b903418eJohann            add_ldflags "--sysroot=${alt_libc}"
9261b362b15af34006e6a11974088a46d42b903418eJohann
9271b362b15af34006e6a11974088a46d42b903418eJohann            # linker flag that routes around a CPU bug in some
9281b362b15af34006e6a11974088a46d42b903418eJohann            # Cortex-A8 implementations (NDK Dev Guide)
9291b362b15af34006e6a11974088a46d42b903418eJohann            add_ldflags "-Wl,--fix-cortex-a8"
9301b362b15af34006e6a11974088a46d42b903418eJohann
9311184aebb761cbeac9124c37189a80a1a58f04b6bhkuang            enable_feature pic
9321b362b15af34006e6a11974088a46d42b903418eJohann            soft_enable realtime_only
9331184aebb761cbeac9124c37189a80a1a58f04b6bhkuang            if [ ${tgt_isa} = "armv7" ]; then
9341b362b15af34006e6a11974088a46d42b903418eJohann                soft_enable runtime_cpu_detect
9351b362b15af34006e6a11974088a46d42b903418eJohann            fi
9361b362b15af34006e6a11974088a46d42b903418eJohann            if enabled runtime_cpu_detect; then
9371b362b15af34006e6a11974088a46d42b903418eJohann                add_cflags "-I${SDK_PATH}/sources/android/cpufeatures"
9381b362b15af34006e6a11974088a46d42b903418eJohann            fi
9391b362b15af34006e6a11974088a46d42b903418eJohann          ;;
9401b362b15af34006e6a11974088a46d42b903418eJohann
94190d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber        darwin*)
942b08e2e23eec181e9951df33cd704ac294c5407b6Vignesh Venkatasubramanian
943b08e2e23eec181e9951df33cd704ac294c5407b6Vignesh Venkatasubramanian            XCRUN_FIND="xcrun --sdk iphoneos -find"
944b08e2e23eec181e9951df33cd704ac294c5407b6Vignesh Venkatasubramanian            CXX="$(${XCRUN_FIND} clang++)"
945b08e2e23eec181e9951df33cd704ac294c5407b6Vignesh Venkatasubramanian            CC="$(${XCRUN_FIND} clang)"
946b08e2e23eec181e9951df33cd704ac294c5407b6Vignesh Venkatasubramanian            AR="$(${XCRUN_FIND} ar)"
947b08e2e23eec181e9951df33cd704ac294c5407b6Vignesh Venkatasubramanian            LD="$(${XCRUN_FIND} ld)"
948b08e2e23eec181e9951df33cd704ac294c5407b6Vignesh Venkatasubramanian            AS="$(${XCRUN_FIND} as)"
949b08e2e23eec181e9951df33cd704ac294c5407b6Vignesh Venkatasubramanian            STRIP="$(${XCRUN_FIND} strip)"
950b08e2e23eec181e9951df33cd704ac294c5407b6Vignesh Venkatasubramanian            NM="$(${XCRUN_FIND} nm)"
951b08e2e23eec181e9951df33cd704ac294c5407b6Vignesh Venkatasubramanian            RANLIB="$(${XCRUN_FIND} ranlib)"
95290d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber            AS_SFX=.s
95390d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber
95490d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber            # ASFLAGS is written here instead of using check_add_asflags
95590d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber            # because we need to overwrite all of ASFLAGS and purge the
95690d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber            # options that were put in above
957b08e2e23eec181e9951df33cd704ac294c5407b6Vignesh Venkatasubramanian            ASFLAGS="-arch ${tgt_isa} -g"
95890d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber
959b08e2e23eec181e9951df33cd704ac294c5407b6Vignesh Venkatasubramanian            alt_libc="$(xcrun --sdk iphoneos --show-sdk-path)"
960b08e2e23eec181e9951df33cd704ac294c5407b6Vignesh Venkatasubramanian            add_cflags -arch ${tgt_isa} -isysroot ${alt_libc}
961b08e2e23eec181e9951df33cd704ac294c5407b6Vignesh Venkatasubramanian            add_ldflags -arch ${tgt_isa} -ios_version_min 7.0
96290d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber
9631b362b15af34006e6a11974088a46d42b903418eJohann            for d in lib usr/lib usr/lib/system; do
96490d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber                try_dir="${alt_libc}/${d}"
96590d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber                [ -d "${try_dir}" ] && add_ldflags -L"${try_dir}"
96690d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber            done
96790d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber
96890d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber            asm_conversion_cmd="${source_path}/build/make/ads2gas_apple.pl"
96990d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber         ;;
97090d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber
97190d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber        linux*)
9721184aebb761cbeac9124c37189a80a1a58f04b6bhkuang            enable_feature linux
97390d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber            if enabled rvct; then
9741b362b15af34006e6a11974088a46d42b903418eJohann                # Check if we have CodeSourcery GCC in PATH. Needed for
9751b362b15af34006e6a11974088a46d42b903418eJohann                # libraries
9761b362b15af34006e6a11974088a46d42b903418eJohann                hash arm-none-linux-gnueabi-gcc 2>&- || \
9771b362b15af34006e6a11974088a46d42b903418eJohann                  die "Couldn't find CodeSourcery GCC from PATH"
9781b362b15af34006e6a11974088a46d42b903418eJohann
9791b362b15af34006e6a11974088a46d42b903418eJohann                # Use armcc as a linker to enable translation of
9801b362b15af34006e6a11974088a46d42b903418eJohann                # some gcc specific options such as -lm and -lpthread.
9811b362b15af34006e6a11974088a46d42b903418eJohann                LD="armcc --translate_gcc"
9821b362b15af34006e6a11974088a46d42b903418eJohann
9831b362b15af34006e6a11974088a46d42b903418eJohann                # create configuration file (uses path to CodeSourcery GCC)
9841b362b15af34006e6a11974088a46d42b903418eJohann                armcc --arm_linux_configure --arm_linux_config_file=arm_linux.cfg
9851b362b15af34006e6a11974088a46d42b903418eJohann
9861b362b15af34006e6a11974088a46d42b903418eJohann                add_cflags --arm_linux_paths --arm_linux_config_file=arm_linux.cfg
9871b362b15af34006e6a11974088a46d42b903418eJohann                add_asflags --no_hide_all --apcs=/interwork
9881b362b15af34006e6a11974088a46d42b903418eJohann                add_ldflags --arm_linux_paths --arm_linux_config_file=arm_linux.cfg
9891b362b15af34006e6a11974088a46d42b903418eJohann                enabled pic && add_cflags --apcs=/fpic
9901b362b15af34006e6a11974088a46d42b903418eJohann                enabled pic && add_asflags --apcs=/fpic
9911b362b15af34006e6a11974088a46d42b903418eJohann                enabled shared && add_cflags --shared
99290d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber            fi
99390d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber        ;;
99490d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber
99590d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber        esac
99690d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber    ;;
99790d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber    mips*)
99890d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber        link_with_cc=gcc
99990d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber        setup_gnu_toolchain
100090d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber        tune_cflags="-mtune="
10011b362b15af34006e6a11974088a46d42b903418eJohann        if enabled dspr2; then
10021b362b15af34006e6a11974088a46d42b903418eJohann            check_add_cflags -mips32r2 -mdspr2
10031184aebb761cbeac9124c37189a80a1a58f04b6bhkuang            disable_feature fast_unaligned
10041b362b15af34006e6a11974088a46d42b903418eJohann        fi
100590d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber        check_add_cflags -march=${tgt_isa}
10061b362b15af34006e6a11974088a46d42b903418eJohann        check_add_asflags -march=${tgt_isa}
10071b362b15af34006e6a11974088a46d42b903418eJohann        check_add_asflags -KPIC
100890d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber    ;;
100990d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber    ppc*)
10101184aebb761cbeac9124c37189a80a1a58f04b6bhkuang        enable_feature ppc
101190d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber        bits=${tgt_isa##ppc}
101290d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber        link_with_cc=gcc
101390d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber        setup_gnu_toolchain
101490d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber        add_asflags -force_cpusubtype_ALL -I"\$(dir \$<)darwin"
101590d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber        soft_enable altivec
1016538f6170b788de7408b06efc6613dc98579aa6a6Andreas Huber        enabled altivec && add_cflags -maltivec
101790d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber
101890d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber        case "$tgt_os" in
101990d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber        linux*)
102090d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber            add_asflags -maltivec -mregnames -I"\$(dir \$<)linux"
102190d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber        ;;
102290d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber        darwin*)
102390d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber            darwin_arch="-arch ppc"
102490d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber            enabled ppc64 && darwin_arch="${darwin_arch}64"
102590d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber            add_cflags  ${darwin_arch} -m${bits} -fasm-blocks
102690d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber            add_asflags ${darwin_arch} -force_cpusubtype_ALL -I"\$(dir \$<)darwin"
102790d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber            add_ldflags ${darwin_arch} -m${bits}
1028538f6170b788de7408b06efc6613dc98579aa6a6Andreas Huber            enabled altivec && add_cflags -faltivec
102990d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber        ;;
103090d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber        esac
103190d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber    ;;
103290d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber    x86*)
103390d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber        bits=32
103490d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber        enabled x86_64 && bits=64
10351b362b15af34006e6a11974088a46d42b903418eJohann        check_cpp <<EOF && bits=x32
10361b362b15af34006e6a11974088a46d42b903418eJohann#ifndef __ILP32__
10371b362b15af34006e6a11974088a46d42b903418eJohann#error "not x32"
10381b362b15af34006e6a11974088a46d42b903418eJohann#endif
10391b362b15af34006e6a11974088a46d42b903418eJohannEOF
104090d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber
104190d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber        case  ${tgt_os} in
1042f71323e297a928af368937089d3ed71239786f86Andreas Huber            win*)
1043f71323e297a928af368937089d3ed71239786f86Andreas Huber                enabled gcc && add_cflags -fno-common
1044f71323e297a928af368937089d3ed71239786f86Andreas Huber                ;;
104590d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber            solaris*)
104690d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber                CC=${CC:-${CROSS}gcc}
10471b362b15af34006e6a11974088a46d42b903418eJohann                CXX=${CXX:-${CROSS}g++}
104890d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber                LD=${LD:-${CROSS}gcc}
104990d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber                CROSS=${CROSS:-g}
105090d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber                ;;
10511b362b15af34006e6a11974088a46d42b903418eJohann            os2)
10521b362b15af34006e6a11974088a46d42b903418eJohann                AS=${AS:-nasm}
10531b362b15af34006e6a11974088a46d42b903418eJohann                ;;
105490d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber        esac
105590d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber
1056538f6170b788de7408b06efc6613dc98579aa6a6Andreas Huber        AS="${alt_as:-${AS:-auto}}"
105790d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber        case  ${tgt_cc} in
105890d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber            icc*)
105990d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber                CC=${CC:-icc}
106090d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber                LD=${LD:-icc}
106190d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber                setup_gnu_toolchain
10625ae7ac49f08a179e4f054d99fcfc9dce78d26e58hkuang                add_cflags -use-msasm  # remove -use-msasm too?
10635ae7ac49f08a179e4f054d99fcfc9dce78d26e58hkuang                # add -no-intel-extensions to suppress warning #10237
10645ae7ac49f08a179e4f054d99fcfc9dce78d26e58hkuang                # refer to http://software.intel.com/en-us/forums/topic/280199
10655ae7ac49f08a179e4f054d99fcfc9dce78d26e58hkuang                add_ldflags -i-static -no-intel-extensions
10665ae7ac49f08a179e4f054d99fcfc9dce78d26e58hkuang                enabled x86_64 && add_cflags -ipo -static -O3 -no-prec-div
1067f71323e297a928af368937089d3ed71239786f86Andreas Huber                enabled x86_64 && AR=xiar
1068f71323e297a928af368937089d3ed71239786f86Andreas Huber                case ${tune_cpu} in
1069f71323e297a928af368937089d3ed71239786f86Andreas Huber                    atom*)
1070f71323e297a928af368937089d3ed71239786f86Andreas Huber                        tune_cflags="-x"
1071f71323e297a928af368937089d3ed71239786f86Andreas Huber                        tune_cpu="SSE3_ATOM"
1072f71323e297a928af368937089d3ed71239786f86Andreas Huber                    ;;
1073f71323e297a928af368937089d3ed71239786f86Andreas Huber                    *)
1074f71323e297a928af368937089d3ed71239786f86Andreas Huber                        tune_cflags="-march="
1075f71323e297a928af368937089d3ed71239786f86Andreas Huber                    ;;
1076f71323e297a928af368937089d3ed71239786f86Andreas Huber                esac
10771b362b15af34006e6a11974088a46d42b903418eJohann            ;;
107890d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber            gcc*)
10791b362b15af34006e6a11974088a46d42b903418eJohann                add_cflags -m${bits}
108090d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber                add_ldflags -m${bits}
108190d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber                link_with_cc=gcc
1082f71323e297a928af368937089d3ed71239786f86Andreas Huber                tune_cflags="-march="
1083ba164dffc5a6795bce97fae02b51ccf3330e15e4hkuang                setup_gnu_toolchain
10841b362b15af34006e6a11974088a46d42b903418eJohann                #for 32 bit x86 builds, -O3 did not turn on this flag
1085ba164dffc5a6795bce97fae02b51ccf3330e15e4hkuang                enabled optimizations && disabled gprof && check_add_cflags -fomit-frame-pointer
10861b362b15af34006e6a11974088a46d42b903418eJohann            ;;
10871b362b15af34006e6a11974088a46d42b903418eJohann            vs*)
10881b362b15af34006e6a11974088a46d42b903418eJohann                # When building with Microsoft Visual Studio the assembler is
10891b362b15af34006e6a11974088a46d42b903418eJohann                # invoked directly. Checking at configure time is unnecessary.
10901b362b15af34006e6a11974088a46d42b903418eJohann                # Skip the check by setting AS arbitrarily
10911b362b15af34006e6a11974088a46d42b903418eJohann                AS=msvs
1092ba164dffc5a6795bce97fae02b51ccf3330e15e4hkuang                msvs_arch_dir=x86-msvs
10935ae7ac49f08a179e4f054d99fcfc9dce78d26e58hkuang                vc_version=${tgt_cc##vs}
10945ae7ac49f08a179e4f054d99fcfc9dce78d26e58hkuang                case $vc_version in
1095b08e2e23eec181e9951df33cd704ac294c5407b6Vignesh Venkatasubramanian                    7|8|9|10)
10965ae7ac49f08a179e4f054d99fcfc9dce78d26e58hkuang                         echo "${tgt_cc} does not support avx/avx2, disabling....."
10975ae7ac49f08a179e4f054d99fcfc9dce78d26e58hkuang                         RTCD_OPTIONS="${RTCD_OPTIONS}--disable-avx --disable-avx2 "
10985ae7ac49f08a179e4f054d99fcfc9dce78d26e58hkuang                         soft_disable avx
10995ae7ac49f08a179e4f054d99fcfc9dce78d26e58hkuang                         soft_disable avx2
11005ae7ac49f08a179e4f054d99fcfc9dce78d26e58hkuang                    ;;
11015ae7ac49f08a179e4f054d99fcfc9dce78d26e58hkuang                esac
11021b362b15af34006e6a11974088a46d42b903418eJohann            ;;
110390d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber        esac
110490d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber
1105ba164dffc5a6795bce97fae02b51ccf3330e15e4hkuang        soft_enable runtime_cpu_detect
1106ba164dffc5a6795bce97fae02b51ccf3330e15e4hkuang        # We can't use 'check_cflags' until the compiler is configured and CC is
1107ba164dffc5a6795bce97fae02b51ccf3330e15e4hkuang        # populated.
1108a72801d7d92ababb50eecf27a36bd222d031d2feVignesh Venkatasubramanian        check_gcc_machine_option mmx
1109a72801d7d92ababb50eecf27a36bd222d031d2feVignesh Venkatasubramanian        check_gcc_machine_option sse
1110a72801d7d92ababb50eecf27a36bd222d031d2feVignesh Venkatasubramanian        check_gcc_machine_option sse2
1111a72801d7d92ababb50eecf27a36bd222d031d2feVignesh Venkatasubramanian        check_gcc_machine_option sse3
1112a72801d7d92ababb50eecf27a36bd222d031d2feVignesh Venkatasubramanian        check_gcc_machine_option ssse3
1113a72801d7d92ababb50eecf27a36bd222d031d2feVignesh Venkatasubramanian        check_gcc_machine_option sse4 sse4_1
1114a72801d7d92ababb50eecf27a36bd222d031d2feVignesh Venkatasubramanian        check_gcc_machine_option avx
1115a72801d7d92ababb50eecf27a36bd222d031d2feVignesh Venkatasubramanian        check_gcc_machine_option avx2
11165ae7ac49f08a179e4f054d99fcfc9dce78d26e58hkuang
1117538f6170b788de7408b06efc6613dc98579aa6a6Andreas Huber        case "${AS}" in
1118538f6170b788de7408b06efc6613dc98579aa6a6Andreas Huber            auto|"")
1119538f6170b788de7408b06efc6613dc98579aa6a6Andreas Huber                which nasm >/dev/null 2>&1 && AS=nasm
1120538f6170b788de7408b06efc6613dc98579aa6a6Andreas Huber                which yasm >/dev/null 2>&1 && AS=yasm
1121538f6170b788de7408b06efc6613dc98579aa6a6Andreas Huber                [ "${AS}" = auto -o -z "${AS}" ] \
1122538f6170b788de7408b06efc6613dc98579aa6a6Andreas Huber                    && die "Neither yasm nor nasm have been found"
11231b362b15af34006e6a11974088a46d42b903418eJohann            ;;
1124538f6170b788de7408b06efc6613dc98579aa6a6Andreas Huber        esac
1125538f6170b788de7408b06efc6613dc98579aa6a6Andreas Huber        log_echo "  using $AS"
1126538f6170b788de7408b06efc6613dc98579aa6a6Andreas Huber        [ "${AS##*/}" = nasm ] && add_asflags -Ox
112790d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber        AS_SFX=.asm
112890d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber        case  ${tgt_os} in
11291b362b15af34006e6a11974088a46d42b903418eJohann            win32)
11301b362b15af34006e6a11974088a46d42b903418eJohann                add_asflags -f win32
11311b362b15af34006e6a11974088a46d42b903418eJohann                enabled debug && add_asflags -g cv8
1132ba164dffc5a6795bce97fae02b51ccf3330e15e4hkuang                EXE_SFX=.exe
11331b362b15af34006e6a11974088a46d42b903418eJohann            ;;
11341b362b15af34006e6a11974088a46d42b903418eJohann            win64)
11351b362b15af34006e6a11974088a46d42b903418eJohann                add_asflags -f x64
113679f15823c34ae1e423108295e416213200bb280fAndreas Huber                enabled debug && add_asflags -g cv8
1137ba164dffc5a6795bce97fae02b51ccf3330e15e4hkuang                EXE_SFX=.exe
113890d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber            ;;
1139ba164dffc5a6795bce97fae02b51ccf3330e15e4hkuang            linux*|solaris*|android*)
114090d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber                add_asflags -f elf${bits}
1141538f6170b788de7408b06efc6613dc98579aa6a6Andreas Huber                enabled debug && [ "${AS}" = yasm ] && add_asflags -g dwarf2
1142538f6170b788de7408b06efc6613dc98579aa6a6Andreas Huber                enabled debug && [ "${AS}" = nasm ] && add_asflags -g
1143538f6170b788de7408b06efc6613dc98579aa6a6Andreas Huber                [ "${AS##*/}" = nasm ] && check_asm_align
114490d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber            ;;
114590d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber            darwin*)
114690d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber                add_asflags -f macho${bits}
114790d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber                enabled x86 && darwin_arch="-arch i386" || darwin_arch="-arch x86_64"
114890d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber                add_cflags  ${darwin_arch}
114990d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber                add_ldflags ${darwin_arch}
115090d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber                # -mdynamic-no-pic is still a bit of voodoo -- it was required at
115190d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber                # one time, but does not seem to be now, and it breaks some of the
115290d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber                # code that still relies on inline assembly.
115390d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber                # enabled icc && ! enabled pic && add_cflags -fno-pic -mdynamic-no-pic
115490d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber                enabled icc && ! enabled pic && add_cflags -fno-pic
115590d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber            ;;
11561b362b15af34006e6a11974088a46d42b903418eJohann            os2)
11571b362b15af34006e6a11974088a46d42b903418eJohann                add_asflags -f aout
11581b362b15af34006e6a11974088a46d42b903418eJohann                enabled debug && add_asflags -g
11591b362b15af34006e6a11974088a46d42b903418eJohann                EXE_SFX=.exe
11601b362b15af34006e6a11974088a46d42b903418eJohann            ;;
1161538f6170b788de7408b06efc6613dc98579aa6a6Andreas Huber            *) log "Warning: Unknown os $tgt_os while setting up $AS flags"
116290d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber            ;;
116390d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber        esac
116490d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber    ;;
116590d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber    universal*|*-gcc|generic-gnu)
116690d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber        link_with_cc=gcc
11671184aebb761cbeac9124c37189a80a1a58f04b6bhkuang        enable_feature gcc
116890d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber    setup_gnu_toolchain
116990d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber    ;;
117090d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber    esac
117190d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber
117290d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber    # Try to enable CPU specific tuning
117390d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber    if [ -n "${tune_cpu}" ]; then
117490d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber        if [ -n "${tune_cflags}" ]; then
117590d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber            check_add_cflags ${tune_cflags}${tune_cpu} || \
117690d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber                die "Requested CPU '${tune_cpu}' not supported by compiler"
117790d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber        fi
117890d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber    if [ -n "${tune_asflags}" ]; then
117990d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber            check_add_asflags ${tune_asflags}${tune_cpu} || \
118090d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber                die "Requested CPU '${tune_cpu}' not supported by assembler"
118190d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber        fi
118290d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber    if [ -z "${tune_cflags}${tune_asflags}" ]; then
118390d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber            log_echo "Warning: CPU tuning not supported by this toolchain"
118490d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber        fi
118590d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber    fi
118690d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber
118790d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber    enabled debug && check_add_cflags -g && check_add_ldflags -g
118890d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber    enabled gprof && check_add_cflags -pg && check_add_ldflags -pg
118990d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber    enabled gcov &&
119090d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber        check_add_cflags -fprofile-arcs -ftest-coverage &&
119190d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber        check_add_ldflags -fprofile-arcs -ftest-coverage
11921b362b15af34006e6a11974088a46d42b903418eJohann
1193538f6170b788de7408b06efc6613dc98579aa6a6Andreas Huber    if enabled optimizations; then
11941b362b15af34006e6a11974088a46d42b903418eJohann        if enabled rvct; then
11951b362b15af34006e6a11974088a46d42b903418eJohann            enabled small && check_add_cflags -Ospace || check_add_cflags -Otime
11961b362b15af34006e6a11974088a46d42b903418eJohann        else
11971b362b15af34006e6a11974088a46d42b903418eJohann            enabled small && check_add_cflags -O2 ||  check_add_cflags -O3
11981b362b15af34006e6a11974088a46d42b903418eJohann        fi
119990d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber    fi
120090d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber
1201f3bed9137f66ef693bd406e43b17e9a1114f1e14hkuang    # default use_x86inc to yes if pic is no or 64bit or we are not on darwin
1202b08e2e23eec181e9951df33cd704ac294c5407b6Vignesh Venkatasubramanian    if [ ${tgt_isa} = x86_64 -o ! "$pic" = "yes" -o \
1203b08e2e23eec181e9951df33cd704ac294c5407b6Vignesh Venkatasubramanian         "${tgt_os#darwin}" = "${tgt_os}"  ]; then
1204f3bed9137f66ef693bd406e43b17e9a1114f1e14hkuang      soft_enable use_x86inc
1205f3bed9137f66ef693bd406e43b17e9a1114f1e14hkuang    fi
1206f3bed9137f66ef693bd406e43b17e9a1114f1e14hkuang
120779f15823c34ae1e423108295e416213200bb280fAndreas Huber    # Position Independent Code (PIC) support, for building relocatable
120890d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber    # shared objects
120990d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber    enabled gcc && enabled pic && check_add_cflags -fPIC
121090d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber
12111b362b15af34006e6a11974088a46d42b903418eJohann    # Work around longjmp interception on glibc >= 2.11, to improve binary
12121b362b15af34006e6a11974088a46d42b903418eJohann    # compatibility. See http://code.google.com/p/webm/issues/detail?id=166
12131b362b15af34006e6a11974088a46d42b903418eJohann    enabled linux && check_add_cflags -U_FORTIFY_SOURCE -D_FORTIFY_SOURCE=0
12141b362b15af34006e6a11974088a46d42b903418eJohann
121590d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber    # Check for strip utility variant
12161184aebb761cbeac9124c37189a80a1a58f04b6bhkuang    ${STRIP} -V 2>/dev/null | grep GNU >/dev/null && enable_feature gnu_strip
121790d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber
121890d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber    # Try to determine target endianness
121990d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber    check_cc <<EOF
122090d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber    unsigned int e = 'O'<<24 | '2'<<16 | 'B'<<8 | 'E';
122190d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas HuberEOF
122290d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber    [ -f "${TMP_O}" ] && od -A n -t x1 "${TMP_O}" | tr -d '\n' |
12231184aebb761cbeac9124c37189a80a1a58f04b6bhkuang        grep '4f *32 *42 *45' >/dev/null 2>&1 && enable_feature big_endian
122490d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber
1225ba164dffc5a6795bce97fae02b51ccf3330e15e4hkuang    # Try to find which inline keywords are supported
1226ba164dffc5a6795bce97fae02b51ccf3330e15e4hkuang    check_cc <<EOF && INLINE="inline"
1227ba164dffc5a6795bce97fae02b51ccf3330e15e4hkuang    static inline function() {}
1228ba164dffc5a6795bce97fae02b51ccf3330e15e4hkuangEOF
1229ba164dffc5a6795bce97fae02b51ccf3330e15e4hkuang    check_cc <<EOF && INLINE="__inline__ __attribute__((always_inline))"
1230ba164dffc5a6795bce97fae02b51ccf3330e15e4hkuang    static __attribute__((always_inline)) function() {}
1231ba164dffc5a6795bce97fae02b51ccf3330e15e4hkuangEOF
1232ba164dffc5a6795bce97fae02b51ccf3330e15e4hkuang
123390d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber    # Almost every platform uses pthreads.
123490d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber    if enabled multithread; then
123590d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber        case ${toolchain} in
12361b362b15af34006e6a11974088a46d42b903418eJohann            *-win*-vs*);;
12371b362b15af34006e6a11974088a46d42b903418eJohann            *-android-gcc);;
123890d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber            *) check_header pthread.h && add_extralibs -lpthread
123990d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber        esac
124090d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber    fi
124190d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber
12421b362b15af34006e6a11974088a46d42b903418eJohann    # only for MIPS platforms
12431b362b15af34006e6a11974088a46d42b903418eJohann    case ${toolchain} in
12441b362b15af34006e6a11974088a46d42b903418eJohann        mips*)
12451b362b15af34006e6a11974088a46d42b903418eJohann            if enabled dspr2; then
12461b362b15af34006e6a11974088a46d42b903418eJohann                if enabled big_endian; then
12471b362b15af34006e6a11974088a46d42b903418eJohann                    echo "dspr2 optimizations are available only for little endian platforms"
12481184aebb761cbeac9124c37189a80a1a58f04b6bhkuang                    disable_feature dspr2
12491b362b15af34006e6a11974088a46d42b903418eJohann                fi
12501b362b15af34006e6a11974088a46d42b903418eJohann            fi
12511b362b15af34006e6a11974088a46d42b903418eJohann        ;;
12521b362b15af34006e6a11974088a46d42b903418eJohann    esac
12531b362b15af34006e6a11974088a46d42b903418eJohann
125490d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber    # glibc needs these
125590d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber    if enabled linux; then
1256f71323e297a928af368937089d3ed71239786f86Andreas Huber        add_cflags -D_LARGEFILE_SOURCE
1257f71323e297a928af368937089d3ed71239786f86Andreas Huber        add_cflags -D_FILE_OFFSET_BITS=64
125890d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber    fi
125979f15823c34ae1e423108295e416213200bb280fAndreas Huber
126079f15823c34ae1e423108295e416213200bb280fAndreas Huber    # append any user defined extra cflags
126179f15823c34ae1e423108295e416213200bb280fAndreas Huber    if [ -n "${extra_cflags}" ] ; then
126279f15823c34ae1e423108295e416213200bb280fAndreas Huber        check_add_cflags ${extra_cflags} || \
126379f15823c34ae1e423108295e416213200bb280fAndreas Huber        die "Requested extra CFLAGS '${extra_cflags}' not supported by compiler"
126479f15823c34ae1e423108295e416213200bb280fAndreas Huber    fi
126590d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber}
126690d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber
126790d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huberprocess_toolchain() {
126890d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber    process_common_toolchain
126990d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber}
127090d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber
127190d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huberprint_config_mk() {
1272f71323e297a928af368937089d3ed71239786f86Andreas Huber    local prefix=$1
1273f71323e297a928af368937089d3ed71239786f86Andreas Huber    local makefile=$2
127490d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber    shift 2
127590d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber    for cfg; do
127690d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber        upname="`toupper $cfg`"
127790d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber        if enabled $cfg; then
127890d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber            echo "${prefix}_${upname}=yes" >> $makefile
127990d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber        fi
128090d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber    done
128190d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber}
128290d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber
128390d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huberprint_config_h() {
1284f71323e297a928af368937089d3ed71239786f86Andreas Huber    local prefix=$1
1285f71323e297a928af368937089d3ed71239786f86Andreas Huber    local header=$2
128690d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber    shift 2
128790d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber    for cfg; do
128890d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber        upname="`toupper $cfg`"
128990d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber        if enabled $cfg; then
129090d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber            echo "#define ${prefix}_${upname} 1" >> $header
129190d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber        else
129290d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber            echo "#define ${prefix}_${upname} 0" >> $header
129390d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber        fi
129490d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber    done
129590d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber}
129690d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber
12971b362b15af34006e6a11974088a46d42b903418eJohannprint_webm_license() {
12981b362b15af34006e6a11974088a46d42b903418eJohann    local destination=$1
12991184aebb761cbeac9124c37189a80a1a58f04b6bhkuang    local prefix="$2"
13001184aebb761cbeac9124c37189a80a1a58f04b6bhkuang    local suffix="$3"
13011b362b15af34006e6a11974088a46d42b903418eJohann    shift 3
13021b362b15af34006e6a11974088a46d42b903418eJohann    cat <<EOF > ${destination}
13031b362b15af34006e6a11974088a46d42b903418eJohann${prefix} Copyright (c) 2011 The WebM project authors. All Rights Reserved.${suffix}
13041b362b15af34006e6a11974088a46d42b903418eJohann${prefix} ${suffix}
13051b362b15af34006e6a11974088a46d42b903418eJohann${prefix} Use of this source code is governed by a BSD-style license${suffix}
13061b362b15af34006e6a11974088a46d42b903418eJohann${prefix} that can be found in the LICENSE file in the root of the source${suffix}
13071b362b15af34006e6a11974088a46d42b903418eJohann${prefix} tree. An additional intellectual property rights grant can be found${suffix}
13081b362b15af34006e6a11974088a46d42b903418eJohann${prefix} in the file PATENTS.  All contributing project authors may${suffix}
13091b362b15af34006e6a11974088a46d42b903418eJohann${prefix} be found in the AUTHORS file in the root of the source tree.${suffix}
13101b362b15af34006e6a11974088a46d42b903418eJohannEOF
13111b362b15af34006e6a11974088a46d42b903418eJohann}
13121b362b15af34006e6a11974088a46d42b903418eJohann
131390d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huberprocess_targets() {
131490d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber    true;
131590d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber}
131690d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber
131790d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huberprocess_detect() {
131890d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber    true;
131990d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber}
132090d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber
13211184aebb761cbeac9124c37189a80a1a58f04b6bhkuangenable_feature logging
132291037db265ecdd914a26e056cf69207b4f50924ehkuanglogfile="config.log"
132390d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huberself=$0
132490d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huberprocess() {
132590d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber    cmdline_args="$@"
132690d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber    process_cmdline "$@"
132790d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber    if enabled child; then
132890d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber        echo "# ${self} $@" >> ${logfile}
132990d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber    else
133090d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber        echo "# ${self} $@" > ${logfile}
133190d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber    fi
1332f71323e297a928af368937089d3ed71239786f86Andreas Huber    post_process_common_cmdline
133390d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber    post_process_cmdline
133490d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber    process_toolchain
133590d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber    process_detect
133690d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber    process_targets
133790d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber
133890d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber    OOT_INSTALLS="${OOT_INSTALLS}"
133990d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber    if enabled source_path_used; then
134090d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber    # Prepare the PWD for building.
134190d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber    for f in ${OOT_INSTALLS}; do
134290d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber            install -D ${source_path}/$f $f
134390d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber    done
134490d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber    fi
134590d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber    cp ${source_path}/build/make/Makefile .
134690d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber
134790d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber    clean_temp_files
134890d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber    true
134990d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber}
1350