2010-05-18 17:58:33 +02:00
|
|
|
#!/bin/bash
|
|
|
|
##
|
2010-05-28 16:11:58 +02:00
|
|
|
## configure.sh
|
2010-05-18 17:58:33 +02:00
|
|
|
##
|
2010-05-28 16:11:58 +02:00
|
|
|
## This script is sourced by the main configure script and contains
|
|
|
|
## utility functions and other common bits that aren't strictly libvpx
|
|
|
|
## related.
|
|
|
|
##
|
|
|
|
## This build system is based in part on the FFmpeg configure script.
|
2010-05-18 17:58:33 +02:00
|
|
|
##
|
|
|
|
|
|
|
|
|
|
|
|
#
|
|
|
|
# Logging / Output Functions
|
|
|
|
#
|
|
|
|
die_unknown(){
|
|
|
|
echo "Unknown option \"$1\"."
|
|
|
|
echo "See $0 --help for available options."
|
|
|
|
clean_temp_files
|
|
|
|
exit 1
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
die() {
|
|
|
|
echo "$@"
|
|
|
|
echo
|
|
|
|
echo "Configuration failed. This could reflect a misconfiguration of your"
|
|
|
|
echo "toolchains, improper options selected, or another problem. If you"
|
|
|
|
echo "don't see any useful error messages above, the next step is to look"
|
|
|
|
echo "at the configure error log file ($logfile) to determine what"
|
|
|
|
echo "configure was trying to do when it died."
|
|
|
|
clean_temp_files
|
|
|
|
exit 1
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
log(){
|
|
|
|
echo "$@" >>$logfile
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
log_file(){
|
|
|
|
log BEGIN $1
|
|
|
|
pr -n -t $1 >>$logfile
|
|
|
|
log END $1
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
log_echo() {
|
|
|
|
echo "$@"
|
|
|
|
log "$@"
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
fwrite () {
|
|
|
|
outfile=$1
|
|
|
|
shift
|
|
|
|
echo "$@" >> ${outfile}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
show_help_pre(){
|
|
|
|
for opt in ${CMDLINE_SELECT}; do
|
|
|
|
opt2=`echo $opt | sed -e 's;_;-;g'`
|
|
|
|
if enabled $opt; then
|
|
|
|
eval "toggle_${opt}=\"--disable-${opt2}\""
|
|
|
|
else
|
|
|
|
eval "toggle_${opt}=\"--enable-${opt2} \""
|
|
|
|
fi
|
|
|
|
done
|
|
|
|
|
|
|
|
cat <<EOF
|
|
|
|
Usage: configure [options]
|
|
|
|
Options:
|
|
|
|
|
|
|
|
Build options:
|
|
|
|
--help print this message
|
|
|
|
--log=yes|no|FILE file configure log is written to [config.err]
|
|
|
|
--target=TARGET target platform tuple [generic-gnu]
|
|
|
|
--cpu=CPU optimize for a specific cpu rather than a family
|
|
|
|
${toggle_extra_warnings} emit harmless warnings (always non-fatal)
|
|
|
|
${toggle_werror} treat warnings as errors, if possible
|
|
|
|
(not available with all compilers)
|
|
|
|
${toggle_optimizations} turn on/off compiler optimization flags
|
|
|
|
${toggle_pic} turn on/off Position Independant Code
|
|
|
|
${toggle_ccache} turn on/off compiler cache
|
|
|
|
${toggle_debug} enable/disable debug mode
|
|
|
|
${toggle_gprof} enable/disable gprof profiling instrumentation
|
|
|
|
${toggle_gcov} enable/disable gcov coverage instrumentation
|
|
|
|
|
|
|
|
Install options:
|
|
|
|
${toggle_install_docs} control whether docs are installed
|
|
|
|
${toggle_install_bins} control whether binaries are installed
|
|
|
|
${toggle_install_libs} control whether libraries are installed
|
|
|
|
${toggle_install_srcs} control whether sources are installed
|
|
|
|
|
|
|
|
|
|
|
|
EOF
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
show_help_post(){
|
|
|
|
cat <<EOF
|
|
|
|
|
|
|
|
|
|
|
|
NOTES:
|
|
|
|
Object files are built at the place where configure is launched.
|
|
|
|
|
|
|
|
All boolean options can be negated. The default value is the opposite
|
|
|
|
of that shown above. If the option --disable-foo is listed, then
|
|
|
|
the default value for foo is enabled.
|
|
|
|
|
|
|
|
Supported targets:
|
|
|
|
EOF
|
|
|
|
show_targets ${all_platforms}
|
|
|
|
echo
|
|
|
|
exit 1
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
show_targets() {
|
|
|
|
while [ -n "$*" ]; do
|
2010-06-05 18:19:40 +02:00
|
|
|
if [ "${1%%-*}" = "${2%%-*}" ]; then
|
|
|
|
if [ "${2%%-*}" = "${3%%-*}" ]; then
|
2010-05-18 17:58:33 +02:00
|
|
|
printf " %-24s %-24s %-24s\n" "$1" "$2" "$3"
|
|
|
|
shift; shift; shift
|
|
|
|
else
|
|
|
|
printf " %-24s %-24s\n" "$1" "$2"
|
|
|
|
shift; shift
|
|
|
|
fi
|
|
|
|
else
|
|
|
|
printf " %-24s\n" "$1"
|
|
|
|
shift
|
|
|
|
fi
|
|
|
|
done
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
show_help() {
|
|
|
|
show_help_pre
|
|
|
|
show_help_post
|
|
|
|
}
|
|
|
|
|
|
|
|
#
|
|
|
|
# List Processing Functions
|
|
|
|
#
|
|
|
|
set_all(){
|
|
|
|
value=$1
|
|
|
|
shift
|
|
|
|
for var in $*; do
|
|
|
|
eval $var=$value
|
|
|
|
done
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
is_in(){
|
|
|
|
value=$1
|
|
|
|
shift
|
|
|
|
for var in $*; do
|
|
|
|
[ $var = $value ] && return 0
|
|
|
|
done
|
|
|
|
return 1
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
add_cflags() {
|
|
|
|
CFLAGS="${CFLAGS} $@"
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
add_ldflags() {
|
|
|
|
LDFLAGS="${LDFLAGS} $@"
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
add_asflags() {
|
|
|
|
ASFLAGS="${ASFLAGS} $@"
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
add_extralibs() {
|
|
|
|
extralibs="${extralibs} $@"
|
|
|
|
}
|
|
|
|
|
|
|
|
#
|
|
|
|
# Boolean Manipulation Functions
|
|
|
|
#
|
|
|
|
enable(){
|
|
|
|
set_all yes $*
|
|
|
|
}
|
|
|
|
|
|
|
|
disable(){
|
|
|
|
set_all no $*
|
|
|
|
}
|
|
|
|
|
|
|
|
enabled(){
|
|
|
|
eval test "x\$$1" = "xyes"
|
|
|
|
}
|
|
|
|
|
|
|
|
disabled(){
|
|
|
|
eval test "x\$$1" = "xno"
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
soft_enable() {
|
|
|
|
for var in $*; do
|
|
|
|
if ! disabled $var; then
|
|
|
|
log_echo " enabling $var"
|
|
|
|
enable $var
|
|
|
|
fi
|
|
|
|
done
|
|
|
|
}
|
|
|
|
|
|
|
|
soft_disable() {
|
|
|
|
for var in $*; do
|
|
|
|
if ! enabled $var; then
|
|
|
|
log_echo " disabling $var"
|
|
|
|
disable $var
|
|
|
|
fi
|
|
|
|
done
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
#
|
|
|
|
# Text Processing Functions
|
|
|
|
#
|
|
|
|
toupper(){
|
|
|
|
echo "$@" | tr abcdefghijklmnopqrstuvwxyz ABCDEFGHIJKLMNOPQRSTUVWXYZ
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
tolower(){
|
|
|
|
echo "$@" | tr ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyz
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
#
|
|
|
|
# Temporary File Functions
|
|
|
|
#
|
|
|
|
source_path=${0%/*}
|
|
|
|
enable source_path_used
|
|
|
|
if test -z "$source_path" -o "$source_path" = "." ; then
|
|
|
|
source_path="`pwd`"
|
|
|
|
disable source_path_used
|
|
|
|
fi
|
|
|
|
|
|
|
|
if test ! -z "$TMPDIR" ; then
|
|
|
|
TMPDIRx="${TMPDIR}"
|
|
|
|
elif test ! -z "$TEMPDIR" ; then
|
|
|
|
TMPDIRx="${TEMPDIR}"
|
|
|
|
else
|
|
|
|
TMPDIRx="/tmp"
|
|
|
|
fi
|
|
|
|
TMP_H="${TMPDIRx}/vpx-conf-$$-${RANDOM}.h"
|
|
|
|
TMP_C="${TMPDIRx}/vpx-conf-$$-${RANDOM}.c"
|
|
|
|
TMP_O="${TMPDIRx}/vpx-conf-$$-${RANDOM}.o"
|
|
|
|
TMP_X="${TMPDIRx}/vpx-conf-$$-${RANDOM}.x"
|
2010-10-05 19:15:08 +02:00
|
|
|
TMP_ASM="${TMPDIRx}/vpx-conf-$$-${RANDOM}.asm"
|
2010-05-18 17:58:33 +02:00
|
|
|
|
|
|
|
clean_temp_files() {
|
2010-10-05 19:15:08 +02:00
|
|
|
rm -f ${TMP_C} ${TMP_H} ${TMP_O} ${TMP_X} ${TMP_ASM}
|
2010-05-18 17:58:33 +02:00
|
|
|
}
|
|
|
|
|
|
|
|
#
|
|
|
|
# Toolchain Check Functions
|
|
|
|
#
|
|
|
|
check_cmd() {
|
|
|
|
log "$@"
|
|
|
|
"$@" >>${logfile} 2>&1
|
|
|
|
}
|
|
|
|
|
|
|
|
check_cc() {
|
|
|
|
log check_cc "$@"
|
|
|
|
cat >${TMP_C}
|
|
|
|
log_file ${TMP_C}
|
|
|
|
check_cmd ${CC} ${CFLAGS} "$@" -c -o ${TMP_O} ${TMP_C}
|
|
|
|
}
|
|
|
|
|
|
|
|
check_cpp() {
|
|
|
|
log check_cpp "$@"
|
|
|
|
cat > ${TMP_C}
|
|
|
|
log_file ${TMP_C}
|
|
|
|
check_cmd ${CC} ${CFLAGS} "$@" -E -o ${TMP_O} ${TMP_C}
|
|
|
|
}
|
|
|
|
|
|
|
|
check_ld() {
|
|
|
|
log check_ld "$@"
|
|
|
|
check_cc $@ \
|
|
|
|
&& check_cmd ${LD} ${LDFLAGS} "$@" -o ${TMP_X} ${TMP_O} ${extralibs}
|
|
|
|
}
|
|
|
|
|
|
|
|
check_header(){
|
|
|
|
log check_header "$@"
|
|
|
|
header=$1
|
|
|
|
shift
|
|
|
|
var=`echo $header | sed 's/[^A-Za-z0-9_]/_/g'`
|
|
|
|
disable $var
|
|
|
|
check_cpp "$@" <<EOF && enable $var
|
|
|
|
#include "$header"
|
|
|
|
int x;
|
|
|
|
EOF
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
check_cflags() {
|
|
|
|
log check_cflags "$@"
|
|
|
|
check_cc "$@" <<EOF
|
|
|
|
int x;
|
|
|
|
EOF
|
|
|
|
}
|
|
|
|
|
|
|
|
check_add_cflags() {
|
|
|
|
check_cflags "$@" && add_cflags "$@"
|
|
|
|
}
|
|
|
|
|
|
|
|
check_add_asflags() {
|
|
|
|
log add_asflags "$@"
|
|
|
|
add_asflags "$@"
|
|
|
|
}
|
|
|
|
|
|
|
|
check_add_ldflags() {
|
|
|
|
log add_ldflags "$@"
|
|
|
|
add_ldflags "$@"
|
|
|
|
}
|
|
|
|
|
2010-10-05 19:15:08 +02:00
|
|
|
check_asm_align() {
|
|
|
|
log check_asm_align "$@"
|
|
|
|
cat >${TMP_ASM} <<EOF
|
|
|
|
section .rodata
|
|
|
|
align 16
|
|
|
|
EOF
|
|
|
|
log_file ${TMP_ASM}
|
|
|
|
check_cmd ${AS} ${ASFLAGS} -o ${TMP_O} ${TMP_ASM}
|
|
|
|
readelf -WS ${TMP_O} >${TMP_X}
|
|
|
|
log_file ${TMP_X}
|
|
|
|
if ! grep -q '\.rodata .* 16$' ${TMP_X}; then
|
|
|
|
die "${AS} ${ASFLAGS} does not support section alignment (nasm <=2.08?)"
|
|
|
|
fi
|
|
|
|
}
|
|
|
|
|
2010-05-18 17:58:33 +02:00
|
|
|
write_common_config_banner() {
|
|
|
|
echo '# This file automatically generated by configure. Do not edit!' > config.mk
|
|
|
|
echo "TOOLCHAIN := ${toolchain}" >> config.mk
|
|
|
|
|
|
|
|
case ${toolchain} in
|
|
|
|
*-linux-rvct)
|
|
|
|
echo "ALT_LIBC := ${alt_libc}" >> config.mk
|
|
|
|
;;
|
|
|
|
esac
|
|
|
|
}
|
|
|
|
|
|
|
|
write_common_config_targets() {
|
|
|
|
for t in ${all_targets}; do
|
|
|
|
if enabled ${t}; then
|
|
|
|
if enabled universal || enabled child; then
|
|
|
|
fwrite config.mk "ALL_TARGETS += ${t}-${toolchain}"
|
|
|
|
else
|
|
|
|
fwrite config.mk "ALL_TARGETS += ${t}"
|
|
|
|
fi
|
|
|
|
fi
|
|
|
|
true;
|
|
|
|
done
|
|
|
|
true
|
|
|
|
}
|
|
|
|
|
|
|
|
write_common_target_config_mk() {
|
|
|
|
local CC=${CC}
|
|
|
|
enabled ccache && CC="ccache ${CC}"
|
|
|
|
|
|
|
|
cat > $1 << EOF
|
|
|
|
# This file automatically generated by configure. Do not edit!
|
|
|
|
SRC_PATH="$source_path"
|
|
|
|
SRC_PATH_BARE=$source_path
|
|
|
|
BUILD_PFX=${BUILD_PFX}
|
|
|
|
TOOLCHAIN=${toolchain}
|
|
|
|
ASM_CONVERSION=${asm_conversion_cmd:-${source_path}/build/make/ads2gas.pl}
|
|
|
|
|
|
|
|
CC=${CC}
|
|
|
|
AR=${AR}
|
|
|
|
LD=${LD}
|
|
|
|
AS=${AS}
|
|
|
|
STRIP=${STRIP}
|
|
|
|
NM=${NM}
|
|
|
|
|
2010-05-20 20:44:18 +02:00
|
|
|
CFLAGS = ${CFLAGS}
|
2010-05-18 17:58:33 +02:00
|
|
|
ARFLAGS = -rus\$(if \$(quiet),c,v)
|
|
|
|
LDFLAGS = ${LDFLAGS}
|
|
|
|
ASFLAGS = ${ASFLAGS}
|
|
|
|
extralibs = ${extralibs}
|
|
|
|
AS_SFX = ${AS_SFX:-.asm}
|
|
|
|
EOF
|
|
|
|
|
|
|
|
if enabled rvct; then cat >> $1 << EOF
|
|
|
|
fmt_deps = sed -e 's;^__image.axf;\$(dir \$@)\$(notdir \$<).o \$@;' #hide
|
|
|
|
EOF
|
|
|
|
else cat >> $1 << EOF
|
2010-08-02 16:21:52 +02:00
|
|
|
fmt_deps = sed -e 's;^\([a-zA-Z0-9_]*\)\.o;\$(dir \$@)\1\$(suffix \$<).o \$@;'
|
2010-05-18 17:58:33 +02:00
|
|
|
EOF
|
|
|
|
fi
|
|
|
|
|
|
|
|
print_config_mk ARCH "${1}" ${ARCH_LIST}
|
|
|
|
print_config_mk HAVE "${1}" ${HAVE_LIST}
|
|
|
|
print_config_mk CONFIG "${1}" ${CONFIG_LIST}
|
|
|
|
print_config_mk HAVE "${1}" gnu_strip
|
|
|
|
|
|
|
|
enabled msvs && echo "CONFIG_VS_VERSION=${vs_version}" >> "${1}"
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
write_common_target_config_h() {
|
|
|
|
cat > ${TMP_H} << EOF
|
|
|
|
/* This file automatically generated by configure. Do not edit! */
|
|
|
|
#define RESTRICT ${RESTRICT}
|
|
|
|
EOF
|
|
|
|
print_config_h ARCH "${TMP_H}" ${ARCH_LIST}
|
|
|
|
print_config_h HAVE "${TMP_H}" ${HAVE_LIST}
|
|
|
|
print_config_h CONFIG "${TMP_H}" ${CONFIG_LIST}
|
|
|
|
mkdir -p `dirname "$1"`
|
|
|
|
cmp "$1" ${TMP_H} >/dev/null 2>&1 || mv ${TMP_H} "$1"
|
|
|
|
}
|
|
|
|
|
|
|
|
process_common_cmdline() {
|
|
|
|
for opt in "$@"; do
|
|
|
|
optval="${opt#*=}"
|
|
|
|
case "$opt" in
|
|
|
|
--child) enable child
|
|
|
|
;;
|
|
|
|
--log*)
|
|
|
|
logging="$optval"
|
|
|
|
if ! disabled logging ; then
|
|
|
|
enabled logging || logfile="$logging"
|
|
|
|
else
|
|
|
|
logfile=/dev/null
|
|
|
|
fi
|
|
|
|
;;
|
|
|
|
--target=*) toolchain="${toolchain:-${optval}}"
|
|
|
|
;;
|
|
|
|
--force-target=*) toolchain="${toolchain:-${optval}}"; enable force_toolchain
|
|
|
|
;;
|
|
|
|
--cpu)
|
|
|
|
;;
|
|
|
|
--cpu=*) tune_cpu="$optval"
|
|
|
|
;;
|
|
|
|
--enable-?*|--disable-?*)
|
|
|
|
eval `echo "$opt" | sed 's/--/action=/;s/-/ option=/;s/-/_/g'`
|
|
|
|
echo "${CMDLINE_SELECT} ${ARCH_EXT_LIST}" | grep "^ *$option\$" >/dev/null || die_unknown $opt
|
|
|
|
$action $option
|
|
|
|
;;
|
|
|
|
--force-enable-?*|--force-disable-?*)
|
|
|
|
eval `echo "$opt" | sed 's/--force-/action=/;s/-/ option=/;s/-/_/g'`
|
|
|
|
$action $option
|
|
|
|
;;
|
|
|
|
--libc=*)
|
|
|
|
[ -d "${optval}" ] || die "Not a directory: ${optval}"
|
|
|
|
disable builtin_libc
|
|
|
|
alt_libc="${optval}"
|
|
|
|
;;
|
2010-10-05 19:15:08 +02:00
|
|
|
--as=*)
|
|
|
|
[ "${optval}" = yasm -o "${optval}" = nasm -o "${optval}" = auto ] \
|
|
|
|
|| die "Must be yasm, nasm or auto: ${optval}"
|
|
|
|
alt_as="${optval}"
|
|
|
|
;;
|
2010-05-26 21:57:42 +02:00
|
|
|
--prefix=*)
|
|
|
|
prefix="${optval}"
|
|
|
|
;;
|
|
|
|
--libdir=*)
|
|
|
|
libdir="${optval}"
|
|
|
|
;;
|
2010-10-05 19:15:08 +02:00
|
|
|
--libc|--as|--prefix|--libdir)
|
2010-05-18 17:58:33 +02:00
|
|
|
die "Option ${opt} requires argument"
|
|
|
|
;;
|
|
|
|
--help|-h) show_help
|
|
|
|
;;
|
|
|
|
*) die_unknown $opt
|
|
|
|
;;
|
|
|
|
esac
|
|
|
|
done
|
|
|
|
}
|
|
|
|
|
|
|
|
process_cmdline() {
|
|
|
|
for opt do
|
|
|
|
optval="${opt#*=}"
|
|
|
|
case "$opt" in
|
|
|
|
*) process_common_cmdline $opt
|
|
|
|
;;
|
|
|
|
esac
|
|
|
|
done
|
|
|
|
}
|
|
|
|
|
2010-05-26 21:57:42 +02:00
|
|
|
|
|
|
|
post_process_common_cmdline() {
|
|
|
|
prefix="${prefix:-/usr/local}"
|
|
|
|
prefix="${prefix%/}"
|
|
|
|
libdir="${libdir:-${prefix}/lib}"
|
|
|
|
libdir="${libdir%/}"
|
2010-06-05 18:19:40 +02:00
|
|
|
if [ "${libdir#${prefix}}" = "${libdir}" ]; then
|
2010-05-26 21:57:42 +02:00
|
|
|
die "Libdir ${libdir} must be a subdirectory of ${prefix}"
|
|
|
|
fi
|
|
|
|
}
|
|
|
|
|
|
|
|
|
2010-05-18 17:58:33 +02:00
|
|
|
post_process_cmdline() {
|
|
|
|
true;
|
|
|
|
}
|
|
|
|
|
|
|
|
setup_gnu_toolchain() {
|
|
|
|
CC=${CC:-${CROSS}gcc}
|
|
|
|
AR=${AR:-${CROSS}ar}
|
|
|
|
LD=${LD:-${CROSS}${link_with_cc:-ld}}
|
|
|
|
AS=${AS:-${CROSS}as}
|
|
|
|
STRIP=${STRIP:-${CROSS}strip}
|
|
|
|
NM=${NM:-${CROSS}nm}
|
|
|
|
AS_SFX=.s
|
|
|
|
}
|
|
|
|
|
|
|
|
process_common_toolchain() {
|
2010-05-24 18:50:43 +02:00
|
|
|
if [ -z "$toolchain" ]; then
|
2010-09-13 15:00:24 +02:00
|
|
|
gcctarget="$(gcc -dumpmachine 2> /dev/null)"
|
2010-05-24 18:50:43 +02:00
|
|
|
|
|
|
|
# detect tgt_isa
|
2010-06-07 06:12:14 +02:00
|
|
|
case "$gcctarget" in
|
2010-06-11 18:16:36 +02:00
|
|
|
*x86_64*|*amd64*)
|
2010-05-24 18:50:43 +02:00
|
|
|
tgt_isa=x86_64
|
|
|
|
;;
|
|
|
|
*i[3456]86*)
|
|
|
|
tgt_isa=x86
|
|
|
|
;;
|
2010-09-13 15:04:55 +02:00
|
|
|
*powerpc64*)
|
|
|
|
tgt_isa=ppc64
|
|
|
|
;;
|
|
|
|
*powerpc*)
|
|
|
|
tgt_isa=ppc32
|
|
|
|
;;
|
2010-09-30 21:36:00 +02:00
|
|
|
*sparc*)
|
|
|
|
tgt_isa=sparc
|
|
|
|
;;
|
2010-05-24 18:50:43 +02:00
|
|
|
esac
|
|
|
|
|
|
|
|
# detect tgt_os
|
2010-06-07 06:12:14 +02:00
|
|
|
case "$gcctarget" in
|
|
|
|
*darwin8*)
|
2010-05-24 18:50:43 +02:00
|
|
|
tgt_isa=universal
|
|
|
|
tgt_os=darwin8
|
|
|
|
;;
|
2010-06-07 06:12:14 +02:00
|
|
|
*darwin9*)
|
2010-05-24 18:50:43 +02:00
|
|
|
tgt_isa=universal
|
|
|
|
tgt_os=darwin9
|
|
|
|
;;
|
2010-11-16 20:52:05 +01:00
|
|
|
*darwin10*)
|
|
|
|
tgt_isa=x86_64
|
|
|
|
tgt_os=darwin10
|
|
|
|
;;
|
2010-06-10 18:07:34 +02:00
|
|
|
*mingw32*|*cygwin*)
|
2010-09-02 17:51:45 +02:00
|
|
|
[ -z "$tgt_isa" ] && tgt_isa=x86
|
2010-05-24 18:50:43 +02:00
|
|
|
tgt_os=win32
|
|
|
|
;;
|
2010-06-07 06:12:14 +02:00
|
|
|
*linux*|*bsd*)
|
2010-05-24 18:50:43 +02:00
|
|
|
tgt_os=linux
|
|
|
|
;;
|
2010-09-30 21:36:00 +02:00
|
|
|
*solaris2.10)
|
|
|
|
tgt_os=solaris
|
|
|
|
;;
|
2010-05-24 18:50:43 +02:00
|
|
|
esac
|
|
|
|
|
|
|
|
if [ -n "$tgt_isa" ] && [ -n "$tgt_os" ]; then
|
|
|
|
toolchain=${tgt_isa}-${tgt_os}-gcc
|
|
|
|
fi
|
|
|
|
fi
|
|
|
|
|
2010-05-18 17:58:33 +02:00
|
|
|
toolchain=${toolchain:-generic-gnu}
|
|
|
|
|
|
|
|
is_in ${toolchain} ${all_platforms} || enabled force_toolchain \
|
|
|
|
|| die "Unrecognized toolchain '${toolchain}'"
|
|
|
|
|
|
|
|
enabled child || log_echo "Configuring for target '${toolchain}'"
|
|
|
|
|
|
|
|
#
|
|
|
|
# Set up toolchain variables
|
|
|
|
#
|
|
|
|
tgt_isa=$(echo ${toolchain} | awk 'BEGIN{FS="-"}{print $1}')
|
|
|
|
tgt_os=$(echo ${toolchain} | awk 'BEGIN{FS="-"}{print $2}')
|
|
|
|
tgt_cc=$(echo ${toolchain} | awk 'BEGIN{FS="-"}{print $3}')
|
|
|
|
|
|
|
|
# Mark the specific ISA requested as enabled
|
|
|
|
soft_enable ${tgt_isa}
|
|
|
|
enable ${tgt_os}
|
|
|
|
enable ${tgt_cc}
|
|
|
|
|
|
|
|
# Enable the architecture family
|
|
|
|
case ${tgt_isa} in
|
|
|
|
arm*|iwmmxt*) enable arm;;
|
|
|
|
mips*) enable mips;;
|
|
|
|
esac
|
|
|
|
|
2010-09-21 16:34:51 +02:00
|
|
|
# PIC is probably what we want when building shared libs
|
|
|
|
enabled shared && soft_enable pic
|
|
|
|
|
2010-05-18 17:58:33 +02:00
|
|
|
# Handle darwin variants
|
|
|
|
case ${toolchain} in
|
2010-09-24 17:39:27 +02:00
|
|
|
*-darwin8-*)
|
2010-05-18 17:58:33 +02:00
|
|
|
add_cflags "-isysroot /Developer/SDKs/MacOSX10.4u.sdk"
|
|
|
|
add_cflags "-mmacosx-version-min=10.4"
|
|
|
|
add_ldflags "-isysroot /Developer/SDKs/MacOSX10.4u.sdk"
|
|
|
|
add_ldflags "-mmacosx-version-min=10.4"
|
|
|
|
;;
|
2010-09-24 17:39:27 +02:00
|
|
|
*-darwin9-*)
|
2010-05-18 17:58:33 +02:00
|
|
|
add_cflags "-isysroot /Developer/SDKs/MacOSX10.5.sdk"
|
|
|
|
add_cflags "-mmacosx-version-min=10.5"
|
|
|
|
add_ldflags "-isysroot /Developer/SDKs/MacOSX10.5.sdk"
|
|
|
|
add_ldflags "-mmacosx-version-min=10.5"
|
|
|
|
;;
|
2010-11-16 20:52:05 +01:00
|
|
|
*-darwin10-*)
|
|
|
|
add_cflags "-isysroot /Developer/SDKs/MacOSX10.6.sdk"
|
|
|
|
add_cflags "-mmacosx-version-min=10.6"
|
|
|
|
add_ldflags "-isysroot /Developer/SDKs/MacOSX10.6.sdk"
|
|
|
|
add_ldflags "-mmacosx-version-min=10.6"
|
|
|
|
;;
|
2010-05-18 17:58:33 +02:00
|
|
|
esac
|
|
|
|
|
2010-09-30 21:36:00 +02:00
|
|
|
# Handle Solaris variants. Solaris 10 needs -lposix4
|
|
|
|
case ${toolchain} in
|
|
|
|
*-solaris-*)
|
|
|
|
add_extralibs -lposix4
|
|
|
|
;;
|
|
|
|
esac
|
|
|
|
|
2010-05-18 17:58:33 +02:00
|
|
|
# Process ARM architecture variants
|
|
|
|
case ${toolchain} in
|
|
|
|
arm*|iwmmxt*)
|
|
|
|
# on arm, isa versions are supersets
|
|
|
|
enabled armv7a && soft_enable armv7 ### DEBUG
|
|
|
|
enabled armv7 && soft_enable armv6
|
|
|
|
enabled armv6 && soft_enable armv5te
|
|
|
|
enabled armv6 && soft_enable fast_unaligned
|
|
|
|
enabled iwmmxt2 && soft_enable iwmmxt
|
|
|
|
enabled iwmmxt && soft_enable armv5te
|
|
|
|
|
|
|
|
asm_conversion_cmd="cat"
|
|
|
|
|
|
|
|
case ${tgt_cc} in
|
|
|
|
gcc)
|
|
|
|
if enabled iwmmxt || enabled iwmmxt2
|
|
|
|
then
|
|
|
|
CROSS=${CROSS:-arm-iwmmxt-linux-gnueabi-}
|
|
|
|
elif enabled symbian; then
|
|
|
|
CROSS=${CROSS:-arm-none-symbianelf-}
|
|
|
|
else
|
|
|
|
CROSS=${CROSS:-arm-none-linux-gnueabi-}
|
|
|
|
fi
|
|
|
|
link_with_cc=gcc
|
|
|
|
setup_gnu_toolchain
|
|
|
|
arch_int=${tgt_isa##armv}
|
|
|
|
arch_int=${arch_int%%te}
|
|
|
|
check_add_asflags --defsym ARCHITECTURE=${arch_int}
|
|
|
|
tune_cflags="-mtune="
|
|
|
|
if enabled iwmmxt || enabled iwmmxt2
|
|
|
|
then
|
|
|
|
check_add_asflags -mcpu=${tgt_isa}
|
|
|
|
elif enabled armv7
|
|
|
|
then
|
|
|
|
check_add_cflags -march=armv7-a -mcpu=cortex-a8 -mfpu=neon -mfloat-abi=softfp #-ftree-vectorize
|
|
|
|
check_add_asflags -mcpu=cortex-a8 -mfpu=neon -mfloat-abi=softfp #-march=armv7-a
|
|
|
|
else
|
|
|
|
check_add_cflags -march=${tgt_isa}
|
|
|
|
check_add_asflags -march=${tgt_isa}
|
|
|
|
fi
|
|
|
|
|
|
|
|
asm_conversion_cmd="${source_path}/build/make/ads2gas.pl"
|
|
|
|
;;
|
|
|
|
rvct)
|
|
|
|
CC=armcc
|
|
|
|
AR=armar
|
|
|
|
AS=armasm
|
|
|
|
LD=${source_path}/build/make/armlink_adapter.sh
|
|
|
|
STRIP=arm-none-linux-gnueabi-strip
|
|
|
|
NM=arm-none-linux-gnueabi-nm
|
|
|
|
tune_cflags="--cpu="
|
|
|
|
tune_asflags="--cpu="
|
|
|
|
if [ -z "${tune_cpu}" ]; then
|
|
|
|
if enabled armv7
|
|
|
|
then
|
|
|
|
check_add_cflags --cpu=Cortex-A8 --fpu=softvfp+vfpv3
|
|
|
|
check_add_asflags --cpu=Cortex-A8 --fpu=none
|
|
|
|
else
|
|
|
|
check_add_cflags --cpu=${tgt_isa##armv}
|
|
|
|
check_add_asflags --cpu=${tgt_isa##armv}
|
|
|
|
fi
|
|
|
|
fi
|
|
|
|
arch_int=${tgt_isa##armv}
|
|
|
|
arch_int=${arch_int%%te}
|
|
|
|
check_add_asflags --pd "\"ARCHITECTURE SETA ${arch_int}\""
|
|
|
|
;;
|
|
|
|
esac
|
|
|
|
|
|
|
|
case ${tgt_os} in
|
|
|
|
darwin*)
|
|
|
|
SDK_PATH=/Developer/Platforms/iPhoneOS.platform/Developer
|
|
|
|
TOOLCHAIN_PATH=${SDK_PATH}/usr/bin
|
|
|
|
CC=${TOOLCHAIN_PATH}/gcc
|
|
|
|
AR=${TOOLCHAIN_PATH}/ar
|
|
|
|
LD=${TOOLCHAIN_PATH}/arm-apple-darwin9-gcc-4.2.1
|
|
|
|
AS=${TOOLCHAIN_PATH}/as
|
|
|
|
STRIP=${TOOLCHAIN_PATH}/strip
|
|
|
|
NM=${TOOLCHAIN_PATH}/nm
|
|
|
|
AS_SFX=.s
|
|
|
|
|
|
|
|
# ASFLAGS is written here instead of using check_add_asflags
|
|
|
|
# because we need to overwrite all of ASFLAGS and purge the
|
|
|
|
# options that were put in above
|
|
|
|
ASFLAGS="-version -arch ${tgt_isa} -g"
|
|
|
|
|
|
|
|
add_cflags -arch ${tgt_isa}
|
|
|
|
add_ldflags -arch_only ${tgt_isa}
|
|
|
|
|
|
|
|
add_cflags "-isysroot /Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS3.1.sdk"
|
|
|
|
|
|
|
|
# This should be overridable
|
|
|
|
alt_libc=${SDK_PATH}/SDKs/iPhoneOS3.1.sdk
|
|
|
|
|
|
|
|
# Add the paths for the alternate libc
|
|
|
|
# for d in usr/include usr/include/gcc/darwin/4.0/; do
|
|
|
|
for d in usr/include usr/include/gcc/darwin/4.0/ usr/lib/gcc/arm-apple-darwin9/4.0.1/include/; do
|
|
|
|
try_dir="${alt_libc}/${d}"
|
|
|
|
[ -d "${try_dir}" ] && add_cflags -I"${try_dir}"
|
|
|
|
done
|
|
|
|
|
|
|
|
for d in lib usr/lib; do
|
|
|
|
try_dir="${alt_libc}/${d}"
|
|
|
|
[ -d "${try_dir}" ] && add_ldflags -L"${try_dir}"
|
|
|
|
done
|
|
|
|
|
|
|
|
asm_conversion_cmd="${source_path}/build/make/ads2gas_apple.pl"
|
|
|
|
;;
|
|
|
|
|
|
|
|
linux*)
|
|
|
|
enable linux
|
|
|
|
if enabled rvct; then
|
|
|
|
# Compiling with RVCT requires an alternate libc (glibc) when
|
|
|
|
# targetting linux.
|
|
|
|
disabled builtin_libc \
|
|
|
|
|| die "Must supply --libc when targetting *-linux-rvct"
|
|
|
|
|
|
|
|
# Set up compiler
|
|
|
|
add_cflags --gnu
|
|
|
|
add_cflags --enum_is_int
|
|
|
|
add_cflags --library_interface=aeabi_glibc
|
|
|
|
add_cflags --no_hide_all
|
|
|
|
add_cflags --wchar32
|
|
|
|
add_cflags --dwarf2
|
|
|
|
add_cflags --gnu
|
|
|
|
|
|
|
|
# Set up linker
|
|
|
|
add_ldflags --sysv --no_startup --no_ref_cpp_init
|
|
|
|
add_ldflags --entry=_start
|
|
|
|
add_ldflags --keep '"*(.init)"' --keep '"*(.fini)"'
|
|
|
|
add_ldflags --keep '"*(.init_array)"' --keep '"*(.fini_array)"'
|
|
|
|
add_ldflags --dynamiclinker=/lib/ld-linux.so.3
|
|
|
|
add_extralibs libc.so.6 -lc_nonshared crt1.o crti.o crtn.o
|
|
|
|
|
|
|
|
# Add the paths for the alternate libc
|
|
|
|
for d in usr/include; do
|
|
|
|
try_dir="${alt_libc}/${d}"
|
|
|
|
[ -d "${try_dir}" ] && add_cflags -J"${try_dir}"
|
|
|
|
done
|
|
|
|
add_cflags -J"${RVCT31INC}"
|
|
|
|
for d in lib usr/lib; do
|
|
|
|
try_dir="${alt_libc}/${d}"
|
|
|
|
[ -d "${try_dir}" ] && add_ldflags -L"${try_dir}"
|
|
|
|
done
|
|
|
|
|
|
|
|
|
|
|
|
# glibc has some struct members named __align, which is a
|
|
|
|
# storage modifier in RVCT. If we need to use this modifier,
|
|
|
|
# we'll have to #undef it in our code. Note that this must
|
|
|
|
# happen AFTER all libc inclues.
|
|
|
|
add_cflags -D__align=x_align_x
|
|
|
|
fi
|
|
|
|
;;
|
|
|
|
|
|
|
|
symbian*)
|
|
|
|
enable symbian
|
|
|
|
# Add the paths for the alternate libc
|
|
|
|
for d in include/libc; do
|
|
|
|
try_dir="${alt_libc}/${d}"
|
|
|
|
[ -d "${try_dir}" ] && add_cflags -I"${try_dir}"
|
|
|
|
done
|
|
|
|
for d in release/armv5/urel; do
|
|
|
|
try_dir="${alt_libc}/${d}"
|
|
|
|
[ -d "${try_dir}" ] && add_ldflags -L"${try_dir}"
|
|
|
|
done
|
|
|
|
add_cflags -DIMPORT_C=
|
|
|
|
|
|
|
|
esac
|
|
|
|
;;
|
|
|
|
mips*)
|
|
|
|
CROSS=${CROSS:-mipsel-linux-uclibc-}
|
|
|
|
link_with_cc=gcc
|
|
|
|
setup_gnu_toolchain
|
|
|
|
tune_cflags="-mtune="
|
|
|
|
check_add_cflags -march=${tgt_isa}
|
|
|
|
check_add_asflags -march=${tgt_isa}
|
|
|
|
check_add_asflags -KPIC
|
|
|
|
;;
|
|
|
|
ppc*)
|
|
|
|
enable ppc
|
|
|
|
bits=${tgt_isa##ppc}
|
|
|
|
link_with_cc=gcc
|
|
|
|
setup_gnu_toolchain
|
|
|
|
add_asflags -force_cpusubtype_ALL -I"\$(dir \$<)darwin"
|
|
|
|
soft_enable altivec
|
2010-09-13 15:04:55 +02:00
|
|
|
enabled altivec && add_cflags -maltivec
|
2010-05-18 17:58:33 +02:00
|
|
|
|
|
|
|
case "$tgt_os" in
|
|
|
|
linux*)
|
|
|
|
add_asflags -maltivec -mregnames -I"\$(dir \$<)linux"
|
|
|
|
;;
|
|
|
|
darwin*)
|
|
|
|
darwin_arch="-arch ppc"
|
|
|
|
enabled ppc64 && darwin_arch="${darwin_arch}64"
|
|
|
|
add_cflags ${darwin_arch} -m${bits} -fasm-blocks
|
|
|
|
add_asflags ${darwin_arch} -force_cpusubtype_ALL -I"\$(dir \$<)darwin"
|
|
|
|
add_ldflags ${darwin_arch} -m${bits}
|
2010-09-13 15:04:55 +02:00
|
|
|
enabled altivec && add_cflags -faltivec
|
2010-05-18 17:58:33 +02:00
|
|
|
;;
|
|
|
|
esac
|
|
|
|
;;
|
|
|
|
x86*)
|
|
|
|
bits=32
|
|
|
|
enabled x86_64 && bits=64
|
|
|
|
soft_enable runtime_cpu_detect
|
|
|
|
soft_enable mmx
|
|
|
|
soft_enable sse
|
|
|
|
soft_enable sse2
|
|
|
|
soft_enable sse3
|
|
|
|
soft_enable ssse3
|
2010-10-27 14:45:24 +02:00
|
|
|
soft_enable sse4_1
|
2010-05-18 17:58:33 +02:00
|
|
|
|
|
|
|
case ${tgt_os} in
|
2010-09-02 17:17:05 +02:00
|
|
|
win*)
|
|
|
|
enabled gcc && add_cflags -fno-common
|
|
|
|
;;
|
2010-05-18 17:58:33 +02:00
|
|
|
solaris*)
|
|
|
|
CC=${CC:-${CROSS}gcc}
|
|
|
|
LD=${LD:-${CROSS}gcc}
|
|
|
|
CROSS=${CROSS:-g}
|
|
|
|
;;
|
|
|
|
esac
|
|
|
|
|
2010-10-05 19:15:08 +02:00
|
|
|
AS="${alt_as:-${AS:-auto}}"
|
2010-05-18 17:58:33 +02:00
|
|
|
case ${tgt_cc} in
|
|
|
|
icc*)
|
|
|
|
CC=${CC:-icc}
|
|
|
|
LD=${LD:-icc}
|
|
|
|
setup_gnu_toolchain
|
|
|
|
add_cflags -use-msasm -use-asm
|
|
|
|
add_ldflags -i-static
|
2010-06-17 19:34:19 +02:00
|
|
|
enabled x86_64 && add_cflags -ipo -no-prec-div -static -xSSE3 -axSSE3
|
|
|
|
enabled x86_64 && AR=xiar
|
2010-08-25 01:27:49 +02:00
|
|
|
case ${tune_cpu} in
|
|
|
|
atom*)
|
|
|
|
tune_cflags="-x"
|
|
|
|
tune_cpu="SSE3_ATOM"
|
|
|
|
;;
|
|
|
|
*)
|
|
|
|
tune_cflags="-march="
|
|
|
|
;;
|
|
|
|
esac
|
2010-05-18 17:58:33 +02:00
|
|
|
;;
|
|
|
|
gcc*)
|
|
|
|
add_cflags -m${bits}
|
|
|
|
add_ldflags -m${bits}
|
|
|
|
link_with_cc=gcc
|
2010-08-25 01:27:49 +02:00
|
|
|
tune_cflags="-march="
|
2010-05-18 17:58:33 +02:00
|
|
|
setup_gnu_toolchain
|
|
|
|
;;
|
|
|
|
esac
|
|
|
|
|
2010-10-05 19:15:08 +02:00
|
|
|
case "${AS}" in
|
|
|
|
auto|"")
|
|
|
|
which nasm >/dev/null 2>&1 && AS=nasm
|
|
|
|
which yasm >/dev/null 2>&1 && AS=yasm
|
|
|
|
[ "${AS}" = auto -o -z "${AS}" ] \
|
|
|
|
&& die "Neither yasm nor nasm have been found"
|
|
|
|
;;
|
|
|
|
esac
|
|
|
|
log_echo " using $AS"
|
|
|
|
[ "${AS##*/}" = nasm ] && add_asflags -Ox
|
2010-05-18 17:58:33 +02:00
|
|
|
AS_SFX=.asm
|
|
|
|
case ${tgt_os} in
|
|
|
|
win*)
|
|
|
|
add_asflags -f win${bits}
|
2010-12-17 21:06:23 +01:00
|
|
|
enabled debug && add_asflags -g cv8
|
2010-05-18 17:58:33 +02:00
|
|
|
;;
|
|
|
|
linux*|solaris*)
|
|
|
|
add_asflags -f elf${bits}
|
2010-10-05 19:15:08 +02:00
|
|
|
enabled debug && [ "${AS}" = yasm ] && add_asflags -g dwarf2
|
|
|
|
enabled debug && [ "${AS}" = nasm ] && add_asflags -g
|
|
|
|
[ "${AS##*/}" = nasm ] && check_asm_align
|
2010-05-18 17:58:33 +02:00
|
|
|
;;
|
|
|
|
darwin*)
|
|
|
|
add_asflags -f macho${bits}
|
|
|
|
enabled x86 && darwin_arch="-arch i386" || darwin_arch="-arch x86_64"
|
|
|
|
add_cflags ${darwin_arch}
|
|
|
|
add_ldflags ${darwin_arch}
|
|
|
|
# -mdynamic-no-pic is still a bit of voodoo -- it was required at
|
|
|
|
# one time, but does not seem to be now, and it breaks some of the
|
|
|
|
# code that still relies on inline assembly.
|
|
|
|
# enabled icc && ! enabled pic && add_cflags -fno-pic -mdynamic-no-pic
|
|
|
|
enabled icc && ! enabled pic && add_cflags -fno-pic
|
|
|
|
;;
|
2010-10-05 19:15:08 +02:00
|
|
|
*) log "Warning: Unknown os $tgt_os while setting up $AS flags"
|
2010-05-18 17:58:33 +02:00
|
|
|
;;
|
|
|
|
esac
|
|
|
|
;;
|
|
|
|
universal*|*-gcc|generic-gnu)
|
|
|
|
link_with_cc=gcc
|
2010-05-24 17:55:17 +02:00
|
|
|
enable gcc
|
2010-05-18 17:58:33 +02:00
|
|
|
setup_gnu_toolchain
|
|
|
|
;;
|
|
|
|
esac
|
|
|
|
|
|
|
|
# Try to enable CPU specific tuning
|
|
|
|
if [ -n "${tune_cpu}" ]; then
|
|
|
|
if [ -n "${tune_cflags}" ]; then
|
|
|
|
check_add_cflags ${tune_cflags}${tune_cpu} || \
|
|
|
|
die "Requested CPU '${tune_cpu}' not supported by compiler"
|
|
|
|
fi
|
|
|
|
if [ -n "${tune_asflags}" ]; then
|
|
|
|
check_add_asflags ${tune_asflags}${tune_cpu} || \
|
|
|
|
die "Requested CPU '${tune_cpu}' not supported by assembler"
|
|
|
|
fi
|
|
|
|
if [ -z "${tune_cflags}${tune_asflags}" ]; then
|
|
|
|
log_echo "Warning: CPU tuning not supported by this toolchain"
|
|
|
|
fi
|
|
|
|
fi
|
|
|
|
|
|
|
|
enabled debug && check_add_cflags -g && check_add_ldflags -g
|
|
|
|
enabled gprof && check_add_cflags -pg && check_add_ldflags -pg
|
|
|
|
enabled gcov &&
|
|
|
|
check_add_cflags -fprofile-arcs -ftest-coverage &&
|
|
|
|
check_add_ldflags -fprofile-arcs -ftest-coverage
|
2010-09-21 16:06:41 +02:00
|
|
|
if enabled optimizations; then
|
|
|
|
enabled rvct && check_add_cflags -Otime
|
|
|
|
enabled small && check_add_cflags -O2 || check_add_cflags -O3
|
2010-05-18 17:58:33 +02:00
|
|
|
fi
|
|
|
|
|
|
|
|
# Position Independant Code (PIC) support, for building relocatable
|
|
|
|
# shared objects
|
|
|
|
enabled gcc && enabled pic && check_add_cflags -fPIC
|
|
|
|
|
|
|
|
# Check for strip utility variant
|
|
|
|
${STRIP} -V 2>/dev/null | grep GNU >/dev/null && enable gnu_strip
|
|
|
|
|
|
|
|
# Try to determine target endianness
|
|
|
|
check_cc <<EOF
|
|
|
|
unsigned int e = 'O'<<24 | '2'<<16 | 'B'<<8 | 'E';
|
|
|
|
EOF
|
|
|
|
[ -f "${TMP_O}" ] && od -A n -t x1 "${TMP_O}" | tr -d '\n' |
|
|
|
|
grep '4f *32 *42 *45' >/dev/null 2>&1 && enable big_endian
|
|
|
|
|
|
|
|
# Almost every platform uses pthreads.
|
|
|
|
if enabled multithread; then
|
|
|
|
case ${toolchain} in
|
|
|
|
*-win*);;
|
|
|
|
*) check_header pthread.h && add_extralibs -lpthread
|
|
|
|
esac
|
|
|
|
fi
|
|
|
|
|
|
|
|
# glibc needs these
|
|
|
|
if enabled linux; then
|
2010-09-13 15:00:24 +02:00
|
|
|
add_cflags -D_LARGEFILE_SOURCE
|
|
|
|
add_cflags -D_FILE_OFFSET_BITS=64
|
2010-05-18 17:58:33 +02:00
|
|
|
fi
|
|
|
|
}
|
|
|
|
|
|
|
|
process_toolchain() {
|
|
|
|
process_common_toolchain
|
|
|
|
}
|
|
|
|
|
|
|
|
print_config_mk() {
|
2010-05-26 21:57:42 +02:00
|
|
|
local prefix=$1
|
|
|
|
local makefile=$2
|
2010-05-18 17:58:33 +02:00
|
|
|
shift 2
|
|
|
|
for cfg; do
|
|
|
|
upname="`toupper $cfg`"
|
|
|
|
if enabled $cfg; then
|
|
|
|
echo "${prefix}_${upname}=yes" >> $makefile
|
|
|
|
fi
|
|
|
|
done
|
|
|
|
}
|
|
|
|
|
|
|
|
print_config_h() {
|
2010-05-26 21:57:42 +02:00
|
|
|
local prefix=$1
|
|
|
|
local header=$2
|
2010-05-18 17:58:33 +02:00
|
|
|
shift 2
|
|
|
|
for cfg; do
|
|
|
|
upname="`toupper $cfg`"
|
|
|
|
if enabled $cfg; then
|
|
|
|
echo "#define ${prefix}_${upname} 1" >> $header
|
|
|
|
else
|
|
|
|
echo "#define ${prefix}_${upname} 0" >> $header
|
|
|
|
fi
|
|
|
|
done
|
|
|
|
}
|
|
|
|
|
|
|
|
process_targets() {
|
|
|
|
true;
|
|
|
|
}
|
|
|
|
|
|
|
|
process_detect() {
|
|
|
|
true;
|
|
|
|
}
|
|
|
|
|
|
|
|
enable logging
|
|
|
|
logfile="config.err"
|
|
|
|
self=$0
|
|
|
|
process() {
|
|
|
|
cmdline_args="$@"
|
|
|
|
process_cmdline "$@"
|
|
|
|
if enabled child; then
|
|
|
|
echo "# ${self} $@" >> ${logfile}
|
|
|
|
else
|
|
|
|
echo "# ${self} $@" > ${logfile}
|
|
|
|
fi
|
2010-05-26 21:57:42 +02:00
|
|
|
post_process_common_cmdline
|
2010-05-18 17:58:33 +02:00
|
|
|
post_process_cmdline
|
|
|
|
process_toolchain
|
|
|
|
process_detect
|
|
|
|
process_targets
|
|
|
|
|
|
|
|
OOT_INSTALLS="${OOT_INSTALLS}"
|
|
|
|
if enabled source_path_used; then
|
|
|
|
# Prepare the PWD for building.
|
|
|
|
for f in ${OOT_INSTALLS}; do
|
|
|
|
install -D ${source_path}/$f $f
|
|
|
|
done
|
|
|
|
fi
|
|
|
|
cp ${source_path}/build/make/Makefile .
|
|
|
|
|
|
|
|
clean_temp_files
|
|
|
|
true
|
|
|
|
}
|