153a13f1fa964820f7a8f9d3932a6f3c0433f8bf5fgalligan@chromium.org#!/bin/sh
2474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org##
3474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org##  configure.sh
4474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org##
5474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org##  This script is sourced by the main configure script and contains
6474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org##  utility functions and other common bits that aren't strictly libvpx
7474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org##  related.
8474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org##
9474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org##  This build system is based in part on the FFmpeg configure script.
10474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org##
11474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org
12474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org
13474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org#
14474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org# Logging / Output Functions
15474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org#
16474eb7536515fb785e925cc9375d22817c416851hclam@chromium.orgdie_unknown(){
17474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org    echo "Unknown option \"$1\"."
18474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org    echo "See $0 --help for available options."
19474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org    clean_temp_files
20474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org    exit 1
21474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org}
22474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org
23474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org
24474eb7536515fb785e925cc9375d22817c416851hclam@chromium.orgdie() {
25474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org    echo "$@"
26474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org    echo
27474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org    echo "Configuration failed. This could reflect a misconfiguration of your"
28474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org    echo "toolchains, improper options selected, or another problem. If you"
29474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org    echo "don't see any useful error messages above, the next step is to look"
30474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org    echo "at the configure error log file ($logfile) to determine what"
31474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org    echo "configure was trying to do when it died."
32474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org    clean_temp_files
33474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org    exit 1
34474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org}
35474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org
36474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org
37474eb7536515fb785e925cc9375d22817c416851hclam@chromium.orglog(){
38474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org    echo "$@" >>$logfile
39474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org}
40474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org
41474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org
42474eb7536515fb785e925cc9375d22817c416851hclam@chromium.orglog_file(){
43474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org    log BEGIN $1
4493a74791c8e808ea76001ee07693aa2a5fdd3500johannkoenig@chromium.org    cat -n $1 >>$logfile
45474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org    log END $1
46474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org}
47474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org
48474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org
49474eb7536515fb785e925cc9375d22817c416851hclam@chromium.orglog_echo() {
50474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org    echo "$@"
51474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org    log "$@"
52474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org}
53474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org
54474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org
55474eb7536515fb785e925cc9375d22817c416851hclam@chromium.orgfwrite () {
56474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org    outfile=$1
57474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org    shift
58474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org    echo "$@" >> ${outfile}
59474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org}
60474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org
61474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org
62474eb7536515fb785e925cc9375d22817c416851hclam@chromium.orgshow_help_pre(){
63474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org    for opt in ${CMDLINE_SELECT}; do
64474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org        opt2=`echo $opt | sed -e 's;_;-;g'`
65474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org        if enabled $opt; then
66474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org            eval "toggle_${opt}=\"--disable-${opt2}\""
67474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org        else
68474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org            eval "toggle_${opt}=\"--enable-${opt2} \""
69474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org        fi
70474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org    done
71474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org
72474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org    cat <<EOF
73474eb7536515fb785e925cc9375d22817c416851hclam@chromium.orgUsage: configure [options]
74474eb7536515fb785e925cc9375d22817c416851hclam@chromium.orgOptions:
75474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org
76474eb7536515fb785e925cc9375d22817c416851hclam@chromium.orgBuild options:
77474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org  --help                      print this message
7847265f8fe3a36a426773454ad90d20c9aa616c24johannkoenig@chromium.org  --log=yes|no|FILE           file configure log is written to [config.log]
79474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org  --target=TARGET             target platform tuple [generic-gnu]
80474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org  --cpu=CPU                   optimize for a specific cpu rather than a family
81474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org  --extra-cflags=ECFLAGS      add ECFLAGS to CFLAGS [$CFLAGS]
82474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org  ${toggle_extra_warnings}    emit harmless warnings (always non-fatal)
83474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org  ${toggle_werror}            treat warnings as errors, if possible
84474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org                              (not available with all compilers)
85474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org  ${toggle_optimizations}     turn on/off compiler optimization flags
86474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org  ${toggle_pic}               turn on/off Position Independent Code
87474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org  ${toggle_ccache}            turn on/off compiler cache
88474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org  ${toggle_debug}             enable/disable debug mode
89474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org  ${toggle_gprof}             enable/disable gprof profiling instrumentation
90474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org  ${toggle_gcov}              enable/disable gcov coverage instrumentation
9110a9a0d835561a7f2300c561c514efcf374554d6fgalligan@chromium.org  ${toggle_thumb}             enable/disable building arm assembly in thumb mode
92474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org
93474eb7536515fb785e925cc9375d22817c416851hclam@chromium.orgInstall options:
94474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org  ${toggle_install_docs}      control whether docs are installed
95474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org  ${toggle_install_bins}      control whether binaries are installed
96474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org  ${toggle_install_libs}      control whether libraries are installed
97474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org  ${toggle_install_srcs}      control whether sources are installed
98474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org
99474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org
100474eb7536515fb785e925cc9375d22817c416851hclam@chromium.orgEOF
101474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org}
102474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org
103474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org
104474eb7536515fb785e925cc9375d22817c416851hclam@chromium.orgshow_help_post(){
105474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org    cat <<EOF
106474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org
107474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org
108474eb7536515fb785e925cc9375d22817c416851hclam@chromium.orgNOTES:
109474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org    Object files are built at the place where configure is launched.
110474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org
111474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org    All boolean options can be negated. The default value is the opposite
112474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org    of that shown above. If the option --disable-foo is listed, then
113474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org    the default value for foo is enabled.
114474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org
115474eb7536515fb785e925cc9375d22817c416851hclam@chromium.orgSupported targets:
116474eb7536515fb785e925cc9375d22817c416851hclam@chromium.orgEOF
117474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org  show_targets ${all_platforms}
118474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org  echo
119474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org  exit 1
120474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org}
121474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org
122474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org
123474eb7536515fb785e925cc9375d22817c416851hclam@chromium.orgshow_targets() {
124474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org    while [ -n "$*" ]; do
125474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org        if [ "${1%%-*}" = "${2%%-*}" ]; then
126474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org            if [ "${2%%-*}" = "${3%%-*}" ]; then
127474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org                printf "    %-24s %-24s %-24s\n" "$1" "$2" "$3"
128474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org                shift; shift; shift
129474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org            else
130474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org                printf "    %-24s %-24s\n" "$1" "$2"
131474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org                shift; shift
132474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org            fi
133474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org        else
134474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org            printf "    %-24s\n" "$1"
135474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org            shift
136474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org        fi
137474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org    done
138474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org}
139474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org
140474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org
141474eb7536515fb785e925cc9375d22817c416851hclam@chromium.orgshow_help() {
142474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org    show_help_pre
143474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org    show_help_post
144474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org}
145474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org
146474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org#
147474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org# List Processing Functions
148474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org#
149474eb7536515fb785e925cc9375d22817c416851hclam@chromium.orgset_all(){
150474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org    value=$1
151474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org    shift
152474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org    for var in $*; do
153474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org        eval $var=$value
154474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org    done
155474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org}
156474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org
157474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org
158474eb7536515fb785e925cc9375d22817c416851hclam@chromium.orgis_in(){
159474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org    value=$1
160474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org    shift
161474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org    for var in $*; do
162474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org        [ $var = $value ] && return 0
163474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org    done
164474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org    return 1
165474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org}
166474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org
167474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org
168474eb7536515fb785e925cc9375d22817c416851hclam@chromium.orgadd_cflags() {
169474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org    CFLAGS="${CFLAGS} $@"
170ed759d81a39febed3a8a395386639d54307504aagrunell@chromium.org    CXXFLAGS="${CXXFLAGS} $@"
171ed759d81a39febed3a8a395386639d54307504aagrunell@chromium.org}
172ed759d81a39febed3a8a395386639d54307504aagrunell@chromium.org
173ed759d81a39febed3a8a395386639d54307504aagrunell@chromium.org
174ed759d81a39febed3a8a395386639d54307504aagrunell@chromium.orgadd_cflags_only() {
175ed759d81a39febed3a8a395386639d54307504aagrunell@chromium.org    CFLAGS="${CFLAGS} $@"
176ed759d81a39febed3a8a395386639d54307504aagrunell@chromium.org}
177ed759d81a39febed3a8a395386639d54307504aagrunell@chromium.org
178ed759d81a39febed3a8a395386639d54307504aagrunell@chromium.org
179ed759d81a39febed3a8a395386639d54307504aagrunell@chromium.orgadd_cxxflags_only() {
180ed759d81a39febed3a8a395386639d54307504aagrunell@chromium.org    CXXFLAGS="${CXXFLAGS} $@"
181474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org}
182474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org
183474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org
184474eb7536515fb785e925cc9375d22817c416851hclam@chromium.orgadd_ldflags() {
185474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org    LDFLAGS="${LDFLAGS} $@"
186474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org}
187474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org
188474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org
189474eb7536515fb785e925cc9375d22817c416851hclam@chromium.orgadd_asflags() {
190474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org    ASFLAGS="${ASFLAGS} $@"
191474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org}
192474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org
193474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org
194474eb7536515fb785e925cc9375d22817c416851hclam@chromium.orgadd_extralibs() {
195474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org    extralibs="${extralibs} $@"
196474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org}
197474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org
198474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org#
199474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org# Boolean Manipulation Functions
200474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org#
20153a13f1fa964820f7a8f9d3932a6f3c0433f8bf5fgalligan@chromium.orgenable_feature(){
202474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org    set_all yes $*
203474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org}
204474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org
20553a13f1fa964820f7a8f9d3932a6f3c0433f8bf5fgalligan@chromium.orgdisable_feature(){
206474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org    set_all no $*
207474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org}
208474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org
209474eb7536515fb785e925cc9375d22817c416851hclam@chromium.orgenabled(){
210474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org    eval test "x\$$1" = "xyes"
211474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org}
212474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org
213474eb7536515fb785e925cc9375d22817c416851hclam@chromium.orgdisabled(){
214474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org    eval test "x\$$1" = "xno"
215474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org}
216474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org
217474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org
218474eb7536515fb785e925cc9375d22817c416851hclam@chromium.orgsoft_enable() {
219474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org    for var in $*; do
220474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org        if ! disabled $var; then
221474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org            log_echo "  enabling $var"
22253a13f1fa964820f7a8f9d3932a6f3c0433f8bf5fgalligan@chromium.org            enable_feature $var
223474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org        fi
224474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org    done
225474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org}
226474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org
227474eb7536515fb785e925cc9375d22817c416851hclam@chromium.orgsoft_disable() {
228474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org    for var in $*; do
229474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org        if ! enabled $var; then
230474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org            log_echo "  disabling $var"
23153a13f1fa964820f7a8f9d3932a6f3c0433f8bf5fgalligan@chromium.org            disable_feature $var
232474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org        fi
233474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org    done
234474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org}
235474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org
236474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org
237474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org#
238474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org# Text Processing Functions
239474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org#
240474eb7536515fb785e925cc9375d22817c416851hclam@chromium.orgtoupper(){
241474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org    echo "$@" | tr abcdefghijklmnopqrstuvwxyz ABCDEFGHIJKLMNOPQRSTUVWXYZ
242474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org}
243474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org
244474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org
245474eb7536515fb785e925cc9375d22817c416851hclam@chromium.orgtolower(){
246474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org    echo "$@" | tr ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyz
247474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org}
248474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org
249474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org
250474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org#
251474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org# Temporary File Functions
252474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org#
253474eb7536515fb785e925cc9375d22817c416851hclam@chromium.orgsource_path=${0%/*}
25453a13f1fa964820f7a8f9d3932a6f3c0433f8bf5fgalligan@chromium.orgenable_feature source_path_used
255474eb7536515fb785e925cc9375d22817c416851hclam@chromium.orgif test -z "$source_path" -o "$source_path" = "." ; then
256474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org    source_path="`pwd`"
25753a13f1fa964820f7a8f9d3932a6f3c0433f8bf5fgalligan@chromium.org    disable_feature source_path_used
258474eb7536515fb785e925cc9375d22817c416851hclam@chromium.orgfi
259474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org
260474eb7536515fb785e925cc9375d22817c416851hclam@chromium.orgif test ! -z "$TMPDIR" ; then
261474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org    TMPDIRx="${TMPDIR}"
262474eb7536515fb785e925cc9375d22817c416851hclam@chromium.orgelif test ! -z "$TEMPDIR" ; then
263474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org    TMPDIRx="${TEMPDIR}"
264474eb7536515fb785e925cc9375d22817c416851hclam@chromium.orgelse
265474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org    TMPDIRx="/tmp"
266474eb7536515fb785e925cc9375d22817c416851hclam@chromium.orgfi
26753a13f1fa964820f7a8f9d3932a6f3c0433f8bf5fgalligan@chromium.orgRAND=$(awk 'BEGIN { srand(); printf "%d\n",(rand() * 32768)}')
26853a13f1fa964820f7a8f9d3932a6f3c0433f8bf5fgalligan@chromium.orgTMP_H="${TMPDIRx}/vpx-conf-$$-${RAND}.h"
26953a13f1fa964820f7a8f9d3932a6f3c0433f8bf5fgalligan@chromium.orgTMP_C="${TMPDIRx}/vpx-conf-$$-${RAND}.c"
27053a13f1fa964820f7a8f9d3932a6f3c0433f8bf5fgalligan@chromium.orgTMP_CC="${TMPDIRx}/vpx-conf-$$-${RAND}.cc"
27153a13f1fa964820f7a8f9d3932a6f3c0433f8bf5fgalligan@chromium.orgTMP_O="${TMPDIRx}/vpx-conf-$$-${RAND}.o"
27253a13f1fa964820f7a8f9d3932a6f3c0433f8bf5fgalligan@chromium.orgTMP_X="${TMPDIRx}/vpx-conf-$$-${RAND}.x"
27353a13f1fa964820f7a8f9d3932a6f3c0433f8bf5fgalligan@chromium.orgTMP_ASM="${TMPDIRx}/vpx-conf-$$-${RAND}.asm"
274474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org
275474eb7536515fb785e925cc9375d22817c416851hclam@chromium.orgclean_temp_files() {
27610a9a0d835561a7f2300c561c514efcf374554d6fgalligan@chromium.org    rm -f ${TMP_C} ${TMP_CC} ${TMP_H} ${TMP_O} ${TMP_X} ${TMP_ASM}
27793a74791c8e808ea76001ee07693aa2a5fdd3500johannkoenig@chromium.org    enabled gcov && rm -f ${TMP_C%.c}.gcno ${TMP_CC%.cc}.gcno
278474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org}
279474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org
280474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org#
281474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org# Toolchain Check Functions
282474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org#
283474eb7536515fb785e925cc9375d22817c416851hclam@chromium.orgcheck_cmd() {
2846fefe538d859300e7febe78271828198c10f1b52fgalligan@chromium.org    enabled external_build && return
285474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org    log "$@"
286474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org    "$@" >>${logfile} 2>&1
287474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org}
288474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org
289474eb7536515fb785e925cc9375d22817c416851hclam@chromium.orgcheck_cc() {
290474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org    log check_cc "$@"
291474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org    cat >${TMP_C}
292474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org    log_file ${TMP_C}
293474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org    check_cmd ${CC} ${CFLAGS} "$@" -c -o ${TMP_O} ${TMP_C}
294474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org}
295474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org
296ed759d81a39febed3a8a395386639d54307504aagrunell@chromium.orgcheck_cxx() {
297ed759d81a39febed3a8a395386639d54307504aagrunell@chromium.org    log check_cxx "$@"
29810a9a0d835561a7f2300c561c514efcf374554d6fgalligan@chromium.org    cat >${TMP_CC}
29910a9a0d835561a7f2300c561c514efcf374554d6fgalligan@chromium.org    log_file ${TMP_CC}
30010a9a0d835561a7f2300c561c514efcf374554d6fgalligan@chromium.org    check_cmd ${CXX} ${CXXFLAGS} "$@" -c -o ${TMP_O} ${TMP_CC}
301ed759d81a39febed3a8a395386639d54307504aagrunell@chromium.org}
302ed759d81a39febed3a8a395386639d54307504aagrunell@chromium.org
303474eb7536515fb785e925cc9375d22817c416851hclam@chromium.orgcheck_cpp() {
304474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org    log check_cpp "$@"
305474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org    cat > ${TMP_C}
306474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org    log_file ${TMP_C}
307474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org    check_cmd ${CC} ${CFLAGS} "$@" -E -o ${TMP_O} ${TMP_C}
308474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org}
309474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org
310474eb7536515fb785e925cc9375d22817c416851hclam@chromium.orgcheck_ld() {
311474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org    log check_ld "$@"
312474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org    check_cc $@ \
313474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org        && check_cmd ${LD} ${LDFLAGS} "$@" -o ${TMP_X} ${TMP_O} ${extralibs}
314474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org}
315474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org
316474eb7536515fb785e925cc9375d22817c416851hclam@chromium.orgcheck_header(){
317474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org    log check_header "$@"
318474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org    header=$1
319474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org    shift
320474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org    var=`echo $header | sed 's/[^A-Za-z0-9_]/_/g'`
32153a13f1fa964820f7a8f9d3932a6f3c0433f8bf5fgalligan@chromium.org    disable_feature $var
32253a13f1fa964820f7a8f9d3932a6f3c0433f8bf5fgalligan@chromium.org    check_cpp "$@" <<EOF && enable_feature $var
323474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org#include "$header"
324474eb7536515fb785e925cc9375d22817c416851hclam@chromium.orgint x;
325474eb7536515fb785e925cc9375d22817c416851hclam@chromium.orgEOF
326474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org}
327474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org
328474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org
329474eb7536515fb785e925cc9375d22817c416851hclam@chromium.orgcheck_cflags() {
330474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org    log check_cflags "$@"
33193a74791c8e808ea76001ee07693aa2a5fdd3500johannkoenig@chromium.org    check_cc -Werror "$@" <<EOF
332474eb7536515fb785e925cc9375d22817c416851hclam@chromium.orgint x;
333474eb7536515fb785e925cc9375d22817c416851hclam@chromium.orgEOF
334474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org}
335474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org
336ed759d81a39febed3a8a395386639d54307504aagrunell@chromium.orgcheck_cxxflags() {
337ed759d81a39febed3a8a395386639d54307504aagrunell@chromium.org    log check_cxxflags "$@"
338ed759d81a39febed3a8a395386639d54307504aagrunell@chromium.org
339ed759d81a39febed3a8a395386639d54307504aagrunell@chromium.org    # Catch CFLAGS that trigger CXX warnings
340ed759d81a39febed3a8a395386639d54307504aagrunell@chromium.org    case "$CXX" in
34176e516e2154f353aa02c504bac88afb0f95fefa7johannkoenig@chromium.org      *c++-analyzer|*clang++|*g++*) check_cxx -Werror "$@" <<EOF
342ed759d81a39febed3a8a395386639d54307504aagrunell@chromium.orgint x;
343ed759d81a39febed3a8a395386639d54307504aagrunell@chromium.orgEOF
344ed759d81a39febed3a8a395386639d54307504aagrunell@chromium.org      ;;
34593a74791c8e808ea76001ee07693aa2a5fdd3500johannkoenig@chromium.org      *) check_cxx -Werror "$@" <<EOF
346ed759d81a39febed3a8a395386639d54307504aagrunell@chromium.orgint x;
347ed759d81a39febed3a8a395386639d54307504aagrunell@chromium.orgEOF
348ed759d81a39febed3a8a395386639d54307504aagrunell@chromium.org      ;;
349ed759d81a39febed3a8a395386639d54307504aagrunell@chromium.org    esac
350ed759d81a39febed3a8a395386639d54307504aagrunell@chromium.org}
351ed759d81a39febed3a8a395386639d54307504aagrunell@chromium.org
352474eb7536515fb785e925cc9375d22817c416851hclam@chromium.orgcheck_add_cflags() {
353ed759d81a39febed3a8a395386639d54307504aagrunell@chromium.org    check_cxxflags "$@" && add_cxxflags_only "$@"
354ed759d81a39febed3a8a395386639d54307504aagrunell@chromium.org    check_cflags "$@" && add_cflags_only "$@"
355474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org}
356474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org
357474eb7536515fb785e925cc9375d22817c416851hclam@chromium.orgcheck_add_asflags() {
358474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org    log add_asflags "$@"
359474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org    add_asflags "$@"
360474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org}
361474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org
362474eb7536515fb785e925cc9375d22817c416851hclam@chromium.orgcheck_add_ldflags() {
363474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org    log add_ldflags "$@"
364474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org    add_ldflags "$@"
365474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org}
366474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org
367474eb7536515fb785e925cc9375d22817c416851hclam@chromium.orgcheck_asm_align() {
368474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org    log check_asm_align "$@"
369474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org    cat >${TMP_ASM} <<EOF
370474eb7536515fb785e925cc9375d22817c416851hclam@chromium.orgsection .rodata
371474eb7536515fb785e925cc9375d22817c416851hclam@chromium.orgalign 16
372474eb7536515fb785e925cc9375d22817c416851hclam@chromium.orgEOF
373474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org    log_file ${TMP_ASM}
374474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org    check_cmd ${AS} ${ASFLAGS} -o ${TMP_O} ${TMP_ASM}
375474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org    readelf -WS ${TMP_O} >${TMP_X}
376474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org    log_file ${TMP_X}
377474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org    if ! grep -q '\.rodata .* 16$' ${TMP_X}; then
378474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org        die "${AS} ${ASFLAGS} does not support section alignment (nasm <=2.08?)"
379474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org    fi
380474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org}
381474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org
38293a74791c8e808ea76001ee07693aa2a5fdd3500johannkoenig@chromium.org# tests for -m$1 toggling the feature given in $2. If $2 is empty $1 is used.
38393a74791c8e808ea76001ee07693aa2a5fdd3500johannkoenig@chromium.orgcheck_gcc_machine_option() {
38493a74791c8e808ea76001ee07693aa2a5fdd3500johannkoenig@chromium.org    local opt="$1"
38593a74791c8e808ea76001ee07693aa2a5fdd3500johannkoenig@chromium.org    local feature="$2"
38693a74791c8e808ea76001ee07693aa2a5fdd3500johannkoenig@chromium.org    [ -n "$feature" ] || feature="$opt"
38793a74791c8e808ea76001ee07693aa2a5fdd3500johannkoenig@chromium.org
38893a74791c8e808ea76001ee07693aa2a5fdd3500johannkoenig@chromium.org    if enabled gcc && ! disabled "$feature" && ! check_cflags "-m$opt"; then
38993a74791c8e808ea76001ee07693aa2a5fdd3500johannkoenig@chromium.org        RTCD_OPTIONS="${RTCD_OPTIONS}--disable-$feature "
39093a74791c8e808ea76001ee07693aa2a5fdd3500johannkoenig@chromium.org    else
39193a74791c8e808ea76001ee07693aa2a5fdd3500johannkoenig@chromium.org        soft_enable "$feature"
39293a74791c8e808ea76001ee07693aa2a5fdd3500johannkoenig@chromium.org    fi
39393a74791c8e808ea76001ee07693aa2a5fdd3500johannkoenig@chromium.org}
39493a74791c8e808ea76001ee07693aa2a5fdd3500johannkoenig@chromium.org
395474eb7536515fb785e925cc9375d22817c416851hclam@chromium.orgwrite_common_config_banner() {
396167514562bbce1eb0566271d6cb41d90d2b5ffa0hclam@chromium.org    print_webm_license config.mk "##" ""
397167514562bbce1eb0566271d6cb41d90d2b5ffa0hclam@chromium.org    echo '# This file automatically generated by configure. Do not edit!' >> config.mk
398474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org    echo "TOOLCHAIN := ${toolchain}" >> config.mk
399474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org
400474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org    case ${toolchain} in
401474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org        *-linux-rvct)
402474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org            echo "ALT_LIBC := ${alt_libc}" >> config.mk
403474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org            ;;
404474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org    esac
405474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org}
406474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org
407474eb7536515fb785e925cc9375d22817c416851hclam@chromium.orgwrite_common_config_targets() {
408474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org    for t in ${all_targets}; do
409474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org        if enabled ${t}; then
410474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org            if enabled universal || enabled child; then
411474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org                fwrite config.mk "ALL_TARGETS += ${t}-${toolchain}"
412474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org            else
413474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org                fwrite config.mk "ALL_TARGETS += ${t}"
414474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org            fi
415474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org        fi
416474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org    true;
417474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org    done
418474eb7536515fb785e925cc9375d22817c416851hclam@chromium.orgtrue
419474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org}
420474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org
421474eb7536515fb785e925cc9375d22817c416851hclam@chromium.orgwrite_common_target_config_mk() {
42293a74791c8e808ea76001ee07693aa2a5fdd3500johannkoenig@chromium.org    local CC="${CC}"
42393a74791c8e808ea76001ee07693aa2a5fdd3500johannkoenig@chromium.org    local CXX="${CXX}"
424474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org    enabled ccache && CC="ccache ${CC}"
425ed759d81a39febed3a8a395386639d54307504aagrunell@chromium.org    enabled ccache && CXX="ccache ${CXX}"
426167514562bbce1eb0566271d6cb41d90d2b5ffa0hclam@chromium.org    print_webm_license $1 "##" ""
427474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org
428167514562bbce1eb0566271d6cb41d90d2b5ffa0hclam@chromium.org    cat >> $1 << EOF
429474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org# This file automatically generated by configure. Do not edit!
430474eb7536515fb785e925cc9375d22817c416851hclam@chromium.orgSRC_PATH="$source_path"
431474eb7536515fb785e925cc9375d22817c416851hclam@chromium.orgSRC_PATH_BARE=$source_path
432474eb7536515fb785e925cc9375d22817c416851hclam@chromium.orgBUILD_PFX=${BUILD_PFX}
433474eb7536515fb785e925cc9375d22817c416851hclam@chromium.orgTOOLCHAIN=${toolchain}
434474eb7536515fb785e925cc9375d22817c416851hclam@chromium.orgASM_CONVERSION=${asm_conversion_cmd:-${source_path}/build/make/ads2gas.pl}
43510a9a0d835561a7f2300c561c514efcf374554d6fgalligan@chromium.orgGEN_VCPROJ=${gen_vcproj_cmd}
43610a9a0d835561a7f2300c561c514efcf374554d6fgalligan@chromium.orgMSVS_ARCH_DIR=${msvs_arch_dir}
437474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org
438474eb7536515fb785e925cc9375d22817c416851hclam@chromium.orgCC=${CC}
439ed759d81a39febed3a8a395386639d54307504aagrunell@chromium.orgCXX=${CXX}
440474eb7536515fb785e925cc9375d22817c416851hclam@chromium.orgAR=${AR}
441474eb7536515fb785e925cc9375d22817c416851hclam@chromium.orgLD=${LD}
442474eb7536515fb785e925cc9375d22817c416851hclam@chromium.orgAS=${AS}
443474eb7536515fb785e925cc9375d22817c416851hclam@chromium.orgSTRIP=${STRIP}
444474eb7536515fb785e925cc9375d22817c416851hclam@chromium.orgNM=${NM}
445474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org
446474eb7536515fb785e925cc9375d22817c416851hclam@chromium.orgCFLAGS  = ${CFLAGS}
447ed759d81a39febed3a8a395386639d54307504aagrunell@chromium.orgCXXFLAGS  = ${CXXFLAGS}
448474eb7536515fb785e925cc9375d22817c416851hclam@chromium.orgARFLAGS = -rus\$(if \$(quiet),c,v)
449474eb7536515fb785e925cc9375d22817c416851hclam@chromium.orgLDFLAGS = ${LDFLAGS}
450474eb7536515fb785e925cc9375d22817c416851hclam@chromium.orgASFLAGS = ${ASFLAGS}
451474eb7536515fb785e925cc9375d22817c416851hclam@chromium.orgextralibs = ${extralibs}
452474eb7536515fb785e925cc9375d22817c416851hclam@chromium.orgAS_SFX    = ${AS_SFX:-.asm}
4535c1d3b27608a3f3f6028c069b9bf066a4de474b6hclam@chromium.orgEXE_SFX   = ${EXE_SFX}
45410a9a0d835561a7f2300c561c514efcf374554d6fgalligan@chromium.orgVCPROJ_SFX = ${VCPROJ_SFX}
4555c1d3b27608a3f3f6028c069b9bf066a4de474b6hclam@chromium.orgRTCD_OPTIONS = ${RTCD_OPTIONS}
456474eb7536515fb785e925cc9375d22817c416851hclam@chromium.orgEOF
457474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org
458474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org    if enabled rvct; then cat >> $1 << EOF
459d348b8d765c019ee7250075d663a83db00c65c08tomfinegan@chromium.orgfmt_deps = sed -e 's;^__image.axf;\${@:.d=.o} \$@;' #hide
460474eb7536515fb785e925cc9375d22817c416851hclam@chromium.orgEOF
461474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org    else cat >> $1 << EOF
462d348b8d765c019ee7250075d663a83db00c65c08tomfinegan@chromium.orgfmt_deps = sed -e 's;^\([a-zA-Z0-9_]*\)\.o;\${@:.d=.o} \$@;'
463474eb7536515fb785e925cc9375d22817c416851hclam@chromium.orgEOF
464474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org    fi
465474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org
466474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org    print_config_mk ARCH   "${1}" ${ARCH_LIST}
467474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org    print_config_mk HAVE   "${1}" ${HAVE_LIST}
468474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org    print_config_mk CONFIG "${1}" ${CONFIG_LIST}
469474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org    print_config_mk HAVE   "${1}" gnu_strip
470474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org
471474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org    enabled msvs && echo "CONFIG_VS_VERSION=${vs_version}" >> "${1}"
472474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org
473474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org}
474474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org
475474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org
476474eb7536515fb785e925cc9375d22817c416851hclam@chromium.orgwrite_common_target_config_h() {
477167514562bbce1eb0566271d6cb41d90d2b5ffa0hclam@chromium.org    print_webm_license ${TMP_H} "/*" " */"
478167514562bbce1eb0566271d6cb41d90d2b5ffa0hclam@chromium.org    cat >> ${TMP_H} << EOF
479474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org/* This file automatically generated by configure. Do not edit! */
480474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org#ifndef VPX_CONFIG_H
481474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org#define VPX_CONFIG_H
482474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org#define RESTRICT    ${RESTRICT}
4831cedac70da0675180660d8d3478648400afde47djohannkoenig@chromium.org#define INLINE      ${INLINE}
484474eb7536515fb785e925cc9375d22817c416851hclam@chromium.orgEOF
485474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org    print_config_h ARCH   "${TMP_H}" ${ARCH_LIST}
486474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org    print_config_h HAVE   "${TMP_H}" ${HAVE_LIST}
487474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org    print_config_h CONFIG "${TMP_H}" ${CONFIG_LIST}
488474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org    echo "#endif /* VPX_CONFIG_H */" >> ${TMP_H}
489474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org    mkdir -p `dirname "$1"`
490474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org    cmp "$1" ${TMP_H} >/dev/null 2>&1 || mv ${TMP_H} "$1"
491474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org}
492474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org
493474eb7536515fb785e925cc9375d22817c416851hclam@chromium.orgprocess_common_cmdline() {
494474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org    for opt in "$@"; do
495474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org        optval="${opt#*=}"
496474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org        case "$opt" in
49753a13f1fa964820f7a8f9d3932a6f3c0433f8bf5fgalligan@chromium.org        --child) enable_feature child
498474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org        ;;
499474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org        --log*)
500474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org        logging="$optval"
501474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org        if ! disabled logging ; then
502474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org            enabled logging || logfile="$logging"
503474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org        else
504474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org            logfile=/dev/null
505474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org        fi
506474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org        ;;
507474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org        --target=*) toolchain="${toolchain:-${optval}}"
508474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org        ;;
50953a13f1fa964820f7a8f9d3932a6f3c0433f8bf5fgalligan@chromium.org        --force-target=*) toolchain="${toolchain:-${optval}}"; enable_feature force_toolchain
510474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org        ;;
511474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org        --cpu)
512474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org        ;;
513474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org        --cpu=*) tune_cpu="$optval"
514474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org        ;;
515474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org        --extra-cflags=*)
516474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org        extra_cflags="${optval}"
517474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org        ;;
518474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org        --enable-?*|--disable-?*)
519474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org        eval `echo "$opt" | sed 's/--/action=/;s/-/ option=/;s/-/_/g'`
5205c1d3b27608a3f3f6028c069b9bf066a4de474b6hclam@chromium.org        if echo "${ARCH_EXT_LIST}" | grep "^ *$option\$" >/dev/null; then
5217765c078fa920ba6c949c15f16b6cc979d8bb95bjohannkoenig@chromium.org            [ $action = "disable" ] && RTCD_OPTIONS="${RTCD_OPTIONS}--disable-${option} "
5225c1d3b27608a3f3f6028c069b9bf066a4de474b6hclam@chromium.org        elif [ $action = "disable" ] && ! disabled $option ; then
5235c1d3b27608a3f3f6028c069b9bf066a4de474b6hclam@chromium.org          echo "${CMDLINE_SELECT}" | grep "^ *$option\$" >/dev/null ||
5245c1d3b27608a3f3f6028c069b9bf066a4de474b6hclam@chromium.org            die_unknown $opt
5255c1d3b27608a3f3f6028c069b9bf066a4de474b6hclam@chromium.org        elif [ $action = "enable" ] && ! enabled $option ; then
5265c1d3b27608a3f3f6028c069b9bf066a4de474b6hclam@chromium.org          echo "${CMDLINE_SELECT}" | grep "^ *$option\$" >/dev/null ||
5275c1d3b27608a3f3f6028c069b9bf066a4de474b6hclam@chromium.org            die_unknown $opt
5285c1d3b27608a3f3f6028c069b9bf066a4de474b6hclam@chromium.org        fi
52953a13f1fa964820f7a8f9d3932a6f3c0433f8bf5fgalligan@chromium.org        ${action}_feature $option
530474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org        ;;
5315c1d3b27608a3f3f6028c069b9bf066a4de474b6hclam@chromium.org        --require-?*)
5325c1d3b27608a3f3f6028c069b9bf066a4de474b6hclam@chromium.org        eval `echo "$opt" | sed 's/--/action=/;s/-/ option=/;s/-/_/g'`
5335c1d3b27608a3f3f6028c069b9bf066a4de474b6hclam@chromium.org        if echo "${ARCH_EXT_LIST}" none | grep "^ *$option\$" >/dev/null; then
5345c1d3b27608a3f3f6028c069b9bf066a4de474b6hclam@chromium.org            RTCD_OPTIONS="${RTCD_OPTIONS}${opt} "
5355c1d3b27608a3f3f6028c069b9bf066a4de474b6hclam@chromium.org        else
5365c1d3b27608a3f3f6028c069b9bf066a4de474b6hclam@chromium.org            die_unknown $opt
5375c1d3b27608a3f3f6028c069b9bf066a4de474b6hclam@chromium.org        fi
5385c1d3b27608a3f3f6028c069b9bf066a4de474b6hclam@chromium.org        ;;
539474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org        --force-enable-?*|--force-disable-?*)
540474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org        eval `echo "$opt" | sed 's/--force-/action=/;s/-/ option=/;s/-/_/g'`
54153a13f1fa964820f7a8f9d3932a6f3c0433f8bf5fgalligan@chromium.org        ${action}_feature $option
542474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org        ;;
543474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org        --libc=*)
544474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org        [ -d "${optval}" ] || die "Not a directory: ${optval}"
54553a13f1fa964820f7a8f9d3932a6f3c0433f8bf5fgalligan@chromium.org        disable_feature builtin_libc
546474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org        alt_libc="${optval}"
547474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org        ;;
548474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org        --as=*)
549474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org        [ "${optval}" = yasm -o "${optval}" = nasm -o "${optval}" = auto ] \
550474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org            || die "Must be yasm, nasm or auto: ${optval}"
551474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org        alt_as="${optval}"
552474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org        ;;
553474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org        --prefix=*)
554474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org        prefix="${optval}"
555474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org        ;;
556474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org        --libdir=*)
557474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org        libdir="${optval}"
558474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org        ;;
559167514562bbce1eb0566271d6cb41d90d2b5ffa0hclam@chromium.org        --sdk-path=*)
560167514562bbce1eb0566271d6cb41d90d2b5ffa0hclam@chromium.org        [ -d "${optval}" ] || die "Not a directory: ${optval}"
561167514562bbce1eb0566271d6cb41d90d2b5ffa0hclam@chromium.org        sdk_path="${optval}"
562167514562bbce1eb0566271d6cb41d90d2b5ffa0hclam@chromium.org        ;;
563167514562bbce1eb0566271d6cb41d90d2b5ffa0hclam@chromium.org        --libc|--as|--prefix|--libdir|--sdk-path)
564474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org        die "Option ${opt} requires argument"
565474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org        ;;
566474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org        --help|-h) show_help
567474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org        ;;
568474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org        *) die_unknown $opt
569474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org        ;;
570474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org        esac
571474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org    done
572474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org}
573474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org
574474eb7536515fb785e925cc9375d22817c416851hclam@chromium.orgprocess_cmdline() {
575474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org    for opt do
576474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org        optval="${opt#*=}"
577474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org        case "$opt" in
578474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org        *) process_common_cmdline $opt
579474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org        ;;
580474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org        esac
581474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org    done
582474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org}
583474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org
584474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org
585474eb7536515fb785e925cc9375d22817c416851hclam@chromium.orgpost_process_common_cmdline() {
586474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org    prefix="${prefix:-/usr/local}"
587474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org    prefix="${prefix%/}"
588474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org    libdir="${libdir:-${prefix}/lib}"
589474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org    libdir="${libdir%/}"
590474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org    if [ "${libdir#${prefix}}" = "${libdir}" ]; then
591474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org        die "Libdir ${libdir} must be a subdirectory of ${prefix}"
592474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org    fi
593474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org}
594474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org
595474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org
596474eb7536515fb785e925cc9375d22817c416851hclam@chromium.orgpost_process_cmdline() {
597474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org    true;
598474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org}
599474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org
600474eb7536515fb785e925cc9375d22817c416851hclam@chromium.orgsetup_gnu_toolchain() {
601474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org        CC=${CC:-${CROSS}gcc}
602ed759d81a39febed3a8a395386639d54307504aagrunell@chromium.org        CXX=${CXX:-${CROSS}g++}
603474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org        AR=${AR:-${CROSS}ar}
604474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org        LD=${LD:-${CROSS}${link_with_cc:-ld}}
605474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org        AS=${AS:-${CROSS}as}
606474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org    STRIP=${STRIP:-${CROSS}strip}
607474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org    NM=${NM:-${CROSS}nm}
608474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org        AS_SFX=.s
6095c1d3b27608a3f3f6028c069b9bf066a4de474b6hclam@chromium.org        EXE_SFX=
610474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org}
611474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org
612474eb7536515fb785e925cc9375d22817c416851hclam@chromium.orgprocess_common_toolchain() {
613474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org    if [ -z "$toolchain" ]; then
614ed759d81a39febed3a8a395386639d54307504aagrunell@chromium.org        gcctarget="${CHOST:-$(gcc -dumpmachine 2> /dev/null)}"
615474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org
616474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org        # detect tgt_isa
617474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org        case "$gcctarget" in
618ed759d81a39febed3a8a395386639d54307504aagrunell@chromium.org            armv6*)
619ed759d81a39febed3a8a395386639d54307504aagrunell@chromium.org                tgt_isa=armv6
620ed759d81a39febed3a8a395386639d54307504aagrunell@chromium.org                ;;
621d348b8d765c019ee7250075d663a83db00c65c08tomfinegan@chromium.org            armv7*-hardfloat*)
622d348b8d765c019ee7250075d663a83db00c65c08tomfinegan@chromium.org                tgt_isa=armv7
623d348b8d765c019ee7250075d663a83db00c65c08tomfinegan@chromium.org                float_abi=hard
624d348b8d765c019ee7250075d663a83db00c65c08tomfinegan@chromium.org                ;;
625ed759d81a39febed3a8a395386639d54307504aagrunell@chromium.org            armv7*)
626ed759d81a39febed3a8a395386639d54307504aagrunell@chromium.org                tgt_isa=armv7
627d348b8d765c019ee7250075d663a83db00c65c08tomfinegan@chromium.org                float_abi=softfp
628ed759d81a39febed3a8a395386639d54307504aagrunell@chromium.org                ;;
629ed759d81a39febed3a8a395386639d54307504aagrunell@chromium.org            armv5te*)
630ed759d81a39febed3a8a395386639d54307504aagrunell@chromium.org                tgt_isa=armv5te
631ed759d81a39febed3a8a395386639d54307504aagrunell@chromium.org                ;;
632474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org            *x86_64*|*amd64*)
633474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org                tgt_isa=x86_64
634474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org                ;;
635474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org            *i[3456]86*)
636474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org                tgt_isa=x86
637474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org                ;;
638474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org            *powerpc64*)
639474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org                tgt_isa=ppc64
640474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org                ;;
641474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org            *powerpc*)
642474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org                tgt_isa=ppc32
643474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org                ;;
644474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org            *sparc*)
645474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org                tgt_isa=sparc
646474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org                ;;
647474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org        esac
648474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org
649474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org        # detect tgt_os
650474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org        case "$gcctarget" in
651474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org            *darwin8*)
652474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org                tgt_isa=universal
653474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org                tgt_os=darwin8
654474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org                ;;
655474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org            *darwin9*)
656474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org                tgt_isa=universal
657474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org                tgt_os=darwin9
658474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org                ;;
659474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org            *darwin10*)
660474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org                tgt_isa=x86_64
661474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org                tgt_os=darwin10
662474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org                ;;
663167514562bbce1eb0566271d6cb41d90d2b5ffa0hclam@chromium.org            *darwin11*)
664167514562bbce1eb0566271d6cb41d90d2b5ffa0hclam@chromium.org                tgt_isa=x86_64
665167514562bbce1eb0566271d6cb41d90d2b5ffa0hclam@chromium.org                tgt_os=darwin11
666167514562bbce1eb0566271d6cb41d90d2b5ffa0hclam@chromium.org                ;;
6675c1d3b27608a3f3f6028c069b9bf066a4de474b6hclam@chromium.org            *darwin12*)
6685c1d3b27608a3f3f6028c069b9bf066a4de474b6hclam@chromium.org                tgt_isa=x86_64
6695c1d3b27608a3f3f6028c069b9bf066a4de474b6hclam@chromium.org                tgt_os=darwin12
6705c1d3b27608a3f3f6028c069b9bf066a4de474b6hclam@chromium.org                ;;
67147265f8fe3a36a426773454ad90d20c9aa616c24johannkoenig@chromium.org            *darwin13*)
67247265f8fe3a36a426773454ad90d20c9aa616c24johannkoenig@chromium.org                tgt_isa=x86_64
67347265f8fe3a36a426773454ad90d20c9aa616c24johannkoenig@chromium.org                tgt_os=darwin13
67447265f8fe3a36a426773454ad90d20c9aa616c24johannkoenig@chromium.org                ;;
675d348b8d765c019ee7250075d663a83db00c65c08tomfinegan@chromium.org            x86_64*mingw32*)
676d348b8d765c019ee7250075d663a83db00c65c08tomfinegan@chromium.org                tgt_os=win64
677d348b8d765c019ee7250075d663a83db00c65c08tomfinegan@chromium.org                ;;
678474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org            *mingw32*|*cygwin*)
679474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org                [ -z "$tgt_isa" ] && tgt_isa=x86
680474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org                tgt_os=win32
681474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org                ;;
682474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org            *linux*|*bsd*)
683474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org                tgt_os=linux
684474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org                ;;
685474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org            *solaris2.10)
686474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org                tgt_os=solaris
687474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org                ;;
6885c1d3b27608a3f3f6028c069b9bf066a4de474b6hclam@chromium.org            *os2*)
6895c1d3b27608a3f3f6028c069b9bf066a4de474b6hclam@chromium.org                tgt_os=os2
6905c1d3b27608a3f3f6028c069b9bf066a4de474b6hclam@chromium.org                ;;
691474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org        esac
692474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org
693474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org        if [ -n "$tgt_isa" ] && [ -n "$tgt_os" ]; then
694474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org            toolchain=${tgt_isa}-${tgt_os}-gcc
695474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org        fi
696474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org    fi
697474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org
698474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org    toolchain=${toolchain:-generic-gnu}
699474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org
700474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org    is_in ${toolchain} ${all_platforms} || enabled force_toolchain \
701474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org        || die "Unrecognized toolchain '${toolchain}'"
702474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org
703474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org    enabled child || log_echo "Configuring for target '${toolchain}'"
704474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org
705474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org    #
706474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org    # Set up toolchain variables
707474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org    #
708474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org    tgt_isa=$(echo ${toolchain} | awk 'BEGIN{FS="-"}{print $1}')
709474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org    tgt_os=$(echo ${toolchain} | awk 'BEGIN{FS="-"}{print $2}')
710474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org    tgt_cc=$(echo ${toolchain} | awk 'BEGIN{FS="-"}{print $3}')
711474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org
712474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org    # Mark the specific ISA requested as enabled
713474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org    soft_enable ${tgt_isa}
71453a13f1fa964820f7a8f9d3932a6f3c0433f8bf5fgalligan@chromium.org    enable_feature ${tgt_os}
71553a13f1fa964820f7a8f9d3932a6f3c0433f8bf5fgalligan@chromium.org    enable_feature ${tgt_cc}
716474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org
717474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org    # Enable the architecture family
718474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org    case ${tgt_isa} in
71953a13f1fa964820f7a8f9d3932a6f3c0433f8bf5fgalligan@chromium.org        arm*) enable_feature arm;;
72053a13f1fa964820f7a8f9d3932a6f3c0433f8bf5fgalligan@chromium.org        mips*) enable_feature mips;;
721474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org    esac
722474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org
723474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org    # PIC is probably what we want when building shared libs
724474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org    enabled shared && soft_enable pic
725474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org
726167514562bbce1eb0566271d6cb41d90d2b5ffa0hclam@chromium.org    # Handle darwin variants. Newer SDKs allow targeting older
727167514562bbce1eb0566271d6cb41d90d2b5ffa0hclam@chromium.org    # platforms, so find the newest SDK available.
7285c1d3b27608a3f3f6028c069b9bf066a4de474b6hclam@chromium.org    case ${toolchain} in
7295c1d3b27608a3f3f6028c069b9bf066a4de474b6hclam@chromium.org        *-darwin*)
7305c1d3b27608a3f3f6028c069b9bf066a4de474b6hclam@chromium.org            if [ -z "${DEVELOPER_DIR}" ]; then
7315c1d3b27608a3f3f6028c069b9bf066a4de474b6hclam@chromium.org                DEVELOPER_DIR=`xcode-select -print-path 2> /dev/null`
7325c1d3b27608a3f3f6028c069b9bf066a4de474b6hclam@chromium.org                [ $? -ne 0 ] && OSX_SKIP_DIR_CHECK=1
7335c1d3b27608a3f3f6028c069b9bf066a4de474b6hclam@chromium.org            fi
7345c1d3b27608a3f3f6028c069b9bf066a4de474b6hclam@chromium.org            if [ -z "${OSX_SKIP_DIR_CHECK}" ]; then
7355c1d3b27608a3f3f6028c069b9bf066a4de474b6hclam@chromium.org                OSX_SDK_ROOTS="${DEVELOPER_DIR}/SDKs"
7365c1d3b27608a3f3f6028c069b9bf066a4de474b6hclam@chromium.org                OSX_SDK_VERSIONS="MacOSX10.4u.sdk MacOSX10.5.sdk MacOSX10.6.sdk"
7375c1d3b27608a3f3f6028c069b9bf066a4de474b6hclam@chromium.org                OSX_SDK_VERSIONS="${OSX_SDK_VERSIONS} MacOSX10.7.sdk"
7385c1d3b27608a3f3f6028c069b9bf066a4de474b6hclam@chromium.org                for v in ${OSX_SDK_VERSIONS}; do
7395c1d3b27608a3f3f6028c069b9bf066a4de474b6hclam@chromium.org                    if [ -d "${OSX_SDK_ROOTS}/${v}" ]; then
7405c1d3b27608a3f3f6028c069b9bf066a4de474b6hclam@chromium.org                        osx_sdk_dir="${OSX_SDK_ROOTS}/${v}"
7415c1d3b27608a3f3f6028c069b9bf066a4de474b6hclam@chromium.org                    fi
7425c1d3b27608a3f3f6028c069b9bf066a4de474b6hclam@chromium.org                done
7435c1d3b27608a3f3f6028c069b9bf066a4de474b6hclam@chromium.org            fi
7445c1d3b27608a3f3f6028c069b9bf066a4de474b6hclam@chromium.org            ;;
7455c1d3b27608a3f3f6028c069b9bf066a4de474b6hclam@chromium.org    esac
7465c1d3b27608a3f3f6028c069b9bf066a4de474b6hclam@chromium.org
7475c1d3b27608a3f3f6028c069b9bf066a4de474b6hclam@chromium.org    if [ -d "${osx_sdk_dir}" ]; then
7485c1d3b27608a3f3f6028c069b9bf066a4de474b6hclam@chromium.org        add_cflags  "-isysroot ${osx_sdk_dir}"
7495c1d3b27608a3f3f6028c069b9bf066a4de474b6hclam@chromium.org        add_ldflags "-isysroot ${osx_sdk_dir}"
750167514562bbce1eb0566271d6cb41d90d2b5ffa0hclam@chromium.org    fi
751167514562bbce1eb0566271d6cb41d90d2b5ffa0hclam@chromium.org
752474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org    case ${toolchain} in
753474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org        *-darwin8-*)
754474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org            add_cflags  "-mmacosx-version-min=10.4"
755474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org            add_ldflags "-mmacosx-version-min=10.4"
756474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org            ;;
757474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org        *-darwin9-*)
758474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org            add_cflags  "-mmacosx-version-min=10.5"
759474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org            add_ldflags "-mmacosx-version-min=10.5"
760474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org            ;;
761474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org        *-darwin10-*)
762474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org            add_cflags  "-mmacosx-version-min=10.6"
763474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org            add_ldflags "-mmacosx-version-min=10.6"
764474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org            ;;
765167514562bbce1eb0566271d6cb41d90d2b5ffa0hclam@chromium.org        *-darwin11-*)
766167514562bbce1eb0566271d6cb41d90d2b5ffa0hclam@chromium.org            add_cflags  "-mmacosx-version-min=10.7"
767167514562bbce1eb0566271d6cb41d90d2b5ffa0hclam@chromium.org            add_ldflags "-mmacosx-version-min=10.7"
768167514562bbce1eb0566271d6cb41d90d2b5ffa0hclam@chromium.org            ;;
7695c1d3b27608a3f3f6028c069b9bf066a4de474b6hclam@chromium.org        *-darwin12-*)
7705c1d3b27608a3f3f6028c069b9bf066a4de474b6hclam@chromium.org            add_cflags  "-mmacosx-version-min=10.8"
7715c1d3b27608a3f3f6028c069b9bf066a4de474b6hclam@chromium.org            add_ldflags "-mmacosx-version-min=10.8"
7725c1d3b27608a3f3f6028c069b9bf066a4de474b6hclam@chromium.org            ;;
77347265f8fe3a36a426773454ad90d20c9aa616c24johannkoenig@chromium.org        *-darwin13-*)
77447265f8fe3a36a426773454ad90d20c9aa616c24johannkoenig@chromium.org            add_cflags  "-mmacosx-version-min=10.9"
77547265f8fe3a36a426773454ad90d20c9aa616c24johannkoenig@chromium.org            add_ldflags "-mmacosx-version-min=10.9"
77647265f8fe3a36a426773454ad90d20c9aa616c24johannkoenig@chromium.org            ;;
777474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org    esac
778474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org
779474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org    # Handle Solaris variants. Solaris 10 needs -lposix4
780474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org    case ${toolchain} in
781474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org        sparc-solaris-*)
782474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org            add_extralibs -lposix4
78353a13f1fa964820f7a8f9d3932a6f3c0433f8bf5fgalligan@chromium.org            disable_feature fast_unaligned
784474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org            ;;
785474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org        *-solaris-*)
786474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org            add_extralibs -lposix4
787474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org            ;;
788474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org    esac
789474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org
790474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org    # Process ARM architecture variants
791474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org    case ${toolchain} in
792167514562bbce1eb0566271d6cb41d90d2b5ffa0hclam@chromium.org    arm*)
793167514562bbce1eb0566271d6cb41d90d2b5ffa0hclam@chromium.org        # on arm, isa versions are supersets
7945c1d3b27608a3f3f6028c069b9bf066a4de474b6hclam@chromium.org        case ${tgt_isa} in
7957765c078fa920ba6c949c15f16b6cc979d8bb95bjohannkoenig@chromium.org        armv8)
7967765c078fa920ba6c949c15f16b6cc979d8bb95bjohannkoenig@chromium.org            soft_enable neon
7977765c078fa920ba6c949c15f16b6cc979d8bb95bjohannkoenig@chromium.org            ;;
7985c1d3b27608a3f3f6028c069b9bf066a4de474b6hclam@chromium.org        armv7)
7995c1d3b27608a3f3f6028c069b9bf066a4de474b6hclam@chromium.org            soft_enable neon
8007765c078fa920ba6c949c15f16b6cc979d8bb95bjohannkoenig@chromium.org            soft_enable neon_asm
8015c1d3b27608a3f3f6028c069b9bf066a4de474b6hclam@chromium.org            soft_enable media
8025c1d3b27608a3f3f6028c069b9bf066a4de474b6hclam@chromium.org            soft_enable edsp
8035c1d3b27608a3f3f6028c069b9bf066a4de474b6hclam@chromium.org            soft_enable fast_unaligned
8045c1d3b27608a3f3f6028c069b9bf066a4de474b6hclam@chromium.org            ;;
8055c1d3b27608a3f3f6028c069b9bf066a4de474b6hclam@chromium.org        armv6)
8065c1d3b27608a3f3f6028c069b9bf066a4de474b6hclam@chromium.org            soft_enable media
8075c1d3b27608a3f3f6028c069b9bf066a4de474b6hclam@chromium.org            soft_enable edsp
8085c1d3b27608a3f3f6028c069b9bf066a4de474b6hclam@chromium.org            soft_enable fast_unaligned
8095c1d3b27608a3f3f6028c069b9bf066a4de474b6hclam@chromium.org            ;;
8105c1d3b27608a3f3f6028c069b9bf066a4de474b6hclam@chromium.org        armv5te)
8115c1d3b27608a3f3f6028c069b9bf066a4de474b6hclam@chromium.org            soft_enable edsp
81253a13f1fa964820f7a8f9d3932a6f3c0433f8bf5fgalligan@chromium.org            disable_feature fast_unaligned
8135c1d3b27608a3f3f6028c069b9bf066a4de474b6hclam@chromium.org            ;;
8145c1d3b27608a3f3f6028c069b9bf066a4de474b6hclam@chromium.org        esac
815474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org
816167514562bbce1eb0566271d6cb41d90d2b5ffa0hclam@chromium.org        asm_conversion_cmd="cat"
817474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org
818474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org        case ${tgt_cc} in
819474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org        gcc)
820167514562bbce1eb0566271d6cb41d90d2b5ffa0hclam@chromium.org            CROSS=${CROSS:-arm-none-linux-gnueabi-}
821474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org            link_with_cc=gcc
822474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org            setup_gnu_toolchain
823474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org            arch_int=${tgt_isa##armv}
824474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org            arch_int=${arch_int%%te}
825474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org            check_add_asflags --defsym ARCHITECTURE=${arch_int}
826474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org            tune_cflags="-mtune="
82753a13f1fa964820f7a8f9d3932a6f3c0433f8bf5fgalligan@chromium.org            if [ ${tgt_isa} = "armv7" ]; then
82810a9a0d835561a7f2300c561c514efcf374554d6fgalligan@chromium.org                if [ -z "${float_abi}" ]; then
82910a9a0d835561a7f2300c561c514efcf374554d6fgalligan@chromium.org                    check_cpp <<EOF && float_abi=hard || float_abi=softfp
83010a9a0d835561a7f2300c561c514efcf374554d6fgalligan@chromium.org#ifndef __ARM_PCS_VFP
83110a9a0d835561a7f2300c561c514efcf374554d6fgalligan@chromium.org#error "not hardfp"
83210a9a0d835561a7f2300c561c514efcf374554d6fgalligan@chromium.org#endif
83310a9a0d835561a7f2300c561c514efcf374554d6fgalligan@chromium.orgEOF
83410a9a0d835561a7f2300c561c514efcf374554d6fgalligan@chromium.org                fi
835d348b8d765c019ee7250075d663a83db00c65c08tomfinegan@chromium.org                check_add_cflags  -march=armv7-a -mfloat-abi=${float_abi}
836d348b8d765c019ee7250075d663a83db00c65c08tomfinegan@chromium.org                check_add_asflags -march=armv7-a -mfloat-abi=${float_abi}
837ed759d81a39febed3a8a395386639d54307504aagrunell@chromium.org
8387765c078fa920ba6c949c15f16b6cc979d8bb95bjohannkoenig@chromium.org                if enabled neon || enabled neon_asm
8395c1d3b27608a3f3f6028c069b9bf066a4de474b6hclam@chromium.org                then
8405c1d3b27608a3f3f6028c069b9bf066a4de474b6hclam@chromium.org                    check_add_cflags -mfpu=neon #-ftree-vectorize
8415c1d3b27608a3f3f6028c069b9bf066a4de474b6hclam@chromium.org                    check_add_asflags -mfpu=neon
8425c1d3b27608a3f3f6028c069b9bf066a4de474b6hclam@chromium.org                fi
843ed759d81a39febed3a8a395386639d54307504aagrunell@chromium.org
844ed759d81a39febed3a8a395386639d54307504aagrunell@chromium.org                if [ -z "${tune_cpu}" ]; then
845ed759d81a39febed3a8a395386639d54307504aagrunell@chromium.org                    tune_cpu=cortex-a8
846ed759d81a39febed3a8a395386639d54307504aagrunell@chromium.org                fi
847474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org            else
848474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org                check_add_cflags -march=${tgt_isa}
849474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org                check_add_asflags -march=${tgt_isa}
850474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org            fi
851ed759d81a39febed3a8a395386639d54307504aagrunell@chromium.org
852474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org            enabled debug && add_asflags -g
853474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org            asm_conversion_cmd="${source_path}/build/make/ads2gas.pl"
85410a9a0d835561a7f2300c561c514efcf374554d6fgalligan@chromium.org            if enabled thumb; then
85510a9a0d835561a7f2300c561c514efcf374554d6fgalligan@chromium.org                asm_conversion_cmd="$asm_conversion_cmd -thumb"
85610a9a0d835561a7f2300c561c514efcf374554d6fgalligan@chromium.org                check_add_cflags -mthumb
85710a9a0d835561a7f2300c561c514efcf374554d6fgalligan@chromium.org                check_add_asflags -mthumb -mimplicit-it=always
85810a9a0d835561a7f2300c561c514efcf374554d6fgalligan@chromium.org            fi
85910a9a0d835561a7f2300c561c514efcf374554d6fgalligan@chromium.org            ;;
86010a9a0d835561a7f2300c561c514efcf374554d6fgalligan@chromium.org        vs*)
86110a9a0d835561a7f2300c561c514efcf374554d6fgalligan@chromium.org            asm_conversion_cmd="${source_path}/build/make/ads2armasm_ms.pl"
86210a9a0d835561a7f2300c561c514efcf374554d6fgalligan@chromium.org            AS_SFX=.s
86310a9a0d835561a7f2300c561c514efcf374554d6fgalligan@chromium.org            msvs_arch_dir=arm-msvs
86453a13f1fa964820f7a8f9d3932a6f3c0433f8bf5fgalligan@chromium.org            disable_feature multithread
86553a13f1fa964820f7a8f9d3932a6f3c0433f8bf5fgalligan@chromium.org            disable_feature unit_tests
866810cf1767dc8df4783e02ba8a712072f50ddc99efgalligan@chromium.org            vs_version=${tgt_cc##vs}
867810cf1767dc8df4783e02ba8a712072f50ddc99efgalligan@chromium.org            if [ $vs_version -ge 12 ]; then
868810cf1767dc8df4783e02ba8a712072f50ddc99efgalligan@chromium.org                # MSVC 2013 doesn't allow doing plain .exe projects for ARM,
869810cf1767dc8df4783e02ba8a712072f50ddc99efgalligan@chromium.org                # only "AppContainerApplication" which requires an AppxManifest.
870810cf1767dc8df4783e02ba8a712072f50ddc99efgalligan@chromium.org                # Therefore disable the examples, just build the library.
871810cf1767dc8df4783e02ba8a712072f50ddc99efgalligan@chromium.org                disable_feature examples
872810cf1767dc8df4783e02ba8a712072f50ddc99efgalligan@chromium.org            fi
873474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org            ;;
874474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org        rvct)
875474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org            CC=armcc
876474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org            AR=armar
877474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org            AS=armasm
878693441efe611de7ca09c00f4e79776f604b689f4joeyparrish@google.com            LD="${source_path}/build/make/armlink_adapter.sh"
879474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org            STRIP=arm-none-linux-gnueabi-strip
880474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org            NM=arm-none-linux-gnueabi-nm
881474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org            tune_cflags="--cpu="
882474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org            tune_asflags="--cpu="
883474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org            if [ -z "${tune_cpu}" ]; then
88453a13f1fa964820f7a8f9d3932a6f3c0433f8bf5fgalligan@chromium.org                if [ ${tgt_isa} = "armv7" ]; then
8857765c078fa920ba6c949c15f16b6cc979d8bb95bjohannkoenig@chromium.org                    if enabled neon || enabled neon_asm
8865c1d3b27608a3f3f6028c069b9bf066a4de474b6hclam@chromium.org                    then
8875c1d3b27608a3f3f6028c069b9bf066a4de474b6hclam@chromium.org                        check_add_cflags --fpu=softvfp+vfpv3
8885c1d3b27608a3f3f6028c069b9bf066a4de474b6hclam@chromium.org                        check_add_asflags --fpu=softvfp+vfpv3
8895c1d3b27608a3f3f6028c069b9bf066a4de474b6hclam@chromium.org                    fi
8905c1d3b27608a3f3f6028c069b9bf066a4de474b6hclam@chromium.org                    check_add_cflags --cpu=Cortex-A8
8915c1d3b27608a3f3f6028c069b9bf066a4de474b6hclam@chromium.org                    check_add_asflags --cpu=Cortex-A8
892474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org                else
893474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org                    check_add_cflags --cpu=${tgt_isa##armv}
894474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org                    check_add_asflags --cpu=${tgt_isa##armv}
895474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org                fi
896474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org            fi
897474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org            arch_int=${tgt_isa##armv}
898474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org            arch_int=${arch_int%%te}
899474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org            check_add_asflags --pd "\"ARCHITECTURE SETA ${arch_int}\""
900474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org            enabled debug && add_asflags -g
901474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org            add_cflags --gnu
902474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org            add_cflags --enum_is_int
903474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org            add_cflags --wchar32
904474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org        ;;
905474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org        esac
906474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org
907474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org        case ${tgt_os} in
908474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org        none*)
90953a13f1fa964820f7a8f9d3932a6f3c0433f8bf5fgalligan@chromium.org            disable_feature multithread
91053a13f1fa964820f7a8f9d3932a6f3c0433f8bf5fgalligan@chromium.org            disable_feature os_support
911474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org            ;;
912167514562bbce1eb0566271d6cb41d90d2b5ffa0hclam@chromium.org
913167514562bbce1eb0566271d6cb41d90d2b5ffa0hclam@chromium.org        android*)
914167514562bbce1eb0566271d6cb41d90d2b5ffa0hclam@chromium.org            SDK_PATH=${sdk_path}
915167514562bbce1eb0566271d6cb41d90d2b5ffa0hclam@chromium.org            COMPILER_LOCATION=`find "${SDK_PATH}" \
916167514562bbce1eb0566271d6cb41d90d2b5ffa0hclam@chromium.org                               -name "arm-linux-androideabi-gcc*" -print -quit`
917167514562bbce1eb0566271d6cb41d90d2b5ffa0hclam@chromium.org            TOOLCHAIN_PATH=${COMPILER_LOCATION%/*}/arm-linux-androideabi-
918167514562bbce1eb0566271d6cb41d90d2b5ffa0hclam@chromium.org            CC=${TOOLCHAIN_PATH}gcc
919ed759d81a39febed3a8a395386639d54307504aagrunell@chromium.org            CXX=${TOOLCHAIN_PATH}g++
920167514562bbce1eb0566271d6cb41d90d2b5ffa0hclam@chromium.org            AR=${TOOLCHAIN_PATH}ar
921167514562bbce1eb0566271d6cb41d90d2b5ffa0hclam@chromium.org            LD=${TOOLCHAIN_PATH}gcc
922167514562bbce1eb0566271d6cb41d90d2b5ffa0hclam@chromium.org            AS=${TOOLCHAIN_PATH}as
923167514562bbce1eb0566271d6cb41d90d2b5ffa0hclam@chromium.org            STRIP=${TOOLCHAIN_PATH}strip
924167514562bbce1eb0566271d6cb41d90d2b5ffa0hclam@chromium.org            NM=${TOOLCHAIN_PATH}nm
925167514562bbce1eb0566271d6cb41d90d2b5ffa0hclam@chromium.org
926167514562bbce1eb0566271d6cb41d90d2b5ffa0hclam@chromium.org            if [ -z "${alt_libc}" ]; then
927167514562bbce1eb0566271d6cb41d90d2b5ffa0hclam@chromium.org                alt_libc=`find "${SDK_PATH}" -name arch-arm -print | \
928167514562bbce1eb0566271d6cb41d90d2b5ffa0hclam@chromium.org                          awk '{n = split($0,a,"/"); \
929167514562bbce1eb0566271d6cb41d90d2b5ffa0hclam@chromium.org                                split(a[n-1],b,"-"); \
930167514562bbce1eb0566271d6cb41d90d2b5ffa0hclam@chromium.org                                print $0 " " b[2]}' | \
931167514562bbce1eb0566271d6cb41d90d2b5ffa0hclam@chromium.org                          sort -g -k 2 | \
932167514562bbce1eb0566271d6cb41d90d2b5ffa0hclam@chromium.org                          awk '{ print $1 }' | tail -1`
933167514562bbce1eb0566271d6cb41d90d2b5ffa0hclam@chromium.org            fi
934167514562bbce1eb0566271d6cb41d90d2b5ffa0hclam@chromium.org
935167514562bbce1eb0566271d6cb41d90d2b5ffa0hclam@chromium.org            add_cflags "--sysroot=${alt_libc}"
936167514562bbce1eb0566271d6cb41d90d2b5ffa0hclam@chromium.org            add_ldflags "--sysroot=${alt_libc}"
937167514562bbce1eb0566271d6cb41d90d2b5ffa0hclam@chromium.org
938ed759d81a39febed3a8a395386639d54307504aagrunell@chromium.org            # linker flag that routes around a CPU bug in some
939ed759d81a39febed3a8a395386639d54307504aagrunell@chromium.org            # Cortex-A8 implementations (NDK Dev Guide)
940ed759d81a39febed3a8a395386639d54307504aagrunell@chromium.org            add_ldflags "-Wl,--fix-cortex-a8"
9415c1d3b27608a3f3f6028c069b9bf066a4de474b6hclam@chromium.org
94253a13f1fa964820f7a8f9d3932a6f3c0433f8bf5fgalligan@chromium.org            enable_feature pic
943167514562bbce1eb0566271d6cb41d90d2b5ffa0hclam@chromium.org            soft_enable realtime_only
94453a13f1fa964820f7a8f9d3932a6f3c0433f8bf5fgalligan@chromium.org            if [ ${tgt_isa} = "armv7" ]; then
945ed759d81a39febed3a8a395386639d54307504aagrunell@chromium.org                soft_enable runtime_cpu_detect
946ed759d81a39febed3a8a395386639d54307504aagrunell@chromium.org            fi
947ed759d81a39febed3a8a395386639d54307504aagrunell@chromium.org            if enabled runtime_cpu_detect; then
948ed759d81a39febed3a8a395386639d54307504aagrunell@chromium.org                add_cflags "-I${SDK_PATH}/sources/android/cpufeatures"
949167514562bbce1eb0566271d6cb41d90d2b5ffa0hclam@chromium.org            fi
950167514562bbce1eb0566271d6cb41d90d2b5ffa0hclam@chromium.org          ;;
951167514562bbce1eb0566271d6cb41d90d2b5ffa0hclam@chromium.org
952474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org        darwin*)
953d851b91d14ef0bd71acdce7b90c9a8f1af1181adjohannkoenig@chromium.org
954d851b91d14ef0bd71acdce7b90c9a8f1af1181adjohannkoenig@chromium.org            XCRUN_FIND="xcrun --sdk iphoneos -find"
955d851b91d14ef0bd71acdce7b90c9a8f1af1181adjohannkoenig@chromium.org            CXX="$(${XCRUN_FIND} clang++)"
956d851b91d14ef0bd71acdce7b90c9a8f1af1181adjohannkoenig@chromium.org            CC="$(${XCRUN_FIND} clang)"
957d851b91d14ef0bd71acdce7b90c9a8f1af1181adjohannkoenig@chromium.org            AR="$(${XCRUN_FIND} ar)"
958d851b91d14ef0bd71acdce7b90c9a8f1af1181adjohannkoenig@chromium.org            LD="$(${XCRUN_FIND} ld)"
959d851b91d14ef0bd71acdce7b90c9a8f1af1181adjohannkoenig@chromium.org            AS="$(${XCRUN_FIND} as)"
960d851b91d14ef0bd71acdce7b90c9a8f1af1181adjohannkoenig@chromium.org            STRIP="$(${XCRUN_FIND} strip)"
961d851b91d14ef0bd71acdce7b90c9a8f1af1181adjohannkoenig@chromium.org            NM="$(${XCRUN_FIND} nm)"
962d851b91d14ef0bd71acdce7b90c9a8f1af1181adjohannkoenig@chromium.org            RANLIB="$(${XCRUN_FIND} ranlib)"
963474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org            AS_SFX=.s
964474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org
965474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org            # ASFLAGS is written here instead of using check_add_asflags
966474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org            # because we need to overwrite all of ASFLAGS and purge the
967474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org            # options that were put in above
968d851b91d14ef0bd71acdce7b90c9a8f1af1181adjohannkoenig@chromium.org            ASFLAGS="-arch ${tgt_isa} -g"
969474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org
970d851b91d14ef0bd71acdce7b90c9a8f1af1181adjohannkoenig@chromium.org            alt_libc="$(xcrun --sdk iphoneos --show-sdk-path)"
971d851b91d14ef0bd71acdce7b90c9a8f1af1181adjohannkoenig@chromium.org            add_cflags -arch ${tgt_isa} -isysroot ${alt_libc}
972d851b91d14ef0bd71acdce7b90c9a8f1af1181adjohannkoenig@chromium.org            add_ldflags -arch ${tgt_isa} -ios_version_min 7.0
973474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org
974474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org            for d in lib usr/lib usr/lib/system; do
975474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org                try_dir="${alt_libc}/${d}"
976474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org                [ -d "${try_dir}" ] && add_ldflags -L"${try_dir}"
977474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org            done
978474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org
979474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org            asm_conversion_cmd="${source_path}/build/make/ads2gas_apple.pl"
980474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org         ;;
981474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org
982474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org        linux*)
98353a13f1fa964820f7a8f9d3932a6f3c0433f8bf5fgalligan@chromium.org            enable_feature linux
984474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org            if enabled rvct; then
985474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org                # Check if we have CodeSourcery GCC in PATH. Needed for
986474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org                # libraries
987474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org                hash arm-none-linux-gnueabi-gcc 2>&- || \
988474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org                  die "Couldn't find CodeSourcery GCC from PATH"
989474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org
990474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org                # Use armcc as a linker to enable translation of
991474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org                # some gcc specific options such as -lm and -lpthread.
992474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org                LD="armcc --translate_gcc"
993474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org
994474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org                # create configuration file (uses path to CodeSourcery GCC)
995474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org                armcc --arm_linux_configure --arm_linux_config_file=arm_linux.cfg
996474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org
997474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org                add_cflags --arm_linux_paths --arm_linux_config_file=arm_linux.cfg
998474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org                add_asflags --no_hide_all --apcs=/interwork
999474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org                add_ldflags --arm_linux_paths --arm_linux_config_file=arm_linux.cfg
1000474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org                enabled pic && add_cflags --apcs=/fpic
1001474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org                enabled pic && add_asflags --apcs=/fpic
1002474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org                enabled shared && add_cflags --shared
1003474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org            fi
1004474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org        ;;
1005474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org
1006474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org        esac
1007474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org    ;;
1008474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org    mips*)
1009474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org        link_with_cc=gcc
1010474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org        setup_gnu_toolchain
1011474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org        tune_cflags="-mtune="
1012ed759d81a39febed3a8a395386639d54307504aagrunell@chromium.org        if enabled dspr2; then
1013ed759d81a39febed3a8a395386639d54307504aagrunell@chromium.org            check_add_cflags -mips32r2 -mdspr2
101453a13f1fa964820f7a8f9d3932a6f3c0433f8bf5fgalligan@chromium.org            disable_feature fast_unaligned
1015ed759d81a39febed3a8a395386639d54307504aagrunell@chromium.org        fi
1016474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org        check_add_cflags -march=${tgt_isa}
1017ed759d81a39febed3a8a395386639d54307504aagrunell@chromium.org        check_add_asflags -march=${tgt_isa}
1018ed759d81a39febed3a8a395386639d54307504aagrunell@chromium.org        check_add_asflags -KPIC
1019474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org    ;;
1020474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org    ppc*)
102153a13f1fa964820f7a8f9d3932a6f3c0433f8bf5fgalligan@chromium.org        enable_feature ppc
1022474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org        bits=${tgt_isa##ppc}
1023474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org        link_with_cc=gcc
1024474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org        setup_gnu_toolchain
1025474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org        add_asflags -force_cpusubtype_ALL -I"\$(dir \$<)darwin"
1026474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org        soft_enable altivec
1027474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org        enabled altivec && add_cflags -maltivec
1028474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org
1029474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org        case "$tgt_os" in
1030474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org        linux*)
1031474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org            add_asflags -maltivec -mregnames -I"\$(dir \$<)linux"
1032474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org        ;;
1033474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org        darwin*)
1034474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org            darwin_arch="-arch ppc"
1035474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org            enabled ppc64 && darwin_arch="${darwin_arch}64"
1036474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org            add_cflags  ${darwin_arch} -m${bits} -fasm-blocks
1037474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org            add_asflags ${darwin_arch} -force_cpusubtype_ALL -I"\$(dir \$<)darwin"
1038474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org            add_ldflags ${darwin_arch} -m${bits}
1039474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org            enabled altivec && add_cflags -faltivec
1040474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org        ;;
1041474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org        esac
1042474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org    ;;
1043474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org    x86*)
1044474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org        bits=32
1045474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org        enabled x86_64 && bits=64
1046ed759d81a39febed3a8a395386639d54307504aagrunell@chromium.org        check_cpp <<EOF && bits=x32
1047ed759d81a39febed3a8a395386639d54307504aagrunell@chromium.org#ifndef __ILP32__
1048ed759d81a39febed3a8a395386639d54307504aagrunell@chromium.org#error "not x32"
1049ed759d81a39febed3a8a395386639d54307504aagrunell@chromium.org#endif
1050ed759d81a39febed3a8a395386639d54307504aagrunell@chromium.orgEOF
1051474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org
1052474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org        case  ${tgt_os} in
1053474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org            win*)
1054474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org                enabled gcc && add_cflags -fno-common
1055474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org                ;;
1056474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org            solaris*)
1057474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org                CC=${CC:-${CROSS}gcc}
1058ed759d81a39febed3a8a395386639d54307504aagrunell@chromium.org                CXX=${CXX:-${CROSS}g++}
1059474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org                LD=${LD:-${CROSS}gcc}
1060474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org                CROSS=${CROSS:-g}
1061474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org                ;;
10625c1d3b27608a3f3f6028c069b9bf066a4de474b6hclam@chromium.org            os2)
10635c1d3b27608a3f3f6028c069b9bf066a4de474b6hclam@chromium.org                AS=${AS:-nasm}
10645c1d3b27608a3f3f6028c069b9bf066a4de474b6hclam@chromium.org                ;;
1065474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org        esac
1066474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org
1067474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org        AS="${alt_as:-${AS:-auto}}"
1068474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org        case  ${tgt_cc} in
1069474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org            icc*)
1070474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org                CC=${CC:-icc}
1071474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org                LD=${LD:-icc}
1072474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org                setup_gnu_toolchain
1073ecee051929d6ced19cf324688774acccc9ad4a0ajohannkoenig@chromium.org                add_cflags -use-msasm  # remove -use-msasm too?
1074ecee051929d6ced19cf324688774acccc9ad4a0ajohannkoenig@chromium.org                # add -no-intel-extensions to suppress warning #10237
1075ecee051929d6ced19cf324688774acccc9ad4a0ajohannkoenig@chromium.org                # refer to http://software.intel.com/en-us/forums/topic/280199
1076ecee051929d6ced19cf324688774acccc9ad4a0ajohannkoenig@chromium.org                add_ldflags -i-static -no-intel-extensions
1077ecee051929d6ced19cf324688774acccc9ad4a0ajohannkoenig@chromium.org                enabled x86_64 && add_cflags -ipo -static -O3 -no-prec-div
1078474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org                enabled x86_64 && AR=xiar
1079474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org                case ${tune_cpu} in
1080474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org                    atom*)
1081474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org                        tune_cflags="-x"
1082474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org                        tune_cpu="SSE3_ATOM"
1083474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org                    ;;
1084474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org                    *)
1085474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org                        tune_cflags="-march="
1086474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org                    ;;
1087474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org                esac
1088ed759d81a39febed3a8a395386639d54307504aagrunell@chromium.org            ;;
1089474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org            gcc*)
10905c1d3b27608a3f3f6028c069b9bf066a4de474b6hclam@chromium.org                add_cflags -m${bits}
1091474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org                add_ldflags -m${bits}
1092474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org                link_with_cc=gcc
1093474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org                tune_cflags="-march="
1094da24c9017693dec11c2925131958a7e0e0b9f1cffgalligan@chromium.org                setup_gnu_toolchain
1095474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org                #for 32 bit x86 builds, -O3 did not turn on this flag
109610a9a0d835561a7f2300c561c514efcf374554d6fgalligan@chromium.org                enabled optimizations && disabled gprof && check_add_cflags -fomit-frame-pointer
1097ed759d81a39febed3a8a395386639d54307504aagrunell@chromium.org            ;;
1098ed759d81a39febed3a8a395386639d54307504aagrunell@chromium.org            vs*)
1099ed759d81a39febed3a8a395386639d54307504aagrunell@chromium.org                # When building with Microsoft Visual Studio the assembler is
1100ed759d81a39febed3a8a395386639d54307504aagrunell@chromium.org                # invoked directly. Checking at configure time is unnecessary.
1101ed759d81a39febed3a8a395386639d54307504aagrunell@chromium.org                # Skip the check by setting AS arbitrarily
1102ed759d81a39febed3a8a395386639d54307504aagrunell@chromium.org                AS=msvs
110310a9a0d835561a7f2300c561c514efcf374554d6fgalligan@chromium.org                msvs_arch_dir=x86-msvs
1104d851b91d14ef0bd71acdce7b90c9a8f1af1181adjohannkoenig@chromium.org                vc_version=${tgt_cc##vs}
1105d851b91d14ef0bd71acdce7b90c9a8f1af1181adjohannkoenig@chromium.org                case $vc_version in
1106d851b91d14ef0bd71acdce7b90c9a8f1af1181adjohannkoenig@chromium.org                    7|8|9|10)
1107d851b91d14ef0bd71acdce7b90c9a8f1af1181adjohannkoenig@chromium.org                         echo "${tgt_cc} does not support avx/avx2, disabling....."
1108d851b91d14ef0bd71acdce7b90c9a8f1af1181adjohannkoenig@chromium.org                         RTCD_OPTIONS="${RTCD_OPTIONS}--disable-avx --disable-avx2 "
1109d851b91d14ef0bd71acdce7b90c9a8f1af1181adjohannkoenig@chromium.org                         soft_disable avx
1110d851b91d14ef0bd71acdce7b90c9a8f1af1181adjohannkoenig@chromium.org                         soft_disable avx2
1111d851b91d14ef0bd71acdce7b90c9a8f1af1181adjohannkoenig@chromium.org                    ;;
1112d851b91d14ef0bd71acdce7b90c9a8f1af1181adjohannkoenig@chromium.org                esac
1113ed759d81a39febed3a8a395386639d54307504aagrunell@chromium.org            ;;
1114474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org        esac
1115474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org
11161cedac70da0675180660d8d3478648400afde47djohannkoenig@chromium.org        soft_enable runtime_cpu_detect
1117da24c9017693dec11c2925131958a7e0e0b9f1cffgalligan@chromium.org        # We can't use 'check_cflags' until the compiler is configured and CC is
1118da24c9017693dec11c2925131958a7e0e0b9f1cffgalligan@chromium.org        # populated.
111993a74791c8e808ea76001ee07693aa2a5fdd3500johannkoenig@chromium.org        check_gcc_machine_option mmx
112093a74791c8e808ea76001ee07693aa2a5fdd3500johannkoenig@chromium.org        check_gcc_machine_option sse
112193a74791c8e808ea76001ee07693aa2a5fdd3500johannkoenig@chromium.org        check_gcc_machine_option sse2
112293a74791c8e808ea76001ee07693aa2a5fdd3500johannkoenig@chromium.org        check_gcc_machine_option sse3
112393a74791c8e808ea76001ee07693aa2a5fdd3500johannkoenig@chromium.org        check_gcc_machine_option ssse3
112493a74791c8e808ea76001ee07693aa2a5fdd3500johannkoenig@chromium.org        check_gcc_machine_option sse4 sse4_1
112593a74791c8e808ea76001ee07693aa2a5fdd3500johannkoenig@chromium.org        check_gcc_machine_option avx
112693a74791c8e808ea76001ee07693aa2a5fdd3500johannkoenig@chromium.org        check_gcc_machine_option avx2
1127ecee051929d6ced19cf324688774acccc9ad4a0ajohannkoenig@chromium.org
1128474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org        case "${AS}" in
1129474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org            auto|"")
1130474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org                which nasm >/dev/null 2>&1 && AS=nasm
1131474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org                which yasm >/dev/null 2>&1 && AS=yasm
1132474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org                [ "${AS}" = auto -o -z "${AS}" ] \
1133474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org                    && die "Neither yasm nor nasm have been found"
1134ed759d81a39febed3a8a395386639d54307504aagrunell@chromium.org            ;;
1135474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org        esac
1136474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org        log_echo "  using $AS"
1137474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org        [ "${AS##*/}" = nasm ] && add_asflags -Ox
1138474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org        AS_SFX=.asm
1139474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org        case  ${tgt_os} in
1140167514562bbce1eb0566271d6cb41d90d2b5ffa0hclam@chromium.org            win32)
1141167514562bbce1eb0566271d6cb41d90d2b5ffa0hclam@chromium.org                add_asflags -f win32
1142167514562bbce1eb0566271d6cb41d90d2b5ffa0hclam@chromium.org                enabled debug && add_asflags -g cv8
11431cedac70da0675180660d8d3478648400afde47djohannkoenig@chromium.org                EXE_SFX=.exe
1144167514562bbce1eb0566271d6cb41d90d2b5ffa0hclam@chromium.org            ;;
1145167514562bbce1eb0566271d6cb41d90d2b5ffa0hclam@chromium.org            win64)
1146167514562bbce1eb0566271d6cb41d90d2b5ffa0hclam@chromium.org                add_asflags -f x64
1147474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org                enabled debug && add_asflags -g cv8
11481cedac70da0675180660d8d3478648400afde47djohannkoenig@chromium.org                EXE_SFX=.exe
1149474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org            ;;
1150d348b8d765c019ee7250075d663a83db00c65c08tomfinegan@chromium.org            linux*|solaris*|android*)
1151474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org                add_asflags -f elf${bits}
1152474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org                enabled debug && [ "${AS}" = yasm ] && add_asflags -g dwarf2
1153474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org                enabled debug && [ "${AS}" = nasm ] && add_asflags -g
1154474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org                [ "${AS##*/}" = nasm ] && check_asm_align
1155474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org            ;;
1156474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org            darwin*)
1157474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org                add_asflags -f macho${bits}
1158474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org                enabled x86 && darwin_arch="-arch i386" || darwin_arch="-arch x86_64"
1159474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org                add_cflags  ${darwin_arch}
1160474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org                add_ldflags ${darwin_arch}
1161474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org                # -mdynamic-no-pic is still a bit of voodoo -- it was required at
1162474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org                # one time, but does not seem to be now, and it breaks some of the
1163474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org                # code that still relies on inline assembly.
1164474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org                # enabled icc && ! enabled pic && add_cflags -fno-pic -mdynamic-no-pic
1165474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org                enabled icc && ! enabled pic && add_cflags -fno-pic
1166474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org            ;;
11675c1d3b27608a3f3f6028c069b9bf066a4de474b6hclam@chromium.org            os2)
11685c1d3b27608a3f3f6028c069b9bf066a4de474b6hclam@chromium.org                add_asflags -f aout
11695c1d3b27608a3f3f6028c069b9bf066a4de474b6hclam@chromium.org                enabled debug && add_asflags -g
11705c1d3b27608a3f3f6028c069b9bf066a4de474b6hclam@chromium.org                EXE_SFX=.exe
11715c1d3b27608a3f3f6028c069b9bf066a4de474b6hclam@chromium.org            ;;
1172474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org            *) log "Warning: Unknown os $tgt_os while setting up $AS flags"
1173474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org            ;;
1174474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org        esac
1175474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org    ;;
1176474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org    universal*|*-gcc|generic-gnu)
1177474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org        link_with_cc=gcc
117853a13f1fa964820f7a8f9d3932a6f3c0433f8bf5fgalligan@chromium.org        enable_feature gcc
1179474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org    setup_gnu_toolchain
1180474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org    ;;
1181474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org    esac
1182474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org
1183474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org    # Try to enable CPU specific tuning
1184474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org    if [ -n "${tune_cpu}" ]; then
1185474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org        if [ -n "${tune_cflags}" ]; then
1186474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org            check_add_cflags ${tune_cflags}${tune_cpu} || \
1187474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org                die "Requested CPU '${tune_cpu}' not supported by compiler"
1188474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org        fi
1189474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org    if [ -n "${tune_asflags}" ]; then
1190474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org            check_add_asflags ${tune_asflags}${tune_cpu} || \
1191474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org                die "Requested CPU '${tune_cpu}' not supported by assembler"
1192474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org        fi
1193474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org    if [ -z "${tune_cflags}${tune_asflags}" ]; then
1194474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org            log_echo "Warning: CPU tuning not supported by this toolchain"
1195474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org        fi
1196474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org    fi
1197474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org
1198474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org    enabled debug && check_add_cflags -g && check_add_ldflags -g
1199474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org    enabled gprof && check_add_cflags -pg && check_add_ldflags -pg
1200474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org    enabled gcov &&
1201474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org        check_add_cflags -fprofile-arcs -ftest-coverage &&
1202474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org        check_add_ldflags -fprofile-arcs -ftest-coverage
1203474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org
1204474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org    if enabled optimizations; then
1205474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org        if enabled rvct; then
1206474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org            enabled small && check_add_cflags -Ospace || check_add_cflags -Otime
1207474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org        else
1208474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org            enabled small && check_add_cflags -O2 ||  check_add_cflags -O3
1209474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org        fi
1210474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org    fi
1211474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org
121253a13f1fa964820f7a8f9d3932a6f3c0433f8bf5fgalligan@chromium.org    # default use_x86inc to yes if pic is no or 64bit or we are not on darwin
1213411971f94253c85e1866c281860d6344f6aa0c78fgalligan@chromium.org    if [ ${tgt_isa} = x86_64 -o ! "$pic" = "yes" -o \
1214411971f94253c85e1866c281860d6344f6aa0c78fgalligan@chromium.org         "${tgt_os#darwin}" = "${tgt_os}"  ]; then
121553a13f1fa964820f7a8f9d3932a6f3c0433f8bf5fgalligan@chromium.org      soft_enable use_x86inc
121653a13f1fa964820f7a8f9d3932a6f3c0433f8bf5fgalligan@chromium.org    fi
121753a13f1fa964820f7a8f9d3932a6f3c0433f8bf5fgalligan@chromium.org
1218474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org    # Position Independent Code (PIC) support, for building relocatable
1219474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org    # shared objects
1220474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org    enabled gcc && enabled pic && check_add_cflags -fPIC
1221474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org
1222474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org    # Work around longjmp interception on glibc >= 2.11, to improve binary
1223474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org    # compatibility. See http://code.google.com/p/webm/issues/detail?id=166
1224ed759d81a39febed3a8a395386639d54307504aagrunell@chromium.org    enabled linux && check_add_cflags -U_FORTIFY_SOURCE -D_FORTIFY_SOURCE=0
1225474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org
1226474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org    # Check for strip utility variant
122753a13f1fa964820f7a8f9d3932a6f3c0433f8bf5fgalligan@chromium.org    ${STRIP} -V 2>/dev/null | grep GNU >/dev/null && enable_feature gnu_strip
1228474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org
1229474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org    # Try to determine target endianness
1230474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org    check_cc <<EOF
1231474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org    unsigned int e = 'O'<<24 | '2'<<16 | 'B'<<8 | 'E';
1232474eb7536515fb785e925cc9375d22817c416851hclam@chromium.orgEOF
1233474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org    [ -f "${TMP_O}" ] && od -A n -t x1 "${TMP_O}" | tr -d '\n' |
123453a13f1fa964820f7a8f9d3932a6f3c0433f8bf5fgalligan@chromium.org        grep '4f *32 *42 *45' >/dev/null 2>&1 && enable_feature big_endian
1235474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org
12361cedac70da0675180660d8d3478648400afde47djohannkoenig@chromium.org    # Try to find which inline keywords are supported
12371cedac70da0675180660d8d3478648400afde47djohannkoenig@chromium.org    check_cc <<EOF && INLINE="inline"
12381cedac70da0675180660d8d3478648400afde47djohannkoenig@chromium.org    static inline function() {}
12391cedac70da0675180660d8d3478648400afde47djohannkoenig@chromium.orgEOF
124010a9a0d835561a7f2300c561c514efcf374554d6fgalligan@chromium.org    check_cc <<EOF && INLINE="__inline__ __attribute__((always_inline))"
12411cedac70da0675180660d8d3478648400afde47djohannkoenig@chromium.org    static __attribute__((always_inline)) function() {}
12421cedac70da0675180660d8d3478648400afde47djohannkoenig@chromium.orgEOF
12431cedac70da0675180660d8d3478648400afde47djohannkoenig@chromium.org
1244474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org    # Almost every platform uses pthreads.
1245474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org    if enabled multithread; then
1246474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org        case ${toolchain} in
1247ed759d81a39febed3a8a395386639d54307504aagrunell@chromium.org            *-win*-vs*);;
1248167514562bbce1eb0566271d6cb41d90d2b5ffa0hclam@chromium.org            *-android-gcc);;
1249474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org            *) check_header pthread.h && add_extralibs -lpthread
1250474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org        esac
1251474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org    fi
1252474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org
1253ed759d81a39febed3a8a395386639d54307504aagrunell@chromium.org    # only for MIPS platforms
1254ed759d81a39febed3a8a395386639d54307504aagrunell@chromium.org    case ${toolchain} in
1255ed759d81a39febed3a8a395386639d54307504aagrunell@chromium.org        mips*)
1256ed759d81a39febed3a8a395386639d54307504aagrunell@chromium.org            if enabled dspr2; then
1257ed759d81a39febed3a8a395386639d54307504aagrunell@chromium.org                if enabled big_endian; then
1258ed759d81a39febed3a8a395386639d54307504aagrunell@chromium.org                    echo "dspr2 optimizations are available only for little endian platforms"
125953a13f1fa964820f7a8f9d3932a6f3c0433f8bf5fgalligan@chromium.org                    disable_feature dspr2
1260ed759d81a39febed3a8a395386639d54307504aagrunell@chromium.org                fi
1261ed759d81a39febed3a8a395386639d54307504aagrunell@chromium.org            fi
1262ed759d81a39febed3a8a395386639d54307504aagrunell@chromium.org        ;;
1263ed759d81a39febed3a8a395386639d54307504aagrunell@chromium.org    esac
1264ed759d81a39febed3a8a395386639d54307504aagrunell@chromium.org
1265474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org    # glibc needs these
1266474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org    if enabled linux; then
1267474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org        add_cflags -D_LARGEFILE_SOURCE
1268474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org        add_cflags -D_FILE_OFFSET_BITS=64
1269474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org    fi
1270474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org
1271474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org    # append any user defined extra cflags
1272474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org    if [ -n "${extra_cflags}" ] ; then
1273474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org        check_add_cflags ${extra_cflags} || \
1274474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org        die "Requested extra CFLAGS '${extra_cflags}' not supported by compiler"
1275474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org    fi
1276474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org}
1277474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org
1278474eb7536515fb785e925cc9375d22817c416851hclam@chromium.orgprocess_toolchain() {
1279474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org    process_common_toolchain
1280474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org}
1281474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org
1282474eb7536515fb785e925cc9375d22817c416851hclam@chromium.orgprint_config_mk() {
1283474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org    local prefix=$1
1284474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org    local makefile=$2
1285474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org    shift 2
1286474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org    for cfg; do
1287474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org        upname="`toupper $cfg`"
1288474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org        if enabled $cfg; then
1289474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org            echo "${prefix}_${upname}=yes" >> $makefile
1290474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org        fi
1291474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org    done
1292474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org}
1293474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org
1294474eb7536515fb785e925cc9375d22817c416851hclam@chromium.orgprint_config_h() {
1295474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org    local prefix=$1
1296474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org    local header=$2
1297474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org    shift 2
1298474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org    for cfg; do
1299474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org        upname="`toupper $cfg`"
1300474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org        if enabled $cfg; then
1301474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org            echo "#define ${prefix}_${upname} 1" >> $header
1302474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org        else
1303474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org            echo "#define ${prefix}_${upname} 0" >> $header
1304474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org        fi
1305474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org    done
1306474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org}
1307474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org
1308167514562bbce1eb0566271d6cb41d90d2b5ffa0hclam@chromium.orgprint_webm_license() {
1309167514562bbce1eb0566271d6cb41d90d2b5ffa0hclam@chromium.org    local destination=$1
131053a13f1fa964820f7a8f9d3932a6f3c0433f8bf5fgalligan@chromium.org    local prefix="$2"
131153a13f1fa964820f7a8f9d3932a6f3c0433f8bf5fgalligan@chromium.org    local suffix="$3"
1312167514562bbce1eb0566271d6cb41d90d2b5ffa0hclam@chromium.org    shift 3
1313167514562bbce1eb0566271d6cb41d90d2b5ffa0hclam@chromium.org    cat <<EOF > ${destination}
1314167514562bbce1eb0566271d6cb41d90d2b5ffa0hclam@chromium.org${prefix} Copyright (c) 2011 The WebM project authors. All Rights Reserved.${suffix}
1315167514562bbce1eb0566271d6cb41d90d2b5ffa0hclam@chromium.org${prefix} ${suffix}
1316167514562bbce1eb0566271d6cb41d90d2b5ffa0hclam@chromium.org${prefix} Use of this source code is governed by a BSD-style license${suffix}
1317167514562bbce1eb0566271d6cb41d90d2b5ffa0hclam@chromium.org${prefix} that can be found in the LICENSE file in the root of the source${suffix}
1318167514562bbce1eb0566271d6cb41d90d2b5ffa0hclam@chromium.org${prefix} tree. An additional intellectual property rights grant can be found${suffix}
1319167514562bbce1eb0566271d6cb41d90d2b5ffa0hclam@chromium.org${prefix} in the file PATENTS.  All contributing project authors may${suffix}
1320167514562bbce1eb0566271d6cb41d90d2b5ffa0hclam@chromium.org${prefix} be found in the AUTHORS file in the root of the source tree.${suffix}
1321167514562bbce1eb0566271d6cb41d90d2b5ffa0hclam@chromium.orgEOF
1322167514562bbce1eb0566271d6cb41d90d2b5ffa0hclam@chromium.org}
1323167514562bbce1eb0566271d6cb41d90d2b5ffa0hclam@chromium.org
1324474eb7536515fb785e925cc9375d22817c416851hclam@chromium.orgprocess_targets() {
1325474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org    true;
1326474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org}
1327474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org
1328474eb7536515fb785e925cc9375d22817c416851hclam@chromium.orgprocess_detect() {
1329474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org    true;
1330474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org}
1331474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org
133253a13f1fa964820f7a8f9d3932a6f3c0433f8bf5fgalligan@chromium.orgenable_feature logging
133347265f8fe3a36a426773454ad90d20c9aa616c24johannkoenig@chromium.orglogfile="config.log"
1334474eb7536515fb785e925cc9375d22817c416851hclam@chromium.orgself=$0
1335474eb7536515fb785e925cc9375d22817c416851hclam@chromium.orgprocess() {
1336474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org    cmdline_args="$@"
1337474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org    process_cmdline "$@"
1338474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org    if enabled child; then
1339474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org        echo "# ${self} $@" >> ${logfile}
1340474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org    else
1341474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org        echo "# ${self} $@" > ${logfile}
1342474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org    fi
1343474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org    post_process_common_cmdline
1344474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org    post_process_cmdline
1345474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org    process_toolchain
1346474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org    process_detect
1347474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org    process_targets
1348474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org
1349474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org    OOT_INSTALLS="${OOT_INSTALLS}"
1350474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org    if enabled source_path_used; then
1351474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org    # Prepare the PWD for building.
1352474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org    for f in ${OOT_INSTALLS}; do
1353693441efe611de7ca09c00f4e79776f604b689f4joeyparrish@google.com            install -D "${source_path}/$f" "$f"
1354474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org    done
1355474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org    fi
1356693441efe611de7ca09c00f4e79776f604b689f4joeyparrish@google.com    cp "${source_path}/build/make/Makefile" .
1357474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org
1358474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org    clean_temp_files
1359474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org    true
1360474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org}
1361