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