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\"`" 16source_path=${0%/*} 17. "${source_path}/build/make/configure.sh" 18 19show_help(){ 20 show_help_pre 21 cat << EOF 22Advanced 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 67Codecs: 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: 75EOF 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. 101all_platforms="${all_platforms} arm64-android-gcc" 102all_platforms="${all_platforms} arm64-darwin-gcc" 103all_platforms="${all_platforms} arm64-linux-gcc" 104all_platforms="${all_platforms} armv7-android-gcc" #neon Cortex-A8 105all_platforms="${all_platforms} armv7-darwin-gcc" #neon Cortex-A8 106all_platforms="${all_platforms} armv7-linux-rvct" #neon Cortex-A8 107all_platforms="${all_platforms} armv7-linux-gcc" #neon Cortex-A8 108all_platforms="${all_platforms} armv7-none-rvct" #neon Cortex-A8 109all_platforms="${all_platforms} armv7-win32-vs11" 110all_platforms="${all_platforms} armv7-win32-vs12" 111all_platforms="${all_platforms} armv7-win32-vs14" 112all_platforms="${all_platforms} armv7-win32-vs15" 113all_platforms="${all_platforms} armv7s-darwin-gcc" 114all_platforms="${all_platforms} armv8-linux-gcc" 115all_platforms="${all_platforms} mips32-linux-gcc" 116all_platforms="${all_platforms} mips64-linux-gcc" 117all_platforms="${all_platforms} ppc64-linux-gcc" 118all_platforms="${all_platforms} ppc64le-linux-gcc" 119all_platforms="${all_platforms} sparc-solaris-gcc" 120all_platforms="${all_platforms} x86-android-gcc" 121all_platforms="${all_platforms} x86-darwin8-gcc" 122all_platforms="${all_platforms} x86-darwin8-icc" 123all_platforms="${all_platforms} x86-darwin9-gcc" 124all_platforms="${all_platforms} x86-darwin9-icc" 125all_platforms="${all_platforms} x86-darwin10-gcc" 126all_platforms="${all_platforms} x86-darwin11-gcc" 127all_platforms="${all_platforms} x86-darwin12-gcc" 128all_platforms="${all_platforms} x86-darwin13-gcc" 129all_platforms="${all_platforms} x86-darwin14-gcc" 130all_platforms="${all_platforms} x86-darwin15-gcc" 131all_platforms="${all_platforms} x86-darwin16-gcc" 132all_platforms="${all_platforms} x86-iphonesimulator-gcc" 133all_platforms="${all_platforms} x86-linux-gcc" 134all_platforms="${all_platforms} x86-linux-icc" 135all_platforms="${all_platforms} x86-os2-gcc" 136all_platforms="${all_platforms} x86-solaris-gcc" 137all_platforms="${all_platforms} x86-win32-gcc" 138all_platforms="${all_platforms} x86-win32-vs10" 139all_platforms="${all_platforms} x86-win32-vs11" 140all_platforms="${all_platforms} x86-win32-vs12" 141all_platforms="${all_platforms} x86-win32-vs14" 142all_platforms="${all_platforms} x86-win32-vs15" 143all_platforms="${all_platforms} x86_64-android-gcc" 144all_platforms="${all_platforms} x86_64-darwin9-gcc" 145all_platforms="${all_platforms} x86_64-darwin10-gcc" 146all_platforms="${all_platforms} x86_64-darwin11-gcc" 147all_platforms="${all_platforms} x86_64-darwin12-gcc" 148all_platforms="${all_platforms} x86_64-darwin13-gcc" 149all_platforms="${all_platforms} x86_64-darwin14-gcc" 150all_platforms="${all_platforms} x86_64-darwin15-gcc" 151all_platforms="${all_platforms} x86_64-darwin16-gcc" 152all_platforms="${all_platforms} x86_64-iphonesimulator-gcc" 153all_platforms="${all_platforms} x86_64-linux-gcc" 154all_platforms="${all_platforms} x86_64-linux-icc" 155all_platforms="${all_platforms} x86_64-solaris-gcc" 156all_platforms="${all_platforms} x86_64-win64-gcc" 157all_platforms="${all_platforms} x86_64-win64-vs10" 158all_platforms="${all_platforms} x86_64-win64-vs11" 159all_platforms="${all_platforms} x86_64-win64-vs12" 160all_platforms="${all_platforms} x86_64-win64-vs14" 161all_platforms="${all_platforms} x86_64-win64-vs15" 162all_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. 166all_targets="libs examples tools docs" 167 168# all targets available are enabled, by default. 169for t in ${all_targets}; do 170 [ -f "${source_path}/${t}.mk" ] && enable_feature ${t} 171done 172 173if ! perl --version >/dev/null; then 174 die "Perl is required to build" 175fi 176 177 178if [ "`cd \"${source_path}\" && pwd`" != "`pwd`" ]; then 179 # test to see if source_path already configured 180 if [ -f "${source_path}/vpx_config.h" ]; then 181 die "source directory already configured; run 'make distclean' there first" 182 fi 183fi 184 185# check installed doxygen version 186doxy_version=$(doxygen --version 2>/dev/null) 187doxy_major=${doxy_version%%.*} 188if [ ${doxy_major:-0} -ge 1 ]; then 189 doxy_version=${doxy_version#*.} 190 doxy_minor=${doxy_version%%.*} 191 doxy_patch=${doxy_version##*.} 192 193 [ $doxy_major -gt 1 ] && enable_feature doxygen 194 [ $doxy_minor -gt 5 ] && enable_feature doxygen 195 [ $doxy_minor -eq 5 ] && [ $doxy_patch -ge 3 ] && enable_feature doxygen 196fi 197 198# disable codecs when their source directory does not exist 199[ -d "${source_path}/vp8" ] || disable_codec vp8 200[ -d "${source_path}/vp9" ] || disable_codec vp9 201 202# install everything except the sources, by default. sources will have 203# to be enabled when doing dist builds, since that's no longer a common 204# case. 205enabled doxygen && enable_feature install_docs 206enable_feature install_bins 207enable_feature install_libs 208 209enable_feature static 210enable_feature optimizations 211enable_feature dependency_tracking 212enable_feature spatial_resampling 213enable_feature multithread 214enable_feature os_support 215enable_feature temporal_denoising 216 217CODECS=" 218 vp8_encoder 219 vp8_decoder 220 vp9_encoder 221 vp9_decoder 222" 223CODEC_FAMILIES=" 224 vp8 225 vp9 226" 227 228ARCH_LIST=" 229 arm 230 mips 231 x86 232 x86_64 233 ppc 234" 235ARCH_EXT_LIST_X86=" 236 mmx 237 sse 238 sse2 239 sse3 240 ssse3 241 sse4_1 242 avx 243 avx2 244" 245ARCH_EXT_LIST=" 246 neon 247 neon_asm 248 249 mips32 250 dspr2 251 msa 252 mips64 253 254 ${ARCH_EXT_LIST_X86} 255 256 vsx 257" 258HAVE_LIST=" 259 ${ARCH_EXT_LIST} 260 vpx_ports 261 pthread_h 262 unistd_h 263" 264EXPERIMENT_LIST=" 265 spatial_svc 266 fp_mb_stats 267 emulate_hardware 268" 269CONFIG_LIST=" 270 dependency_tracking 271 external_build 272 install_docs 273 install_bins 274 install_libs 275 install_srcs 276 debug 277 gprof 278 gcov 279 rvct 280 gcc 281 msvs 282 pic 283 big_endian 284 285 codec_srcs 286 debug_libs 287 288 dequant_tokens 289 dc_recon 290 runtime_cpu_detect 291 postproc 292 vp9_postproc 293 multithread 294 internal_stats 295 ${CODECS} 296 ${CODEC_FAMILIES} 297 encoders 298 decoders 299 static_msvcrt 300 spatial_resampling 301 realtime_only 302 onthefly_bitpacking 303 error_concealment 304 shared 305 static 306 small 307 postproc_visualizer 308 os_support 309 unit_tests 310 webm_io 311 libyuv 312 decode_perf_tests 313 encode_perf_tests 314 multi_res_encoding 315 temporal_denoising 316 vp9_temporal_denoising 317 coefficient_range_checking 318 vp9_highbitdepth 319 better_hw_compatibility 320 experimental 321 size_limit 322 ${EXPERIMENT_LIST} 323" 324CMDLINE_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 optimizations 338 ccache 339 runtime_cpu_detect 340 thumb 341 342 libs 343 examples 344 tools 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 better_hw_compatibility 379 vp9_highbitdepth 380 experimental 381" 382 383process_cmdline() { 384 for opt do 385 optval="${opt#*=}" 386 case "$opt" in 387 --disable-codecs) 388 for c in ${CODEC_FAMILIES}; do disable_codec $c; done 389 ;; 390 --enable-?*|--disable-?*) 391 eval `echo "$opt" | sed 's/--/action=/;s/-/ option=/;s/-/_/g'` 392 if is_in ${option} ${EXPERIMENT_LIST}; then 393 if enabled experimental; then 394 ${action}_feature $option 395 else 396 log_echo "Ignoring $opt -- not in experimental mode." 397 fi 398 elif is_in ${option} "${CODECS} ${CODEC_FAMILIES}"; then 399 ${action}_codec ${option} 400 else 401 process_common_cmdline $opt 402 fi 403 ;; 404 *) process_common_cmdline "$opt" 405 ;; 406 esac 407 done 408} 409 410post_process_cmdline() { 411 c="" 412 413 # Enable all detected codecs, if they haven't been disabled 414 for c in ${CODECS}; do soft_enable $c; done 415 416 # Enable the codec family if any component of that family is enabled 417 for c in ${CODECS}; do 418 enabled $c && enable_feature ${c%_*} 419 done 420 421 # Set the {en,de}coders variable if any algorithm in that class is enabled 422 for c in ${CODECS}; do 423 enabled ${c} && enable_feature ${c##*_}s 424 done 425} 426 427 428process_targets() { 429 enabled child || write_common_config_banner 430 write_common_target_config_h ${BUILD_PFX}vpx_config.h 431 write_common_config_targets 432 433 # Calculate the default distribution name, based on the enabled features 434 cf="" 435 DIST_DIR=vpx 436 for cf in $CODEC_FAMILIES; do 437 if enabled ${cf}_encoder && enabled ${cf}_decoder; then 438 DIST_DIR="${DIST_DIR}-${cf}" 439 elif enabled ${cf}_encoder; then 440 DIST_DIR="${DIST_DIR}-${cf}cx" 441 elif enabled ${cf}_decoder; then 442 DIST_DIR="${DIST_DIR}-${cf}dx" 443 fi 444 done 445 enabled debug_libs && DIST_DIR="${DIST_DIR}-debug" 446 enabled codec_srcs && DIST_DIR="${DIST_DIR}-src" 447 ! enabled postproc && ! enabled vp9_postproc && DIST_DIR="${DIST_DIR}-nopost" 448 ! enabled multithread && DIST_DIR="${DIST_DIR}-nomt" 449 ! enabled install_docs && DIST_DIR="${DIST_DIR}-nodocs" 450 DIST_DIR="${DIST_DIR}-${tgt_isa}-${tgt_os}" 451 case "${tgt_os}" in 452 win*) enabled static_msvcrt && DIST_DIR="${DIST_DIR}mt" || DIST_DIR="${DIST_DIR}md" 453 DIST_DIR="${DIST_DIR}-${tgt_cc}" 454 ;; 455 esac 456 if [ -f "${source_path}/build/make/version.sh" ]; then 457 ver=`"$source_path/build/make/version.sh" --bare "$source_path"` 458 DIST_DIR="${DIST_DIR}-${ver}" 459 VERSION_STRING=${ver} 460 ver=${ver%%-*} 461 VERSION_PATCH=${ver##*.} 462 ver=${ver%.*} 463 VERSION_MINOR=${ver##*.} 464 ver=${ver#v} 465 VERSION_MAJOR=${ver%.*} 466 fi 467 enabled child || cat <<EOF >> config.mk 468 469PREFIX=${prefix} 470ifeq (\$(MAKECMDGOALS),dist) 471DIST_DIR?=${DIST_DIR} 472else 473DIST_DIR?=\$(DESTDIR)${prefix} 474endif 475LIBSUBDIR=${libdir##${prefix}/} 476 477VERSION_STRING=${VERSION_STRING} 478 479VERSION_MAJOR=${VERSION_MAJOR} 480VERSION_MINOR=${VERSION_MINOR} 481VERSION_PATCH=${VERSION_PATCH} 482 483CONFIGURE_ARGS=${CONFIGURE_ARGS} 484EOF 485 enabled child || echo "CONFIGURE_ARGS?=${CONFIGURE_ARGS}" >> config.mk 486 487 # 488 # Write makefiles for all enabled targets 489 # 490 for tgt in libs examples tools docs solution; do 491 tgt_fn="$tgt-$toolchain.mk" 492 493 if enabled $tgt; then 494 echo "Creating makefiles for ${toolchain} ${tgt}" 495 write_common_target_config_mk $tgt_fn ${BUILD_PFX}vpx_config.h 496 #write_${tgt}_config 497 fi 498 done 499 500} 501 502process_detect() { 503 if enabled shared; then 504 # Can only build shared libs on a subset of platforms. Doing this check 505 # here rather than at option parse time because the target auto-detect 506 # magic happens after the command line has been parsed. 507 case "${tgt_os}" in 508 linux|os2|darwin*|iphonesimulator*) 509 # Supported platforms 510 ;; 511 *) 512 if enabled gnu; then 513 echo "--enable-shared is only supported on ELF; assuming this is OK" 514 else 515 die "--enable-shared only supported on ELF, OS/2, and Darwin for now" 516 fi 517 ;; 518 esac 519 fi 520 if [ -z "$CC" ] || enabled external_build; then 521 echo "Bypassing toolchain for environment detection." 522 enable_feature external_build 523 check_header() { 524 log fake_check_header "$@" 525 header=$1 526 shift 527 var=`echo $header | sed 's/[^A-Za-z0-9_]/_/g'` 528 disable_feature $var 529 # Headers common to all environments 530 case $header in 531 stdio.h) 532 true; 533 ;; 534 *) 535 result=false 536 for d in "$@"; do 537 [ -f "${d##-I}/$header" ] && result=true && break 538 done 539 ${result:-true} 540 esac && enable_feature $var 541 542 # Specialize windows and POSIX environments. 543 case $toolchain in 544 *-win*-*) 545 # Don't check for any headers in Windows builds. 546 false 547 ;; 548 *) 549 case $header in 550 pthread.h) true;; 551 unistd.h) true;; 552 *) false;; 553 esac && enable_feature $var 554 esac 555 enabled $var 556 } 557 check_ld() { 558 true 559 } 560 fi 561 check_header stdio.h || die "Unable to invoke compiler: ${CC} ${CFLAGS}" 562 check_ld <<EOF || die "Toolchain is unable to link executables" 563int main(void) {return 0;} 564EOF 565 # check system headers 566 check_header pthread.h 567 check_header unistd.h # for sysconf(3) and friends. 568 569 check_header vpx/vpx_integer.h -I${source_path} && enable_feature vpx_ports 570} 571 572process_toolchain() { 573 process_common_toolchain 574 575 # Enable some useful compiler flags 576 if enabled gcc; then 577 enabled werror && check_add_cflags -Werror 578 check_add_cflags -Wall 579 check_add_cflags -Wdeclaration-after-statement 580 check_add_cflags -Wdisabled-optimization 581 check_add_cflags -Wfloat-conversion 582 check_add_cflags -Wpointer-arith 583 check_add_cflags -Wtype-limits 584 check_add_cflags -Wcast-qual 585 check_add_cflags -Wvla 586 check_add_cflags -Wimplicit-function-declaration 587 check_add_cflags -Wuninitialized 588 check_add_cflags -Wunused 589 # -Wextra has some tricky cases. Rather than fix them all now, get the 590 # flag for as many files as possible and fix the remaining issues 591 # piecemeal. 592 # https://bugs.chromium.org/p/webm/issues/detail?id=1069 593 check_add_cflags -Wextra 594 # check_add_cflags also adds to cxxflags. gtest does not do well with 595 # -Wundef so add it explicitly to CFLAGS only. 596 check_cflags -Wundef && add_cflags_only -Wundef 597 if enabled mips || [ -z "${INLINE}" ]; then 598 enabled extra_warnings || check_add_cflags -Wno-unused-function 599 fi 600 # Avoid this warning for third_party C++ sources. Some reorganization 601 # would be needed to apply this only to test/*.cc. 602 check_cflags -Wshorten-64-to-32 && add_cflags_only -Wshorten-64-to-32 603 fi 604 605 if enabled icc; then 606 enabled werror && check_add_cflags -Werror 607 check_add_cflags -Wall 608 check_add_cflags -Wpointer-arith 609 610 # ICC has a number of floating point optimizations that we disable 611 # in favor of deterministic output WRT to other compilers 612 add_cflags -fp-model precise 613 fi 614 615 # Enable extra, harmless warnings. These might provide additional insight 616 # to what the compiler is doing and why, but in general, but they shouldn't 617 # be treated as fatal, even if we're treating warnings as errors. 618 GCC_EXTRA_WARNINGS=" 619 -Wdisabled-optimization 620 -Winline 621 " 622 enabled gcc && EXTRA_WARNINGS="${GCC_EXTRA_WARNINGS}" 623 RVCT_EXTRA_WARNINGS=" 624 --remarks 625 " 626 enabled rvct && EXTRA_WARNINGS="${RVCT_EXTRA_WARNINGS}" 627 if enabled extra_warnings; then 628 for w in ${EXTRA_WARNINGS}; do 629 check_add_cflags ${w} 630 enabled gcc && enabled werror && check_add_cflags -Wno-error=${w} 631 done 632 fi 633 634 # ccache only really works on gcc toolchains 635 enabled gcc || soft_disable ccache 636 if enabled mips; then 637 enable_feature dequant_tokens 638 enable_feature dc_recon 639 fi 640 641 if enabled internal_stats; then 642 enable_feature vp9_postproc 643 fi 644 645 # Enable the postbuild target if building for visual studio. 646 case "$tgt_cc" in 647 vs*) enable_feature msvs 648 enable_feature solution 649 vs_version=${tgt_cc##vs} 650 VCPROJ_SFX=vcxproj 651 gen_vcproj_cmd=${source_path}/build/make/gen_msvs_vcxproj.sh 652 enabled werror && gen_vcproj_cmd="${gen_vcproj_cmd} --enable-werror" 653 all_targets="${all_targets} solution" 654 INLINE="__forceinline" 655 ;; 656 esac 657 658 # Other toolchain specific defaults 659 case $toolchain in x86*) soft_enable postproc;; esac 660 661 if enabled postproc_visualizer; then 662 enabled postproc || die "postproc_visualizer requires postproc to be enabled" 663 fi 664 665 # Enable unit tests by default if we have a working C++ compiler. 666 case "$toolchain" in 667 *-vs*) 668 soft_enable unit_tests 669 soft_enable webm_io 670 soft_enable libyuv 671 ;; 672 *-android-*) 673 soft_enable webm_io 674 soft_enable libyuv 675 # GTestLog must be modified to use Android logging utilities. 676 ;; 677 *-darwin-*) 678 # iOS/ARM builds do not work with gtest. This does not match 679 # x86 targets. 680 ;; 681 *-iphonesimulator-*) 682 soft_enable webm_io 683 soft_enable libyuv 684 ;; 685 *-win*) 686 # Some mingw toolchains don't have pthread available by default. 687 # Treat these more like visual studio where threading in gtest 688 # would be disabled for the same reason. 689 check_cxx "$@" <<EOF && soft_enable unit_tests 690int z; 691EOF 692 check_cxx "$@" <<EOF && soft_enable webm_io 693int z; 694EOF 695 check_cxx "$@" <<EOF && soft_enable libyuv 696int z; 697EOF 698 ;; 699 *) 700 enabled pthread_h && check_cxx "$@" <<EOF && soft_enable unit_tests 701int z; 702EOF 703 check_cxx "$@" <<EOF && soft_enable webm_io 704int z; 705EOF 706 check_cxx "$@" <<EOF && soft_enable libyuv 707int z; 708EOF 709 ;; 710 esac 711 # libwebm needs to be linked with C++ standard library 712 enabled webm_io && LD=${CXX} 713 714 # append any user defined extra cflags 715 if [ -n "${extra_cflags}" ] ; then 716 check_add_cflags ${extra_cflags} || \ 717 die "Requested extra CFLAGS '${extra_cflags}' not supported by compiler" 718 fi 719 if [ -n "${extra_cxxflags}" ]; then 720 check_add_cxxflags ${extra_cxxflags} || \ 721 die "Requested extra CXXFLAGS '${extra_cxxflags}' not supported by compiler" 722 fi 723} 724 725 726## 727## END APPLICATION SPECIFIC CONFIGURATION 728## 729CONFIGURE_ARGS="$@" 730process "$@" 731print_webm_license ${BUILD_PFX}vpx_config.c "/*" " */" 732cat <<EOF >> ${BUILD_PFX}vpx_config.c 733#include "vpx/vpx_codec.h" 734static const char* const cfg = "$CONFIGURE_ARGS"; 735const char *vpx_codec_build_config(void) {return cfg;} 736EOF 737