summaryrefslogtreecommitdiff
path: root/build/make/configure.sh
diff options
context:
space:
mode:
Diffstat (limited to 'build/make/configure.sh')
-rwxr-xr-xbuild/make/configure.sh351
1 files changed, 274 insertions, 77 deletions
diff --git a/build/make/configure.sh b/build/make/configure.sh
index 00c27c261..05bbabe77 100755
--- a/build/make/configure.sh
+++ b/build/make/configure.sh
@@ -166,6 +166,17 @@ is_in(){
add_cflags() {
CFLAGS="${CFLAGS} $@"
+ CXXFLAGS="${CXXFLAGS} $@"
+}
+
+
+add_cflags_only() {
+ CFLAGS="${CFLAGS} $@"
+}
+
+
+add_cxxflags_only() {
+ CXXFLAGS="${CXXFLAGS} $@"
}
@@ -277,6 +288,13 @@ check_cc() {
check_cmd ${CC} ${CFLAGS} "$@" -c -o ${TMP_O} ${TMP_C}
}
+check_cxx() {
+ log check_cxx "$@"
+ cat >${TMP_C}
+ log_file ${TMP_C}
+ check_cmd ${CXX} ${CXXFLAGS} "$@" -c -o ${TMP_O} ${TMP_C}
+}
+
check_cpp() {
log check_cpp "$@"
cat > ${TMP_C}
@@ -310,8 +328,25 @@ int x;
EOF
}
+check_cxxflags() {
+ log check_cxxflags "$@"
+
+ # Catch CFLAGS that trigger CXX warnings
+ case "$CXX" in
+ *g++*) check_cxx -Werror "$@" <<EOF
+int x;
+EOF
+ ;;
+ *) check_cxx "$@" <<EOF
+int x;
+EOF
+ ;;
+ esac
+}
+
check_add_cflags() {
- check_cflags "$@" && add_cflags "$@"
+ check_cxxflags "$@" && add_cxxflags_only "$@"
+ check_cflags "$@" && add_cflags_only "$@"
}
check_add_asflags() {
@@ -340,7 +375,8 @@ EOF
}
write_common_config_banner() {
- echo '# This file automatically generated by configure. Do not edit!' > config.mk
+ print_webm_license config.mk "##" ""
+ echo '# This file automatically generated by configure. Do not edit!' >> config.mk
echo "TOOLCHAIN := ${toolchain}" >> config.mk
case ${toolchain} in
@@ -366,9 +402,12 @@ true
write_common_target_config_mk() {
local CC=${CC}
+ local CXX=${CXX}
enabled ccache && CC="ccache ${CC}"
+ enabled ccache && CXX="ccache ${CXX}"
+ print_webm_license $1 "##" ""
- cat > $1 << EOF
+ cat >> $1 << EOF
# This file automatically generated by configure. Do not edit!
SRC_PATH="$source_path"
SRC_PATH_BARE=$source_path
@@ -377,6 +416,7 @@ TOOLCHAIN=${toolchain}
ASM_CONVERSION=${asm_conversion_cmd:-${source_path}/build/make/ads2gas.pl}
CC=${CC}
+CXX=${CXX}
AR=${AR}
LD=${LD}
AS=${AS}
@@ -384,11 +424,13 @@ STRIP=${STRIP}
NM=${NM}
CFLAGS = ${CFLAGS}
+CXXFLAGS = ${CXXFLAGS}
ARFLAGS = -rus\$(if \$(quiet),c,v)
LDFLAGS = ${LDFLAGS}
ASFLAGS = ${ASFLAGS}
extralibs = ${extralibs}
AS_SFX = ${AS_SFX:-.asm}
+EXE_SFX = ${EXE_SFX}
RTCD_OPTIONS = ${RTCD_OPTIONS}
EOF
@@ -411,7 +453,8 @@ EOF
write_common_target_config_h() {
- cat > ${TMP_H} << EOF
+ print_webm_license ${TMP_H} "/*" " */"
+ cat >> ${TMP_H} << EOF
/* This file automatically generated by configure. Do not edit! */
#ifndef VPX_CONFIG_H
#define VPX_CONFIG_H
@@ -454,9 +497,12 @@ process_common_cmdline() {
eval `echo "$opt" | sed 's/--/action=/;s/-/ option=/;s/-/_/g'`
if echo "${ARCH_EXT_LIST}" | grep "^ *$option\$" >/dev/null; then
[ $action = "disable" ] && RTCD_OPTIONS="${RTCD_OPTIONS}${opt} "
- else
- echo "${CMDLINE_SELECT}" | grep "^ *$option\$" >/dev/null ||
- die_unknown $opt
+ elif [ $action = "disable" ] && ! disabled $option ; then
+ echo "${CMDLINE_SELECT}" | grep "^ *$option\$" >/dev/null ||
+ die_unknown $opt
+ elif [ $action = "enable" ] && ! enabled $option ; then
+ echo "${CMDLINE_SELECT}" | grep "^ *$option\$" >/dev/null ||
+ die_unknown $opt
fi
$action $option
;;
@@ -488,7 +534,11 @@ process_common_cmdline() {
--libdir=*)
libdir="${optval}"
;;
- --libc|--as|--prefix|--libdir)
+ --sdk-path=*)
+ [ -d "${optval}" ] || die "Not a directory: ${optval}"
+ sdk_path="${optval}"
+ ;;
+ --libc|--as|--prefix|--libdir|--sdk-path)
die "Option ${opt} requires argument"
;;
--help|-h) show_help
@@ -527,20 +577,31 @@ post_process_cmdline() {
setup_gnu_toolchain() {
CC=${CC:-${CROSS}gcc}
+ CXX=${CXX:-${CROSS}g++}
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
+ EXE_SFX=
}
process_common_toolchain() {
if [ -z "$toolchain" ]; then
- gcctarget="$(gcc -dumpmachine 2> /dev/null)"
+ gcctarget="${CHOST:-$(gcc -dumpmachine 2> /dev/null)}"
# detect tgt_isa
case "$gcctarget" in
+ armv6*)
+ tgt_isa=armv6
+ ;;
+ armv7*)
+ tgt_isa=armv7
+ ;;
+ armv5te*)
+ tgt_isa=armv5te
+ ;;
*x86_64*|*amd64*)
tgt_isa=x86_64
;;
@@ -572,6 +633,14 @@ process_common_toolchain() {
tgt_isa=x86_64
tgt_os=darwin10
;;
+ *darwin11*)
+ tgt_isa=x86_64
+ tgt_os=darwin11
+ ;;
+ *darwin12*)
+ tgt_isa=x86_64
+ tgt_os=darwin12
+ ;;
*mingw32*|*cygwin*)
[ -z "$tgt_isa" ] && tgt_isa=x86
tgt_os=win32
@@ -582,6 +651,9 @@ process_common_toolchain() {
*solaris2.10)
tgt_os=solaris
;;
+ *os2*)
+ tgt_os=os2
+ ;;
esac
if [ -n "$tgt_isa" ] && [ -n "$tgt_os" ]; then
@@ -610,39 +682,60 @@ process_common_toolchain() {
# Enable the architecture family
case ${tgt_isa} in
- arm*|iwmmxt*) enable arm;;
- mips*) enable mips;;
+ arm*) enable arm;;
+ mips*) enable mips;;
esac
# PIC is probably what we want when building shared libs
enabled shared && soft_enable pic
- # Handle darwin variants
+ # Handle darwin variants. Newer SDKs allow targeting older
+ # platforms, so find the newest SDK available.
+ case ${toolchain} in
+ *-darwin*)
+ if [ -z "${DEVELOPER_DIR}" ]; then
+ DEVELOPER_DIR=`xcode-select -print-path 2> /dev/null`
+ [ $? -ne 0 ] && OSX_SKIP_DIR_CHECK=1
+ fi
+ if [ -z "${OSX_SKIP_DIR_CHECK}" ]; then
+ OSX_SDK_ROOTS="${DEVELOPER_DIR}/SDKs"
+ OSX_SDK_VERSIONS="MacOSX10.4u.sdk MacOSX10.5.sdk MacOSX10.6.sdk"
+ OSX_SDK_VERSIONS="${OSX_SDK_VERSIONS} MacOSX10.7.sdk"
+ for v in ${OSX_SDK_VERSIONS}; do
+ if [ -d "${OSX_SDK_ROOTS}/${v}" ]; then
+ osx_sdk_dir="${OSX_SDK_ROOTS}/${v}"
+ fi
+ done
+ fi
+ ;;
+ esac
+
+ if [ -d "${osx_sdk_dir}" ]; then
+ add_cflags "-isysroot ${osx_sdk_dir}"
+ add_ldflags "-isysroot ${osx_sdk_dir}"
+ fi
+
case ${toolchain} in
*-darwin8-*)
- 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"
;;
*-darwin9-*)
- 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"
;;
*-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"
;;
*-darwin11-*)
- add_cflags "-isysroot /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.7.sdk"
add_cflags "-mmacosx-version-min=10.7"
- add_ldflags "-isysroot /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.7.sdk"
add_ldflags "-mmacosx-version-min=10.7"
;;
+ *-darwin12-*)
+ add_cflags "-mmacosx-version-min=10.8"
+ add_ldflags "-mmacosx-version-min=10.8"
+ ;;
esac
# Handle Solaris variants. Solaris 10 needs -lposix4
@@ -658,44 +751,54 @@ process_common_toolchain() {
# 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 armv7 || enabled armv6 && soft_enable armv5te
- enabled armv7 || enabled armv6 && soft_enable fast_unaligned
- enabled iwmmxt2 && soft_enable iwmmxt
- enabled iwmmxt && soft_enable armv5te
+ arm*)
+ # on arm, isa versions are supersets
+ case ${tgt_isa} in
+ armv7)
+ soft_enable neon
+ soft_enable media
+ soft_enable edsp
+ soft_enable fast_unaligned
+ ;;
+ armv6)
+ soft_enable media
+ soft_enable edsp
+ soft_enable fast_unaligned
+ ;;
+ armv5te)
+ soft_enable edsp
+ ;;
+ esac
- asm_conversion_cmd="cat"
+ 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
+ CROSS=${CROSS:-arm-none-linux-gnueabi-}
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
+ if [ ${tgt_isa} == "armv7" ]; then
+ check_add_cflags -march=armv7-a -mfloat-abi=softfp
+ check_add_asflags -march=armv7-a -mfloat-abi=softfp
+
+ if enabled neon
+ then
+ check_add_cflags -mfpu=neon #-ftree-vectorize
+ check_add_asflags -mfpu=neon
+ fi
+
+ if [ -z "${tune_cpu}" ]; then
+ tune_cpu=cortex-a8
+ fi
else
check_add_cflags -march=${tgt_isa}
check_add_asflags -march=${tgt_isa}
fi
+
enabled debug && add_asflags -g
asm_conversion_cmd="${source_path}/build/make/ads2gas.pl"
;;
@@ -709,10 +812,14 @@ process_common_toolchain() {
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=softvfp+vfpv3
+ if [ ${tgt_isa} == "armv7" ]; then
+ if enabled neon
+ then
+ check_add_cflags --fpu=softvfp+vfpv3
+ check_add_asflags --fpu=softvfp+vfpv3
+ fi
+ check_add_cflags --cpu=Cortex-A8
+ check_add_asflags --cpu=Cortex-A8
else
check_add_cflags --cpu=${tgt_isa##armv}
check_add_asflags --cpu=${tgt_isa##armv}
@@ -733,12 +840,58 @@ process_common_toolchain() {
disable multithread
disable os_support
;;
+
+ android*)
+ SDK_PATH=${sdk_path}
+ COMPILER_LOCATION=`find "${SDK_PATH}" \
+ -name "arm-linux-androideabi-gcc*" -print -quit`
+ TOOLCHAIN_PATH=${COMPILER_LOCATION%/*}/arm-linux-androideabi-
+ CC=${TOOLCHAIN_PATH}gcc
+ CXX=${TOOLCHAIN_PATH}g++
+ AR=${TOOLCHAIN_PATH}ar
+ LD=${TOOLCHAIN_PATH}gcc
+ AS=${TOOLCHAIN_PATH}as
+ STRIP=${TOOLCHAIN_PATH}strip
+ NM=${TOOLCHAIN_PATH}nm
+
+ if [ -z "${alt_libc}" ]; then
+ alt_libc=`find "${SDK_PATH}" -name arch-arm -print | \
+ awk '{n = split($0,a,"/"); \
+ split(a[n-1],b,"-"); \
+ print $0 " " b[2]}' | \
+ sort -g -k 2 | \
+ awk '{ print $1 }' | tail -1`
+ fi
+
+ add_cflags "--sysroot=${alt_libc}"
+ add_ldflags "--sysroot=${alt_libc}"
+
+ # linker flag that routes around a CPU bug in some
+ # Cortex-A8 implementations (NDK Dev Guide)
+ add_ldflags "-Wl,--fix-cortex-a8"
+
+ enable pic
+ soft_enable realtime_only
+ if [ ${tgt_isa} == "armv7" ]; then
+ soft_enable runtime_cpu_detect
+ fi
+ if enabled runtime_cpu_detect; then
+ add_cflags "-I${SDK_PATH}/sources/android/cpufeatures"
+ fi
+ ;;
+
darwin*)
- SDK_PATH=/Developer/Platforms/iPhoneOS.platform/Developer
+ if [ -z "${sdk_path}" ]; then
+ SDK_PATH=`xcode-select -print-path 2> /dev/null`
+ SDK_PATH=${SDK_PATH}/Platforms/iPhoneOS.platform/Developer
+ else
+ SDK_PATH=${sdk_path}
+ fi
TOOLCHAIN_PATH=${SDK_PATH}/usr/bin
+ CXX=${TOOLCHAIN_PATH}/g++
CC=${TOOLCHAIN_PATH}/gcc
AR=${TOOLCHAIN_PATH}/ar
- LD=${TOOLCHAIN_PATH}/arm-apple-darwin10-gcc-4.2.1
+ LD=${TOOLCHAIN_PATH}/arm-apple-darwin10-llvm-gcc-4.2
AS=${TOOLCHAIN_PATH}/as
STRIP=${TOOLCHAIN_PATH}/strip
NM=${TOOLCHAIN_PATH}/nm
@@ -752,13 +905,14 @@ process_common_toolchain() {
add_cflags -arch ${tgt_isa}
add_ldflags -arch_only ${tgt_isa}
- add_cflags "-isysroot ${SDK_PATH}/SDKs/iPhoneOS4.3.sdk"
+ if [ -z "${alt_libc}" ]; then
+ alt_libc=${SDK_PATH}/SDKs/iPhoneOS5.1.sdk
+ fi
- # This should be overridable
- alt_libc=${SDK_PATH}/SDKs/iPhoneOS4.3.sdk
+ add_cflags "-isysroot ${alt_libc}"
# Add the paths for the alternate libc
- for d in usr/include usr/include/gcc/darwin/4.2/ usr/lib/gcc/arm-apple-darwin10/4.2.1/include/; do
+ for d in usr/include; do
try_dir="${alt_libc}/${d}"
[ -d "${try_dir}" ] && add_cflags -I"${try_dir}"
done
@@ -795,29 +949,19 @@ process_common_toolchain() {
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="
+ if enabled dspr2; then
+ check_add_cflags -mips32r2 -mdspr2
+ disable fast_unaligned
+ fi
check_add_cflags -march=${tgt_isa}
- check_add_asflags -march=${tgt_isa}
- check_add_asflags -KPIC
+ check_add_asflags -march=${tgt_isa}
+ check_add_asflags -KPIC
;;
ppc*)
enable ppc
@@ -845,6 +989,11 @@ process_common_toolchain() {
x86*)
bits=32
enabled x86_64 && bits=64
+ check_cpp <<EOF && bits=x32
+#ifndef __ILP32__
+#error "not x32"
+#endif
+EOF
soft_enable runtime_cpu_detect
soft_enable mmx
soft_enable sse
@@ -859,9 +1008,13 @@ process_common_toolchain() {
;;
solaris*)
CC=${CC:-${CROSS}gcc}
+ CXX=${CXX:-${CROSS}g++}
LD=${LD:-${CROSS}gcc}
CROSS=${CROSS:-g}
;;
+ os2)
+ AS=${AS:-nasm}
+ ;;
esac
AS="${alt_as:-${AS:-auto}}"
@@ -883,16 +1036,22 @@ process_common_toolchain() {
tune_cflags="-march="
;;
esac
- ;;
+ ;;
gcc*)
- add_cflags -m${bits}
+ add_cflags -m${bits}
add_ldflags -m${bits}
link_with_cc=gcc
tune_cflags="-march="
setup_gnu_toolchain
#for 32 bit x86 builds, -O3 did not turn on this flag
enabled optimizations && check_add_cflags -fomit-frame-pointer
- ;;
+ ;;
+ vs*)
+ # When building with Microsoft Visual Studio the assembler is
+ # invoked directly. Checking at configure time is unnecessary.
+ # Skip the check by setting AS arbitrarily
+ AS=msvs
+ ;;
esac
case "${AS}" in
@@ -901,14 +1060,18 @@ process_common_toolchain() {
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
AS_SFX=.asm
case ${tgt_os} in
- win*)
- add_asflags -f win${bits}
+ win32)
+ add_asflags -f win32
+ enabled debug && add_asflags -g cv8
+ ;;
+ win64)
+ add_asflags -f x64
enabled debug && add_asflags -g cv8
;;
linux*|solaris*)
@@ -928,6 +1091,11 @@ process_common_toolchain() {
# enabled icc && ! enabled pic && add_cflags -fno-pic -mdynamic-no-pic
enabled icc && ! enabled pic && add_cflags -fno-pic
;;
+ os2)
+ add_asflags -f aout
+ enabled debug && add_asflags -g
+ EXE_SFX=.exe
+ ;;
*) log "Warning: Unknown os $tgt_os while setting up $AS flags"
;;
esac
@@ -989,11 +1157,24 @@ EOF
# Almost every platform uses pthreads.
if enabled multithread; then
case ${toolchain} in
- *-win*);;
+ *-win*-vs*);;
+ *-android-gcc);;
*) check_header pthread.h && add_extralibs -lpthread
esac
fi
+ # only for MIPS platforms
+ case ${toolchain} in
+ mips*)
+ if enabled dspr2; then
+ if enabled big_endian; then
+ echo "dspr2 optimizations are available only for little endian platforms"
+ disable dspr2
+ fi
+ fi
+ ;;
+ esac
+
# for sysconf(3) and friends.
check_header unistd.h
@@ -1040,6 +1221,22 @@ print_config_h() {
done
}
+print_webm_license() {
+ local destination=$1
+ local prefix=$2
+ local suffix=$3
+ shift 3
+ cat <<EOF > ${destination}
+${prefix} Copyright (c) 2011 The WebM project authors. All Rights Reserved.${suffix}
+${prefix} ${suffix}
+${prefix} Use of this source code is governed by a BSD-style license${suffix}
+${prefix} that can be found in the LICENSE file in the root of the source${suffix}
+${prefix} tree. An additional intellectual property rights grant can be found${suffix}
+${prefix} in the file PATENTS. All contributing project authors may${suffix}
+${prefix} be found in the AUTHORS file in the root of the source tree.${suffix}
+EOF
+}
+
process_targets() {
true;
}