5 ## This script is sourced by the main configure script and contains
6 ## utility functions and other common bits that aren't strictly libvpx
9 ## This build system is based in part on the FFmpeg configure script.
14 # Logging / Output Functions
17 echo "Unknown option \"$1\"."
18 echo "See $0 --help for available options."
27 echo "Configuration failed. This could reflect a misconfiguration of your"
28 echo "toolchains, improper options selected, or another problem. If you"
29 echo "don't see any useful error messages above, the next step is to look"
30 echo "at the configure error log file ($logfile) to determine what"
31 echo "configure was trying to do when it died."
44 pr -n -t $1 >>$logfile
58 echo "$@" >> ${outfile}
63 for opt in ${CMDLINE_SELECT}; do
64 opt2=`echo $opt | sed -e 's;_;-;g'`
66 eval "toggle_${opt}=\"--disable-${opt2}\""
68 eval "toggle_${opt}=\"--enable-${opt2} \""
73 Usage: configure [options]
77 --help print this message
78 --log=yes|no|FILE file configure log is written to [config.err]
79 --target=TARGET target platform tuple [generic-gnu]
80 --cpu=CPU optimize for a specific cpu rather than a family
81 --extra-cflags=ECFLAGS add ECFLAGS to CFLAGS [$CFLAGS]
82 ${toggle_extra_warnings} emit harmless warnings (always non-fatal)
83 ${toggle_werror} treat warnings as errors, if possible
84 (not available with all compilers)
85 ${toggle_optimizations} turn on/off compiler optimization flags
86 ${toggle_pic} turn on/off Position Independent Code
87 ${toggle_ccache} turn on/off compiler cache
88 ${toggle_debug} enable/disable debug mode
89 ${toggle_gprof} enable/disable gprof profiling instrumentation
90 ${toggle_gcov} enable/disable gcov coverage instrumentation
93 ${toggle_install_docs} control whether docs are installed
94 ${toggle_install_bins} control whether binaries are installed
95 ${toggle_install_libs} control whether libraries are installed
96 ${toggle_install_srcs} control whether sources are installed
108 Object files are built at the place where configure is launched.
110 All boolean options can be negated. The default value is the opposite
111 of that shown above. If the option --disable-foo is listed, then
112 the default value for foo is enabled.
116 show_targets ${all_platforms}
123 while [ -n "$*" ]; do
124 if [ "${1%%-*}" = "${2%%-*}" ]; then
125 if [ "${2%%-*}" = "${3%%-*}" ]; then
126 printf " %-24s %-24s %-24s\n" "$1" "$2" "$3"
129 printf " %-24s %-24s\n" "$1" "$2"
133 printf " %-24s\n" "$1"
146 # List Processing Functions
161 [ $var = $value ] && return 0
168 CFLAGS="${CFLAGS} $@"
169 CXXFLAGS="${CXXFLAGS} $@"
174 CFLAGS="${CFLAGS} $@"
178 add_cxxflags_only() {
179 CXXFLAGS="${CXXFLAGS} $@"
184 LDFLAGS="${LDFLAGS} $@"
189 ASFLAGS="${ASFLAGS} $@"
194 extralibs="${extralibs} $@"
198 # Boolean Manipulation Functions
209 eval test "x\$$1" = "xyes"
213 eval test "x\$$1" = "xno"
219 if ! disabled $var; then
220 log_echo " enabling $var"
228 if ! enabled $var; then
229 log_echo " disabling $var"
237 # Text Processing Functions
240 echo "$@" | tr abcdefghijklmnopqrstuvwxyz ABCDEFGHIJKLMNOPQRSTUVWXYZ
245 echo "$@" | tr ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyz
250 # Temporary File Functions
253 enable source_path_used
254 if test -z "$source_path" -o "$source_path" = "." ; then
256 disable source_path_used
259 if test ! -z "$TMPDIR" ; then
261 elif test ! -z "$TEMPDIR" ; then
266 TMP_H="${TMPDIRx}/vpx-conf-$$-${RANDOM}.h"
267 TMP_C="${TMPDIRx}/vpx-conf-$$-${RANDOM}.c"
268 TMP_O="${TMPDIRx}/vpx-conf-$$-${RANDOM}.o"
269 TMP_X="${TMPDIRx}/vpx-conf-$$-${RANDOM}.x"
270 TMP_ASM="${TMPDIRx}/vpx-conf-$$-${RANDOM}.asm"
273 rm -f ${TMP_C} ${TMP_H} ${TMP_O} ${TMP_X} ${TMP_ASM}
277 # Toolchain Check Functions
281 "$@" >>${logfile} 2>&1
288 check_cmd ${CC} ${CFLAGS} "$@" -c -o ${TMP_O} ${TMP_C}
295 check_cmd ${CXX} ${CXXFLAGS} "$@" -c -o ${TMP_O} ${TMP_C}
302 check_cmd ${CC} ${CFLAGS} "$@" -E -o ${TMP_O} ${TMP_C}
308 && check_cmd ${LD} ${LDFLAGS} "$@" -o ${TMP_X} ${TMP_O} ${extralibs}
312 log check_header "$@"
315 var=`echo $header | sed 's/[^A-Za-z0-9_]/_/g'`
317 check_cpp "$@" <<EOF && enable $var
325 log check_cflags "$@"
332 log check_cxxflags "$@"
334 # Catch CFLAGS that trigger CXX warnings
336 *g++*) check_cxx -Werror "$@" <<EOF
340 *) check_cxx "$@" <<EOF
348 check_cxxflags "$@" && add_cxxflags_only "$@"
349 check_cflags "$@" && add_cflags_only "$@"
352 check_add_asflags() {
357 check_add_ldflags() {
363 log check_asm_align "$@"
364 cat >${TMP_ASM} <<EOF
369 check_cmd ${AS} ${ASFLAGS} -o ${TMP_O} ${TMP_ASM}
370 readelf -WS ${TMP_O} >${TMP_X}
372 if ! grep -q '\.rodata .* 16$' ${TMP_X}; then
373 die "${AS} ${ASFLAGS} does not support section alignment (nasm <=2.08?)"
377 write_common_config_banner() {
378 print_webm_license config.mk "##" ""
379 echo '# This file automatically generated by configure. Do not edit!' >> config.mk
380 echo "TOOLCHAIN := ${toolchain}" >> config.mk
384 echo "ALT_LIBC := ${alt_libc}" >> config.mk
389 write_common_config_targets() {
390 for t in ${all_targets}; do
391 if enabled ${t}; then
392 if enabled universal || enabled child; then
393 fwrite config.mk "ALL_TARGETS += ${t}-${toolchain}"
395 fwrite config.mk "ALL_TARGETS += ${t}"
403 write_common_target_config_mk() {
406 enabled ccache && CC="ccache ${CC}"
407 enabled ccache && CXX="ccache ${CXX}"
408 print_webm_license $1 "##" ""
411 # This file automatically generated by configure. Do not edit!
412 SRC_PATH="$source_path"
413 SRC_PATH_BARE=$source_path
414 BUILD_PFX=${BUILD_PFX}
415 TOOLCHAIN=${toolchain}
416 ASM_CONVERSION=${asm_conversion_cmd:-${source_path}/build/make/ads2gas.pl}
427 CXXFLAGS = ${CXXFLAGS}
428 ARFLAGS = -rus\$(if \$(quiet),c,v)
431 extralibs = ${extralibs}
432 AS_SFX = ${AS_SFX:-.asm}
434 RTCD_OPTIONS = ${RTCD_OPTIONS}
437 if enabled rvct; then cat >> $1 << EOF
438 fmt_deps = sed -e 's;^__image.axf;\$(dir \$@)\$(notdir \$<).o \$@;' #hide
440 else cat >> $1 << EOF
441 fmt_deps = sed -e 's;^\([a-zA-Z0-9_]*\)\.o;\$(dir \$@)\1\$(suffix \$<).o \$@;'
445 print_config_mk ARCH "${1}" ${ARCH_LIST}
446 print_config_mk HAVE "${1}" ${HAVE_LIST}
447 print_config_mk CONFIG "${1}" ${CONFIG_LIST}
448 print_config_mk HAVE "${1}" gnu_strip
450 enabled msvs && echo "CONFIG_VS_VERSION=${vs_version}" >> "${1}"
455 write_common_target_config_h() {
456 print_webm_license ${TMP_H} "/*" " */"
457 cat >> ${TMP_H} << EOF
458 /* This file automatically generated by configure. Do not edit! */
461 #define RESTRICT ${RESTRICT}
463 print_config_h ARCH "${TMP_H}" ${ARCH_LIST}
464 print_config_h HAVE "${TMP_H}" ${HAVE_LIST}
465 print_config_h CONFIG "${TMP_H}" ${CONFIG_LIST}
466 echo "#endif /* VPX_CONFIG_H */" >> ${TMP_H}
467 mkdir -p `dirname "$1"`
468 cmp "$1" ${TMP_H} >/dev/null 2>&1 || mv ${TMP_H} "$1"
471 process_common_cmdline() {
475 --child) enable child
479 if ! disabled logging ; then
480 enabled logging || logfile="$logging"
485 --target=*) toolchain="${toolchain:-${optval}}"
487 --force-target=*) toolchain="${toolchain:-${optval}}"; enable force_toolchain
491 --cpu=*) tune_cpu="$optval"
494 extra_cflags="${optval}"
496 --enable-?*|--disable-?*)
497 eval `echo "$opt" | sed 's/--/action=/;s/-/ option=/;s/-/_/g'`
498 if echo "${ARCH_EXT_LIST}" | grep "^ *$option\$" >/dev/null; then
499 [ $action = "disable" ] && RTCD_OPTIONS="${RTCD_OPTIONS}${opt} "
500 elif [ $action = "disable" ] && ! disabled $option ; then
501 echo "${CMDLINE_SELECT}" | grep "^ *$option\$" >/dev/null ||
503 elif [ $action = "enable" ] && ! enabled $option ; then
504 echo "${CMDLINE_SELECT}" | grep "^ *$option\$" >/dev/null ||
510 eval `echo "$opt" | sed 's/--/action=/;s/-/ option=/;s/-/_/g'`
511 if echo "${ARCH_EXT_LIST}" none | grep "^ *$option\$" >/dev/null; then
512 RTCD_OPTIONS="${RTCD_OPTIONS}${opt} "
517 --force-enable-?*|--force-disable-?*)
518 eval `echo "$opt" | sed 's/--force-/action=/;s/-/ option=/;s/-/_/g'`
522 [ -d "${optval}" ] || die "Not a directory: ${optval}"
527 [ "${optval}" = yasm -o "${optval}" = nasm -o "${optval}" = auto ] \
528 || die "Must be yasm, nasm or auto: ${optval}"
538 [ -d "${optval}" ] || die "Not a directory: ${optval}"
541 --libc|--as|--prefix|--libdir|--sdk-path)
542 die "Option ${opt} requires argument"
556 *) process_common_cmdline $opt
563 post_process_common_cmdline() {
564 prefix="${prefix:-/usr/local}"
566 libdir="${libdir:-${prefix}/lib}"
568 if [ "${libdir#${prefix}}" = "${libdir}" ]; then
569 die "Libdir ${libdir} must be a subdirectory of ${prefix}"
574 post_process_cmdline() {
578 setup_gnu_toolchain() {
579 CC=${CC:-${CROSS}gcc}
580 CXX=${CXX:-${CROSS}g++}
582 LD=${LD:-${CROSS}${link_with_cc:-ld}}
584 STRIP=${STRIP:-${CROSS}strip}
590 process_common_toolchain() {
591 if [ -z "$toolchain" ]; then
592 gcctarget="${CHOST:-$(gcc -dumpmachine 2> /dev/null)}"
636 [ -z "$tgt_isa" ] && tgt_isa=x86
650 if [ -n "$tgt_isa" ] && [ -n "$tgt_os" ]; then
651 toolchain=${tgt_isa}-${tgt_os}-gcc
655 toolchain=${toolchain:-generic-gnu}
657 is_in ${toolchain} ${all_platforms} || enabled force_toolchain \
658 || die "Unrecognized toolchain '${toolchain}'"
660 enabled child || log_echo "Configuring for target '${toolchain}'"
663 # Set up toolchain variables
665 tgt_isa=$(echo ${toolchain} | awk 'BEGIN{FS="-"}{print $1}')
666 tgt_os=$(echo ${toolchain} | awk 'BEGIN{FS="-"}{print $2}')
667 tgt_cc=$(echo ${toolchain} | awk 'BEGIN{FS="-"}{print $3}')
669 # Mark the specific ISA requested as enabled
670 soft_enable ${tgt_isa}
674 # Enable the architecture family
680 # PIC is probably what we want when building shared libs
681 enabled shared && soft_enable pic
683 # Handle darwin variants. Newer SDKs allow targeting older
684 # platforms, so find the newest SDK available.
687 if [ -z "${DEVELOPER_DIR}" ]; then
688 DEVELOPER_DIR=`xcode-select -print-path 2> /dev/null`
689 [ $? -ne 0 ] && OSX_SKIP_DIR_CHECK=1
691 if [ -z "${OSX_SKIP_DIR_CHECK}" ]; then
692 OSX_SDK_ROOTS="${DEVELOPER_DIR}/SDKs"
693 OSX_SDK_VERSIONS="MacOSX10.4u.sdk MacOSX10.5.sdk MacOSX10.6.sdk"
694 OSX_SDK_VERSIONS="${OSX_SDK_VERSIONS} MacOSX10.7.sdk"
695 for v in ${OSX_SDK_VERSIONS}; do
696 if [ -d "${OSX_SDK_ROOTS}/${v}" ]; then
697 osx_sdk_dir="${OSX_SDK_ROOTS}/${v}"
704 if [ -d "${osx_sdk_dir}" ]; then
705 add_cflags "-isysroot ${osx_sdk_dir}"
706 add_ldflags "-isysroot ${osx_sdk_dir}"
711 add_cflags "-mmacosx-version-min=10.4"
712 add_ldflags "-mmacosx-version-min=10.4"
715 add_cflags "-mmacosx-version-min=10.5"
716 add_ldflags "-mmacosx-version-min=10.5"
719 add_cflags "-mmacosx-version-min=10.6"
720 add_ldflags "-mmacosx-version-min=10.6"
723 add_cflags "-mmacosx-version-min=10.7"
724 add_ldflags "-mmacosx-version-min=10.7"
727 add_cflags "-mmacosx-version-min=10.8"
728 add_ldflags "-mmacosx-version-min=10.8"
732 # Handle Solaris variants. Solaris 10 needs -lposix4
735 add_extralibs -lposix4
736 disable fast_unaligned
739 add_extralibs -lposix4
743 # Process ARM architecture variants
746 # on arm, isa versions are supersets
752 soft_enable fast_unaligned
757 soft_enable fast_unaligned
764 asm_conversion_cmd="cat"
768 CROSS=${CROSS:-arm-none-linux-gnueabi-}
771 arch_int=${tgt_isa##armv}
772 arch_int=${arch_int%%te}
773 check_add_asflags --defsym ARCHITECTURE=${arch_int}
774 tune_cflags="-mtune="
775 if [ ${tgt_isa} == "armv7" ]; then
778 check_add_cflags -mfpu=neon #-ftree-vectorize
779 check_add_asflags -mfpu=neon
781 check_add_cflags -march=armv7-a -mcpu=cortex-a8 -mfloat-abi=softfp
782 check_add_asflags -mcpu=cortex-a8 -mfloat-abi=softfp #-march=armv7-a
784 check_add_cflags -march=${tgt_isa}
785 check_add_asflags -march=${tgt_isa}
787 enabled debug && add_asflags -g
788 asm_conversion_cmd="${source_path}/build/make/ads2gas.pl"
794 LD=${source_path}/build/make/armlink_adapter.sh
795 STRIP=arm-none-linux-gnueabi-strip
796 NM=arm-none-linux-gnueabi-nm
798 tune_asflags="--cpu="
799 if [ -z "${tune_cpu}" ]; then
800 if [ ${tgt_isa} == "armv7" ]; then
803 check_add_cflags --fpu=softvfp+vfpv3
804 check_add_asflags --fpu=softvfp+vfpv3
806 check_add_cflags --cpu=Cortex-A8
807 check_add_asflags --cpu=Cortex-A8
809 check_add_cflags --cpu=${tgt_isa##armv}
810 check_add_asflags --cpu=${tgt_isa##armv}
813 arch_int=${tgt_isa##armv}
814 arch_int=${arch_int%%te}
815 check_add_asflags --pd "\"ARCHITECTURE SETA ${arch_int}\""
816 enabled debug && add_asflags -g
818 add_cflags --enum_is_int
831 COMPILER_LOCATION=`find "${SDK_PATH}" \
832 -name "arm-linux-androideabi-gcc*" -print -quit`
833 TOOLCHAIN_PATH=${COMPILER_LOCATION%/*}/arm-linux-androideabi-
834 CC=${TOOLCHAIN_PATH}gcc
835 CXX=${TOOLCHAIN_PATH}g++
836 AR=${TOOLCHAIN_PATH}ar
837 LD=${TOOLCHAIN_PATH}gcc
838 AS=${TOOLCHAIN_PATH}as
839 STRIP=${TOOLCHAIN_PATH}strip
840 NM=${TOOLCHAIN_PATH}nm
842 if [ -z "${alt_libc}" ]; then
843 alt_libc=`find "${SDK_PATH}" -name arch-arm -print | \
844 awk '{n = split($0,a,"/"); \
845 split(a[n-1],b,"-"); \
846 print $0 " " b[2]}' | \
848 awk '{ print $1 }' | tail -1`
851 add_cflags "--sysroot=${alt_libc}"
852 add_ldflags "--sysroot=${alt_libc}"
854 add_cflags "-I${SDK_PATH}/sources/android/cpufeatures/"
857 soft_enable realtime_only
858 if [ ${tgt_isa} == "armv7" ]; then
859 enable runtime_cpu_detect
864 if [ -z "${sdk_path}" ]; then
865 SDK_PATH=`xcode-select -print-path 2> /dev/null`
866 SDK_PATH=${SDK_PATH}/Platforms/iPhoneOS.platform/Developer
870 TOOLCHAIN_PATH=${SDK_PATH}/usr/bin
871 CXX=${TOOLCHAIN_PATH}/g++
872 CC=${TOOLCHAIN_PATH}/gcc
873 AR=${TOOLCHAIN_PATH}/ar
874 LD=${TOOLCHAIN_PATH}/arm-apple-darwin10-llvm-gcc-4.2
875 AS=${TOOLCHAIN_PATH}/as
876 STRIP=${TOOLCHAIN_PATH}/strip
877 NM=${TOOLCHAIN_PATH}/nm
880 # ASFLAGS is written here instead of using check_add_asflags
881 # because we need to overwrite all of ASFLAGS and purge the
882 # options that were put in above
883 ASFLAGS="-version -arch ${tgt_isa} -g"
885 add_cflags -arch ${tgt_isa}
886 add_ldflags -arch_only ${tgt_isa}
888 if [ -z "${alt_libc}" ]; then
889 alt_libc=${SDK_PATH}/SDKs/iPhoneOS5.1.sdk
892 add_cflags "-isysroot ${alt_libc}"
894 # Add the paths for the alternate libc
895 for d in usr/include; do
896 try_dir="${alt_libc}/${d}"
897 [ -d "${try_dir}" ] && add_cflags -I"${try_dir}"
900 for d in lib usr/lib usr/lib/system; do
901 try_dir="${alt_libc}/${d}"
902 [ -d "${try_dir}" ] && add_ldflags -L"${try_dir}"
905 asm_conversion_cmd="${source_path}/build/make/ads2gas_apple.pl"
910 if enabled rvct; then
911 # Check if we have CodeSourcery GCC in PATH. Needed for
913 hash arm-none-linux-gnueabi-gcc 2>&- || \
914 die "Couldn't find CodeSourcery GCC from PATH"
916 # Use armcc as a linker to enable translation of
917 # some gcc specific options such as -lm and -lpthread.
918 LD="armcc --translate_gcc"
920 # create configuration file (uses path to CodeSourcery GCC)
921 armcc --arm_linux_configure --arm_linux_config_file=arm_linux.cfg
923 add_cflags --arm_linux_paths --arm_linux_config_file=arm_linux.cfg
924 add_asflags --no_hide_all --apcs=/interwork
925 add_ldflags --arm_linux_paths --arm_linux_config_file=arm_linux.cfg
926 enabled pic && add_cflags --apcs=/fpic
927 enabled pic && add_asflags --apcs=/fpic
928 enabled shared && add_cflags --shared
935 CROSS=${CROSS:-mipsel-linux-uclibc-}
938 tune_cflags="-mtune="
939 check_add_cflags -march=${tgt_isa}
940 check_add_asflags -march=${tgt_isa}
941 check_add_asflags -KPIC
948 add_asflags -force_cpusubtype_ALL -I"\$(dir \$<)darwin"
950 enabled altivec && add_cflags -maltivec
954 add_asflags -maltivec -mregnames -I"\$(dir \$<)linux"
957 darwin_arch="-arch ppc"
958 enabled ppc64 && darwin_arch="${darwin_arch}64"
959 add_cflags ${darwin_arch} -m${bits} -fasm-blocks
960 add_asflags ${darwin_arch} -force_cpusubtype_ALL -I"\$(dir \$<)darwin"
961 add_ldflags ${darwin_arch} -m${bits}
962 enabled altivec && add_cflags -faltivec
968 enabled x86_64 && bits=64
969 soft_enable runtime_cpu_detect
979 enabled gcc && add_cflags -fno-common
982 CC=${CC:-${CROSS}gcc}
983 CXX=${CXX:-${CROSS}g++}
984 LD=${LD:-${CROSS}gcc}
992 AS="${alt_as:-${AS:-auto}}"
998 add_cflags -use-msasm -use-asm
999 add_ldflags -i-static
1000 enabled x86_64 && add_cflags -ipo -no-prec-div -static -xSSE2 -axSSE2
1001 enabled x86_64 && AR=xiar
1005 tune_cpu="SSE3_ATOM"
1008 tune_cflags="-march="
1013 add_cflags -m${bits}
1014 add_ldflags -m${bits}
1016 tune_cflags="-march="
1018 #for 32 bit x86 builds, -O3 did not turn on this flag
1019 enabled optimizations && check_add_cflags -fomit-frame-pointer
1025 which nasm >/dev/null 2>&1 && AS=nasm
1026 which yasm >/dev/null 2>&1 && AS=yasm
1027 [ "${AS}" = auto -o -z "${AS}" ] \
1028 && die "Neither yasm nor nasm have been found"
1031 log_echo " using $AS"
1032 [ "${AS##*/}" = nasm ] && add_asflags -Ox
1036 add_asflags -f win32
1037 enabled debug && add_asflags -g cv8
1041 enabled debug && add_asflags -g cv8
1044 add_asflags -f elf${bits}
1045 enabled debug && [ "${AS}" = yasm ] && add_asflags -g dwarf2
1046 enabled debug && [ "${AS}" = nasm ] && add_asflags -g
1047 [ "${AS##*/}" = nasm ] && check_asm_align
1050 add_asflags -f macho${bits}
1051 enabled x86 && darwin_arch="-arch i386" || darwin_arch="-arch x86_64"
1052 add_cflags ${darwin_arch}
1053 add_ldflags ${darwin_arch}
1054 # -mdynamic-no-pic is still a bit of voodoo -- it was required at
1055 # one time, but does not seem to be now, and it breaks some of the
1056 # code that still relies on inline assembly.
1057 # enabled icc && ! enabled pic && add_cflags -fno-pic -mdynamic-no-pic
1058 enabled icc && ! enabled pic && add_cflags -fno-pic
1062 enabled debug && add_asflags -g
1065 *) log "Warning: Unknown os $tgt_os while setting up $AS flags"
1069 universal*|*-gcc|generic-gnu)
1076 # Try to enable CPU specific tuning
1077 if [ -n "${tune_cpu}" ]; then
1078 if [ -n "${tune_cflags}" ]; then
1079 check_add_cflags ${tune_cflags}${tune_cpu} || \
1080 die "Requested CPU '${tune_cpu}' not supported by compiler"
1082 if [ -n "${tune_asflags}" ]; then
1083 check_add_asflags ${tune_asflags}${tune_cpu} || \
1084 die "Requested CPU '${tune_cpu}' not supported by assembler"
1086 if [ -z "${tune_cflags}${tune_asflags}" ]; then
1087 log_echo "Warning: CPU tuning not supported by this toolchain"
1091 enabled debug && check_add_cflags -g && check_add_ldflags -g
1092 enabled gprof && check_add_cflags -pg && check_add_ldflags -pg
1094 check_add_cflags -fprofile-arcs -ftest-coverage &&
1095 check_add_ldflags -fprofile-arcs -ftest-coverage
1097 if enabled optimizations; then
1098 if enabled rvct; then
1099 enabled small && check_add_cflags -Ospace || check_add_cflags -Otime
1101 enabled small && check_add_cflags -O2 || check_add_cflags -O3
1105 # Position Independent Code (PIC) support, for building relocatable
1107 enabled gcc && enabled pic && check_add_cflags -fPIC
1109 # Work around longjmp interception on glibc >= 2.11, to improve binary
1110 # compatibility. See http://code.google.com/p/webm/issues/detail?id=166
1111 enabled linux && check_add_cflags -D_FORTIFY_SOURCE=0
1113 # Check for strip utility variant
1114 ${STRIP} -V 2>/dev/null | grep GNU >/dev/null && enable gnu_strip
1116 # Try to determine target endianness
1118 unsigned int e = 'O'<<24 | '2'<<16 | 'B'<<8 | 'E';
1120 [ -f "${TMP_O}" ] && od -A n -t x1 "${TMP_O}" | tr -d '\n' |
1121 grep '4f *32 *42 *45' >/dev/null 2>&1 && enable big_endian
1123 # Almost every platform uses pthreads.
1124 if enabled multithread; then
1125 case ${toolchain} in
1128 *) check_header pthread.h && add_extralibs -lpthread
1132 # for sysconf(3) and friends.
1133 check_header unistd.h
1136 if enabled linux; then
1137 add_cflags -D_LARGEFILE_SOURCE
1138 add_cflags -D_FILE_OFFSET_BITS=64
1141 # append any user defined extra cflags
1142 if [ -n "${extra_cflags}" ] ; then
1143 check_add_cflags ${extra_cflags} || \
1144 die "Requested extra CFLAGS '${extra_cflags}' not supported by compiler"
1148 process_toolchain() {
1149 process_common_toolchain
1157 upname="`toupper $cfg`"
1158 if enabled $cfg; then
1159 echo "${prefix}_${upname}=yes" >> $makefile
1169 upname="`toupper $cfg`"
1170 if enabled $cfg; then
1171 echo "#define ${prefix}_${upname} 1" >> $header
1173 echo "#define ${prefix}_${upname} 0" >> $header
1178 print_webm_license() {
1179 local destination=$1
1183 cat <<EOF > ${destination}
1184 ${prefix} Copyright (c) 2011 The WebM project authors. All Rights Reserved.${suffix}
1186 ${prefix} Use of this source code is governed by a BSD-style license${suffix}
1187 ${prefix} that can be found in the LICENSE file in the root of the source${suffix}
1188 ${prefix} tree. An additional intellectual property rights grant can be found${suffix}
1189 ${prefix} in the file PATENTS. All contributing project authors may${suffix}
1190 ${prefix} be found in the AUTHORS file in the root of the source tree.${suffix}
1203 logfile="config.err"
1207 process_cmdline "$@"
1208 if enabled child; then
1209 echo "# ${self} $@" >> ${logfile}
1211 echo "# ${self} $@" > ${logfile}
1213 post_process_common_cmdline
1214 post_process_cmdline
1219 OOT_INSTALLS="${OOT_INSTALLS}"
1220 if enabled source_path_used; then
1221 # Prepare the PWD for building.
1222 for f in ${OOT_INSTALLS}; do
1223 install -D ${source_path}/$f $f
1226 cp ${source_path}/build/make/Makefile .