OLD | NEW |
1 #!/bin/bash | 1 #!/bin/bash |
2 ## | 2 ## |
3 ## configure | 3 ## configure |
4 ## | 4 ## |
5 ## This script is the front-end to the build system. It provides a similar | 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 | 6 ## interface to standard configure scripts with some extra bits for dealing |
7 ## with toolchains that differ from the standard POSIX interface and | 7 ## with toolchains that differ from the standard POSIX interface and |
8 ## for extracting subsets of the source tree. In theory, reusable parts | 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, | 9 ## of this script were intended to live in build/make/configure.sh, |
10 ## but in practice, the line is pretty blurry. | 10 ## but in practice, the line is pretty blurry. |
(...skipping 16 matching lines...) Expand all Loading... |
27 --libc=PATH path to alternate libc | 27 --libc=PATH path to alternate libc |
28 --as={yasm|nasm|auto} use specified assembler [auto, yasm preferred] | 28 --as={yasm|nasm|auto} use specified assembler [auto, yasm preferred] |
29 --sdk-path=PATH path to root of sdk (iOS, android builds only) | 29 --sdk-path=PATH path to root of sdk (iOS, android builds only) |
30 ${toggle_fast_unaligned} don't use unaligned accesses, even when | 30 ${toggle_fast_unaligned} don't use unaligned accesses, even when |
31 supported by hardware [auto] | 31 supported by hardware [auto] |
32 ${toggle_codec_srcs} in/exclude codec library source code | 32 ${toggle_codec_srcs} in/exclude codec library source code |
33 ${toggle_debug_libs} in/exclude debug version of libraries | 33 ${toggle_debug_libs} in/exclude debug version of libraries |
34 ${toggle_md5} support for output of checksum data | 34 ${toggle_md5} support for output of checksum data |
35 ${toggle_static_msvcrt} use static MSVCRT (VS builds only) | 35 ${toggle_static_msvcrt} use static MSVCRT (VS builds only) |
36 ${toggle_vp8} VP8 codec support | 36 ${toggle_vp8} VP8 codec support |
| 37 ${toggle_vp9} VP9 codec support |
37 ${toggle_internal_stats} output of encoder internal stats for debug, if
supported (encoders) | 38 ${toggle_internal_stats} output of encoder internal stats for debug, if
supported (encoders) |
38 ${toggle_mem_tracker} track memory usage | 39 ${toggle_mem_tracker} track memory usage |
39 ${toggle_postproc} postprocessing | 40 ${toggle_postproc} postprocessing |
40 ${toggle_multithread} multithreaded encoding and decoding | 41 ${toggle_multithread} multithreaded encoding and decoding |
41 ${toggle_spatial_resampling} spatial sampling (scaling) support | 42 ${toggle_spatial_resampling} spatial sampling (scaling) support |
42 ${toggle_realtime_only} enable this option while building for real-tim
e encoding | 43 ${toggle_realtime_only} enable this option while building for real-tim
e encoding |
43 ${toggle_onthefly_bitpacking} enable on-the-fly bitpacking in real-time enco
ding | 44 ${toggle_onthefly_bitpacking} enable on-the-fly bitpacking in real-time enco
ding |
44 ${toggle_error_concealment} enable this option to get a decoder which is a
ble to conceal losses | 45 ${toggle_error_concealment} enable this option to get a decoder which is a
ble to conceal losses |
45 ${toggle_runtime_cpu_detect} runtime cpu detection | 46 ${toggle_runtime_cpu_detect} runtime cpu detection |
46 ${toggle_shared} shared library support | 47 ${toggle_shared} shared library support |
(...skipping 122 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
169 enable static | 170 enable static |
170 enable optimizations | 171 enable optimizations |
171 enable fast_unaligned #allow unaligned accesses, if supported by hw | 172 enable fast_unaligned #allow unaligned accesses, if supported by hw |
172 enable md5 | 173 enable md5 |
173 enable spatial_resampling | 174 enable spatial_resampling |
174 enable multithread | 175 enable multithread |
175 enable os_support | 176 enable os_support |
176 enable temporal_denoising | 177 enable temporal_denoising |
177 | 178 |
178 [ -d ${source_path}/../include ] && enable alt_tree_layout | 179 [ -d ${source_path}/../include ] && enable alt_tree_layout |
179 for d in vp8; do | 180 for d in vp8 vp9; do |
180 [ -d ${source_path}/${d} ] && disable alt_tree_layout; | 181 [ -d ${source_path}/${d} ] && disable alt_tree_layout; |
181 done | 182 done |
182 | 183 |
183 if ! enabled alt_tree_layout; then | 184 if ! enabled alt_tree_layout; then |
184 # development environment | 185 # development environment |
185 [ -d ${source_path}/vp8 ] && CODECS="${CODECS} vp8_encoder vp8_decoder" | 186 [ -d ${source_path}/vp8 ] && CODECS="${CODECS} vp8_encoder vp8_decoder" |
| 187 [ -d ${source_path}/vp9 ] && CODECS="${CODECS} vp9_encoder vp9_decoder" |
186 else | 188 else |
187 # customer environment | 189 # customer environment |
188 [ -f ${source_path}/../include/vpx/vp8cx.h ] && CODECS="${CODECS} vp8_encoder" | 190 [ -f ${source_path}/../include/vpx/vp8cx.h ] && CODECS="${CODECS} vp8_encoder" |
189 [ -f ${source_path}/../include/vpx/vp8dx.h ] && CODECS="${CODECS} vp8_decoder" | 191 [ -f ${source_path}/../include/vpx/vp8dx.h ] && CODECS="${CODECS} vp8_decoder" |
| 192 [ -f ${source_path}/../include/vpx/vp9cx.h ] && CODECS="${CODECS} vp9_encoder" |
| 193 [ -f ${source_path}/../include/vpx/vp9dx.h ] && CODECS="${CODECS} vp9_decoder" |
190 [ -f ${source_path}/../include/vpx/vp8cx.h ] || disable vp8_encoder | 194 [ -f ${source_path}/../include/vpx/vp8cx.h ] || disable vp8_encoder |
191 [ -f ${source_path}/../include/vpx/vp8dx.h ] || disable vp8_decoder | 195 [ -f ${source_path}/../include/vpx/vp8dx.h ] || disable vp8_decoder |
| 196 [ -f ${source_path}/../include/vpx/vp9cx.h ] || disable vp9_encoder |
| 197 [ -f ${source_path}/../include/vpx/vp9dx.h ] || disable vp9_decoder |
192 | 198 |
193 [ -f ${source_path}/../lib/*/*mt.lib ] && soft_enable static_msvcrt | 199 [ -f ${source_path}/../lib/*/*mt.lib ] && soft_enable static_msvcrt |
194 fi | 200 fi |
195 | 201 |
196 CODECS="$(echo ${CODECS} | tr ' ' '\n')" | 202 CODECS="$(echo ${CODECS} | tr ' ' '\n')" |
197 CODEC_FAMILIES="$(for c in ${CODECS}; do echo ${c%_*}; done | sort | uniq)" | 203 CODEC_FAMILIES="$(for c in ${CODECS}; do echo ${c%_*}; done | sort | uniq)" |
198 | 204 |
199 ARCH_LIST=" | 205 ARCH_LIST=" |
200 arm | 206 arm |
201 mips | 207 mips |
(...skipping 21 matching lines...) Expand all Loading... |
223 " | 229 " |
224 HAVE_LIST=" | 230 HAVE_LIST=" |
225 ${ARCH_EXT_LIST} | 231 ${ARCH_EXT_LIST} |
226 vpx_ports | 232 vpx_ports |
227 stdint_h | 233 stdint_h |
228 alt_tree_layout | 234 alt_tree_layout |
229 pthread_h | 235 pthread_h |
230 sys_mman_h | 236 sys_mman_h |
231 unistd_h | 237 unistd_h |
232 " | 238 " |
| 239 EXPERIMENT_LIST=" |
| 240 csm |
| 241 comp_intra_pred |
| 242 superblocks |
| 243 pred_filter |
| 244 lossless |
| 245 subpelrefmv |
| 246 new_mvref |
| 247 implicit_segmentation |
| 248 newbintramodes |
| 249 comp_interintra_pred |
| 250 " |
233 CONFIG_LIST=" | 251 CONFIG_LIST=" |
234 external_build | 252 external_build |
235 install_docs | 253 install_docs |
236 install_bins | 254 install_bins |
237 install_libs | 255 install_libs |
238 install_srcs | 256 install_srcs |
239 debug | 257 debug |
240 gprof | 258 gprof |
241 gcov | 259 gcov |
242 rvct | 260 rvct |
(...skipping 26 matching lines...) Expand all Loading... |
269 onthefly_bitpacking | 287 onthefly_bitpacking |
270 error_concealment | 288 error_concealment |
271 shared | 289 shared |
272 static | 290 static |
273 small | 291 small |
274 postproc_visualizer | 292 postproc_visualizer |
275 os_support | 293 os_support |
276 unit_tests | 294 unit_tests |
277 multi_res_encoding | 295 multi_res_encoding |
278 temporal_denoising | 296 temporal_denoising |
| 297 experimental |
| 298 ${EXPERIMENT_LIST} |
279 " | 299 " |
280 CMDLINE_SELECT=" | 300 CMDLINE_SELECT=" |
| 301 external_build |
281 extra_warnings | 302 extra_warnings |
282 werror | 303 werror |
283 install_docs | 304 install_docs |
284 install_bins | 305 install_bins |
285 install_libs | 306 install_libs |
286 install_srcs | 307 install_srcs |
287 debug | 308 debug |
288 gprof | 309 gprof |
289 gcov | 310 gcov |
290 pic | 311 pic |
(...skipping 24 matching lines...) Expand all Loading... |
315 realtime_only | 336 realtime_only |
316 onthefly_bitpacking | 337 onthefly_bitpacking |
317 error_concealment | 338 error_concealment |
318 shared | 339 shared |
319 static | 340 static |
320 small | 341 small |
321 postproc_visualizer | 342 postproc_visualizer |
322 unit_tests | 343 unit_tests |
323 multi_res_encoding | 344 multi_res_encoding |
324 temporal_denoising | 345 temporal_denoising |
| 346 experimental |
325 " | 347 " |
326 | 348 |
327 process_cmdline() { | 349 process_cmdline() { |
328 for opt do | 350 for opt do |
329 optval="${opt#*=}" | 351 optval="${opt#*=}" |
330 case "$opt" in | 352 case "$opt" in |
331 --disable-codecs) for c in ${CODECS}; do disable $c; done ;; | 353 --disable-codecs) for c in ${CODECS}; do disable $c; done ;; |
| 354 --enable-?*|--disable-?*) |
| 355 eval `echo "$opt" | sed 's/--/action=/;s/-/ option=/;s/-/_/g'` |
| 356 if echo "${EXPERIMENT_LIST}" | grep "^ *$option\$" >/dev/null; then |
| 357 if enabled experimental; then |
| 358 $action $option |
| 359 else |
| 360 log_echo "Ignoring $opt -- not in experimental mode." |
| 361 fi |
| 362 else |
| 363 process_common_cmdline $opt |
| 364 fi |
| 365 ;; |
332 *) process_common_cmdline "$opt" | 366 *) process_common_cmdline "$opt" |
333 ;; | 367 ;; |
334 esac | 368 esac |
335 done | 369 done |
336 } | 370 } |
337 | 371 |
338 post_process_cmdline() { | 372 post_process_cmdline() { |
339 local c | 373 local c |
340 | 374 |
341 # If the codec family is disabled, disable all components of that family. | 375 # If the codec family is disabled, disable all components of that family. |
(...skipping 115 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
457 # here rather than at option parse time because the target auto-detect | 491 # here rather than at option parse time because the target auto-detect |
458 # magic happens after the command line has been parsed. | 492 # magic happens after the command line has been parsed. |
459 if ! enabled linux; then | 493 if ! enabled linux; then |
460 if enabled gnu; then | 494 if enabled gnu; then |
461 echo "--enable-shared is only supported on ELF; assuming this is
OK" | 495 echo "--enable-shared is only supported on ELF; assuming this is
OK" |
462 else | 496 else |
463 die "--enable-shared only supported on ELF for now" | 497 die "--enable-shared only supported on ELF for now" |
464 fi | 498 fi |
465 fi | 499 fi |
466 fi | 500 fi |
467 if [ -z "$CC" ]; then | 501 if [ -z "$CC" ] || enabled external_build; then |
468 echo "Bypassing toolchain for environment detection." | 502 echo "Bypassing toolchain for environment detection." |
469 enable external_build | 503 enable external_build |
470 check_header() { | 504 check_header() { |
471 log fake_check_header "$@" | 505 log fake_check_header "$@" |
472 header=$1 | 506 header=$1 |
473 shift | 507 shift |
474 var=`echo $header | sed 's/[^A-Za-z0-9_]/_/g'` | 508 var=`echo $header | sed 's/[^A-Za-z0-9_]/_/g'` |
475 disable $var | 509 disable $var |
| 510 # Headers common to all environments |
476 case $header in | 511 case $header in |
477 stdio.h) | 512 stdio.h) |
478 true; | 513 true; |
479 ;; | 514 ;; |
480 *) | 515 *) |
481 local result=false | 516 local result=false |
482 for d in "$@"; do | 517 for d in "$@"; do |
483 [ -f "${d##-I}/$header" ] && result=true && break | 518 [ -f "${d##-I}/$header" ] && result=true && break |
484 done | 519 done |
485 ${result:-true} | 520 ${result:-true} |
486 esac && enable $var | 521 esac && enable $var |
| 522 |
| 523 # Specialize windows and POSIX environments. |
| 524 case $toolchain in |
| 525 *-win*-*) |
| 526 case $header-$toolchain in |
| 527 stdint*-gcc) true;; |
| 528 *) false;; |
| 529 esac && enable $var |
| 530 ;; |
| 531 *) |
| 532 case $header in |
| 533 stdint.h) true;; |
| 534 pthread.h) true;; |
| 535 sys/mman.h) true;; |
| 536 unistd.h) true;; |
| 537 *) false;; |
| 538 esac && enable $var |
| 539 esac |
| 540 enabled $var |
487 } | 541 } |
488 check_ld() { | 542 check_ld() { |
489 true | 543 true |
490 } | 544 } |
491 fi | 545 fi |
492 check_header stdio.h || die "Unable to invoke compiler: ${CC} ${CFLAGS}" | 546 check_header stdio.h || die "Unable to invoke compiler: ${CC} ${CFLAGS}" |
493 check_ld <<EOF || die "Toolchain is unable to link executables" | 547 check_ld <<EOF || die "Toolchain is unable to link executables" |
494 int main(void) {return 0;} | 548 int main(void) {return 0;} |
495 EOF | 549 EOF |
496 # check system headers | 550 # check system headers |
497 check_header stdint.h | 551 check_header stdint.h |
498 check_header pthread.h | 552 check_header pthread.h |
499 check_header sys/mman.h | 553 check_header sys/mman.h |
| 554 check_header unistd.h # for sysconf(3) and friends. |
500 | 555 |
501 check_header vpx/vpx_integer.h -I${source_path} && enable vpx_ports | 556 check_header vpx/vpx_integer.h -I${source_path} && enable vpx_ports |
502 } | 557 } |
503 | 558 |
504 process_toolchain() { | 559 process_toolchain() { |
505 process_common_toolchain | 560 process_common_toolchain |
506 | 561 |
507 # Handle universal binaries for this architecture | 562 # Handle universal binaries for this architecture |
508 case $toolchain in | 563 case $toolchain in |
509 universal-darwin*) | 564 universal-darwin*) |
(...skipping 20 matching lines...) Expand all Loading... |
530 | 585 |
531 # Enable some useful compiler flags | 586 # Enable some useful compiler flags |
532 if enabled gcc; then | 587 if enabled gcc; then |
533 enabled werror && check_add_cflags -Werror | 588 enabled werror && check_add_cflags -Werror |
534 check_add_cflags -Wall | 589 check_add_cflags -Wall |
535 check_add_cflags -Wdeclaration-after-statement | 590 check_add_cflags -Wdeclaration-after-statement |
536 check_add_cflags -Wdisabled-optimization | 591 check_add_cflags -Wdisabled-optimization |
537 check_add_cflags -Wpointer-arith | 592 check_add_cflags -Wpointer-arith |
538 check_add_cflags -Wtype-limits | 593 check_add_cflags -Wtype-limits |
539 check_add_cflags -Wcast-qual | 594 check_add_cflags -Wcast-qual |
| 595 check_add_cflags -Wvla |
540 check_add_cflags -Wimplicit-function-declaration | 596 check_add_cflags -Wimplicit-function-declaration |
541 check_add_cflags -Wuninitialized | 597 check_add_cflags -Wuninitialized |
542 check_add_cflags -Wunused-variable | 598 check_add_cflags -Wunused-variable |
543 check_add_cflags -Wunused-but-set-variable | 599 check_add_cflags -Wunused-but-set-variable |
544 enabled extra_warnings || check_add_cflags -Wno-unused-function | 600 enabled extra_warnings || check_add_cflags -Wno-unused-function |
545 fi | 601 fi |
546 | 602 |
547 if enabled icc; then | 603 if enabled icc; then |
548 enabled werror && check_add_cflags -Werror | 604 enabled werror && check_add_cflags -Werror |
549 check_add_cflags -Wall | 605 check_add_cflags -Wall |
(...skipping 66 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
616 ## | 672 ## |
617 ## END APPLICATION SPECIFIC CONFIGURATION | 673 ## END APPLICATION SPECIFIC CONFIGURATION |
618 ## | 674 ## |
619 CONFIGURE_ARGS="$@" | 675 CONFIGURE_ARGS="$@" |
620 process "$@" | 676 process "$@" |
621 print_webm_license ${BUILD_PFX}vpx_config.c "/*" " */" | 677 print_webm_license ${BUILD_PFX}vpx_config.c "/*" " */" |
622 cat <<EOF >> ${BUILD_PFX}vpx_config.c | 678 cat <<EOF >> ${BUILD_PFX}vpx_config.c |
623 static const char* const cfg = "$CONFIGURE_ARGS"; | 679 static const char* const cfg = "$CONFIGURE_ARGS"; |
624 const char *vpx_codec_build_config(void) {return cfg;} | 680 const char *vpx_codec_build_config(void) {return cfg;} |
625 EOF | 681 EOF |
OLD | NEW |