diff options
author | John Koleszar <jkoleszar@google.com> | 2012-11-02 15:17:36 -0700 |
---|---|---|
committer | John Koleszar <jkoleszar@google.com> | 2012-11-05 12:39:39 -0800 |
commit | 1d0dc7c9f556b7003ab72e7c9c119b54e854f872 (patch) | |
tree | 4c5400b05e884260e3a94d8c1a7fe770b4aebde8 /build/make/configure.sh | |
parent | 06f3e51da62dd7cdc4af129a9925cc85eda745e4 (diff) | |
download | libvpx-1d0dc7c9f556b7003ab72e7c9c119b54e854f872.tar libvpx-1d0dc7c9f556b7003ab72e7c9c119b54e854f872.tar.gz libvpx-1d0dc7c9f556b7003ab72e7c9c119b54e854f872.tar.bz2 libvpx-1d0dc7c9f556b7003ab72e7c9c119b54e854f872.zip |
build: merge with master
Change-Id: I8ea836ce92c1c96f1e2bdf45e704d36ec9dbc401
Diffstat (limited to 'build/make/configure.sh')
-rwxr-xr-x | build/make/configure.sh | 351 |
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; } |