| OLD | NEW |
| 1 #!/bin/sh | 1 #!/bin/sh |
| 2 ## | 2 ## |
| 3 ## configure.sh | 3 ## configure.sh |
| 4 ## | 4 ## |
| 5 ## This script is sourced by the main configure script and contains | 5 ## This script is sourced by the main configure script and contains |
| 6 ## utility functions and other common bits that aren't strictly libvpx | 6 ## utility functions and other common bits that aren't strictly libvpx |
| 7 ## related. | 7 ## related. |
| 8 ## | 8 ## |
| 9 ## This build system is based in part on the FFmpeg configure script. | 9 ## This build system is based in part on the FFmpeg configure script. |
| 10 ## | 10 ## |
| (...skipping 23 matching lines...) Expand all Loading... |
| 34 } | 34 } |
| 35 | 35 |
| 36 | 36 |
| 37 log(){ | 37 log(){ |
| 38 echo "$@" >>$logfile | 38 echo "$@" >>$logfile |
| 39 } | 39 } |
| 40 | 40 |
| 41 | 41 |
| 42 log_file(){ | 42 log_file(){ |
| 43 log BEGIN $1 | 43 log BEGIN $1 |
| 44 pr -n -t $1 >>$logfile | 44 cat -n $1 >>$logfile |
| 45 log END $1 | 45 log END $1 |
| 46 } | 46 } |
| 47 | 47 |
| 48 | 48 |
| 49 log_echo() { | 49 log_echo() { |
| 50 echo "$@" | 50 echo "$@" |
| 51 log "$@" | 51 log "$@" |
| 52 } | 52 } |
| 53 | 53 |
| 54 | 54 |
| (...skipping 212 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 267 RAND=$(awk 'BEGIN { srand(); printf "%d\n",(rand() * 32768)}') | 267 RAND=$(awk 'BEGIN { srand(); printf "%d\n",(rand() * 32768)}') |
| 268 TMP_H="${TMPDIRx}/vpx-conf-$$-${RAND}.h" | 268 TMP_H="${TMPDIRx}/vpx-conf-$$-${RAND}.h" |
| 269 TMP_C="${TMPDIRx}/vpx-conf-$$-${RAND}.c" | 269 TMP_C="${TMPDIRx}/vpx-conf-$$-${RAND}.c" |
| 270 TMP_CC="${TMPDIRx}/vpx-conf-$$-${RAND}.cc" | 270 TMP_CC="${TMPDIRx}/vpx-conf-$$-${RAND}.cc" |
| 271 TMP_O="${TMPDIRx}/vpx-conf-$$-${RAND}.o" | 271 TMP_O="${TMPDIRx}/vpx-conf-$$-${RAND}.o" |
| 272 TMP_X="${TMPDIRx}/vpx-conf-$$-${RAND}.x" | 272 TMP_X="${TMPDIRx}/vpx-conf-$$-${RAND}.x" |
| 273 TMP_ASM="${TMPDIRx}/vpx-conf-$$-${RAND}.asm" | 273 TMP_ASM="${TMPDIRx}/vpx-conf-$$-${RAND}.asm" |
| 274 | 274 |
| 275 clean_temp_files() { | 275 clean_temp_files() { |
| 276 rm -f ${TMP_C} ${TMP_CC} ${TMP_H} ${TMP_O} ${TMP_X} ${TMP_ASM} | 276 rm -f ${TMP_C} ${TMP_CC} ${TMP_H} ${TMP_O} ${TMP_X} ${TMP_ASM} |
| 277 enabled gcov && rm -f ${TMP_C%.c}.gcno ${TMP_CC%.cc}.gcno |
| 277 } | 278 } |
| 278 | 279 |
| 279 # | 280 # |
| 280 # Toolchain Check Functions | 281 # Toolchain Check Functions |
| 281 # | 282 # |
| 282 check_cmd() { | 283 check_cmd() { |
| 283 enabled external_build && return | 284 enabled external_build && return |
| 284 log "$@" | 285 log "$@" |
| 285 "$@" >>${logfile} 2>&1 | 286 "$@" >>${logfile} 2>&1 |
| 286 } | 287 } |
| (...skipping 33 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 320 disable_feature $var | 321 disable_feature $var |
| 321 check_cpp "$@" <<EOF && enable_feature $var | 322 check_cpp "$@" <<EOF && enable_feature $var |
| 322 #include "$header" | 323 #include "$header" |
| 323 int x; | 324 int x; |
| 324 EOF | 325 EOF |
| 325 } | 326 } |
| 326 | 327 |
| 327 | 328 |
| 328 check_cflags() { | 329 check_cflags() { |
| 329 log check_cflags "$@" | 330 log check_cflags "$@" |
| 330 check_cc "$@" <<EOF | 331 check_cc -Werror "$@" <<EOF |
| 331 int x; | 332 int x; |
| 332 EOF | 333 EOF |
| 333 } | 334 } |
| 334 | 335 |
| 335 check_cxxflags() { | 336 check_cxxflags() { |
| 336 log check_cxxflags "$@" | 337 log check_cxxflags "$@" |
| 337 | 338 |
| 338 # Catch CFLAGS that trigger CXX warnings | 339 # Catch CFLAGS that trigger CXX warnings |
| 339 case "$CXX" in | 340 case "$CXX" in |
| 340 *c++-analyzer|*clang++|*g++*) check_cxx -Werror "$@" <<EOF | 341 *c++-analyzer|*clang++|*g++*) check_cxx -Werror "$@" <<EOF |
| 341 int x; | 342 int x; |
| 342 EOF | 343 EOF |
| 343 ;; | 344 ;; |
| 344 *) check_cxx "$@" <<EOF | 345 *) check_cxx -Werror "$@" <<EOF |
| 345 int x; | 346 int x; |
| 346 EOF | 347 EOF |
| 347 ;; | 348 ;; |
| 348 esac | 349 esac |
| 349 } | 350 } |
| 350 | 351 |
| 351 check_add_cflags() { | 352 check_add_cflags() { |
| 352 check_cxxflags "$@" && add_cxxflags_only "$@" | 353 check_cxxflags "$@" && add_cxxflags_only "$@" |
| 353 check_cflags "$@" && add_cflags_only "$@" | 354 check_cflags "$@" && add_cflags_only "$@" |
| 354 } | 355 } |
| (...skipping 16 matching lines...) Expand all Loading... |
| 371 EOF | 372 EOF |
| 372 log_file ${TMP_ASM} | 373 log_file ${TMP_ASM} |
| 373 check_cmd ${AS} ${ASFLAGS} -o ${TMP_O} ${TMP_ASM} | 374 check_cmd ${AS} ${ASFLAGS} -o ${TMP_O} ${TMP_ASM} |
| 374 readelf -WS ${TMP_O} >${TMP_X} | 375 readelf -WS ${TMP_O} >${TMP_X} |
| 375 log_file ${TMP_X} | 376 log_file ${TMP_X} |
| 376 if ! grep -q '\.rodata .* 16$' ${TMP_X}; then | 377 if ! grep -q '\.rodata .* 16$' ${TMP_X}; then |
| 377 die "${AS} ${ASFLAGS} does not support section alignment (nasm <=2.08?)" | 378 die "${AS} ${ASFLAGS} does not support section alignment (nasm <=2.08?)" |
| 378 fi | 379 fi |
| 379 } | 380 } |
| 380 | 381 |
| 382 # tests for -m$1 toggling the feature given in $2. If $2 is empty $1 is used. |
| 383 check_gcc_machine_option() { |
| 384 local opt="$1" |
| 385 local feature="$2" |
| 386 [ -n "$feature" ] || feature="$opt" |
| 387 |
| 388 if enabled gcc && ! disabled "$feature" && ! check_cflags "-m$opt"; then |
| 389 RTCD_OPTIONS="${RTCD_OPTIONS}--disable-$feature " |
| 390 else |
| 391 soft_enable "$feature" |
| 392 fi |
| 393 } |
| 394 |
| 381 write_common_config_banner() { | 395 write_common_config_banner() { |
| 382 print_webm_license config.mk "##" "" | 396 print_webm_license config.mk "##" "" |
| 383 echo '# This file automatically generated by configure. Do not edit!' >> con
fig.mk | 397 echo '# This file automatically generated by configure. Do not edit!' >> con
fig.mk |
| 384 echo "TOOLCHAIN := ${toolchain}" >> config.mk | 398 echo "TOOLCHAIN := ${toolchain}" >> config.mk |
| 385 | 399 |
| 386 case ${toolchain} in | 400 case ${toolchain} in |
| 387 *-linux-rvct) | 401 *-linux-rvct) |
| 388 echo "ALT_LIBC := ${alt_libc}" >> config.mk | 402 echo "ALT_LIBC := ${alt_libc}" >> config.mk |
| 389 ;; | 403 ;; |
| 390 esac | 404 esac |
| 391 } | 405 } |
| 392 | 406 |
| 393 write_common_config_targets() { | 407 write_common_config_targets() { |
| 394 for t in ${all_targets}; do | 408 for t in ${all_targets}; do |
| 395 if enabled ${t}; then | 409 if enabled ${t}; then |
| 396 if enabled universal || enabled child; then | 410 if enabled universal || enabled child; then |
| 397 fwrite config.mk "ALL_TARGETS += ${t}-${toolchain}" | 411 fwrite config.mk "ALL_TARGETS += ${t}-${toolchain}" |
| 398 else | 412 else |
| 399 fwrite config.mk "ALL_TARGETS += ${t}" | 413 fwrite config.mk "ALL_TARGETS += ${t}" |
| 400 fi | 414 fi |
| 401 fi | 415 fi |
| 402 true; | 416 true; |
| 403 done | 417 done |
| 404 true | 418 true |
| 405 } | 419 } |
| 406 | 420 |
| 407 write_common_target_config_mk() { | 421 write_common_target_config_mk() { |
| 408 local CC=${CC} | 422 local CC="${CC}" |
| 409 local CXX=${CXX} | 423 local CXX="${CXX}" |
| 410 enabled ccache && CC="ccache ${CC}" | 424 enabled ccache && CC="ccache ${CC}" |
| 411 enabled ccache && CXX="ccache ${CXX}" | 425 enabled ccache && CXX="ccache ${CXX}" |
| 412 print_webm_license $1 "##" "" | 426 print_webm_license $1 "##" "" |
| 413 | 427 |
| 414 cat >> $1 << EOF | 428 cat >> $1 << EOF |
| 415 # This file automatically generated by configure. Do not edit! | 429 # This file automatically generated by configure. Do not edit! |
| 416 SRC_PATH="$source_path" | 430 SRC_PATH="$source_path" |
| 417 SRC_PATH_BARE=$source_path | 431 SRC_PATH_BARE=$source_path |
| 418 BUILD_PFX=${BUILD_PFX} | 432 BUILD_PFX=${BUILD_PFX} |
| 419 TOOLCHAIN=${toolchain} | 433 TOOLCHAIN=${toolchain} |
| (...skipping 662 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1082 echo "${tgt_cc} does not support avx/avx2, disabling...
.." | 1096 echo "${tgt_cc} does not support avx/avx2, disabling...
.." |
| 1083 RTCD_OPTIONS="${RTCD_OPTIONS}--disable-avx --disable-av
x2 " | 1097 RTCD_OPTIONS="${RTCD_OPTIONS}--disable-avx --disable-av
x2 " |
| 1084 soft_disable avx | 1098 soft_disable avx |
| 1085 soft_disable avx2 | 1099 soft_disable avx2 |
| 1086 ;; | 1100 ;; |
| 1087 esac | 1101 esac |
| 1088 ;; | 1102 ;; |
| 1089 esac | 1103 esac |
| 1090 | 1104 |
| 1091 soft_enable runtime_cpu_detect | 1105 soft_enable runtime_cpu_detect |
| 1092 soft_enable mmx | |
| 1093 soft_enable sse | |
| 1094 soft_enable sse2 | |
| 1095 soft_enable sse3 | |
| 1096 soft_enable ssse3 | |
| 1097 # We can't use 'check_cflags' until the compiler is configured and CC is | 1106 # We can't use 'check_cflags' until the compiler is configured and CC is |
| 1098 # populated. | 1107 # populated. |
| 1099 if enabled gcc && ! disabled sse4_1 && ! check_cflags -msse4; then | 1108 check_gcc_machine_option mmx |
| 1100 RTCD_OPTIONS="${RTCD_OPTIONS}--disable-sse4_1 " | 1109 check_gcc_machine_option sse |
| 1101 else | 1110 check_gcc_machine_option sse2 |
| 1102 soft_enable sse4_1 | 1111 check_gcc_machine_option sse3 |
| 1103 fi | 1112 check_gcc_machine_option ssse3 |
| 1104 | 1113 check_gcc_machine_option sse4 sse4_1 |
| 1105 if enabled gcc && ! disabled avx && ! check_cflags -mavx; then | 1114 check_gcc_machine_option avx |
| 1106 RTCD_OPTIONS="${RTCD_OPTIONS}--disable-avx " | 1115 check_gcc_machine_option avx2 |
| 1107 else | |
| 1108 soft_enable avx | |
| 1109 fi | |
| 1110 | |
| 1111 if enabled gcc && ! disabled avx2 && ! check_cflags -mavx2; then | |
| 1112 RTCD_OPTIONS="${RTCD_OPTIONS}--disable-avx2 " | |
| 1113 else | |
| 1114 soft_enable avx2 | |
| 1115 fi | |
| 1116 | 1116 |
| 1117 case "${AS}" in | 1117 case "${AS}" in |
| 1118 auto|"") | 1118 auto|"") |
| 1119 which nasm >/dev/null 2>&1 && AS=nasm | 1119 which nasm >/dev/null 2>&1 && AS=nasm |
| 1120 which yasm >/dev/null 2>&1 && AS=yasm | 1120 which yasm >/dev/null 2>&1 && AS=yasm |
| 1121 [ "${AS}" = auto -o -z "${AS}" ] \ | 1121 [ "${AS}" = auto -o -z "${AS}" ] \ |
| 1122 && die "Neither yasm nor nasm have been found" | 1122 && die "Neither yasm nor nasm have been found" |
| 1123 ;; | 1123 ;; |
| 1124 esac | 1124 esac |
| 1125 log_echo " using $AS" | 1125 log_echo " using $AS" |
| (...skipping 214 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1340 # Prepare the PWD for building. | 1340 # Prepare the PWD for building. |
| 1341 for f in ${OOT_INSTALLS}; do | 1341 for f in ${OOT_INSTALLS}; do |
| 1342 install -D ${source_path}/$f $f | 1342 install -D ${source_path}/$f $f |
| 1343 done | 1343 done |
| 1344 fi | 1344 fi |
| 1345 cp ${source_path}/build/make/Makefile . | 1345 cp ${source_path}/build/make/Makefile . |
| 1346 | 1346 |
| 1347 clean_temp_files | 1347 clean_temp_files |
| 1348 true | 1348 true |
| 1349 } | 1349 } |
| OLD | NEW |