1 #!/bin/sh 2 ## 3 ## configure 4 ## 5 ## This script is the front-end to the build system. It provides a similar 6 ## interface to standard configure scripts with some extra bits for dealing 7 ## with toolchains that differ from the standard POSIX interface and 8 ## for extracting subsets of the source tree. In theory, reusable parts 9 ## of this script were intended to live in build/make/configure.sh, 10 ## but in practice, the line is pretty blurry. 11 ## 12 ## This build system is based in part on the FFmpeg configure script. 13 ## 14 15 #source_path="`dirname \"$0\"`" 16 source_path=${0%/*} 17 . "${source_path}/build/make/configure.sh" 18 19 show_help(){ 20 show_help_pre 21 cat << EOF 22 Advanced options: 23 ${toggle_libs} libraries 24 ${toggle_examples} examples 25 ${toggle_tools} tools 26 ${toggle_docs} documentation 27 ${toggle_unit_tests} unit tests 28 ${toggle_decode_perf_tests} build decoder perf tests with unit tests 29 ${toggle_encode_perf_tests} build encoder perf tests with unit tests 30 --cpu=CPU tune for the specified CPU (ARM: cortex-a8, X86: sse3) 31 --libc=PATH path to alternate libc 32 --size-limit=WxH max size to allow in the decoder 33 --as={yasm|nasm|auto} use specified assembler [auto, yasm preferred] 34 --sdk-path=PATH path to root of sdk (android builds only) 35 ${toggle_codec_srcs} in/exclude codec library source code 36 ${toggle_debug_libs} in/exclude debug version of libraries 37 ${toggle_static_msvcrt} use static MSVCRT (VS builds only) 38 ${toggle_vp9_highbitdepth} use VP9 high bit depth (10/12) profiles 39 ${toggle_better_hw_compatibility} 40 enable encoder to produce streams with better 41 hardware decoder compatibility 42 ${toggle_vp8} VP8 codec support 43 ${toggle_vp9} VP9 codec support 44 ${toggle_internal_stats} output of encoder internal stats for debug, if supported (encoders) 45 ${toggle_postproc} postprocessing 46 ${toggle_vp9_postproc} vp9 specific postprocessing 47 ${toggle_multithread} multithreaded encoding and decoding 48 ${toggle_spatial_resampling} spatial sampling (scaling) support 49 ${toggle_realtime_only} enable this option while building for real-time encoding 50 ${toggle_onthefly_bitpacking} enable on-the-fly bitpacking in real-time encoding 51 ${toggle_error_concealment} enable this option to get a decoder which is able to conceal losses 52 ${toggle_coefficient_range_checking} 53 enable decoder to check if intermediate 54 transform coefficients are in valid range 55 ${toggle_runtime_cpu_detect} runtime cpu detection 56 ${toggle_shared} shared library support 57 ${toggle_static} static library support 58 ${toggle_small} favor smaller size over speed 59 ${toggle_postproc_visualizer} macro block / block level visualizers 60 ${toggle_multi_res_encoding} enable multiple-resolution encoding 61 ${toggle_temporal_denoising} enable temporal denoising and disable the spatial denoiser 62 ${toggle_vp9_temporal_denoising} 63 enable vp9 temporal denoising 64 ${toggle_webm_io} enable input from and output to WebM container 65 ${toggle_libyuv} enable libyuv 66 67 Codecs: 68 Codecs can be selectively enabled or disabled individually, or by family: 69 --disable-<codec> 70 is equivalent to: 71 --disable-<codec>-encoder 72 --disable-<codec>-decoder 73 74 Codecs available in this distribution: 75 EOF 76 #restore editor state ' 77 78 family=""; 79 last_family=""; 80 c=""; 81 str=""; 82 for c in ${CODECS}; do 83 family=${c%_*} 84 if [ "${family}" != "${last_family}" ]; then 85 [ -z "${str}" ] || echo "${str}" 86 str="$(printf ' %10s:' ${family})" 87 fi 88 str="${str} $(printf '%10s' ${c#*_})" 89 last_family=${family} 90 done 91 echo "${str}" 92 show_help_post 93 } 94 95 ## 96 ## BEGIN APPLICATION SPECIFIC CONFIGURATION 97 ## 98 99 # all_platforms is a list of all supported target platforms. Maintain 100 # alphabetically by architecture, generic-gnu last. 101 all_platforms="${all_platforms} arm64-android-gcc" 102 all_platforms="${all_platforms} arm64-darwin-gcc" 103 all_platforms="${all_platforms} arm64-linux-gcc" 104 all_platforms="${all_platforms} armv7-android-gcc" #neon Cortex-A8 105 all_platforms="${all_platforms} armv7-darwin-gcc" #neon Cortex-A8 106 all_platforms="${all_platforms} armv7-linux-rvct" #neon Cortex-A8 107 all_platforms="${all_platforms} armv7-linux-gcc" #neon Cortex-A8 108 all_platforms="${all_platforms} armv7-none-rvct" #neon Cortex-A8 109 all_platforms="${all_platforms} armv7-win32-vs11" 110 all_platforms="${all_platforms} armv7-win32-vs12" 111 all_platforms="${all_platforms} armv7-win32-vs14" 112 all_platforms="${all_platforms} armv7-win32-vs15" 113 all_platforms="${all_platforms} armv7s-darwin-gcc" 114 all_platforms="${all_platforms} armv8-linux-gcc" 115 all_platforms="${all_platforms} mips32-linux-gcc" 116 all_platforms="${all_platforms} mips64-linux-gcc" 117 all_platforms="${all_platforms} ppc64-linux-gcc" 118 all_platforms="${all_platforms} ppc64le-linux-gcc" 119 all_platforms="${all_platforms} sparc-solaris-gcc" 120 all_platforms="${all_platforms} x86-android-gcc" 121 all_platforms="${all_platforms} x86-darwin8-gcc" 122 all_platforms="${all_platforms} x86-darwin8-icc" 123 all_platforms="${all_platforms} x86-darwin9-gcc" 124 all_platforms="${all_platforms} x86-darwin9-icc" 125 all_platforms="${all_platforms} x86-darwin10-gcc" 126 all_platforms="${all_platforms} x86-darwin11-gcc" 127 all_platforms="${all_platforms} x86-darwin12-gcc" 128 all_platforms="${all_platforms} x86-darwin13-gcc" 129 all_platforms="${all_platforms} x86-darwin14-gcc" 130 all_platforms="${all_platforms} x86-darwin15-gcc" 131 all_platforms="${all_platforms} x86-darwin16-gcc" 132 all_platforms="${all_platforms} x86-iphonesimulator-gcc" 133 all_platforms="${all_platforms} x86-linux-gcc" 134 all_platforms="${all_platforms} x86-linux-icc" 135 all_platforms="${all_platforms} x86-os2-gcc" 136 all_platforms="${all_platforms} x86-solaris-gcc" 137 all_platforms="${all_platforms} x86-win32-gcc" 138 all_platforms="${all_platforms} x86-win32-vs10" 139 all_platforms="${all_platforms} x86-win32-vs11" 140 all_platforms="${all_platforms} x86-win32-vs12" 141 all_platforms="${all_platforms} x86-win32-vs14" 142 all_platforms="${all_platforms} x86-win32-vs15" 143 all_platforms="${all_platforms} x86_64-android-gcc" 144 all_platforms="${all_platforms} x86_64-darwin9-gcc" 145 all_platforms="${all_platforms} x86_64-darwin10-gcc" 146 all_platforms="${all_platforms} x86_64-darwin11-gcc" 147 all_platforms="${all_platforms} x86_64-darwin12-gcc" 148 all_platforms="${all_platforms} x86_64-darwin13-gcc" 149 all_platforms="${all_platforms} x86_64-darwin14-gcc" 150 all_platforms="${all_platforms} x86_64-darwin15-gcc" 151 all_platforms="${all_platforms} x86_64-darwin16-gcc" 152 all_platforms="${all_platforms} x86_64-iphonesimulator-gcc" 153 all_platforms="${all_platforms} x86_64-linux-gcc" 154 all_platforms="${all_platforms} x86_64-linux-icc" 155 all_platforms="${all_platforms} x86_64-solaris-gcc" 156 all_platforms="${all_platforms} x86_64-win64-gcc" 157 all_platforms="${all_platforms} x86_64-win64-vs10" 158 all_platforms="${all_platforms} x86_64-win64-vs11" 159 all_platforms="${all_platforms} x86_64-win64-vs12" 160 all_platforms="${all_platforms} x86_64-win64-vs14" 161 all_platforms="${all_platforms} x86_64-win64-vs15" 162 all_platforms="${all_platforms} generic-gnu" 163 164 # all_targets is a list of all targets that can be configured 165 # note that these should be in dependency order for now. 166 all_targets="libs examples tools docs" 167 168 # all targets available are enabled, by default. 169 for t in ${all_targets}; do 170 [ -f "${source_path}/${t}.mk" ] && enable_feature ${t} 171 done 172 173 if ! diff --version >/dev/null; then 174 die "diff missing: Try installing diffutils via your package manager." 175 fi 176 177 if ! perl --version >/dev/null; then 178 die "Perl is required to build" 179 fi 180 181 if [ "`cd \"${source_path}\" && pwd`" != "`pwd`" ]; then 182 # test to see if source_path already configured 183 if [ -f "${source_path}/vpx_config.h" ]; then 184 die "source directory already configured; run 'make distclean' there first" 185 fi 186 fi 187 188 # check installed doxygen version 189 doxy_version=$(doxygen --version 2>/dev/null) 190 doxy_major=${doxy_version%%.*} 191 if [ ${doxy_major:-0} -ge 1 ]; then 192 doxy_version=${doxy_version#*.} 193 doxy_minor=${doxy_version%%.*} 194 doxy_patch=${doxy_version##*.} 195 196 [ $doxy_major -gt 1 ] && enable_feature doxygen 197 [ $doxy_minor -gt 5 ] && enable_feature doxygen 198 [ $doxy_minor -eq 5 ] && [ $doxy_patch -ge 3 ] && enable_feature doxygen 199 fi 200 201 # disable codecs when their source directory does not exist 202 [ -d "${source_path}/vp8" ] || disable_codec vp8 203 [ -d "${source_path}/vp9" ] || disable_codec vp9 204 205 # install everything except the sources, by default. sources will have 206 # to be enabled when doing dist builds, since that's no longer a common 207 # case. 208 enabled doxygen && enable_feature install_docs 209 enable_feature install_bins 210 enable_feature install_libs 211 212 enable_feature static 213 enable_feature optimizations 214 enable_feature dependency_tracking 215 enable_feature spatial_resampling 216 enable_feature multithread 217 enable_feature os_support 218 enable_feature temporal_denoising 219 220 CODECS=" 221 vp8_encoder 222 vp8_decoder 223 vp9_encoder 224 vp9_decoder 225 " 226 CODEC_FAMILIES=" 227 vp8 228 vp9 229 " 230 231 ARCH_LIST=" 232 arm 233 mips 234 x86 235 x86_64 236 ppc 237 " 238 ARCH_EXT_LIST_X86=" 239 mmx 240 sse 241 sse2 242 sse3 243 ssse3 244 sse4_1 245 avx 246 avx2 247 avx512 248 " 249 250 ARCH_EXT_LIST_LOONGSON=" 251 mmi 252 " 253 254 ARCH_EXT_LIST=" 255 neon 256 neon_asm 257 258 mips32 259 dspr2 260 msa 261 mips64 262 263 ${ARCH_EXT_LIST_X86} 264 265 vsx 266 267 ${ARCH_EXT_LIST_LOONGSON} 268 " 269 HAVE_LIST=" 270 ${ARCH_EXT_LIST} 271 vpx_ports 272 pthread_h 273 unistd_h 274 " 275 EXPERIMENT_LIST=" 276 spatial_svc 277 fp_mb_stats 278 emulate_hardware 279 " 280 CONFIG_LIST=" 281 dependency_tracking 282 external_build 283 install_docs 284 install_bins 285 install_libs 286 install_srcs 287 debug 288 gprof 289 gcov 290 rvct 291 gcc 292 msvs 293 pic 294 big_endian 295 296 codec_srcs 297 debug_libs 298 299 dequant_tokens 300 dc_recon 301 runtime_cpu_detect 302 postproc 303 vp9_postproc 304 multithread 305 internal_stats 306 ${CODECS} 307 ${CODEC_FAMILIES} 308 encoders 309 decoders 310 static_msvcrt 311 spatial_resampling 312 realtime_only 313 onthefly_bitpacking 314 error_concealment 315 shared 316 static 317 small 318 postproc_visualizer 319 os_support 320 unit_tests 321 webm_io 322 libyuv 323 decode_perf_tests 324 encode_perf_tests 325 multi_res_encoding 326 temporal_denoising 327 vp9_temporal_denoising 328 coefficient_range_checking 329 vp9_highbitdepth 330 better_hw_compatibility 331 experimental 332 size_limit 333 always_adjust_bpm 334 ${EXPERIMENT_LIST} 335 " 336 CMDLINE_SELECT=" 337 dependency_tracking 338 external_build 339 extra_warnings 340 werror 341 install_docs 342 install_bins 343 install_libs 344 install_srcs 345 debug 346 gprof 347 gcov 348 pic 349 optimizations 350 ccache 351 runtime_cpu_detect 352 thumb 353 354 libs 355 examples 356 tools 357 docs 358 libc 359 as 360 size_limit 361 codec_srcs 362 debug_libs 363 364 dequant_tokens 365 dc_recon 366 postproc 367 vp9_postproc 368 multithread 369 internal_stats 370 ${CODECS} 371 ${CODEC_FAMILIES} 372 static_msvcrt 373 spatial_resampling 374 realtime_only 375 onthefly_bitpacking 376 error_concealment 377 shared 378 static 379 small 380 postproc_visualizer 381 unit_tests 382 webm_io 383 libyuv 384 decode_perf_tests 385 encode_perf_tests 386 multi_res_encoding 387 temporal_denoising 388 vp9_temporal_denoising 389 coefficient_range_checking 390 better_hw_compatibility 391 vp9_highbitdepth 392 experimental 393 always_adjust_bpm 394 " 395 396 process_cmdline() { 397 for opt do 398 optval="${opt#*=}" 399 case "$opt" in 400 --disable-codecs) 401 for c in ${CODEC_FAMILIES}; do disable_codec $c; done 402 ;; 403 --enable-?*|--disable-?*) 404 eval `echo "$opt" | sed 's/--/action=/;s/-/ option=/;s/-/_/g'` 405 if is_in ${option} ${EXPERIMENT_LIST}; then 406 if enabled experimental; then 407 ${action}_feature $option 408 else 409 log_echo "Ignoring $opt -- not in experimental mode." 410 fi 411 elif is_in ${option} "${CODECS} ${CODEC_FAMILIES}"; then 412 ${action}_codec ${option} 413 else 414 process_common_cmdline $opt 415 fi 416 ;; 417 *) process_common_cmdline "$opt" 418 ;; 419 esac 420 done 421 } 422 423 post_process_cmdline() { 424 c="" 425 426 # Enable all detected codecs, if they haven't been disabled 427 for c in ${CODECS}; do soft_enable $c; done 428 429 # Enable the codec family if any component of that family is enabled 430 for c in ${CODECS}; do 431 enabled $c && enable_feature ${c%_*} 432 done 433 434 # Set the {en,de}coders variable if any algorithm in that class is enabled 435 for c in ${CODECS}; do 436 enabled ${c} && enable_feature ${c##*_}s 437 done 438 } 439 440 441 process_targets() { 442 enabled child || write_common_config_banner 443 write_common_target_config_h ${BUILD_PFX}vpx_config.h 444 write_common_config_targets 445 446 # Calculate the default distribution name, based on the enabled features 447 cf="" 448 DIST_DIR=vpx 449 for cf in $CODEC_FAMILIES; do 450 if enabled ${cf}_encoder && enabled ${cf}_decoder; then 451 DIST_DIR="${DIST_DIR}-${cf}" 452 elif enabled ${cf}_encoder; then 453 DIST_DIR="${DIST_DIR}-${cf}cx" 454 elif enabled ${cf}_decoder; then 455 DIST_DIR="${DIST_DIR}-${cf}dx" 456 fi 457 done 458 enabled debug_libs && DIST_DIR="${DIST_DIR}-debug" 459 enabled codec_srcs && DIST_DIR="${DIST_DIR}-src" 460 ! enabled postproc && ! enabled vp9_postproc && DIST_DIR="${DIST_DIR}-nopost" 461 ! enabled multithread && DIST_DIR="${DIST_DIR}-nomt" 462 ! enabled install_docs && DIST_DIR="${DIST_DIR}-nodocs" 463 DIST_DIR="${DIST_DIR}-${tgt_isa}-${tgt_os}" 464 case "${tgt_os}" in 465 win*) enabled static_msvcrt && DIST_DIR="${DIST_DIR}mt" || DIST_DIR="${DIST_DIR}md" 466 DIST_DIR="${DIST_DIR}-${tgt_cc}" 467 ;; 468 esac 469 if [ -f "${source_path}/build/make/version.sh" ]; then 470 ver=`"$source_path/build/make/version.sh" --bare "$source_path"` 471 DIST_DIR="${DIST_DIR}-${ver}" 472 VERSION_STRING=${ver} 473 ver=${ver%%-*} 474 VERSION_PATCH=${ver##*.} 475 ver=${ver%.*} 476 VERSION_MINOR=${ver##*.} 477 ver=${ver#v} 478 VERSION_MAJOR=${ver%.*} 479 fi 480 enabled child || cat <<EOF >> config.mk 481 482 PREFIX=${prefix} 483 ifeq (\$(MAKECMDGOALS),dist) 484 DIST_DIR?=${DIST_DIR} 485 else 486 DIST_DIR?=\$(DESTDIR)${prefix} 487 endif 488 LIBSUBDIR=${libdir##${prefix}/} 489 490 VERSION_STRING=${VERSION_STRING} 491 492 VERSION_MAJOR=${VERSION_MAJOR} 493 VERSION_MINOR=${VERSION_MINOR} 494 VERSION_PATCH=${VERSION_PATCH} 495 496 CONFIGURE_ARGS=${CONFIGURE_ARGS} 497 EOF 498 enabled child || echo "CONFIGURE_ARGS?=${CONFIGURE_ARGS}" >> config.mk 499 500 # 501 # Write makefiles for all enabled targets 502 # 503 for tgt in libs examples tools docs solution; do 504 tgt_fn="$tgt-$toolchain.mk" 505 506 if enabled $tgt; then 507 echo "Creating makefiles for ${toolchain} ${tgt}" 508 write_common_target_config_mk $tgt_fn ${BUILD_PFX}vpx_config.h 509 #write_${tgt}_config 510 fi 511 done 512 513 } 514 515 process_detect() { 516 if enabled shared; then 517 # Can only build shared libs on a subset of platforms. Doing this check 518 # here rather than at option parse time because the target auto-detect 519 # magic happens after the command line has been parsed. 520 case "${tgt_os}" in 521 linux|os2|darwin*|iphonesimulator*) 522 # Supported platforms 523 ;; 524 *) 525 if enabled gnu; then 526 echo "--enable-shared is only supported on ELF; assuming this is OK" 527 else 528 die "--enable-shared only supported on ELF, OS/2, and Darwin for now" 529 fi 530 ;; 531 esac 532 fi 533 if [ -z "$CC" ] || enabled external_build; then 534 echo "Bypassing toolchain for environment detection." 535 enable_feature external_build 536 check_header() { 537 log fake_check_header "$@" 538 header=$1 539 shift 540 var=`echo $header | sed 's/[^A-Za-z0-9_]/_/g'` 541 disable_feature $var 542 # Headers common to all environments 543 case $header in 544 stdio.h) 545 true; 546 ;; 547 *) 548 result=false 549 for d in "$@"; do 550 [ -f "${d##-I}/$header" ] && result=true && break 551 done 552 ${result:-true} 553 esac && enable_feature $var 554 555 # Specialize windows and POSIX environments. 556 case $toolchain in 557 *-win*-*) 558 # Don't check for any headers in Windows builds. 559 false 560 ;; 561 *) 562 case $header in 563 pthread.h) true;; 564 unistd.h) true;; 565 *) false;; 566 esac && enable_feature $var 567 esac 568 enabled $var 569 } 570 check_ld() { 571 true 572 } 573 fi 574 check_header stdio.h || die "Unable to invoke compiler: ${CC} ${CFLAGS}" 575 check_ld <<EOF || die "Toolchain is unable to link executables" 576 int main(void) {return 0;} 577 EOF 578 # check system headers 579 check_header pthread.h 580 check_header unistd.h # for sysconf(3) and friends. 581 582 check_header vpx/vpx_integer.h -I${source_path} && enable_feature vpx_ports 583 } 584 585 process_toolchain() { 586 process_common_toolchain 587 588 # Enable some useful compiler flags 589 if enabled gcc; then 590 enabled werror && check_add_cflags -Werror 591 check_add_cflags -Wall 592 check_add_cflags -Wdeclaration-after-statement 593 check_add_cflags -Wdisabled-optimization 594 check_add_cflags -Wfloat-conversion 595 check_add_cflags -Wparentheses-equality 596 check_add_cflags -Wpointer-arith 597 check_add_cflags -Wtype-limits 598 check_add_cflags -Wcast-qual 599 check_add_cflags -Wvla 600 check_add_cflags -Wimplicit-function-declaration 601 check_add_cflags -Wuninitialized 602 check_add_cflags -Wunused 603 # -Wextra has some tricky cases. Rather than fix them all now, get the 604 # flag for as many files as possible and fix the remaining issues 605 # piecemeal. 606 # https://bugs.chromium.org/p/webm/issues/detail?id=1069 607 check_add_cflags -Wextra 608 # check_add_cflags also adds to cxxflags. gtest does not do well with 609 # -Wundef so add it explicitly to CFLAGS only. 610 check_cflags -Wundef && add_cflags_only -Wundef 611 if enabled mips || [ -z "${INLINE}" ]; then 612 enabled extra_warnings || check_add_cflags -Wno-unused-function 613 fi 614 # Avoid this warning for third_party C++ sources. Some reorganization 615 # would be needed to apply this only to test/*.cc. 616 check_cflags -Wshorten-64-to-32 && add_cflags_only -Wshorten-64-to-32 617 fi 618 619 if enabled icc; then 620 enabled werror && check_add_cflags -Werror 621 check_add_cflags -Wall 622 check_add_cflags -Wpointer-arith 623 624 # ICC has a number of floating point optimizations that we disable 625 # in favor of deterministic output WRT to other compilers 626 add_cflags -fp-model precise 627 fi 628 629 # Enable extra, harmless warnings. These might provide additional insight 630 # to what the compiler is doing and why, but in general, but they shouldn't 631 # be treated as fatal, even if we're treating warnings as errors. 632 GCC_EXTRA_WARNINGS=" 633 -Wdisabled-optimization 634 -Winline 635 " 636 enabled gcc && EXTRA_WARNINGS="${GCC_EXTRA_WARNINGS}" 637 RVCT_EXTRA_WARNINGS=" 638 --remarks 639 " 640 enabled rvct && EXTRA_WARNINGS="${RVCT_EXTRA_WARNINGS}" 641 if enabled extra_warnings; then 642 for w in ${EXTRA_WARNINGS}; do 643 check_add_cflags ${w} 644 enabled gcc && enabled werror && check_add_cflags -Wno-error=${w} 645 done 646 fi 647 648 # ccache only really works on gcc toolchains 649 enabled gcc || soft_disable ccache 650 if enabled mips; then 651 enable_feature dequant_tokens 652 enable_feature dc_recon 653 fi 654 655 if enabled internal_stats; then 656 enable_feature vp9_postproc 657 fi 658 659 # Enable the postbuild target if building for visual studio. 660 case "$tgt_cc" in 661 vs*) enable_feature msvs 662 enable_feature solution 663 vs_version=${tgt_cc##vs} 664 VCPROJ_SFX=vcxproj 665 gen_vcproj_cmd=${source_path}/build/make/gen_msvs_vcxproj.sh 666 enabled werror && gen_vcproj_cmd="${gen_vcproj_cmd} --enable-werror" 667 all_targets="${all_targets} solution" 668 INLINE="__inline" 669 ;; 670 esac 671 672 # Other toolchain specific defaults 673 case $toolchain in x86*) soft_enable postproc;; esac 674 675 if enabled postproc_visualizer; then 676 enabled postproc || die "postproc_visualizer requires postproc to be enabled" 677 fi 678 679 # Enable unit tests by default if we have a working C++ compiler. 680 case "$toolchain" in 681 *-vs*) 682 soft_enable unit_tests 683 soft_enable webm_io 684 soft_enable libyuv 685 ;; 686 *-android-*) 687 soft_enable webm_io 688 soft_enable libyuv 689 # GTestLog must be modified to use Android logging utilities. 690 ;; 691 *-darwin-*) 692 # iOS/ARM builds do not work with gtest. This does not match 693 # x86 targets. 694 ;; 695 *-iphonesimulator-*) 696 soft_enable webm_io 697 soft_enable libyuv 698 ;; 699 *-win*) 700 # Some mingw toolchains don't have pthread available by default. 701 # Treat these more like visual studio where threading in gtest 702 # would be disabled for the same reason. 703 check_cxx "$@" <<EOF && soft_enable unit_tests 704 int z; 705 EOF 706 check_cxx "$@" <<EOF && soft_enable webm_io 707 int z; 708 EOF 709 check_cxx "$@" <<EOF && soft_enable libyuv 710 int z; 711 EOF 712 ;; 713 *) 714 enabled pthread_h && check_cxx "$@" <<EOF && soft_enable unit_tests 715 int z; 716 EOF 717 check_cxx "$@" <<EOF && soft_enable webm_io 718 int z; 719 EOF 720 check_cxx "$@" <<EOF && soft_enable libyuv 721 int z; 722 EOF 723 ;; 724 esac 725 # libwebm needs to be linked with C++ standard library 726 enabled webm_io && LD=${CXX} 727 728 # append any user defined extra cflags 729 if [ -n "${extra_cflags}" ] ; then 730 check_add_cflags ${extra_cflags} || \ 731 die "Requested extra CFLAGS '${extra_cflags}' not supported by compiler" 732 fi 733 if [ -n "${extra_cxxflags}" ]; then 734 check_add_cxxflags ${extra_cxxflags} || \ 735 die "Requested extra CXXFLAGS '${extra_cxxflags}' not supported by compiler" 736 fi 737 } 738 739 740 ## 741 ## END APPLICATION SPECIFIC CONFIGURATION 742 ## 743 CONFIGURE_ARGS="$@" 744 process "$@" 745 print_webm_license ${BUILD_PFX}vpx_config.c "/*" " */" 746 cat <<EOF >> ${BUILD_PFX}vpx_config.c 747 #include "vpx/vpx_codec.h" 748 static const char* const cfg = "$CONFIGURE_ARGS"; 749 const char *vpx_codec_build_config(void) {return cfg;} 750 EOF 751