configure.sh revision f71323e297a928af368937089d3ed71239786f86
190d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber#!/bin/bash 290d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber## 3f71323e297a928af368937089d3ed71239786f86Andreas Huber## configure.sh 490d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber## 5f71323e297a928af368937089d3ed71239786f86Andreas Huber## This script is sourced by the main configure script and contains 6f71323e297a928af368937089d3ed71239786f86Andreas Huber## utility functions and other common bits that aren't strictly libvpx 7f71323e297a928af368937089d3ed71239786f86Andreas Huber## related. 8f71323e297a928af368937089d3ed71239786f86Andreas Huber## 9f71323e297a928af368937089d3ed71239786f86Andreas Huber## This build system is based in part on the FFmpeg configure script. 1090d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber## 1190d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber 1290d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber 1390d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber# 1490d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber# Logging / Output Functions 1590d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber# 1690d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huberdie_unknown(){ 1790d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber echo "Unknown option \"$1\"." 1890d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber echo "See $0 --help for available options." 1990d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber clean_temp_files 2090d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber exit 1 2190d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber} 2290d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber 2390d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber 2490d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huberdie() { 2590d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber echo "$@" 2690d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber echo 2790d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber echo "Configuration failed. This could reflect a misconfiguration of your" 2890d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber echo "toolchains, improper options selected, or another problem. If you" 2990d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber echo "don't see any useful error messages above, the next step is to look" 3090d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber echo "at the configure error log file ($logfile) to determine what" 3190d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber echo "configure was trying to do when it died." 3290d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber clean_temp_files 3390d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber exit 1 3490d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber} 3590d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber 3690d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber 3790d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huberlog(){ 3890d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber echo "$@" >>$logfile 3990d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber} 4090d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber 4190d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber 4290d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huberlog_file(){ 4390d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber log BEGIN $1 4490d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber pr -n -t $1 >>$logfile 4590d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber log END $1 4690d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber} 4790d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber 4890d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber 4990d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huberlog_echo() { 5090d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber echo "$@" 5190d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber log "$@" 5290d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber} 5390d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber 5490d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber 5590d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huberfwrite () { 5690d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber outfile=$1 5790d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber shift 5890d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber echo "$@" >> ${outfile} 5990d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber} 6090d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber 6190d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber 6290d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Hubershow_help_pre(){ 6390d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber for opt in ${CMDLINE_SELECT}; do 6490d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber opt2=`echo $opt | sed -e 's;_;-;g'` 6590d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber if enabled $opt; then 6690d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber eval "toggle_${opt}=\"--disable-${opt2}\"" 6790d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber else 6890d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber eval "toggle_${opt}=\"--enable-${opt2} \"" 6990d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber fi 7090d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber done 7190d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber 7290d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber cat <<EOF 7390d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas HuberUsage: configure [options] 7490d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas HuberOptions: 7590d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber 7690d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas HuberBuild options: 7790d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber --help print this message 7890d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber --log=yes|no|FILE file configure log is written to [config.err] 7990d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber --target=TARGET target platform tuple [generic-gnu] 8090d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber --cpu=CPU optimize for a specific cpu rather than a family 8190d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber ${toggle_extra_warnings} emit harmless warnings (always non-fatal) 8290d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber ${toggle_werror} treat warnings as errors, if possible 8390d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber (not available with all compilers) 8490d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber ${toggle_optimizations} turn on/off compiler optimization flags 8590d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber ${toggle_pic} turn on/off Position Independant Code 8690d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber ${toggle_ccache} turn on/off compiler cache 8790d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber ${toggle_debug} enable/disable debug mode 8890d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber ${toggle_gprof} enable/disable gprof profiling instrumentation 8990d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber ${toggle_gcov} enable/disable gcov coverage instrumentation 9090d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber 9190d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas HuberInstall options: 9290d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber ${toggle_install_docs} control whether docs are installed 9390d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber ${toggle_install_bins} control whether binaries are installed 9490d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber ${toggle_install_libs} control whether libraries are installed 9590d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber ${toggle_install_srcs} control whether sources are installed 9690d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber 9790d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber 9890d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas HuberEOF 9990d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber} 10090d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber 10190d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber 10290d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Hubershow_help_post(){ 10390d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber cat <<EOF 10490d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber 10590d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber 10690d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas HuberNOTES: 10790d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber Object files are built at the place where configure is launched. 10890d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber 10990d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber All boolean options can be negated. The default value is the opposite 11090d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber of that shown above. If the option --disable-foo is listed, then 11190d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber the default value for foo is enabled. 11290d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber 11390d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas HuberSupported targets: 11490d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas HuberEOF 11590d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber show_targets ${all_platforms} 11690d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber echo 11790d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber exit 1 11890d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber} 11990d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber 12090d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber 12190d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Hubershow_targets() { 12290d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber while [ -n "$*" ]; do 123f71323e297a928af368937089d3ed71239786f86Andreas Huber if [ "${1%%-*}" = "${2%%-*}" ]; then 124f71323e297a928af368937089d3ed71239786f86Andreas Huber if [ "${2%%-*}" = "${3%%-*}" ]; then 12590d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber printf " %-24s %-24s %-24s\n" "$1" "$2" "$3" 12690d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber shift; shift; shift 12790d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber else 12890d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber printf " %-24s %-24s\n" "$1" "$2" 12990d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber shift; shift 13090d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber fi 13190d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber else 13290d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber printf " %-24s\n" "$1" 13390d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber shift 13490d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber fi 13590d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber done 13690d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber} 13790d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber 13890d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber 13990d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Hubershow_help() { 14090d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber show_help_pre 14190d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber show_help_post 14290d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber} 14390d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber 14490d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber# 14590d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber# List Processing Functions 14690d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber# 14790d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huberset_all(){ 14890d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber value=$1 14990d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber shift 15090d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber for var in $*; do 15190d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber eval $var=$value 15290d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber done 15390d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber} 15490d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber 15590d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber 15690d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huberis_in(){ 15790d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber value=$1 15890d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber shift 15990d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber for var in $*; do 16090d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber [ $var = $value ] && return 0 16190d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber done 16290d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber return 1 16390d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber} 16490d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber 16590d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber 16690d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huberadd_cflags() { 16790d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber CFLAGS="${CFLAGS} $@" 16890d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber} 16990d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber 17090d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber 17190d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huberadd_ldflags() { 17290d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber LDFLAGS="${LDFLAGS} $@" 17390d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber} 17490d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber 17590d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber 17690d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huberadd_asflags() { 17790d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber ASFLAGS="${ASFLAGS} $@" 17890d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber} 17990d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber 18090d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber 18190d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huberadd_extralibs() { 18290d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber extralibs="${extralibs} $@" 18390d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber} 18490d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber 18590d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber# 18690d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber# Boolean Manipulation Functions 18790d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber# 18890d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huberenable(){ 18990d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber set_all yes $* 19090d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber} 19190d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber 19290d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huberdisable(){ 19390d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber set_all no $* 19490d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber} 19590d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber 19690d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huberenabled(){ 19790d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber eval test "x\$$1" = "xyes" 19890d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber} 19990d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber 20090d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huberdisabled(){ 20190d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber eval test "x\$$1" = "xno" 20290d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber} 20390d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber 20490d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber 20590d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Hubersoft_enable() { 20690d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber for var in $*; do 20790d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber if ! disabled $var; then 20890d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber log_echo " enabling $var" 20990d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber enable $var 21090d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber fi 21190d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber done 21290d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber} 21390d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber 21490d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Hubersoft_disable() { 21590d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber for var in $*; do 21690d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber if ! enabled $var; then 21790d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber log_echo " disabling $var" 21890d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber disable $var 21990d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber fi 22090d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber done 22190d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber} 22290d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber 22390d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber 22490d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber# 22590d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber# Text Processing Functions 22690d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber# 22790d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Hubertoupper(){ 22890d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber echo "$@" | tr abcdefghijklmnopqrstuvwxyz ABCDEFGHIJKLMNOPQRSTUVWXYZ 22990d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber} 23090d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber 23190d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber 23290d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Hubertolower(){ 23390d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber echo "$@" | tr ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyz 23490d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber} 23590d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber 23690d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber 23790d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber# 23890d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber# Temporary File Functions 23990d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber# 24090d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Hubersource_path=${0%/*} 24190d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huberenable source_path_used 24290d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huberif test -z "$source_path" -o "$source_path" = "." ; then 24390d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber source_path="`pwd`" 24490d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber disable source_path_used 24590d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huberfi 24690d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber 24790d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huberif test ! -z "$TMPDIR" ; then 24890d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber TMPDIRx="${TMPDIR}" 24990d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huberelif test ! -z "$TEMPDIR" ; then 25090d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber TMPDIRx="${TEMPDIR}" 25190d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huberelse 25290d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber TMPDIRx="/tmp" 25390d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huberfi 25490d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas HuberTMP_H="${TMPDIRx}/vpx-conf-$$-${RANDOM}.h" 25590d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas HuberTMP_C="${TMPDIRx}/vpx-conf-$$-${RANDOM}.c" 25690d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas HuberTMP_O="${TMPDIRx}/vpx-conf-$$-${RANDOM}.o" 25790d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas HuberTMP_X="${TMPDIRx}/vpx-conf-$$-${RANDOM}.x" 25890d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber 25990d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huberclean_temp_files() { 26090d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber rm -f ${TMP_C} ${TMP_H} ${TMP_O} ${TMP_X} 26190d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber} 26290d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber 26390d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber# 26490d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber# Toolchain Check Functions 26590d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber# 26690d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Hubercheck_cmd() { 26790d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber log "$@" 26890d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber "$@" >>${logfile} 2>&1 26990d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber} 27090d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber 27190d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Hubercheck_cc() { 27290d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber log check_cc "$@" 27390d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber cat >${TMP_C} 27490d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber log_file ${TMP_C} 27590d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber check_cmd ${CC} ${CFLAGS} "$@" -c -o ${TMP_O} ${TMP_C} 27690d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber} 27790d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber 27890d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Hubercheck_cpp() { 27990d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber log check_cpp "$@" 28090d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber cat > ${TMP_C} 28190d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber log_file ${TMP_C} 28290d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber check_cmd ${CC} ${CFLAGS} "$@" -E -o ${TMP_O} ${TMP_C} 28390d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber} 28490d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber 28590d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Hubercheck_ld() { 28690d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber log check_ld "$@" 28790d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber check_cc $@ \ 28890d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber && check_cmd ${LD} ${LDFLAGS} "$@" -o ${TMP_X} ${TMP_O} ${extralibs} 28990d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber} 29090d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber 29190d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Hubercheck_header(){ 29290d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber log check_header "$@" 29390d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber header=$1 29490d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber shift 29590d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber var=`echo $header | sed 's/[^A-Za-z0-9_]/_/g'` 29690d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber disable $var 29790d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber check_cpp "$@" <<EOF && enable $var 29890d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber#include "$header" 29990d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huberint x; 30090d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas HuberEOF 30190d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber} 30290d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber 30390d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber 30490d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Hubercheck_cflags() { 30590d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber log check_cflags "$@" 30690d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber check_cc "$@" <<EOF 30790d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huberint x; 30890d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas HuberEOF 30990d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber} 31090d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber 31190d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Hubercheck_add_cflags() { 31290d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber check_cflags "$@" && add_cflags "$@" 31390d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber} 31490d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber 31590d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Hubercheck_add_asflags() { 31690d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber log add_asflags "$@" 31790d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber add_asflags "$@" 31890d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber} 31990d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber 32090d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Hubercheck_add_ldflags() { 32190d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber log add_ldflags "$@" 32290d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber add_ldflags "$@" 32390d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber} 32490d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber 32590d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huberwrite_common_config_banner() { 32690d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber echo '# This file automatically generated by configure. Do not edit!' > config.mk 32790d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber echo "TOOLCHAIN := ${toolchain}" >> config.mk 32890d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber 32990d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber case ${toolchain} in 33090d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber *-linux-rvct) 33190d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber echo "ALT_LIBC := ${alt_libc}" >> config.mk 33290d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber ;; 33390d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber esac 33490d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber} 33590d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber 33690d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huberwrite_common_config_targets() { 33790d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber for t in ${all_targets}; do 33890d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber if enabled ${t}; then 33990d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber if enabled universal || enabled child; then 34090d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber fwrite config.mk "ALL_TARGETS += ${t}-${toolchain}" 34190d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber else 34290d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber fwrite config.mk "ALL_TARGETS += ${t}" 34390d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber fi 34490d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber fi 34590d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber true; 34690d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber done 34790d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Hubertrue 34890d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber} 34990d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber 35090d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huberwrite_common_target_config_mk() { 35190d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber local CC=${CC} 35290d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber enabled ccache && CC="ccache ${CC}" 35390d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber 35490d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber cat > $1 << EOF 35590d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber# This file automatically generated by configure. Do not edit! 35690d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas HuberSRC_PATH="$source_path" 35790d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas HuberSRC_PATH_BARE=$source_path 35890d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas HuberBUILD_PFX=${BUILD_PFX} 35990d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas HuberTOOLCHAIN=${toolchain} 36090d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas HuberASM_CONVERSION=${asm_conversion_cmd:-${source_path}/build/make/ads2gas.pl} 36190d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber 36290d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas HuberCC=${CC} 36390d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas HuberAR=${AR} 36490d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas HuberLD=${LD} 36590d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas HuberAS=${AS} 36690d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas HuberSTRIP=${STRIP} 36790d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas HuberNM=${NM} 36890d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber 369f71323e297a928af368937089d3ed71239786f86Andreas HuberCFLAGS = ${CFLAGS} 37090d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas HuberARFLAGS = -rus\$(if \$(quiet),c,v) 37190d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas HuberLDFLAGS = ${LDFLAGS} 37290d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas HuberASFLAGS = ${ASFLAGS} 37390d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huberextralibs = ${extralibs} 37490d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas HuberAS_SFX = ${AS_SFX:-.asm} 37590d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas HuberEOF 37690d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber 37790d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber if enabled rvct; then cat >> $1 << EOF 37890d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huberfmt_deps = sed -e 's;^__image.axf;\$(dir \$@)\$(notdir \$<).o \$@;' #hide 37990d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas HuberEOF 38090d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber else cat >> $1 << EOF 381f71323e297a928af368937089d3ed71239786f86Andreas Huberfmt_deps = sed -e 's;^\([a-zA-Z0-9_]*\)\.o;\$(dir \$@)\1\$(suffix \$<).o \$@;' 38290d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas HuberEOF 38390d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber fi 38490d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber 38590d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber print_config_mk ARCH "${1}" ${ARCH_LIST} 38690d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber print_config_mk HAVE "${1}" ${HAVE_LIST} 38790d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber print_config_mk CONFIG "${1}" ${CONFIG_LIST} 38890d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber print_config_mk HAVE "${1}" gnu_strip 38990d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber 39090d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber enabled msvs && echo "CONFIG_VS_VERSION=${vs_version}" >> "${1}" 39190d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber 39290d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber} 39390d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber 39490d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber 39590d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huberwrite_common_target_config_h() { 39690d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber cat > ${TMP_H} << EOF 39790d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber/* This file automatically generated by configure. Do not edit! */ 39890d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber#define RESTRICT ${RESTRICT} 39990d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas HuberEOF 40090d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber print_config_h ARCH "${TMP_H}" ${ARCH_LIST} 40190d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber print_config_h HAVE "${TMP_H}" ${HAVE_LIST} 40290d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber print_config_h CONFIG "${TMP_H}" ${CONFIG_LIST} 40390d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber mkdir -p `dirname "$1"` 40490d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber cmp "$1" ${TMP_H} >/dev/null 2>&1 || mv ${TMP_H} "$1" 40590d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber} 40690d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber 40790d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huberprocess_common_cmdline() { 40890d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber for opt in "$@"; do 40990d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber optval="${opt#*=}" 41090d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber case "$opt" in 41190d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber --child) enable child 41290d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber ;; 41390d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber --log*) 41490d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber logging="$optval" 41590d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber if ! disabled logging ; then 41690d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber enabled logging || logfile="$logging" 41790d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber else 41890d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber logfile=/dev/null 41990d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber fi 42090d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber ;; 42190d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber --target=*) toolchain="${toolchain:-${optval}}" 42290d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber ;; 42390d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber --force-target=*) toolchain="${toolchain:-${optval}}"; enable force_toolchain 42490d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber ;; 42590d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber --cpu) 42690d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber ;; 42790d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber --cpu=*) tune_cpu="$optval" 42890d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber ;; 42990d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber --enable-?*|--disable-?*) 43090d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber eval `echo "$opt" | sed 's/--/action=/;s/-/ option=/;s/-/_/g'` 43190d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber echo "${CMDLINE_SELECT} ${ARCH_EXT_LIST}" | grep "^ *$option\$" >/dev/null || die_unknown $opt 43290d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber $action $option 43390d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber ;; 43490d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber --force-enable-?*|--force-disable-?*) 43590d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber eval `echo "$opt" | sed 's/--force-/action=/;s/-/ option=/;s/-/_/g'` 43690d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber $action $option 43790d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber ;; 43890d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber --libc=*) 43990d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber [ -d "${optval}" ] || die "Not a directory: ${optval}" 44090d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber disable builtin_libc 44190d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber alt_libc="${optval}" 44290d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber ;; 443f71323e297a928af368937089d3ed71239786f86Andreas Huber --prefix=*) 444f71323e297a928af368937089d3ed71239786f86Andreas Huber prefix="${optval}" 445f71323e297a928af368937089d3ed71239786f86Andreas Huber ;; 446f71323e297a928af368937089d3ed71239786f86Andreas Huber --libdir=*) 447f71323e297a928af368937089d3ed71239786f86Andreas Huber libdir="${optval}" 448f71323e297a928af368937089d3ed71239786f86Andreas Huber ;; 449f71323e297a928af368937089d3ed71239786f86Andreas Huber --libc|--prefix|--libdir) 45090d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber die "Option ${opt} requires argument" 45190d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber ;; 45290d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber --help|-h) show_help 45390d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber ;; 45490d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber *) die_unknown $opt 45590d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber ;; 45690d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber esac 45790d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber done 45890d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber} 45990d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber 46090d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huberprocess_cmdline() { 46190d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber for opt do 46290d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber optval="${opt#*=}" 46390d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber case "$opt" in 46490d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber *) process_common_cmdline $opt 46590d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber ;; 46690d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber esac 46790d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber done 46890d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber} 46990d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber 470f71323e297a928af368937089d3ed71239786f86Andreas Huber 471f71323e297a928af368937089d3ed71239786f86Andreas Huberpost_process_common_cmdline() { 472f71323e297a928af368937089d3ed71239786f86Andreas Huber prefix="${prefix:-/usr/local}" 473f71323e297a928af368937089d3ed71239786f86Andreas Huber prefix="${prefix%/}" 474f71323e297a928af368937089d3ed71239786f86Andreas Huber libdir="${libdir:-${prefix}/lib}" 475f71323e297a928af368937089d3ed71239786f86Andreas Huber libdir="${libdir%/}" 476f71323e297a928af368937089d3ed71239786f86Andreas Huber if [ "${libdir#${prefix}}" = "${libdir}" ]; then 477f71323e297a928af368937089d3ed71239786f86Andreas Huber die "Libdir ${libdir} must be a subdirectory of ${prefix}" 478f71323e297a928af368937089d3ed71239786f86Andreas Huber fi 479f71323e297a928af368937089d3ed71239786f86Andreas Huber} 480f71323e297a928af368937089d3ed71239786f86Andreas Huber 481f71323e297a928af368937089d3ed71239786f86Andreas Huber 48290d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huberpost_process_cmdline() { 48390d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber true; 48490d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber} 48590d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber 48690d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Hubersetup_gnu_toolchain() { 48790d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber CC=${CC:-${CROSS}gcc} 48890d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber AR=${AR:-${CROSS}ar} 48990d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber LD=${LD:-${CROSS}${link_with_cc:-ld}} 49090d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber AS=${AS:-${CROSS}as} 49190d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber STRIP=${STRIP:-${CROSS}strip} 49290d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber NM=${NM:-${CROSS}nm} 49390d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber AS_SFX=.s 49490d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber} 49590d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber 49690d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huberprocess_common_toolchain() { 497f71323e297a928af368937089d3ed71239786f86Andreas Huber if [ -z "$toolchain" ]; then 498f71323e297a928af368937089d3ed71239786f86Andreas Huber gcctarget="$(gcc -dumpmachine 2> /dev/null)" 499f71323e297a928af368937089d3ed71239786f86Andreas Huber 500f71323e297a928af368937089d3ed71239786f86Andreas Huber # detect tgt_isa 501f71323e297a928af368937089d3ed71239786f86Andreas Huber case "$gcctarget" in 502f71323e297a928af368937089d3ed71239786f86Andreas Huber *x86_64*|*amd64*) 503f71323e297a928af368937089d3ed71239786f86Andreas Huber tgt_isa=x86_64 504f71323e297a928af368937089d3ed71239786f86Andreas Huber ;; 505f71323e297a928af368937089d3ed71239786f86Andreas Huber *i[3456]86*) 506f71323e297a928af368937089d3ed71239786f86Andreas Huber tgt_isa=x86 507f71323e297a928af368937089d3ed71239786f86Andreas Huber ;; 508f71323e297a928af368937089d3ed71239786f86Andreas Huber esac 509f71323e297a928af368937089d3ed71239786f86Andreas Huber 510f71323e297a928af368937089d3ed71239786f86Andreas Huber # detect tgt_os 511f71323e297a928af368937089d3ed71239786f86Andreas Huber case "$gcctarget" in 512f71323e297a928af368937089d3ed71239786f86Andreas Huber *darwin8*) 513f71323e297a928af368937089d3ed71239786f86Andreas Huber tgt_isa=universal 514f71323e297a928af368937089d3ed71239786f86Andreas Huber tgt_os=darwin8 515f71323e297a928af368937089d3ed71239786f86Andreas Huber ;; 516f71323e297a928af368937089d3ed71239786f86Andreas Huber *darwin9*) 517f71323e297a928af368937089d3ed71239786f86Andreas Huber tgt_isa=universal 518f71323e297a928af368937089d3ed71239786f86Andreas Huber tgt_os=darwin9 519f71323e297a928af368937089d3ed71239786f86Andreas Huber ;; 520f71323e297a928af368937089d3ed71239786f86Andreas Huber *mingw32*|*cygwin*) 521f71323e297a928af368937089d3ed71239786f86Andreas Huber [ -z "$tgt_isa" ] && tgt_isa=x86 522f71323e297a928af368937089d3ed71239786f86Andreas Huber tgt_os=win32 523f71323e297a928af368937089d3ed71239786f86Andreas Huber ;; 524f71323e297a928af368937089d3ed71239786f86Andreas Huber *linux*|*bsd*) 525f71323e297a928af368937089d3ed71239786f86Andreas Huber tgt_os=linux 526f71323e297a928af368937089d3ed71239786f86Andreas Huber ;; 527f71323e297a928af368937089d3ed71239786f86Andreas Huber esac 528f71323e297a928af368937089d3ed71239786f86Andreas Huber 529f71323e297a928af368937089d3ed71239786f86Andreas Huber if [ -n "$tgt_isa" ] && [ -n "$tgt_os" ]; then 530f71323e297a928af368937089d3ed71239786f86Andreas Huber toolchain=${tgt_isa}-${tgt_os}-gcc 531f71323e297a928af368937089d3ed71239786f86Andreas Huber fi 532f71323e297a928af368937089d3ed71239786f86Andreas Huber fi 533f71323e297a928af368937089d3ed71239786f86Andreas Huber 53490d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber toolchain=${toolchain:-generic-gnu} 53590d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber 53690d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber is_in ${toolchain} ${all_platforms} || enabled force_toolchain \ 53790d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber || die "Unrecognized toolchain '${toolchain}'" 53890d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber 53990d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber enabled child || log_echo "Configuring for target '${toolchain}'" 54090d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber 54190d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber # 54290d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber # Set up toolchain variables 54390d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber # 54490d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber tgt_isa=$(echo ${toolchain} | awk 'BEGIN{FS="-"}{print $1}') 54590d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber tgt_os=$(echo ${toolchain} | awk 'BEGIN{FS="-"}{print $2}') 54690d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber tgt_cc=$(echo ${toolchain} | awk 'BEGIN{FS="-"}{print $3}') 54790d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber 54890d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber # Mark the specific ISA requested as enabled 54990d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber soft_enable ${tgt_isa} 55090d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber enable ${tgt_os} 55190d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber enable ${tgt_cc} 55290d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber 55390d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber # Enable the architecture family 55490d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber case ${tgt_isa} in 55590d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber arm*|iwmmxt*) enable arm;; 55690d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber mips*) enable mips;; 55790d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber esac 55890d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber 55990d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber # Handle darwin variants 56090d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber case ${toolchain} in 56190d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber *-darwin8-gcc) 56290d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber add_cflags "-isysroot /Developer/SDKs/MacOSX10.4u.sdk" 56390d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber add_cflags "-mmacosx-version-min=10.4" 56490d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber add_ldflags "-isysroot /Developer/SDKs/MacOSX10.4u.sdk" 56590d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber add_ldflags "-mmacosx-version-min=10.4" 56690d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber ;; 56790d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber *-darwin9-gcc) 56890d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber add_cflags "-isysroot /Developer/SDKs/MacOSX10.5.sdk" 56990d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber add_cflags "-mmacosx-version-min=10.5" 57090d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber add_ldflags "-isysroot /Developer/SDKs/MacOSX10.5.sdk" 57190d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber add_ldflags "-mmacosx-version-min=10.5" 57290d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber ;; 57390d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber esac 57490d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber 57590d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber # Process ARM architecture variants 57690d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber case ${toolchain} in 57790d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber arm*|iwmmxt*) 57890d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber # on arm, isa versions are supersets 57990d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber enabled armv7a && soft_enable armv7 ### DEBUG 58090d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber enabled armv7 && soft_enable armv6 58190d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber enabled armv6 && soft_enable armv5te 58290d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber enabled armv6 && soft_enable fast_unaligned 58390d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber enabled iwmmxt2 && soft_enable iwmmxt 58490d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber enabled iwmmxt && soft_enable armv5te 58590d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber 58690d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber asm_conversion_cmd="cat" 58790d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber 58890d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber case ${tgt_cc} in 58990d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber gcc) 59090d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber if enabled iwmmxt || enabled iwmmxt2 59190d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber then 59290d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber CROSS=${CROSS:-arm-iwmmxt-linux-gnueabi-} 59390d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber elif enabled symbian; then 59490d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber CROSS=${CROSS:-arm-none-symbianelf-} 59590d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber else 59690d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber CROSS=${CROSS:-arm-none-linux-gnueabi-} 59790d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber fi 59890d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber link_with_cc=gcc 59990d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber setup_gnu_toolchain 60090d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber arch_int=${tgt_isa##armv} 60190d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber arch_int=${arch_int%%te} 60290d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber check_add_asflags --defsym ARCHITECTURE=${arch_int} 60390d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber tune_cflags="-mtune=" 60490d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber if enabled iwmmxt || enabled iwmmxt2 60590d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber then 60690d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber check_add_asflags -mcpu=${tgt_isa} 60790d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber elif enabled armv7 60890d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber then 60990d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber check_add_cflags -march=armv7-a -mcpu=cortex-a8 -mfpu=neon -mfloat-abi=softfp #-ftree-vectorize 61090d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber check_add_asflags -mcpu=cortex-a8 -mfpu=neon -mfloat-abi=softfp #-march=armv7-a 61190d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber else 61290d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber check_add_cflags -march=${tgt_isa} 61390d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber check_add_asflags -march=${tgt_isa} 61490d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber fi 61590d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber 61690d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber asm_conversion_cmd="${source_path}/build/make/ads2gas.pl" 61790d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber ;; 61890d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber rvct) 61990d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber CC=armcc 62090d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber AR=armar 62190d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber AS=armasm 62290d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber LD=${source_path}/build/make/armlink_adapter.sh 62390d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber STRIP=arm-none-linux-gnueabi-strip 62490d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber NM=arm-none-linux-gnueabi-nm 62590d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber tune_cflags="--cpu=" 62690d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber tune_asflags="--cpu=" 62790d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber if [ -z "${tune_cpu}" ]; then 62890d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber if enabled armv7 62990d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber then 63090d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber check_add_cflags --cpu=Cortex-A8 --fpu=softvfp+vfpv3 63190d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber check_add_asflags --cpu=Cortex-A8 --fpu=none 63290d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber else 63390d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber check_add_cflags --cpu=${tgt_isa##armv} 63490d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber check_add_asflags --cpu=${tgt_isa##armv} 63590d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber fi 63690d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber fi 63790d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber arch_int=${tgt_isa##armv} 63890d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber arch_int=${arch_int%%te} 63990d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber check_add_asflags --pd "\"ARCHITECTURE SETA ${arch_int}\"" 64090d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber ;; 64190d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber esac 64290d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber 64390d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber case ${tgt_os} in 64490d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber darwin*) 64590d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber SDK_PATH=/Developer/Platforms/iPhoneOS.platform/Developer 64690d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber TOOLCHAIN_PATH=${SDK_PATH}/usr/bin 64790d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber CC=${TOOLCHAIN_PATH}/gcc 64890d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber AR=${TOOLCHAIN_PATH}/ar 64990d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber LD=${TOOLCHAIN_PATH}/arm-apple-darwin9-gcc-4.2.1 65090d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber AS=${TOOLCHAIN_PATH}/as 65190d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber STRIP=${TOOLCHAIN_PATH}/strip 65290d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber NM=${TOOLCHAIN_PATH}/nm 65390d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber AS_SFX=.s 65490d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber 65590d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber # ASFLAGS is written here instead of using check_add_asflags 65690d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber # because we need to overwrite all of ASFLAGS and purge the 65790d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber # options that were put in above 65890d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber ASFLAGS="-version -arch ${tgt_isa} -g" 65990d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber 66090d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber add_cflags -arch ${tgt_isa} 66190d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber add_ldflags -arch_only ${tgt_isa} 66290d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber 66390d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber add_cflags "-isysroot /Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS3.1.sdk" 66490d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber 66590d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber # This should be overridable 66690d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber alt_libc=${SDK_PATH}/SDKs/iPhoneOS3.1.sdk 66790d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber 66890d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber # Add the paths for the alternate libc 66990d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber# for d in usr/include usr/include/gcc/darwin/4.0/; do 67090d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber for d in usr/include usr/include/gcc/darwin/4.0/ usr/lib/gcc/arm-apple-darwin9/4.0.1/include/; do 67190d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber try_dir="${alt_libc}/${d}" 67290d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber [ -d "${try_dir}" ] && add_cflags -I"${try_dir}" 67390d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber done 67490d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber 67590d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber for d in lib usr/lib; do 67690d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber try_dir="${alt_libc}/${d}" 67790d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber [ -d "${try_dir}" ] && add_ldflags -L"${try_dir}" 67890d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber done 67990d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber 68090d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber asm_conversion_cmd="${source_path}/build/make/ads2gas_apple.pl" 68190d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber ;; 68290d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber 68390d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber linux*) 68490d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber enable linux 68590d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber if enabled rvct; then 68690d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber # Compiling with RVCT requires an alternate libc (glibc) when 68790d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber # targetting linux. 68890d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber disabled builtin_libc \ 68990d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber || die "Must supply --libc when targetting *-linux-rvct" 69090d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber 69190d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber # Set up compiler 69290d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber add_cflags --gnu 69390d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber add_cflags --enum_is_int 69490d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber add_cflags --library_interface=aeabi_glibc 69590d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber add_cflags --no_hide_all 69690d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber add_cflags --wchar32 69790d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber add_cflags --dwarf2 69890d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber add_cflags --gnu 69990d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber 70090d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber # Set up linker 70190d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber add_ldflags --sysv --no_startup --no_ref_cpp_init 70290d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber add_ldflags --entry=_start 70390d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber add_ldflags --keep '"*(.init)"' --keep '"*(.fini)"' 70490d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber add_ldflags --keep '"*(.init_array)"' --keep '"*(.fini_array)"' 70590d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber add_ldflags --dynamiclinker=/lib/ld-linux.so.3 70690d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber add_extralibs libc.so.6 -lc_nonshared crt1.o crti.o crtn.o 70790d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber 70890d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber # Add the paths for the alternate libc 70990d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber for d in usr/include; do 71090d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber try_dir="${alt_libc}/${d}" 71190d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber [ -d "${try_dir}" ] && add_cflags -J"${try_dir}" 71290d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber done 71390d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber add_cflags -J"${RVCT31INC}" 71490d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber for d in lib usr/lib; do 71590d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber try_dir="${alt_libc}/${d}" 71690d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber [ -d "${try_dir}" ] && add_ldflags -L"${try_dir}" 71790d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber done 71890d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber 71990d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber 72090d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber # glibc has some struct members named __align, which is a 72190d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber # storage modifier in RVCT. If we need to use this modifier, 72290d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber # we'll have to #undef it in our code. Note that this must 72390d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber # happen AFTER all libc inclues. 72490d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber add_cflags -D__align=x_align_x 72590d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber fi 72690d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber ;; 72790d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber 72890d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber symbian*) 72990d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber enable symbian 73090d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber # Add the paths for the alternate libc 73190d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber for d in include/libc; do 73290d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber try_dir="${alt_libc}/${d}" 73390d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber [ -d "${try_dir}" ] && add_cflags -I"${try_dir}" 73490d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber done 73590d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber for d in release/armv5/urel; do 73690d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber try_dir="${alt_libc}/${d}" 73790d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber [ -d "${try_dir}" ] && add_ldflags -L"${try_dir}" 73890d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber done 73990d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber add_cflags -DIMPORT_C= 74090d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber 74190d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber esac 74290d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber ;; 74390d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber mips*) 74490d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber CROSS=${CROSS:-mipsel-linux-uclibc-} 74590d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber link_with_cc=gcc 74690d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber setup_gnu_toolchain 74790d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber tune_cflags="-mtune=" 74890d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber check_add_cflags -march=${tgt_isa} 74990d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber check_add_asflags -march=${tgt_isa} 75090d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber check_add_asflags -KPIC 75190d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber ;; 75290d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber ppc*) 75390d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber enable ppc 75490d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber bits=${tgt_isa##ppc} 75590d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber link_with_cc=gcc 75690d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber setup_gnu_toolchain 75790d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber add_asflags -force_cpusubtype_ALL -I"\$(dir \$<)darwin" 75890d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber add_cflags -maltivec -faltivec 75990d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber soft_enable altivec 76090d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber 76190d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber case "$tgt_os" in 76290d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber linux*) 76390d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber add_asflags -maltivec -mregnames -I"\$(dir \$<)linux" 76490d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber ;; 76590d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber darwin*) 76690d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber darwin_arch="-arch ppc" 76790d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber enabled ppc64 && darwin_arch="${darwin_arch}64" 76890d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber add_cflags ${darwin_arch} -m${bits} -fasm-blocks 76990d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber add_asflags ${darwin_arch} -force_cpusubtype_ALL -I"\$(dir \$<)darwin" 77090d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber add_ldflags ${darwin_arch} -m${bits} 77190d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber ;; 77290d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber esac 77390d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber ;; 77490d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber x86*) 77590d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber bits=32 77690d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber enabled x86_64 && bits=64 77790d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber soft_enable runtime_cpu_detect 77890d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber soft_enable mmx 77990d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber soft_enable sse 78090d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber soft_enable sse2 78190d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber soft_enable sse3 78290d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber soft_enable ssse3 78390d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber 78490d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber case ${tgt_os} in 785f71323e297a928af368937089d3ed71239786f86Andreas Huber win*) 786f71323e297a928af368937089d3ed71239786f86Andreas Huber enabled gcc && add_cflags -fno-common 787f71323e297a928af368937089d3ed71239786f86Andreas Huber ;; 78890d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber solaris*) 78990d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber CC=${CC:-${CROSS}gcc} 79090d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber LD=${LD:-${CROSS}gcc} 79190d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber CROSS=${CROSS:-g} 79290d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber ;; 79390d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber esac 79490d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber 79590d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber case ${tgt_cc} in 79690d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber icc*) 79790d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber CC=${CC:-icc} 79890d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber LD=${LD:-icc} 79990d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber setup_gnu_toolchain 80090d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber add_cflags -use-msasm -use-asm 80190d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber add_ldflags -i-static 802f71323e297a928af368937089d3ed71239786f86Andreas Huber enabled x86_64 && add_cflags -ipo -no-prec-div -static -xSSE3 -axSSE3 803f71323e297a928af368937089d3ed71239786f86Andreas Huber enabled x86_64 && AR=xiar 804f71323e297a928af368937089d3ed71239786f86Andreas Huber case ${tune_cpu} in 805f71323e297a928af368937089d3ed71239786f86Andreas Huber atom*) 806f71323e297a928af368937089d3ed71239786f86Andreas Huber tune_cflags="-x" 807f71323e297a928af368937089d3ed71239786f86Andreas Huber tune_cpu="SSE3_ATOM" 808f71323e297a928af368937089d3ed71239786f86Andreas Huber ;; 809f71323e297a928af368937089d3ed71239786f86Andreas Huber *) 810f71323e297a928af368937089d3ed71239786f86Andreas Huber tune_cflags="-march=" 811f71323e297a928af368937089d3ed71239786f86Andreas Huber ;; 812f71323e297a928af368937089d3ed71239786f86Andreas Huber esac 81390d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber ;; 81490d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber gcc*) 81590d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber add_cflags -m${bits} 81690d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber add_ldflags -m${bits} 81790d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber link_with_cc=gcc 818f71323e297a928af368937089d3ed71239786f86Andreas Huber tune_cflags="-march=" 81990d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber setup_gnu_toolchain 82090d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber ;; 82190d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber esac 82290d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber 82390d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber AS=yasm 82490d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber AS_SFX=.asm 82590d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber case ${tgt_os} in 82690d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber win*) 82790d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber add_asflags -f win${bits} 82890d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber enabled debug && add_asflags -g dwarf2 82990d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber ;; 83090d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber linux*|solaris*) 83190d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber add_asflags -f elf${bits} 83290d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber enabled debug && add_asflags -g dwarf2 83390d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber ;; 83490d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber darwin*) 83590d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber add_asflags -f macho${bits} 83690d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber enabled x86 && darwin_arch="-arch i386" || darwin_arch="-arch x86_64" 83790d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber add_cflags ${darwin_arch} 83890d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber add_ldflags ${darwin_arch} 83990d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber # -mdynamic-no-pic is still a bit of voodoo -- it was required at 84090d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber # one time, but does not seem to be now, and it breaks some of the 84190d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber # code that still relies on inline assembly. 84290d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber # enabled icc && ! enabled pic && add_cflags -fno-pic -mdynamic-no-pic 84390d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber enabled icc && ! enabled pic && add_cflags -fno-pic 84490d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber ;; 84590d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber *) log "Warning: Unknown os $tgt_os while setting up yasm flags" 84690d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber ;; 84790d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber esac 84890d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber ;; 84990d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber universal*|*-gcc|generic-gnu) 85090d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber link_with_cc=gcc 851f71323e297a928af368937089d3ed71239786f86Andreas Huber enable gcc 85290d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber setup_gnu_toolchain 85390d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber ;; 85490d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber esac 85590d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber 85690d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber # Try to enable CPU specific tuning 85790d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber if [ -n "${tune_cpu}" ]; then 85890d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber if [ -n "${tune_cflags}" ]; then 85990d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber check_add_cflags ${tune_cflags}${tune_cpu} || \ 86090d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber die "Requested CPU '${tune_cpu}' not supported by compiler" 86190d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber fi 86290d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber if [ -n "${tune_asflags}" ]; then 86390d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber check_add_asflags ${tune_asflags}${tune_cpu} || \ 86490d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber die "Requested CPU '${tune_cpu}' not supported by assembler" 86590d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber fi 86690d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber if [ -z "${tune_cflags}${tune_asflags}" ]; then 86790d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber log_echo "Warning: CPU tuning not supported by this toolchain" 86890d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber fi 86990d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber fi 87090d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber 87190d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber enabled debug && check_add_cflags -g && check_add_ldflags -g 87290d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber enabled gprof && check_add_cflags -pg && check_add_ldflags -pg 87390d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber enabled gcov && 87490d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber check_add_cflags -fprofile-arcs -ftest-coverage && 87590d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber check_add_ldflags -fprofile-arcs -ftest-coverage 87690d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber enabled optimizations && check_add_cflags -O3 87790d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber if enabled rvct; then 87890d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber enabled optimizations && check_add_cflags -Otime 87990d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber fi 88090d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber 88190d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber # Position Independant Code (PIC) support, for building relocatable 88290d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber # shared objects 88390d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber enabled gcc && enabled pic && check_add_cflags -fPIC 88490d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber 88590d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber # Check for strip utility variant 88690d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber ${STRIP} -V 2>/dev/null | grep GNU >/dev/null && enable gnu_strip 88790d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber 88890d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber # Try to determine target endianness 88990d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber check_cc <<EOF 89090d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber unsigned int e = 'O'<<24 | '2'<<16 | 'B'<<8 | 'E'; 89190d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas HuberEOF 89290d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber [ -f "${TMP_O}" ] && od -A n -t x1 "${TMP_O}" | tr -d '\n' | 89390d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber grep '4f *32 *42 *45' >/dev/null 2>&1 && enable big_endian 89490d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber 89590d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber # Almost every platform uses pthreads. 89690d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber if enabled multithread; then 89790d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber case ${toolchain} in 89890d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber *-win*);; 89990d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber *) check_header pthread.h && add_extralibs -lpthread 90090d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber esac 90190d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber fi 90290d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber 90390d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber # glibc needs these 90490d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber if enabled linux; then 905f71323e297a928af368937089d3ed71239786f86Andreas Huber add_cflags -D_LARGEFILE_SOURCE 906f71323e297a928af368937089d3ed71239786f86Andreas Huber add_cflags -D_FILE_OFFSET_BITS=64 90790d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber fi 90890d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber} 90990d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber 91090d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huberprocess_toolchain() { 91190d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber process_common_toolchain 91290d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber} 91390d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber 91490d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huberprint_config_mk() { 915f71323e297a928af368937089d3ed71239786f86Andreas Huber local prefix=$1 916f71323e297a928af368937089d3ed71239786f86Andreas Huber local makefile=$2 91790d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber shift 2 91890d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber for cfg; do 91990d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber upname="`toupper $cfg`" 92090d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber if enabled $cfg; then 92190d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber echo "${prefix}_${upname}=yes" >> $makefile 92290d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber fi 92390d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber done 92490d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber} 92590d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber 92690d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huberprint_config_h() { 927f71323e297a928af368937089d3ed71239786f86Andreas Huber local prefix=$1 928f71323e297a928af368937089d3ed71239786f86Andreas Huber local header=$2 92990d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber shift 2 93090d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber for cfg; do 93190d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber upname="`toupper $cfg`" 93290d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber if enabled $cfg; then 93390d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber echo "#define ${prefix}_${upname} 1" >> $header 93490d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber else 93590d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber echo "#define ${prefix}_${upname} 0" >> $header 93690d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber fi 93790d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber done 93890d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber} 93990d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber 94090d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huberprocess_targets() { 94190d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber true; 94290d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber} 94390d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber 94490d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huberprocess_detect() { 94590d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber true; 94690d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber} 94790d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber 94890d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huberenable logging 94990d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huberlogfile="config.err" 95090d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huberself=$0 95190d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huberprocess() { 95290d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber cmdline_args="$@" 95390d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber process_cmdline "$@" 95490d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber if enabled child; then 95590d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber echo "# ${self} $@" >> ${logfile} 95690d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber else 95790d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber echo "# ${self} $@" > ${logfile} 95890d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber fi 959f71323e297a928af368937089d3ed71239786f86Andreas Huber post_process_common_cmdline 96090d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber post_process_cmdline 96190d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber process_toolchain 96290d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber process_detect 96390d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber process_targets 96490d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber 96590d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber OOT_INSTALLS="${OOT_INSTALLS}" 96690d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber if enabled source_path_used; then 96790d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber # Prepare the PWD for building. 96890d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber for f in ${OOT_INSTALLS}; do 96990d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber install -D ${source_path}/$f $f 97090d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber done 97190d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber fi 97290d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber cp ${source_path}/build/make/Makefile . 97390d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber 97490d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber clean_temp_files 97590d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber true 97690d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber} 977