yading@10: #!/bin/sh yading@10: # yading@10: # FFmpeg configure script yading@10: # yading@10: # Copyright (c) 2000-2002 Fabrice Bellard yading@10: # Copyright (c) 2005-2008 Diego Biurrun yading@10: # Copyright (c) 2005-2008 Mans Rullgard yading@10: # yading@10: yading@10: # Prevent locale nonsense from breaking basic text processing. yading@10: LC_ALL=C yading@10: export LC_ALL yading@10: yading@10: # make sure we are running under a compatible shell yading@10: # try to make this part work with most shells yading@10: yading@10: try_exec(){ yading@10: echo "Trying shell $1" yading@10: type "$1" > /dev/null 2>&1 && exec "$@" yading@10: } yading@10: yading@10: unset foo yading@10: (: ${foo%%bar}) 2> /dev/null yading@10: E1="$?" yading@10: yading@10: (: ${foo?}) 2> /dev/null yading@10: E2="$?" yading@10: yading@10: if test "$E1" != 0 || test "$E2" = 0; then yading@10: echo "Broken shell detected. Trying alternatives." yading@10: export FF_CONF_EXEC yading@10: if test "0$FF_CONF_EXEC" -lt 1; then yading@10: FF_CONF_EXEC=1 yading@10: try_exec bash "$0" "$@" yading@10: fi yading@10: if test "0$FF_CONF_EXEC" -lt 2; then yading@10: FF_CONF_EXEC=2 yading@10: try_exec ksh "$0" "$@" yading@10: fi yading@10: if test "0$FF_CONF_EXEC" -lt 3; then yading@10: FF_CONF_EXEC=3 yading@10: try_exec /usr/xpg4/bin/sh "$0" "$@" yading@10: fi yading@10: echo "No compatible shell script interpreter found." yading@10: echo "This configure script requires a POSIX-compatible shell" yading@10: echo "such as bash or ksh." yading@10: echo "THIS IS NOT A BUG IN FFMPEG, DO NOT REPORT IT AS SUCH." yading@10: echo "Instead, install a working POSIX-compatible shell." yading@10: echo "Disabling this configure test will create a broken FFmpeg." yading@10: if test "$BASH_VERSION" = '2.04.0(1)-release'; then yading@10: echo "This bash version ($BASH_VERSION) is broken on your platform." yading@10: echo "Upgrade to a later version if available." yading@10: fi yading@10: exit 1 yading@10: fi yading@10: yading@10: test -d /usr/xpg4/bin && PATH=/usr/xpg4/bin:$PATH yading@10: yading@10: show_help(){ yading@10: cat <> $logfile yading@10: } yading@10: yading@10: log_file(){ yading@10: log BEGIN $1 yading@10: pr -n -t $1 >> $logfile yading@10: log END $1 yading@10: } yading@10: yading@10: echolog(){ yading@10: log "$@" yading@10: echo "$@" yading@10: } yading@10: yading@10: warn(){ yading@10: log "WARNING: $*" yading@10: WARNINGS="${WARNINGS}WARNING: $*\n" yading@10: } yading@10: yading@10: die(){ yading@10: echolog "$@" yading@10: cat <>file; yading@10: } else if (file ~ /\\.asm\$/) { yading@10: printf(\"%%define %s %d\\n\", c, v) >>file; yading@10: } else if (file ~ /\\.mak\$/) { yading@10: n = -v ? \"\" : \"!\"; yading@10: printf(\"%s%s=yes\\n\", n, c) >>file; yading@10: } else if (file ~ /\\.texi\$/) { yading@10: pre = -v ? \"\" : \"@c \"; yading@10: yesno = \$2; yading@10: c2 = tolower(c); yading@10: gsub(/_/, \"-\", c2); yading@10: printf(\"%s@set %s %s\\n\", pre, c2, yesno) >>file; yading@10: } yading@10: } yading@10: }" yading@10: } yading@10: yading@10: print_enabled(){ yading@10: suf=$1 yading@10: shift yading@10: for v; do yading@10: enabled $v && printf "%s\n" ${v%$suf}; yading@10: done yading@10: } yading@10: yading@10: append(){ yading@10: var=$1 yading@10: shift yading@10: eval "$var=\"\$$var $*\"" yading@10: } yading@10: yading@10: prepend(){ yading@10: var=$1 yading@10: shift yading@10: eval "$var=\"$* \$$var\"" yading@10: } yading@10: yading@10: add_cppflags(){ yading@10: append CPPFLAGS "$@" yading@10: } yading@10: yading@10: add_cflags(){ yading@10: append CFLAGS $($cflags_filter "$@") yading@10: } yading@10: yading@10: add_cxxflags(){ yading@10: append CXXFLAGS $($cflags_filter "$@") yading@10: } yading@10: yading@10: add_asflags(){ yading@10: append ASFLAGS $($asflags_filter "$@") yading@10: } yading@10: yading@10: add_ldflags(){ yading@10: append LDFLAGS $($ldflags_filter "$@") yading@10: } yading@10: yading@10: add_extralibs(){ yading@10: prepend extralibs $($ldflags_filter "$@") yading@10: } yading@10: yading@10: add_host_cppflags(){ yading@10: append host_cppflags "$@" yading@10: } yading@10: yading@10: add_host_cflags(){ yading@10: append host_cflags $($host_cflags_filter "$@") yading@10: } yading@10: yading@10: add_host_ldflags(){ yading@10: append host_ldflags $($host_ldflags_filter "$@") yading@10: } yading@10: yading@10: add_compat(){ yading@10: append compat_objs $1 yading@10: shift yading@10: map 'add_cppflags -D$v' "$@" yading@10: } yading@10: yading@10: check_cmd(){ yading@10: log "$@" yading@10: "$@" >> $logfile 2>&1 yading@10: } yading@10: yading@10: cc_o(){ yading@10: eval printf '%s\\n' $CC_O yading@10: } yading@10: yading@10: cc_e(){ yading@10: eval printf '%s\\n' $CC_E yading@10: } yading@10: yading@10: check_cc(){ yading@10: log check_cc "$@" yading@10: cat > $TMPC yading@10: log_file $TMPC yading@10: check_cmd $cc $CPPFLAGS $CFLAGS "$@" $CC_C $(cc_o $TMPO) $TMPC yading@10: } yading@10: yading@10: check_cxx(){ yading@10: log check_cxx "$@" yading@10: cat > $TMPCPP yading@10: log_file $TMPCPP yading@10: check_cmd $cxx $CPPFLAGS $CFLAGS $CXXFLAGS "$@" $CXX_C -o $TMPO $TMPCPP yading@10: } yading@10: yading@10: check_cpp(){ yading@10: log check_cpp "$@" yading@10: cat > $TMPC yading@10: log_file $TMPC yading@10: check_cmd $cc $CPPFLAGS $CFLAGS "$@" $(cc_e $TMPO) $TMPC yading@10: } yading@10: yading@10: as_o(){ yading@10: eval printf '%s\\n' $AS_O yading@10: } yading@10: yading@10: check_as(){ yading@10: log check_as "$@" yading@10: cat > $TMPS yading@10: log_file $TMPS yading@10: check_cmd $as $CPPFLAGS $ASFLAGS "$@" $AS_C $(as_o $TMPO) $TMPS yading@10: } yading@10: yading@10: check_inline_asm(){ yading@10: log check_inline_asm "$@" yading@10: name="$1" yading@10: code="$2" yading@10: shift 2 yading@10: disable $name yading@10: check_cc "$@" < $TMPS yading@10: log_file $TMPS yading@10: shift 1 yading@10: check_cmd $yasmexe $YASMFLAGS -Werror "$@" -o $TMPO $TMPS yading@10: } yading@10: yading@10: ld_o(){ yading@10: eval printf '%s\\n' $LD_O yading@10: } yading@10: yading@10: check_ld(){ yading@10: log check_ld "$@" yading@10: type=$1 yading@10: shift 1 yading@10: flags=$(filter_out '-l*|*.so' $@) yading@10: libs=$(filter '-l*|*.so' $@) yading@10: check_$type $($cflags_filter $flags) || return yading@10: flags=$($ldflags_filter $flags) yading@10: libs=$($ldflags_filter $libs) yading@10: check_cmd $ld $LDFLAGS $flags $(ld_o $TMPE) $TMPO $libs $extralibs yading@10: } yading@10: yading@10: check_code(){ yading@10: log check_code "$@" yading@10: check=$1 yading@10: headers=$2 yading@10: code=$3 yading@10: shift 3 yading@10: { yading@10: for hdr in $headers; do yading@10: echo "#include <$hdr>" yading@10: done yading@10: echo "int main(void) { $code; return 0; }" yading@10: } | check_$check "$@" yading@10: } yading@10: yading@10: check_cppflags(){ yading@10: log check_cppflags "$@" yading@10: check_cc "$@" < yading@10: int x; yading@10: EOF yading@10: } yading@10: yading@10: check_func(){ yading@10: log check_func "$@" yading@10: func=$1 yading@10: shift yading@10: disable $func yading@10: check_ld "cc" "$@" < yading@10: float foo(float f, float g) { return $func($args); } yading@10: int main(void){ return (int) foo; } yading@10: EOF yading@10: } yading@10: yading@10: check_func_headers(){ yading@10: log check_func_headers "$@" yading@10: headers=$1 yading@10: funcs=$2 yading@10: shift 2 yading@10: { yading@10: for hdr in $headers; do yading@10: echo "#include <$hdr>" yading@10: done yading@10: for func in $funcs; do yading@10: echo "long check_$func(void) { return (long) $func; }" yading@10: done yading@10: echo "int main(void) { return 0; }" yading@10: } | check_ld "cc" "$@" && enable $funcs && enable_safe $headers yading@10: } yading@10: yading@10: check_class_headers_cpp(){ yading@10: log check_class_headers_cpp "$@" yading@10: headers=$1 yading@10: classes=$2 yading@10: shift 2 yading@10: { yading@10: for hdr in $headers; do yading@10: echo "#include <$hdr>" yading@10: done yading@10: echo "int main(void) { " yading@10: i=1 yading@10: for class in $classes; do yading@10: echo "$class obj$i;" yading@10: i=$(expr $i + 1) yading@10: done yading@10: echo "return 0; }" yading@10: } | check_ld "cxx" "$@" && enable $funcs && enable_safe $headers yading@10: } yading@10: yading@10: check_cpp_condition(){ yading@10: log check_cpp_condition "$@" yading@10: header=$1 yading@10: condition=$2 yading@10: shift 2 yading@10: check_cpp "$@" < yading@10: #if !($condition) yading@10: #error "unsatisfied condition: $condition" yading@10: #endif yading@10: EOF yading@10: } yading@10: yading@10: check_lib(){ yading@10: log check_lib "$@" yading@10: header="$1" yading@10: func="$2" yading@10: shift 2 yading@10: check_header $header && check_func $func "$@" && add_extralibs "$@" yading@10: } yading@10: yading@10: check_lib2(){ yading@10: log check_lib2 "$@" yading@10: headers="$1" yading@10: funcs="$2" yading@10: shift 2 yading@10: check_func_headers "$headers" "$funcs" "$@" && add_extralibs "$@" yading@10: } yading@10: yading@10: check_lib_cpp(){ yading@10: log check_lib_cpp "$@" yading@10: headers="$1" yading@10: classes="$2" yading@10: shift 2 yading@10: check_class_headers_cpp "$headers" "$classes" "$@" && add_extralibs "$@" yading@10: } yading@10: yading@10: check_pkg_config(){ yading@10: log check_pkg_config "$@" yading@10: pkg="$1" yading@10: headers="$2" yading@10: funcs="$3" yading@10: shift 3 yading@10: $pkg_config --exists $pkg 2>/dev/null || return yading@10: pkg_cflags=$($pkg_config --cflags $pkg) yading@10: pkg_libs=$($pkg_config --libs $pkg) yading@10: check_func_headers "$headers" "$funcs" $pkg_cflags $pkg_libs "$@" && yading@10: set_safe ${pkg}_cflags $pkg_cflags && yading@10: set_safe ${pkg}_libs $pkg_libs yading@10: } yading@10: yading@10: check_exec(){ yading@10: check_ld "cc" "$@" && { enabled cross_compile || $TMPE >> $logfile 2>&1; } yading@10: } yading@10: yading@10: check_exec_crash(){ yading@10: code=$(cat) yading@10: yading@10: # exit() is not async signal safe. _Exit (C99) and _exit (POSIX) yading@10: # are safe but may not be available everywhere. Thus we use yading@10: # raise(SIGTERM) instead. The check is run in a subshell so we yading@10: # can redirect the "Terminated" message from the shell. SIGBUS yading@10: # is not defined by standard C so it is used conditionally. yading@10: yading@10: (check_exec "$@") >> $logfile 2>&1 < yading@10: static void sighandler(int sig){ yading@10: raise(SIGTERM); yading@10: } yading@10: int func(void){ yading@10: $code yading@10: } yading@10: int (*func_ptr)(void) = func; yading@10: int main(void){ yading@10: signal(SIGILL, sighandler); yading@10: signal(SIGFPE, sighandler); yading@10: signal(SIGSEGV, sighandler); yading@10: #ifdef SIGBUS yading@10: signal(SIGBUS, sighandler); yading@10: #endif yading@10: return func_ptr(); yading@10: } yading@10: EOF yading@10: } yading@10: yading@10: check_type(){ yading@10: log check_type "$@" yading@10: headers=$1 yading@10: type=$2 yading@10: shift 2 yading@10: disable_safe "$type" yading@10: check_code cc "$headers" "$type v" "$@" && enable_safe "$type" yading@10: } yading@10: yading@10: check_struct(){ yading@10: log check_struct "$@" yading@10: headers=$1 yading@10: struct=$2 yading@10: member=$3 yading@10: shift 3 yading@10: disable_safe "${struct}_${member}" yading@10: check_code cc "$headers" "const void *p = &(($struct *)0)->$member" "$@" && yading@10: enable_safe "${struct}_${member}" yading@10: } yading@10: yading@10: check_builtin(){ yading@10: log check_builtin "$@" yading@10: name=$1 yading@10: headers=$2 yading@10: builtin=$3 yading@10: shift 3 yading@10: disable "$name" yading@10: check_code ld "$headers" "$builtin" "cc" "$@" && enable "$name" yading@10: } yading@10: yading@10: require(){ yading@10: name="$1" yading@10: header="$2" yading@10: func="$3" yading@10: shift 3 yading@10: check_lib $header $func "$@" || die "ERROR: $name not found" yading@10: } yading@10: yading@10: require2(){ yading@10: name="$1" yading@10: headers="$2" yading@10: func="$3" yading@10: shift 3 yading@10: check_lib2 "$headers" $func "$@" || die "ERROR: $name not found" yading@10: } yading@10: yading@10: require_cpp(){ yading@10: name="$1" yading@10: headers="$2" yading@10: classes="$3" yading@10: shift 3 yading@10: check_lib_cpp "$headers" "$classes" "$@" || die "ERROR: $name not found" yading@10: } yading@10: yading@10: require_pkg_config(){ yading@10: pkg="$1" yading@10: check_pkg_config "$@" || die "ERROR: $pkg not found" yading@10: add_cflags $(get_safe ${pkg}_cflags) yading@10: add_extralibs $(get_safe ${pkg}_libs) yading@10: } yading@10: yading@10: hostcc_o(){ yading@10: eval printf '%s\\n' $HOSTCC_O yading@10: } yading@10: yading@10: check_host_cc(){ yading@10: log check_host_cc "$@" yading@10: cat > $TMPC yading@10: log_file $TMPC yading@10: check_cmd $host_cc $host_cflags "$@" $HOSTCC_C $(hostcc_o $TMPO) $TMPC yading@10: } yading@10: yading@10: check_host_cppflags(){ yading@10: log check_host_cppflags "$@" yading@10: check_host_cc "$@" < "$file.tmp" && mv "$file.tmp" "$file" || rm "$file.tmp" yading@10: } yading@10: yading@10: cp_if_changed(){ yading@10: cmp -s "$1" "$2" && echo "$2 is unchanged" && return yading@10: mkdir -p "$(dirname $2)" yading@10: $cp_f "$1" "$2" yading@10: } yading@10: yading@10: # CONFIG_LIST contains configurable options, while HAVE_LIST is for yading@10: # system-dependent things. yading@10: yading@10: COMPONENT_LIST=" yading@10: bsfs yading@10: decoders yading@10: demuxers yading@10: encoders yading@10: filters yading@10: hwaccels yading@10: indevs yading@10: muxers yading@10: outdevs yading@10: parsers yading@10: protocols yading@10: " yading@10: yading@10: EXTERNAL_LIBRARY_LIST=" yading@10: avisynth yading@10: bzlib yading@10: crystalhd yading@10: fontconfig yading@10: frei0r yading@10: gnutls yading@10: iconv yading@10: libaacplus yading@10: libass yading@10: libbluray yading@10: libcaca yading@10: libcdio yading@10: libcelt yading@10: libdc1394 yading@10: libfaac yading@10: libfdk_aac yading@10: libflite yading@10: libfreetype yading@10: libgsm yading@10: libiec61883 yading@10: libilbc yading@10: libmodplug yading@10: libmp3lame yading@10: libnut yading@10: libopencore_amrnb yading@10: libopencore_amrwb yading@10: libopencv yading@10: libopenjpeg yading@10: libopus yading@10: libpulse yading@10: libquvi yading@10: librtmp yading@10: libschroedinger yading@10: libshine yading@10: libsoxr yading@10: libspeex yading@10: libstagefright_h264 yading@10: libtheora yading@10: libtwolame yading@10: libutvideo yading@10: libv4l2 yading@10: libvo_aacenc yading@10: libvo_amrwbenc yading@10: libvorbis yading@10: libvpx yading@10: libx264 yading@10: libxavs yading@10: libxvid yading@10: openal yading@10: opencl yading@10: openssl yading@10: x11grab yading@10: zlib yading@10: " yading@10: yading@10: DOCUMENT_LIST=" yading@10: doc yading@10: htmlpages yading@10: manpages yading@10: podpages yading@10: txtpages yading@10: " yading@10: yading@10: HWACCEL_LIST=" yading@10: dxva2 yading@10: vaapi yading@10: vda yading@10: vdpau yading@10: " yading@10: yading@10: LIBRARY_LIST=" yading@10: avcodec yading@10: avdevice yading@10: avfilter yading@10: avformat yading@10: avresample yading@10: avutil yading@10: postproc yading@10: swresample yading@10: swscale yading@10: " yading@10: yading@10: PROGRAM_LIST=" yading@10: ffplay yading@10: ffprobe yading@10: ffserver yading@10: ffmpeg yading@10: " yading@10: yading@10: CONFIG_LIST=" yading@10: $COMPONENT_LIST yading@10: $DOCUMENT_LIST yading@10: $EXTERNAL_LIBRARY_LIST yading@10: $HWACCEL_LIST yading@10: $LIBRARY_LIST yading@10: $PROGRAM_LIST yading@10: dct yading@10: dwt yading@10: error_resilience yading@10: fast_unaligned yading@10: fft yading@10: ftrapv yading@10: gpl yading@10: gray yading@10: hardcoded_tables yading@10: incompatible_fork_abi yading@10: lsp yading@10: lzo yading@10: mdct yading@10: memalign_hack yading@10: memory_poisoning yading@10: network yading@10: nonfree yading@10: pic yading@10: rdft yading@10: runtime_cpudetect yading@10: safe_bitstream_reader yading@10: shared yading@10: small yading@10: sram yading@10: static yading@10: swscale_alpha yading@10: thumb yading@10: version3 yading@10: xmm_clobber_test yading@10: " yading@10: yading@10: THREADS_LIST=' yading@10: pthreads yading@10: w32threads yading@10: os2threads yading@10: ' yading@10: yading@10: ATOMICS_LIST=' yading@10: atomics_gcc yading@10: atomics_suncc yading@10: atomics_win32 yading@10: ' yading@10: yading@10: ARCH_LIST=' yading@10: aarch64 yading@10: alpha yading@10: arm yading@10: avr32 yading@10: avr32_ap yading@10: avr32_uc yading@10: bfin yading@10: ia64 yading@10: m68k yading@10: mips yading@10: mips64 yading@10: parisc yading@10: ppc yading@10: ppc64 yading@10: s390 yading@10: sh4 yading@10: sparc yading@10: sparc64 yading@10: tilegx yading@10: tilepro yading@10: tomi yading@10: x86 yading@10: x86_32 yading@10: x86_64 yading@10: ' yading@10: yading@10: ARCH_EXT_LIST_ARM=' yading@10: armv5te yading@10: armv6 yading@10: armv6t2 yading@10: neon yading@10: vfp yading@10: vfpv3 yading@10: ' yading@10: yading@10: ARCH_EXT_LIST_X86=' yading@10: amd3dnow yading@10: amd3dnowext yading@10: avx yading@10: fma4 yading@10: mmx yading@10: mmxext yading@10: sse yading@10: sse2 yading@10: sse3 yading@10: sse4 yading@10: sse42 yading@10: ssse3 yading@10: ' yading@10: yading@10: ARCH_EXT_LIST=" yading@10: $ARCH_EXT_LIST_ARM yading@10: $ARCH_EXT_LIST_X86 yading@10: altivec yading@10: ppc4xx yading@10: vis yading@10: mipsfpu yading@10: mips32r2 yading@10: mipsdspr1 yading@10: mipsdspr2 yading@10: " yading@10: yading@10: HAVE_LIST_CMDLINE=' yading@10: inline_asm yading@10: symver yading@10: yasm yading@10: ' yading@10: yading@10: HAVE_LIST_PUB=' yading@10: bigendian yading@10: fast_unaligned yading@10: incompatible_fork_abi yading@10: ' yading@10: yading@10: MATH_FUNCS=" yading@10: atanf yading@10: atan2f yading@10: cbrt yading@10: cbrtf yading@10: cosf yading@10: exp2 yading@10: exp2f yading@10: expf yading@10: isinf yading@10: isnan yading@10: ldexpf yading@10: llrint yading@10: llrintf yading@10: log2 yading@10: log2f yading@10: log10f yading@10: lrint yading@10: lrintf yading@10: powf yading@10: rint yading@10: round yading@10: roundf yading@10: sinf yading@10: trunc yading@10: truncf yading@10: " yading@10: yading@10: HAVE_LIST=" yading@10: $ARCH_EXT_LIST yading@10: $(add_suffix _external $ARCH_EXT_LIST) yading@10: $(add_suffix _inline $ARCH_EXT_LIST) yading@10: $HAVE_LIST_CMDLINE yading@10: $HAVE_LIST_PUB yading@10: $THREADS_LIST yading@10: $ATOMICS_LIST yading@10: $MATH_FUNCS yading@10: access yading@10: aligned_malloc yading@10: aligned_stack yading@10: alsa_asoundlib_h yading@10: altivec_h yading@10: arpa_inet_h yading@10: asm_mod_q yading@10: asm_mod_y yading@10: asm_types_h yading@10: atomic_cas_ptr yading@10: atomics_native yading@10: attribute_may_alias yading@10: attribute_packed yading@10: cdio_paranoia_h yading@10: cdio_paranoia_paranoia_h yading@10: clock_gettime yading@10: closesocket yading@10: cmov yading@10: CommandLineToArgvW yading@10: cpunop yading@10: CryptGenRandom yading@10: dcbzl yading@10: dev_bktr_ioctl_bt848_h yading@10: dev_bktr_ioctl_meteor_h yading@10: dev_ic_bt8xx_h yading@10: dev_video_bktr_ioctl_bt848_h yading@10: dev_video_meteor_ioctl_meteor_h yading@10: direct_h yading@10: dlfcn_h yading@10: dlopen yading@10: dos_paths yading@10: dxva_h yading@10: ebp_available yading@10: ebx_available yading@10: fast_64bit yading@10: fast_clz yading@10: fast_cmov yading@10: fcntl yading@10: fork yading@10: getaddrinfo yading@10: gethrtime yading@10: getopt yading@10: GetProcessAffinityMask yading@10: GetProcessMemoryInfo yading@10: GetProcessTimes yading@10: GetSystemTimeAsFileTime yading@10: getrusage yading@10: getservbyport yading@10: gettimeofday yading@10: glob yading@10: gnu_as yading@10: gsm_h yading@10: ibm_asm yading@10: inet_aton yading@10: io_h yading@10: isatty yading@10: jack_port_get_latency_range yading@10: kbhit yading@10: ldbrx yading@10: libdc1394_1 yading@10: libdc1394_2 yading@10: local_aligned_16 yading@10: local_aligned_8 yading@10: localtime_r yading@10: loongson yading@10: lzo1x_999_compress yading@10: machine_ioctl_bt848_h yading@10: machine_ioctl_meteor_h yading@10: machine_rw_barrier yading@10: makeinfo yading@10: malloc_h yading@10: MapViewOfFile yading@10: memalign yading@10: MemoryBarrier yading@10: mkstemp yading@10: mm_empty yading@10: mmap yading@10: mprotect yading@10: msvcrt yading@10: nanosleep yading@10: openjpeg_1_5_openjpeg_h yading@10: PeekNamedPipe yading@10: perl yading@10: pod2man yading@10: poll_h yading@10: posix_memalign yading@10: pthread_cancel yading@10: rdtsc yading@10: rsync_contimeout yading@10: sched_getaffinity yading@10: sdl yading@10: SetConsoleTextAttribute yading@10: setmode yading@10: setrlimit yading@10: Sleep yading@10: sndio_h yading@10: socklen_t yading@10: soundcard_h yading@10: strerror_r yading@10: struct_addrinfo yading@10: struct_group_source_req yading@10: struct_ip_mreq_source yading@10: struct_ipv6_mreq yading@10: struct_pollfd yading@10: struct_rusage_ru_maxrss yading@10: struct_sctp_event_subscribe yading@10: struct_sockaddr_in6 yading@10: struct_sockaddr_sa_len yading@10: struct_sockaddr_storage yading@10: struct_v4l2_frmivalenum_discrete yading@10: symver_asm_label yading@10: symver_gnu_asm yading@10: sync_val_compare_and_swap yading@10: sysconf yading@10: sysctl yading@10: sys_mman_h yading@10: sys_param_h yading@10: sys_resource_h yading@10: sys_select_h yading@10: sys_soundcard_h yading@10: sys_time_h yading@10: sys_videoio_h yading@10: termios_h yading@10: texi2html yading@10: threads yading@10: unistd_h yading@10: usleep yading@10: vfp_args yading@10: VirtualAlloc yading@10: windows_h yading@10: winsock2_h yading@10: xform_asm yading@10: xmm_clobbers yading@10: " yading@10: yading@10: # options emitted with CONFIG_ prefix but not available on the command line yading@10: CONFIG_EXTRA=" yading@10: aandcttables yading@10: ac3dsp yading@10: audio_frame_queue yading@10: dsputil yading@10: frame_thread_encoder yading@10: gcrypt yading@10: golomb yading@10: gplv3 yading@10: h264chroma yading@10: h264dsp yading@10: h264pred yading@10: h264qpel yading@10: hpeldsp yading@10: huffman yading@10: lgplv3 yading@10: lpc yading@10: mpegaudio yading@10: mpegaudiodsp yading@10: mpegvideo yading@10: mpegvideoenc yading@10: nettle yading@10: rangecoder yading@10: rtpdec yading@10: rtpenc_chain yading@10: sinewin yading@10: videodsp yading@10: vp3dsp yading@10: " yading@10: yading@10: CMDLINE_SELECT=" yading@10: $ARCH_EXT_LIST yading@10: $CONFIG_LIST yading@10: $HAVE_LIST_CMDLINE yading@10: $THREADS_LIST yading@10: asm yading@10: cross_compile yading@10: debug yading@10: extra_warnings yading@10: logging yading@10: lto yading@10: optimizations yading@10: stripping yading@10: " yading@10: yading@10: PATHS_LIST=' yading@10: bindir yading@10: datadir yading@10: incdir yading@10: libdir yading@10: mandir yading@10: prefix yading@10: shlibdir yading@10: ' yading@10: yading@10: CMDLINE_SET=" yading@10: $PATHS_LIST yading@10: ar yading@10: arch yading@10: as yading@10: assert_level yading@10: build_suffix yading@10: cc yading@10: cpu yading@10: cross_prefix yading@10: cxx yading@10: dep_cc yading@10: extra_version yading@10: host_cc yading@10: host_cflags yading@10: host_ld yading@10: host_ldflags yading@10: host_libs yading@10: host_os yading@10: install yading@10: ld yading@10: logfile yading@10: malloc_prefix yading@10: nm yading@10: optflags yading@10: pkg_config yading@10: progs_suffix yading@10: random_seed yading@10: samples yading@10: strip yading@10: sysinclude yading@10: sysroot yading@10: target_exec yading@10: target_os yading@10: target_path yading@10: toolchain yading@10: valgrind yading@10: yasmexe yading@10: " yading@10: yading@10: CMDLINE_APPEND=" yading@10: extra_cflags yading@10: extra_cxxflags yading@10: host_cppflags yading@10: " yading@10: yading@10: # code dependency declarations yading@10: yading@10: # architecture extensions yading@10: yading@10: armv5te_deps="arm" yading@10: armv6_deps="arm" yading@10: armv6t2_deps="arm" yading@10: neon_deps="arm" yading@10: vfp_deps="arm" yading@10: vfpv3_deps="vfp" yading@10: yading@10: map 'eval ${v}_inline_deps=inline_asm' $ARCH_EXT_LIST_ARM yading@10: yading@10: mipsfpu_deps="mips" yading@10: mips32r2_deps="mips" yading@10: mipsdspr1_deps="mips" yading@10: mipsdspr2_deps="mips" yading@10: yading@10: altivec_deps="ppc" yading@10: ppc4xx_deps="ppc" yading@10: yading@10: vis_deps="sparc" yading@10: yading@10: x86_64_suggest="cmov fast_cmov" yading@10: yading@10: amd3dnow_deps="mmx" yading@10: amd3dnowext_deps="amd3dnow" yading@10: mmx_deps="x86" yading@10: mmxext_deps="mmx" yading@10: sse_deps="mmxext" yading@10: sse2_deps="sse" yading@10: sse3_deps="sse2" yading@10: ssse3_deps="sse3" yading@10: sse4_deps="ssse3" yading@10: sse42_deps="sse4" yading@10: avx_deps="sse42" yading@10: fma4_deps="avx" yading@10: yading@10: mmx_external_deps="yasm" yading@10: mmx_inline_deps="inline_asm" yading@10: mmx_suggest="mmx_external mmx_inline" yading@10: yading@10: for ext in $(filter_out mmx $ARCH_EXT_LIST_X86); do yading@10: eval dep=\$${ext}_deps yading@10: eval ${ext}_external_deps='"${dep}_external"' yading@10: eval ${ext}_inline_deps='"${dep}_inline"' yading@10: eval ${ext}_suggest='"${ext}_external ${ext}_inline"' yading@10: done yading@10: yading@10: aligned_stack_if_any="ppc x86" yading@10: fast_64bit_if_any="alpha ia64 mips64 parisc64 ppc64 sparc64 x86_64" yading@10: fast_clz_if_any="alpha avr32 mips ppc x86" yading@10: fast_unaligned_if_any="ppc x86" yading@10: yading@10: inline_asm_deps="!tms470" yading@10: need_memalign="altivec neon sse" yading@10: yading@10: symver_if_any="symver_asm_label symver_gnu_asm" yading@10: yading@10: log2_deps="!msvcrt" yading@10: yading@10: # subsystems yading@10: dct_select="rdft" yading@10: error_resilience_select="dsputil" yading@10: frame_thread_encoder_deps="encoders threads" yading@10: lpc_select="dsputil" yading@10: mdct_select="fft" yading@10: rdft_select="fft" yading@10: mpegaudio_select="mpegaudiodsp" yading@10: mpegaudiodsp_select="dct" yading@10: mpegvideo_select="dsputil h264chroma hpeldsp videodsp" yading@10: mpegvideoenc_select="mpegvideo" yading@10: yading@10: # decoders / encoders yading@10: aac_decoder_select="mdct sinewin" yading@10: aac_encoder_select="audio_frame_queue mdct sinewin" yading@10: aac_latm_decoder_select="aac_decoder aac_latm_parser" yading@10: ac3_decoder_select="mdct ac3dsp ac3_parser dsputil" yading@10: ac3_encoder_select="mdct ac3dsp dsputil" yading@10: ac3_fixed_encoder_select="mdct ac3dsp dsputil" yading@10: alac_encoder_select="lpc" yading@10: als_decoder_select="dsputil" yading@10: amrnb_decoder_select="lsp" yading@10: amrwb_decoder_select="lsp" yading@10: amv_decoder_select="dsputil hpeldsp" yading@10: amv_encoder_select="aandcttables" yading@10: ape_decoder_select="dsputil" yading@10: asv1_decoder_select="dsputil" yading@10: asv1_encoder_select="dsputil" yading@10: asv2_decoder_select="dsputil" yading@10: asv2_encoder_select="dsputil" yading@10: atrac1_decoder_select="mdct sinewin" yading@10: atrac3_decoder_select="mdct" yading@10: bink_decoder_select="dsputil hpeldsp" yading@10: binkaudio_dct_decoder_select="mdct rdft dct sinewin" yading@10: binkaudio_rdft_decoder_select="mdct rdft sinewin" yading@10: cavs_decoder_select="dsputil golomb h264chroma videodsp" yading@10: cllc_decoder_select="dsputil" yading@10: comfortnoise_encoder_select="lpc" yading@10: cook_decoder_select="dsputil mdct sinewin" yading@10: cscd_decoder_select="lzo" yading@10: cscd_decoder_suggest="zlib" yading@10: dca_decoder_select="mdct" yading@10: dirac_decoder_select="dsputil dwt golomb videodsp" yading@10: dnxhd_decoder_select="dsputil" yading@10: dnxhd_encoder_select="aandcttables dsputil mpegvideoenc" yading@10: dvvideo_decoder_select="dsputil" yading@10: dvvideo_encoder_select="dsputil" yading@10: dxa_decoder_select="zlib" yading@10: eac3_decoder_select="ac3_decoder" yading@10: eac3_encoder_select="ac3_encoder" yading@10: eamad_decoder_select="aandcttables dsputil mpegvideo" yading@10: eatgq_decoder_select="aandcttables" yading@10: eatqi_decoder_select="aandcttables error_resilience mpegvideo" yading@10: exr_decoder_select="zlib" yading@10: ffv1_decoder_select="dsputil golomb rangecoder" yading@10: ffv1_encoder_select="dsputil rangecoder" yading@10: ffvhuff_decoder_select="dsputil" yading@10: ffvhuff_encoder_select="dsputil huffman" yading@10: flac_decoder_select="golomb" yading@10: flac_encoder_select="dsputil golomb lpc" yading@10: flashsv_decoder_select="zlib" yading@10: flashsv_encoder_select="zlib" yading@10: flashsv2_encoder_select="zlib" yading@10: flashsv2_decoder_select="zlib" yading@10: flv_decoder_select="h263_decoder" yading@10: flv_encoder_select="h263_encoder" yading@10: fourxm_decoder_select="dsputil" yading@10: fraps_decoder_select="dsputil huffman" yading@10: g729_decoder_select="dsputil" yading@10: h261_decoder_select="error_resilience mpegvideo" yading@10: h261_encoder_select="aandcttables mpegvideoenc" yading@10: h263_decoder_select="error_resilience h263_parser mpegvideo" yading@10: h263_encoder_select="aandcttables mpegvideoenc" yading@10: h263i_decoder_select="h263_decoder" yading@10: h263p_encoder_select="h263_encoder" yading@10: h264_decoder_select="golomb h264chroma h264dsp h264pred h264qpel videodsp" yading@10: h264_decoder_suggest="error_resilience" yading@10: huffyuv_decoder_select="dsputil" yading@10: huffyuv_encoder_select="dsputil huffman" yading@10: iac_decoder_select="dsputil fft mdct sinewin" yading@10: imc_decoder_select="dsputil fft mdct sinewin" yading@10: indeo3_decoder_select="hpeldsp" yading@10: interplay_video_decoder_select="hpeldsp" yading@10: jpegls_decoder_select="dsputil golomb hpeldsp" yading@10: jpegls_encoder_select="golomb" yading@10: jv_decoder_select="dsputil" yading@10: lagarith_decoder_select="dsputil" yading@10: ljpeg_encoder_select="aandcttables mpegvideoenc" yading@10: loco_decoder_select="golomb" yading@10: mdec_decoder_select="dsputil error_resilience mpegvideo" yading@10: mimic_decoder_select="dsputil hpeldsp" yading@10: mjpeg_decoder_select="dsputil hpeldsp" yading@10: mjpegb_decoder_select="dsputil hpeldsp" yading@10: mjpeg_encoder_select="aandcttables dsputil mpegvideoenc" yading@10: mlp_decoder_select="dsputil mlp_parser" yading@10: motionpixels_decoder_select="dsputil" yading@10: mp1_decoder_select="mpegaudio" yading@10: mp1float_decoder_select="mpegaudio" yading@10: mp2_decoder_select="mpegaudio" yading@10: mp2float_decoder_select="mpegaudio" yading@10: mp3_decoder_select="mpegaudio" yading@10: mp3adu_decoder_select="mpegaudio" yading@10: mp3adufloat_decoder_select="mpegaudio" yading@10: mp3float_decoder_select="mpegaudio" yading@10: mp3on4_decoder_select="mpegaudio" yading@10: mp3on4float_decoder_select="mpegaudio" yading@10: mpc7_decoder_select="dsputil mpegaudiodsp" yading@10: mpc8_decoder_select="dsputil mpegaudiodsp" yading@10: mpeg_xvmc_decoder_deps="X11_extensions_XvMClib_h" yading@10: mpeg_xvmc_decoder_select="mpeg2video_decoder" yading@10: mpeg1video_decoder_select="error_resilience mpegvideo" yading@10: mpeg1video_encoder_select="aandcttables mpegvideoenc" yading@10: mpeg2video_decoder_select="error_resilience mpegvideo" yading@10: mpeg2video_encoder_select="aandcttables mpegvideoenc" yading@10: mpeg4_decoder_select="h263_decoder mpeg4video_parser" yading@10: mpeg4_encoder_select="h263_encoder" yading@10: msmpeg4v1_decoder_select="h263_decoder" yading@10: msmpeg4v2_decoder_select="h263_decoder" yading@10: msmpeg4v2_encoder_select="h263_encoder" yading@10: msmpeg4v3_decoder_select="h263_decoder" yading@10: msmpeg4v3_encoder_select="h263_encoder" yading@10: mss2_decoder_select="error_resilience vc1_decoder" yading@10: mxpeg_decoder_select="dsputil hpeldsp" yading@10: nellymoser_decoder_select="mdct sinewin" yading@10: nellymoser_encoder_select="audio_frame_queue mdct sinewin" yading@10: nuv_decoder_select="dsputil lzo" yading@10: png_decoder_select="zlib" yading@10: png_encoder_select="dsputil zlib" yading@10: prores_decoder_select="dsputil" yading@10: prores_encoder_select="dsputil" yading@10: qcelp_decoder_select="lsp" yading@10: qdm2_decoder_select="mdct rdft mpegaudiodsp" yading@10: ra_144_encoder_select="audio_frame_queue lpc" yading@10: ralf_decoder_select="golomb" yading@10: rtjpeg_decoder_select="dsputil" yading@10: rv10_decoder_select="error_resilience h263_decoder" yading@10: rv10_encoder_select="h263_encoder" yading@10: rv20_decoder_select="error_resilience h263_decoder" yading@10: rv20_encoder_select="h263_encoder" yading@10: rv30_decoder_select="error_resilience golomb h264chroma h264pred h264qpel mpegvideo videodsp" yading@10: rv40_decoder_select="error_resilience golomb h264chroma h264pred h264qpel mpegvideo videodsp" yading@10: shorten_decoder_select="golomb" yading@10: sipr_decoder_select="lsp" yading@10: snow_decoder_select="dsputil dwt h264qpel hpeldsp rangecoder" yading@10: snow_encoder_select="aandcttables dsputil dwt h264qpel hpeldsp mpegvideoenc rangecoder" yading@10: sonic_decoder_select="golomb" yading@10: sonic_encoder_select="golomb" yading@10: sonic_ls_encoder_select="golomb" yading@10: sp5x_decoder_select="dsputil hpeldsp" yading@10: svq1_decoder_select="hpeldsp" yading@10: svq1_encoder_select="aandcttables dsputil hpeldsp mpegvideoenc" yading@10: svq3_decoder_select="golomb h264chroma h264dsp h264pred h264qpel hpeldsp mpegvideo videodsp" yading@10: svq3_decoder_suggest="error_resilience zlib" yading@10: tak_decoder_select="dsputil" yading@10: theora_decoder_select="vp3_decoder" yading@10: tiff_decoder_suggest="zlib" yading@10: tiff_encoder_suggest="zlib" yading@10: thp_decoder_select="dsputil hpeldsp" yading@10: truehd_decoder_select="mlp_parser" yading@10: truemotion2_decoder_select="dsputil" yading@10: truespeech_decoder_select="dsputil" yading@10: tscc_decoder_select="zlib" yading@10: twinvq_decoder_select="mdct lsp sinewin" yading@10: utvideo_decoder_select="dsputil" yading@10: utvideo_encoder_select="dsputil huffman" yading@10: vble_decoder_select="dsputil" yading@10: vc1_decoder_select="error_resilience h263_decoder h264chroma h264qpel" yading@10: vc1image_decoder_select="vc1_decoder" yading@10: vorbis_decoder_select="mdct" yading@10: vorbis_encoder_select="mdct" yading@10: vp3_decoder_select="hpeldsp vp3dsp videodsp" yading@10: vp5_decoder_select="h264chroma hpeldsp videodsp vp3dsp" yading@10: vp6_decoder_select="h264chroma hpeldsp huffman videodsp vp3dsp" yading@10: vp6a_decoder_select="vp6_decoder" yading@10: vp6f_decoder_select="vp6_decoder" yading@10: vp8_decoder_select="h264pred videodsp" yading@10: wmapro_decoder_select="mdct sinewin" yading@10: wmav1_decoder_select="mdct sinewin" yading@10: wmav1_encoder_select="mdct sinewin" yading@10: wmav2_decoder_select="mdct sinewin" yading@10: wmav2_encoder_select="mdct sinewin" yading@10: wmavoice_decoder_select="lsp rdft dct mdct sinewin" yading@10: wmv1_decoder_select="h263_decoder" yading@10: wmv1_encoder_select="h263_encoder" yading@10: wmv2_decoder_select="h263_decoder videodsp" yading@10: wmv2_encoder_select="h263_encoder" yading@10: wmv3_decoder_select="vc1_decoder" yading@10: wmv3image_decoder_select="wmv3_decoder" yading@10: zerocodec_decoder_select="zlib" yading@10: zlib_decoder_select="zlib" yading@10: zlib_encoder_select="zlib" yading@10: zmbv_decoder_select="zlib" yading@10: zmbv_encoder_select="zlib" yading@10: yading@10: # hardware accelerators yading@10: crystalhd_deps="libcrystalhd_libcrystalhd_if_h" yading@10: dxva2_deps="dxva2api_h" yading@10: vaapi_deps="va_va_h" yading@10: vda_deps="VideoDecodeAcceleration_VDADecoder_h pthreads" yading@10: vda_extralibs="-framework CoreFoundation -framework VideoDecodeAcceleration -framework QuartzCore" yading@10: vdpau_deps="vdpau_vdpau_h vdpau_vdpau_x11_h" yading@10: yading@10: h263_vaapi_hwaccel_deps="vaapi" yading@10: h263_vaapi_hwaccel_select="h263_decoder" yading@10: h263_vdpau_hwaccel_deps="vdpau" yading@10: h263_vdpau_hwaccel_select="h263_decoder" yading@10: h264_crystalhd_decoder_select="crystalhd h264_mp4toannexb_bsf h264_parser" yading@10: h264_dxva2_hwaccel_deps="dxva2" yading@10: h264_dxva2_hwaccel_select="h264_decoder" yading@10: h264_vaapi_hwaccel_deps="vaapi" yading@10: h264_vaapi_hwaccel_select="h264_decoder" yading@10: h264_vda_decoder_deps="vda" yading@10: h264_vda_decoder_select="h264_decoder" yading@10: h264_vda_hwaccel_deps="vda" yading@10: h264_vda_hwaccel_select="h264_decoder" yading@10: h264_vdpau_decoder_deps="vdpau" yading@10: h264_vdpau_decoder_select="h264_decoder" yading@10: h264_vdpau_hwaccel_deps="vdpau" yading@10: h264_vdpau_hwaccel_select="h264_decoder" yading@10: mpeg_vdpau_decoder_deps="vdpau" yading@10: mpeg_vdpau_decoder_select="mpeg2video_decoder" yading@10: mpeg1_vdpau_decoder_deps="vdpau" yading@10: mpeg1_vdpau_decoder_select="mpeg1video_decoder" yading@10: mpeg1_vdpau_hwaccel_deps="vdpau" yading@10: mpeg1_vdpau_hwaccel_select="mpeg1video_decoder" yading@10: mpeg2_crystalhd_decoder_select="crystalhd" yading@10: mpeg2_dxva2_hwaccel_deps="dxva2" yading@10: mpeg2_dxva2_hwaccel_select="mpeg2video_decoder" yading@10: mpeg2_vaapi_hwaccel_deps="vaapi" yading@10: mpeg2_vaapi_hwaccel_select="mpeg2video_decoder" yading@10: mpeg2_vdpau_hwaccel_deps="vdpau" yading@10: mpeg2_vdpau_hwaccel_select="mpeg2video_decoder" yading@10: mpeg4_crystalhd_decoder_select="crystalhd" yading@10: mpeg4_vaapi_hwaccel_deps="vaapi" yading@10: mpeg4_vaapi_hwaccel_select="mpeg4_decoder" yading@10: mpeg4_vdpau_decoder_deps="vdpau" yading@10: mpeg4_vdpau_decoder_select="mpeg4_decoder" yading@10: mpeg4_vdpau_hwaccel_deps="vdpau" yading@10: mpeg4_vdpau_hwaccel_select="mpeg4_decoder" yading@10: msmpeg4_crystalhd_decoder_select="crystalhd" yading@10: vc1_crystalhd_decoder_select="crystalhd" yading@10: vc1_dxva2_hwaccel_deps="dxva2" yading@10: vc1_dxva2_hwaccel_select="vc1_decoder" yading@10: vc1_vaapi_hwaccel_deps="vaapi" yading@10: vc1_vaapi_hwaccel_select="vc1_decoder" yading@10: vc1_vdpau_decoder_deps="vdpau" yading@10: vc1_vdpau_decoder_select="vc1_decoder" yading@10: vc1_vdpau_hwaccel_deps="vdpau" yading@10: vc1_vdpau_hwaccel_select="vc1_decoder" yading@10: wmv3_crystalhd_decoder_select="crystalhd" yading@10: wmv3_dxva2_hwaccel_select="vc1_dxva2_hwaccel" yading@10: wmv3_vaapi_hwaccel_select="vc1_vaapi_hwaccel" yading@10: wmv3_vdpau_decoder_select="vc1_vdpau_decoder" yading@10: wmv3_vdpau_hwaccel_select="vc1_vdpau_hwaccel" yading@10: yading@10: # parsers yading@10: h264_parser_select="golomb h264chroma h264dsp h264pred h264qpel videodsp" yading@10: mpeg4video_parser_select="error_resilience mpegvideo" yading@10: mpegvideo_parser_select="error_resilience mpegvideo" yading@10: vc1_parser_select="mpegvideo" yading@10: yading@10: # external libraries yading@10: libaacplus_encoder_deps="libaacplus" yading@10: libcelt_decoder_deps="libcelt" yading@10: libfaac_encoder_deps="libfaac" yading@10: libfaac_encoder_select="audio_frame_queue" yading@10: libfdk_aac_encoder_deps="libfdk_aac" yading@10: libfdk_aac_encoder_select="audio_frame_queue" yading@10: libgsm_decoder_deps="libgsm" yading@10: libgsm_encoder_deps="libgsm" yading@10: libgsm_ms_decoder_deps="libgsm" yading@10: libgsm_ms_encoder_deps="libgsm" yading@10: libilbc_decoder_deps="libilbc" yading@10: libilbc_encoder_deps="libilbc" yading@10: libmodplug_demuxer_deps="libmodplug" yading@10: libmp3lame_encoder_deps="libmp3lame" yading@10: libmp3lame_encoder_select="audio_frame_queue" yading@10: libopencore_amrnb_decoder_deps="libopencore_amrnb" yading@10: libopencore_amrnb_encoder_deps="libopencore_amrnb" yading@10: libopencore_amrnb_encoder_select="audio_frame_queue" yading@10: libopencore_amrwb_decoder_deps="libopencore_amrwb" yading@10: libopenjpeg_decoder_deps="libopenjpeg" yading@10: libopenjpeg_encoder_deps="libopenjpeg" yading@10: libopus_decoder_deps="libopus" yading@10: libopus_encoder_deps="libopus" yading@10: libopus_encoder_select="audio_frame_queue" yading@10: libquvi_demuxer_deps="libquvi" yading@10: libschroedinger_decoder_deps="libschroedinger" yading@10: libschroedinger_encoder_deps="libschroedinger" yading@10: libshine_encoder_deps="libshine" yading@10: libshine_encoder_select="audio_frame_queue" yading@10: libspeex_decoder_deps="libspeex" yading@10: libspeex_encoder_deps="libspeex" yading@10: libspeex_encoder_select="audio_frame_queue" yading@10: libstagefright_h264_decoder_deps="libstagefright_h264" yading@10: libtheora_encoder_deps="libtheora" yading@10: libtwolame_encoder_deps="libtwolame" yading@10: libvo_aacenc_encoder_deps="libvo_aacenc" yading@10: libvo_aacenc_encoder_select="audio_frame_queue" yading@10: libvo_amrwbenc_encoder_deps="libvo_amrwbenc" yading@10: libvorbis_decoder_deps="libvorbis" yading@10: libvorbis_encoder_deps="libvorbis" yading@10: libvorbis_encoder_select="audio_frame_queue" yading@10: libvpx_vp8_decoder_deps="libvpx" yading@10: libvpx_vp8_encoder_deps="libvpx" yading@10: libvpx_vp9_decoder_deps="libvpx" yading@10: libvpx_vp9_encoder_deps="libvpx" yading@10: libx264_encoder_deps="libx264" yading@10: libx264rgb_encoder_deps="libx264" yading@10: libxavs_encoder_deps="libxavs" yading@10: libxvid_encoder_deps="libxvid" yading@10: libutvideo_decoder_deps="libutvideo" yading@10: libutvideo_encoder_deps="libutvideo" yading@10: yading@10: # demuxers / muxers yading@10: ac3_demuxer_select="ac3_parser" yading@10: asf_stream_muxer_select="asf_muxer" yading@10: avisynth_demuxer_deps="avisynth" yading@10: dirac_demuxer_select="dirac_parser" yading@10: dts_demuxer_select="dca_parser" yading@10: dtshd_demuxer_select="dca_parser" yading@10: eac3_demuxer_select="ac3_parser" yading@10: f4v_muxer_select="mov_muxer" yading@10: flac_demuxer_select="flac_parser" yading@10: ipod_muxer_select="mov_muxer" yading@10: ismv_muxer_select="mov_muxer" yading@10: libnut_demuxer_deps="libnut" yading@10: libnut_muxer_deps="libnut" yading@10: matroska_audio_muxer_select="matroska_muxer" yading@10: matroska_demuxer_suggest="bzlib lzo zlib" yading@10: mov_demuxer_suggest="zlib" yading@10: mov_muxer_select="rtpenc_chain" yading@10: mp3_demuxer_select="mpegaudio_parser" yading@10: mp4_muxer_select="mov_muxer" yading@10: mpegts_muxer_select="adts_muxer latm_muxer" yading@10: mpegtsraw_demuxer_select="mpegts_demuxer" yading@10: mxf_d10_muxer_select="mxf_muxer" yading@10: ogg_demuxer_select="golomb" yading@10: psp_muxer_select="mov_muxer" yading@10: rtp_demuxer_select="sdp_demuxer" yading@10: rtpdec_select="asf_demuxer rm_demuxer rtp_protocol mpegts_demuxer mov_demuxer" yading@10: rtsp_demuxer_select="http_protocol rtpdec" yading@10: rtsp_muxer_select="rtp_muxer http_protocol rtp_protocol rtpenc_chain" yading@10: sap_demuxer_select="sdp_demuxer" yading@10: sap_muxer_select="rtp_muxer rtp_protocol rtpenc_chain" yading@10: sdp_demuxer_select="rtpdec" yading@10: smoothstreaming_muxer_select="ismv_muxer" yading@10: spdif_muxer_select="aac_parser" yading@10: tak_demuxer_select="tak_parser" yading@10: tg2_muxer_select="mov_muxer" yading@10: tgp_muxer_select="mov_muxer" yading@10: vobsub_demuxer_select="mpegps_demuxer" yading@10: w64_demuxer_deps="wav_demuxer" yading@10: w64_muxer_deps="wav_muxer" yading@10: yading@10: # indevs / outdevs yading@10: alsa_indev_deps="alsa_asoundlib_h snd_pcm_htimestamp" yading@10: alsa_outdev_deps="alsa_asoundlib_h" yading@10: bktr_indev_deps_any="dev_bktr_ioctl_bt848_h machine_ioctl_bt848_h dev_video_bktr_ioctl_bt848_h dev_ic_bt8xx_h" yading@10: caca_outdev_deps="libcaca" yading@10: dshow_indev_deps="IBaseFilter" yading@10: dshow_indev_extralibs="-lpsapi -lole32 -lstrmiids -luuid" yading@10: dv1394_indev_deps="dv1394 dv_demuxer" yading@10: fbdev_indev_deps="linux_fb_h" yading@10: iec61883_indev_deps="libiec61883" yading@10: jack_indev_deps="jack_jack_h sem_timedwait" yading@10: lavfi_indev_deps="avfilter" yading@10: libcdio_indev_deps="libcdio" yading@10: libdc1394_indev_deps="libdc1394" yading@10: libv4l2_indev_deps="libv4l2" yading@10: openal_indev_deps="openal" yading@10: oss_indev_deps_any="soundcard_h sys_soundcard_h" yading@10: oss_outdev_deps_any="soundcard_h sys_soundcard_h" yading@10: pulse_indev_deps="libpulse" yading@10: sdl_outdev_deps="sdl" yading@10: sndio_indev_deps="sndio_h" yading@10: sndio_outdev_deps="sndio_h" yading@10: v4l_indev_deps="linux_videodev_h" yading@10: v4l2_indev_deps_any="linux_videodev2_h sys_videoio_h" yading@10: vfwcap_indev_deps="capCreateCaptureWindow vfwcap_defines" yading@10: vfwcap_indev_extralibs="-lavicap32" yading@10: x11grab_indev_deps="x11grab" yading@10: yading@10: # protocols yading@10: bluray_protocol_deps="libbluray" yading@10: ffrtmpcrypt_protocol_deps="!librtmp_protocol" yading@10: ffrtmpcrypt_protocol_deps_any="gcrypt nettle openssl" yading@10: ffrtmpcrypt_protocol_select="tcp_protocol" yading@10: ffrtmphttp_protocol_deps="!librtmp_protocol" yading@10: ffrtmphttp_protocol_select="http_protocol" yading@10: gopher_protocol_select="network" yading@10: httpproxy_protocol_select="tcp_protocol" yading@10: http_protocol_select="tcp_protocol" yading@10: https_protocol_select="tls_protocol" yading@10: librtmp_protocol_deps="librtmp" yading@10: librtmpe_protocol_deps="librtmp" yading@10: librtmps_protocol_deps="librtmp" yading@10: librtmpt_protocol_deps="librtmp" yading@10: librtmpte_protocol_deps="librtmp" yading@10: mmsh_protocol_select="http_protocol" yading@10: mmst_protocol_select="network" yading@10: rtmp_protocol_deps="!librtmp_protocol" yading@10: rtmp_protocol_select="tcp_protocol" yading@10: rtmpe_protocol_select="ffrtmpcrypt_protocol" yading@10: rtmps_protocol_deps="!librtmp_protocol" yading@10: rtmps_protocol_select="tls_protocol" yading@10: rtmpt_protocol_select="ffrtmphttp_protocol" yading@10: rtmpte_protocol_select="ffrtmpcrypt_protocol ffrtmphttp_protocol" yading@10: rtmpts_protocol_select="ffrtmphttp_protocol https_protocol" yading@10: rtp_protocol_select="udp_protocol" yading@10: sctp_protocol_deps="struct_sctp_event_subscribe" yading@10: sctp_protocol_select="network" yading@10: srtp_protocol_select="rtp_protocol" yading@10: tcp_protocol_select="network" yading@10: tls_protocol_deps_any="openssl gnutls" yading@10: tls_protocol_select="tcp_protocol" yading@10: udp_protocol_select="network" yading@10: yading@10: # filters yading@10: aconvert_filter_deps="swresample" yading@10: amovie_filter_deps="avcodec avformat" yading@10: aresample_filter_deps="swresample" yading@10: ass_filter_deps="libass" yading@10: asyncts_filter_deps="avresample" yading@10: atempo_filter_deps="avcodec rdft" yading@10: blackframe_filter_deps="gpl" yading@10: boxblur_filter_deps="gpl" yading@10: colormatrix_filter_deps="gpl" yading@10: cropdetect_filter_deps="gpl" yading@10: delogo_filter_deps="gpl" yading@10: deshake_filter_deps="avcodec" yading@10: deshake_filter_select="dsputil" yading@10: drawtext_filter_deps="libfreetype" yading@10: ebur128_filter_deps="gpl" yading@10: flite_filter_deps="libflite" yading@10: frei0r_filter_deps="frei0r dlopen" yading@10: frei0r_filter_extralibs='$ldl' yading@10: frei0r_src_filter_deps="frei0r dlopen" yading@10: frei0r_src_filter_extralibs='$ldl' yading@10: geq_filter_deps="gpl" yading@10: histeq_filter_deps="gpl" yading@10: hqdn3d_filter_deps="gpl" yading@10: hue_filter_deps="gpl" yading@10: interlace_filter_deps="gpl" yading@10: kerndeint_filter_deps="gpl" yading@10: movie_filter_deps="avcodec avformat" yading@10: mp_filter_deps="gpl avcodec swscale inline_asm" yading@10: mpdecimate_filter_deps="gpl avcodec" yading@10: mptestsrc_filter_deps="gpl" yading@10: negate_filter_deps="lut_filter" yading@10: noise_filter_deps="gpl" yading@10: resample_filter_deps="avresample" yading@10: ocv_filter_deps="libopencv" yading@10: pan_filter_deps="swresample" yading@10: pp_filter_deps="gpl postproc" yading@10: removelogo_filter_deps="avcodec avformat swscale" yading@10: scale_filter_deps="swscale" yading@10: smartblur_filter_deps="gpl swscale" yading@10: showspectrum_filter_deps="avcodec rdft" yading@10: stereo3d_filter_deps="gpl" yading@10: subtitles_filter_deps="avformat avcodec libass" yading@10: super2xsai_filter_deps="gpl" yading@10: tinterlace_filter_deps="gpl" yading@10: yadif_filter_deps="gpl" yading@10: pixfmts_super2xsai_test_deps="super2xsai_filter" yading@10: tinterlace_merge_test_deps="tinterlace_filter" yading@10: tinterlace_pad_test_deps="tinterlace_filter" yading@10: yading@10: # libraries yading@10: avcodec_deps="avutil" yading@10: avdevice_deps="avutil avcodec avformat" yading@10: avfilter_deps="avutil" yading@10: avformat_deps="avutil avcodec" yading@10: avresample_deps="avutil" yading@10: postproc_deps="avutil gpl" yading@10: swscale_deps="avutil" yading@10: yading@10: # programs yading@10: ffmpeg_deps="avcodec avfilter avformat swscale swresample" yading@10: ffmpeg_select="format_filter aformat_filter yading@10: setpts_filter null_filter anull_filter" yading@10: ffplay_deps="avcodec avformat swscale swresample sdl" yading@10: ffplay_select="rdft crop_filter" yading@10: ffprobe_deps="avcodec avformat" yading@10: ffserver_deps="avformat ffm_muxer fork rtp_protocol rtsp_demuxer" yading@10: ffserver_extralibs='$ldl' yading@10: yading@10: # documentation yading@10: podpages_deps="perl" yading@10: manpages_deps="perl pod2man" yading@10: htmlpages_deps="texi2html" yading@10: txtpages_deps="makeinfo" yading@10: doc_deps_any="manpages htmlpages podpages txtpages" yading@10: yading@10: # default parameters yading@10: yading@10: logfile="config.log" yading@10: yading@10: # installation paths yading@10: prefix_default="/usr/local" yading@10: bindir_default='${prefix}/bin' yading@10: datadir_default='${prefix}/share/ffmpeg' yading@10: incdir_default='${prefix}/include' yading@10: libdir_default='${prefix}/lib' yading@10: mandir_default='${prefix}/share/man' yading@10: shlibdir_default="$libdir_default" yading@10: yading@10: # toolchain yading@10: ar_default="ar" yading@10: cc_default="gcc" yading@10: cxx_default="g++" yading@10: host_cc_default="gcc" yading@10: cp_f="cp -f" yading@10: install="install" yading@10: ln_s="ln -s -f" yading@10: nm_default="nm -g" yading@10: objformat="elf" yading@10: pkg_config_default=pkg-config yading@10: ranlib="ranlib" yading@10: strip_default="strip" yading@10: yasmexe_default="yasm" yading@10: yading@10: nogas=":" yading@10: yading@10: # machine yading@10: arch_default=$(uname -m) yading@10: cpu="generic" yading@10: yading@10: # OS yading@10: target_os_default=$(tolower $(uname -s)) yading@10: host_os=$target_os_default yading@10: yading@10: # configurable options yading@10: enable $PROGRAM_LIST yading@10: enable $DOCUMENT_LIST yading@10: enable $(filter_out avresample $LIBRARY_LIST) yading@10: enable stripping yading@10: yading@10: enable asm yading@10: enable debug yading@10: enable doc yading@10: enable optimizations yading@10: enable runtime_cpudetect yading@10: enable safe_bitstream_reader yading@10: enable static yading@10: enable swscale_alpha yading@10: yading@10: # By default, enable only those hwaccels that have no external dependencies. yading@10: enable dxva2 vdpau yading@10: yading@10: # build settings yading@10: SHFLAGS='-shared -Wl,-soname,$$(@F)' yading@10: FFSERVERLDFLAGS=-Wl,-E yading@10: LIBPREF="lib" yading@10: LIBSUF=".a" yading@10: FULLNAME='$(NAME)$(BUILDSUF)' yading@10: LIBNAME='$(LIBPREF)$(FULLNAME)$(LIBSUF)' yading@10: SLIBPREF="lib" yading@10: SLIBSUF=".so" yading@10: SLIBNAME='$(SLIBPREF)$(FULLNAME)$(SLIBSUF)' yading@10: SLIBNAME_WITH_VERSION='$(SLIBNAME).$(LIBVERSION)' yading@10: SLIBNAME_WITH_MAJOR='$(SLIBNAME).$(LIBMAJOR)' yading@10: LIB_INSTALL_EXTRA_CMD='$$(RANLIB) "$(LIBDIR)/$(LIBNAME)"' yading@10: SLIB_INSTALL_NAME='$(SLIBNAME_WITH_VERSION)' yading@10: SLIB_INSTALL_LINKS='$(SLIBNAME_WITH_MAJOR) $(SLIBNAME)' yading@10: yading@10: asflags_filter=echo yading@10: cflags_filter=echo yading@10: ldflags_filter=echo yading@10: yading@10: AS_C='-c' yading@10: AS_O='-o $@' yading@10: CC_C='-c' yading@10: CC_E='-E -o $@' yading@10: CC_O='-o $@' yading@10: CXX_C='-c' yading@10: CXX_O='-o $@' yading@10: LD_O='-o $@' yading@10: LD_LIB='-l%' yading@10: LD_PATH='-L' yading@10: HOSTCC_C='-c' yading@10: HOSTCC_O='-o $@' yading@10: HOSTLD_O='-o $@' yading@10: yading@10: host_cflags='-O3 -g' yading@10: host_cppflags='-D_ISOC99_SOURCE -D_XOPEN_SOURCE=600' yading@10: host_libs='-lm' yading@10: host_cflags_filter=echo yading@10: host_ldflags_filter=echo yading@10: yading@10: target_path='$(CURDIR)' yading@10: yading@10: # since the object filename is not given with the -MM flag, the compiler yading@10: # is only able to print the basename, and we must add the path ourselves yading@10: DEPCMD='$(DEP$(1)) $(DEP$(1)FLAGS) $($(1)DEP_FLAGS) $< | sed -e "/^\#.*/d" -e "s,^[[:space:]]*$(*F)\\.o,$(@D)/$(*F).o," > $(@:.o=.d)' yading@10: DEPFLAGS='-MM' yading@10: yading@10: # find source path yading@10: if test -f configure; then yading@10: source_path=. yading@10: else yading@10: source_path=$(cd $(dirname "$0"); pwd) yading@10: echo "$source_path" | grep -q '[[:blank:]]' && yading@10: die "Out of tree builds are impossible with whitespace in source path." yading@10: test -e "$source_path/config.h" && yading@10: die "Out of tree builds are impossible with config.h in source dir." yading@10: fi yading@10: yading@10: for v in "$@"; do yading@10: r=${v#*=} yading@10: l=${v%"$r"} yading@10: r=$(sh_quote "$r") yading@10: FFMPEG_CONFIGURATION="${FFMPEG_CONFIGURATION# } ${l}${r}" yading@10: done yading@10: yading@10: find_things(){ yading@10: thing=$1 yading@10: pattern=$2 yading@10: file=$source_path/$3 yading@10: sed -n "s/^[^#]*$pattern.*([^,]*, *\([^,]*\)\(,.*\)*).*/\1_$thing/p" "$file" yading@10: } yading@10: yading@10: ENCODER_LIST=$(find_things encoder ENC libavcodec/allcodecs.c) yading@10: DECODER_LIST=$(find_things decoder DEC libavcodec/allcodecs.c) yading@10: HWACCEL_LIST=$(find_things hwaccel HWACCEL libavcodec/allcodecs.c) yading@10: PARSER_LIST=$(find_things parser PARSER libavcodec/allcodecs.c) yading@10: BSF_LIST=$(find_things bsf BSF libavcodec/allcodecs.c) yading@10: MUXER_LIST=$(find_things muxer _MUX libavformat/allformats.c) yading@10: DEMUXER_LIST=$(find_things demuxer DEMUX libavformat/allformats.c) yading@10: OUTDEV_LIST=$(find_things outdev OUTDEV libavdevice/alldevices.c) yading@10: INDEV_LIST=$(find_things indev _IN libavdevice/alldevices.c) yading@10: PROTOCOL_LIST=$(find_things protocol PROTOCOL libavformat/allformats.c) yading@10: FILTER_LIST=$(find_things filter FILTER libavfilter/allfilters.c) yading@10: yading@10: ALL_COMPONENTS=" yading@10: $BSF_LIST yading@10: $DECODER_LIST yading@10: $DEMUXER_LIST yading@10: $ENCODER_LIST yading@10: $FILTER_LIST yading@10: $HWACCEL_LIST yading@10: $INDEV_LIST yading@10: $MUXER_LIST yading@10: $OUTDEV_LIST yading@10: $PARSER_LIST yading@10: $PROTOCOL_LIST yading@10: " yading@10: yading@10: for n in $COMPONENT_LIST; do yading@10: v=$(toupper ${n%s})_LIST yading@10: eval enable \$$v yading@10: eval ${n}_if_any="\$$v" yading@10: done yading@10: yading@10: enable $ARCH_EXT_LIST yading@10: yading@10: die_unknown(){ yading@10: echo "Unknown option \"$1\"." yading@10: echo "See $0 --help for available options." yading@10: exit 1 yading@10: } yading@10: yading@10: print_3_columns() { yading@10: cat | tr ' ' '\n' | sort | pr -r -3 -t yading@10: } yading@10: yading@10: show_list() { yading@10: suffix=_$1 yading@10: shift yading@10: echo $* | sed s/$suffix//g | print_3_columns yading@10: exit 0 yading@10: } yading@10: yading@10: rand_list(){ yading@10: IFS=', ' yading@10: set -- $* yading@10: unset IFS yading@10: for thing; do yading@10: comp=${thing%:*} yading@10: prob=${thing#$comp} yading@10: prob=${prob#:} yading@10: is_in ${comp} $COMPONENT_LIST && eval comp=\$$(toupper ${comp%s})_LIST yading@10: echo "prob ${prob:-0.5}" yading@10: printf '%s\n' $comp yading@10: done yading@10: } yading@10: yading@10: do_random(){ yading@10: action=$1 yading@10: shift yading@10: random_seed=$(awk "BEGIN { srand($random_seed); print srand() }") yading@10: $action $(rand_list "$@" | awk "BEGIN { srand($random_seed) } \$1 == \"prob\" { prob = \$2; next } rand() < prob { print }") yading@10: } yading@10: yading@10: for opt do yading@10: optval="${opt#*=}" yading@10: case "$opt" in yading@10: --extra-ldflags=*) yading@10: add_ldflags $optval yading@10: ;; yading@10: --extra-libs=*) yading@10: add_extralibs $optval yading@10: ;; yading@10: --disable-devices) yading@10: disable $INDEV_LIST $OUTDEV_LIST yading@10: ;; yading@10: --enable-debug=*) yading@10: debuglevel="$optval" yading@10: ;; yading@10: --disable-programs) yading@10: disable $PROGRAM_LIST yading@10: ;; yading@10: --disable-everything) yading@10: map 'eval unset \${$(toupper ${v%s})_LIST}' $COMPONENT_LIST yading@10: ;; yading@10: --disable-all) yading@10: map 'eval unset \${$(toupper ${v%s})_LIST}' $COMPONENT_LIST yading@10: disable $LIBRARY_LIST $PROGRAM_LIST doc yading@10: ;; yading@10: --enable-random|--disable-random) yading@10: action=${opt%%-random} yading@10: do_random ${action#--} $COMPONENT_LIST yading@10: ;; yading@10: --enable-random=*|--disable-random=*) yading@10: action=${opt%%-random=*} yading@10: do_random ${action#--} $optval yading@10: ;; yading@10: --enable-*=*|--disable-*=*) yading@10: eval $(echo "${opt%%=*}" | sed 's/--/action=/;s/-/ thing=/') yading@10: is_in "${thing}s" $COMPONENT_LIST || die_unknown "$opt" yading@10: eval list=\$$(toupper $thing)_LIST yading@10: name=$(echo "${optval}" | sed "s/,/_${thing}|/g")_${thing} yading@10: list=$(filter "$name" $list) yading@10: [ "$list" = "" ] && warn "Option $opt did not match anything" yading@10: $action $list yading@10: ;; yading@10: --enable-?*|--disable-?*) yading@10: eval $(echo "$opt" | sed 's/--/action=/;s/-/ option=/;s/-/_/g') yading@10: if is_in $option $COMPONENT_LIST; then yading@10: test $action = disable && action=unset yading@10: eval $action \$$(toupper ${option%s})_LIST yading@10: elif is_in $option $CMDLINE_SELECT; then yading@10: $action $option yading@10: else yading@10: die_unknown $opt yading@10: fi yading@10: ;; yading@10: --list-*) yading@10: NAME="${opt#--list-}" yading@10: is_in $NAME $COMPONENT_LIST || die_unknown $opt yading@10: NAME=${NAME%s} yading@10: eval show_list $NAME \$$(toupper $NAME)_LIST yading@10: ;; yading@10: --help|-h) show_help yading@10: ;; yading@10: --fatal-warnings) enable fatal_warnings yading@10: ;; yading@10: *) yading@10: optname="${opt%%=*}" yading@10: optname="${optname#--}" yading@10: optname=$(echo "$optname" | sed 's/-/_/g') yading@10: if is_in $optname $CMDLINE_SET; then yading@10: eval $optname='$optval' yading@10: elif is_in $optname $CMDLINE_APPEND; then yading@10: append $optname "$optval" yading@10: else yading@10: die_unknown $opt yading@10: fi yading@10: ;; yading@10: esac yading@10: done yading@10: yading@10: disabled logging && logfile=/dev/null yading@10: yading@10: echo "# $0 $FFMPEG_CONFIGURATION" > $logfile yading@10: set >> $logfile yading@10: yading@10: test -n "$cross_prefix" && enable cross_compile yading@10: yading@10: if enabled cross_compile; then yading@10: test -n "$arch" && test -n "$target_os" || yading@10: die "Must specify target arch and OS when cross-compiling" yading@10: fi yading@10: yading@10: ar_default="${cross_prefix}${ar_default}" yading@10: cc_default="${cross_prefix}${cc_default}" yading@10: cxx_default="${cross_prefix}${cxx_default}" yading@10: nm_default="${cross_prefix}${nm_default}" yading@10: pkg_config_default="${cross_prefix}${pkg_config_default}" yading@10: ranlib="${cross_prefix}${ranlib}" yading@10: strip_default="${cross_prefix}${strip_default}" yading@10: yading@10: sysinclude_default="${sysroot}/usr/include" yading@10: yading@10: case "$toolchain" in yading@10: clang-asan) yading@10: cc_default="clang" yading@10: add_cflags -fsanitize=address yading@10: add_ldflags -fsanitize=address yading@10: ;; yading@10: clang-tsan) yading@10: cc_default="clang" yading@10: add_cflags -fsanitize=thread -pie yading@10: add_ldflags -fsanitize=thread -pie yading@10: ;; yading@10: msvc) yading@10: cc_default="c99wrap cl" yading@10: ld_default="c99wrap link" yading@10: nm_default="dumpbin -symbols" yading@10: ar_default="lib" yading@10: target_os_default="win32" yading@10: ;; yading@10: gcov) yading@10: add_cflags -fprofile-arcs -ftest-coverage yading@10: add_ldflags -fprofile-arcs -ftest-coverage yading@10: ;; yading@10: ?*) yading@10: die "Unknown toolchain $toolchain" yading@10: ;; yading@10: esac yading@10: yading@10: set_default arch cc cxx pkg_config strip sysinclude target_os yasmexe yading@10: enabled cross_compile || host_cc_default=$cc yading@10: set_default host_cc yading@10: yading@10: if ! $pkg_config --version >/dev/null 2>&1; then yading@10: warn "$pkg_config not found, library detection may fail." yading@10: pkg_config=false yading@10: fi yading@10: yading@10: exesuf() { yading@10: case $1 in yading@10: mingw32*|win32|win64|cygwin*|*-dos|freedos|opendos|os/2*|symbian) echo .exe ;; yading@10: esac yading@10: } yading@10: yading@10: EXESUF=$(exesuf $target_os) yading@10: HOSTEXESUF=$(exesuf $host_os) yading@10: yading@10: # set temporary file name yading@10: : ${TMPDIR:=$TEMPDIR} yading@10: : ${TMPDIR:=$TMP} yading@10: : ${TMPDIR:=/tmp} yading@10: yading@10: if ! check_cmd mktemp -u XXXXXX; then yading@10: # simple replacement for missing mktemp yading@10: # NOT SAFE FOR GENERAL USE yading@10: mktemp(){ yading@10: echo "${2%%XXX*}.${HOSTNAME}.${UID}.$$" yading@10: } yading@10: fi yading@10: yading@10: tmpfile(){ yading@10: tmp=$(mktemp -u "${TMPDIR}/ffconf.XXXXXXXX")$2 && yading@10: (set -C; exec > $tmp) 2>/dev/null || yading@10: die "Unable to create temporary file in $TMPDIR." yading@10: append TMPFILES $tmp yading@10: eval $1=$tmp yading@10: } yading@10: yading@10: trap 'rm -f -- $TMPFILES' EXIT yading@10: yading@10: tmpfile TMPASM .asm yading@10: tmpfile TMPC .c yading@10: tmpfile TMPCPP .cpp yading@10: tmpfile TMPE $EXESUF yading@10: tmpfile TMPH .h yading@10: tmpfile TMPO .o yading@10: tmpfile TMPS .S yading@10: tmpfile TMPSH .sh yading@10: tmpfile TMPV .ver yading@10: yading@10: unset -f mktemp yading@10: yading@10: chmod +x $TMPE yading@10: yading@10: # make sure we can execute files in $TMPDIR yading@10: cat > $TMPSH 2>> $logfile <> $logfile 2>&1 yading@10: if ! $TMPSH >> $logfile 2>&1; then yading@10: cat <&1 | grep -q '^gcc.*LLVM'; then yading@10: _type=llvm_gcc yading@10: gcc_extra_ver=$(expr "$($_cc --version | head -n1)" : '.*\((.*)\)') yading@10: _ident="llvm-gcc $($_cc -dumpversion) $gcc_extra_ver" yading@10: _depflags='-MMD -MF $(@:.o=.d) -MT $@' yading@10: _cflags_speed='-O3' yading@10: _cflags_size='-Os' yading@10: elif $_cc -v 2>&1 | grep -qi ^gcc; then yading@10: _type=gcc yading@10: gcc_version=$($_cc --version | head -n1) yading@10: gcc_basever=$($_cc -dumpversion) yading@10: gcc_pkg_ver=$(expr "$gcc_version" : '[^ ]* \(([^)]*)\)') yading@10: gcc_ext_ver=$(expr "$gcc_version" : ".*$gcc_pkg_ver $gcc_basever \\(.*\\)") yading@10: _ident=$(cleanws "gcc $gcc_basever $gcc_pkg_ver $gcc_ext_ver") yading@10: if ! $_cc -dumpversion | grep -q '^2\.'; then yading@10: _depflags='-MMD -MF $(@:.o=.d) -MT $@' yading@10: fi yading@10: _cflags_speed='-O3' yading@10: _cflags_size='-Os' yading@10: elif $_cc --version 2>/dev/null | grep -q ^icc; then yading@10: _type=icc yading@10: _ident=$($_cc --version | head -n1) yading@10: _depflags='-MMD' yading@10: _cflags_speed='-O3' yading@10: _cflags_size='-Os' yading@10: _cflags_noopt='-O1' yading@10: elif $_cc -v 2>&1 | grep -q xlc; then yading@10: _type=xlc yading@10: _ident=$($_cc -qversion 2>/dev/null | head -n1) yading@10: _cflags_speed='-O5' yading@10: _cflags_size='-O5 -qcompact' yading@10: elif $_cc -V 2>/dev/null | grep -q Compaq; then yading@10: _type=ccc yading@10: _ident=$($_cc -V | head -n1 | cut -d' ' -f1-3) yading@10: _DEPFLAGS='-M' yading@10: _cflags_speed='-fast' yading@10: _cflags_size='-O1' yading@10: _flags_filter=ccc_flags yading@10: elif $_cc --vsn 2>/dev/null | grep -q "ARM C/C++ Compiler"; then yading@10: test -d "$sysroot" || die "No valid sysroot specified." yading@10: _type=armcc yading@10: _ident=$($_cc --vsn | head -n1) yading@10: armcc_conf="$PWD/armcc.conf" yading@10: $_cc --arm_linux_configure \ yading@10: --arm_linux_config_file="$armcc_conf" \ yading@10: --configure_sysroot="$sysroot" \ yading@10: --configure_cpp_headers="$sysinclude" >>$logfile 2>&1 || yading@10: die "Error creating armcc configuration file." yading@10: $_cc --vsn | grep -q RVCT && armcc_opt=rvct || armcc_opt=armcc yading@10: _flags="--arm_linux_config_file=$armcc_conf --translate_gcc" yading@10: as_default="${cross_prefix}gcc" yading@10: _depflags='-MMD' yading@10: _cflags_speed='-O3' yading@10: _cflags_size='-Os' yading@10: elif $_cc -version 2>/dev/null | grep -Eq 'TMS470|TI ARM'; then yading@10: _type=tms470 yading@10: _ident=$($_cc -version | head -n1 | tr -s ' ') yading@10: _flags='--gcc --abi=eabi -me' yading@10: _cc_e='-ppl -fe=$@' yading@10: _cc_o='-fe=$@' yading@10: _depflags='-ppa -ppd=$(@:.o=.d)' yading@10: _cflags_speed='-O3 -mf=5' yading@10: _cflags_size='-O3 -mf=2' yading@10: _flags_filter=tms470_flags yading@10: elif $_cc -v 2>&1 | grep -q clang; then yading@10: _type=clang yading@10: _ident=$($_cc --version | head -n1) yading@10: _depflags='-MMD' yading@10: _cflags_speed='-O3' yading@10: _cflags_size='-Os' yading@10: elif $_cc -V 2>&1 | grep -q Sun; then yading@10: _type=suncc yading@10: _ident=$($_cc -V 2>&1 | head -n1 | cut -d' ' -f 2-) yading@10: _DEPCMD='$(DEP$(1)) $(DEP$(1)FLAGS) $($(1)DEP_FLAGS) $< | sed -e "1s,^.*: ,$@: ," -e "\$$!s,\$$, \\\," -e "1!s,^.*: , ," > $(@:.o=.d)' yading@10: _DEPFLAGS='-xM1 -xc99' yading@10: _ldflags='-std=c99' yading@10: _cflags_speed='-O5' yading@10: _cflags_size='-O5 -xspace' yading@10: _flags_filter=suncc_flags yading@10: elif $_cc -v 2>&1 | grep -q 'PathScale\|Path64'; then yading@10: _type=pathscale yading@10: _ident=$($_cc -v 2>&1 | head -n1 | tr -d :) yading@10: _depflags='-MMD -MF $(@:.o=.d) -MT $@' yading@10: _cflags_speed='-O2' yading@10: _cflags_size='-Os' yading@10: _flags_filter='filter_out -Wdisabled-optimization' yading@10: elif $_cc -v 2>&1 | grep -q Open64; then yading@10: _type=open64 yading@10: _ident=$($_cc -v 2>&1 | head -n1 | tr -d :) yading@10: _depflags='-MMD -MF $(@:.o=.d) -MT $@' yading@10: _cflags_speed='-O2' yading@10: _cflags_size='-Os' yading@10: _flags_filter='filter_out -Wdisabled-optimization|-Wtype-limits|-fno-signed-zeros' yading@10: elif $_cc -V 2>&1 | grep -q Portland; then yading@10: _type=pgi yading@10: _ident="PGI $($_cc -V 2>&1 | awk '/^pgcc/ { print $2; exit }')" yading@10: opt_common='-alias=ansi -Mdse -Mlre -Mpre' yading@10: _cflags_speed="-O3 -Mautoinline -Munroll=c:4 $opt_common" yading@10: _cflags_size="-O2 -Munroll=c:1 $opt_common" yading@10: _cflags_noopt="-O" yading@10: _flags_filter=pgi_flags yading@10: elif $_cc 2>&1 | grep -q Microsoft; then yading@10: _type=msvc yading@10: _ident=$($cc 2>&1 | head -n1) yading@10: _DEPCMD='$(DEP$(1)) $(DEP$(1)FLAGS) $($(1)DEP_FLAGS) $< 2>&1 | awk '\''/including/ { sub(/^.*file: */, ""); gsub(/\\/, "/"); if (!match($$0, / /)) print "$@:", $$0 }'\'' > $(@:.o=.d)' yading@10: _DEPFLAGS='$(CPPFLAGS) $(CFLAGS) -showIncludes -Zs' yading@10: _cflags_speed="-O2" yading@10: _cflags_size="-O1" yading@10: # Nonstandard output options, to avoid msys path conversion issues, relies on wrapper to remap it yading@10: if $_cc 2>&1 | grep -q Linker; then yading@10: _ld_o='-out $@' yading@10: else yading@10: _ld_o='-Fe$@' yading@10: fi yading@10: _cc_o='-Fo $@' yading@10: _cc_e='-P -Fi $@' yading@10: _flags_filter=msvc_flags yading@10: _ld_lib='lib%.a' yading@10: _ld_path='-libpath:' yading@10: _flags='-nologo' yading@10: _cflags='-D_USE_MATH_DEFINES -Dinline=__inline -FIstdlib.h -Dstrtoll=_strtoi64' yading@10: if [ $pfx = hostcc ]; then yading@10: append _cflags -Dsnprintf=_snprintf yading@10: fi yading@10: disable stripping yading@10: fi yading@10: yading@10: eval ${pfx}_type=\$_type yading@10: eval ${pfx}_ident=\$_ident yading@10: } yading@10: yading@10: set_ccvars(){ yading@10: eval ${1}_C=\${_cc_c-\${${1}_C}} yading@10: eval ${1}_E=\${_cc_e-\${${1}_E}} yading@10: eval ${1}_O=\${_cc_o-\${${1}_O}} yading@10: yading@10: if [ -n "$_depflags" ]; then yading@10: eval ${1}_DEPFLAGS=\$_depflags yading@10: else yading@10: eval ${1}DEP=\${_DEPCMD:-\$DEPCMD} yading@10: eval ${1}DEP_FLAGS=\${_DEPFLAGS:-\$DEPFLAGS} yading@10: eval DEP${1}FLAGS=\$_flags yading@10: fi yading@10: } yading@10: yading@10: probe_cc cc "$cc" yading@10: cflags_filter=$_flags_filter yading@10: cflags_speed=$_cflags_speed yading@10: cflags_size=$_cflags_size yading@10: cflags_noopt=$_cflags_noopt yading@10: add_cflags $_flags $_cflags yading@10: cc_ldflags=$_ldflags yading@10: set_ccvars CC yading@10: yading@10: probe_cc hostcc "$host_cc" yading@10: host_cflags_filter=$_flags_filter yading@10: add_host_cflags $_flags $_cflags yading@10: set_ccvars HOSTCC yading@10: yading@10: test -n "$cc_type" && enable $cc_type || yading@10: warn "Unknown C compiler $cc, unable to select optimal CFLAGS" yading@10: yading@10: : ${as_default:=$cc} yading@10: : ${dep_cc_default:=$cc} yading@10: : ${ld_default:=$cc} yading@10: : ${host_ld_default:=$host_cc} yading@10: set_default ar as dep_cc ld host_ld yading@10: yading@10: probe_cc as "$as" yading@10: asflags_filter=$_flags_filter yading@10: add_asflags $_flags $_cflags yading@10: set_ccvars AS yading@10: yading@10: probe_cc ld "$ld" yading@10: ldflags_filter=$_flags_filter yading@10: add_ldflags $_flags $_ldflags yading@10: test "$cc_type" != "$ld_type" && add_ldflags $cc_ldflags yading@10: LD_O=${_ld_o-$LD_O} yading@10: LD_LIB=${_ld_lib-$LD_LIB} yading@10: LD_PATH=${_ld_path-$LD_PATH} yading@10: yading@10: probe_cc hostld "$host_ld" yading@10: host_ldflags_filter=$_flags_filter yading@10: add_host_ldflags $_flags $_ldflags yading@10: HOSTLD_O=${_ld_o-$HOSTLD_O} yading@10: yading@10: if [ -z "$CC_DEPFLAGS" ] && [ "$dep_cc" != "$cc" ]; then yading@10: probe_cc depcc "$dep_cc" yading@10: CCDEP=${_DEPCMD:-$DEPCMD} yading@10: CCDEP_FLAGS=${_DEPFLAGS:=$DEPFLAGS} yading@10: DEPCCFLAGS=$_flags yading@10: fi yading@10: yading@10: if $ar 2>&1 | grep -q Microsoft; then yading@10: arflags="-nologo" yading@10: ar_o='-out:$@' yading@10: elif $ar 2>&1 | grep -q 'Texas Instruments'; then yading@10: arflags="rq" yading@10: ar_o='$@' yading@10: else yading@10: arflags="rc" yading@10: ar_o='$@' yading@10: fi yading@10: yading@10: add_cflags $extra_cflags yading@10: add_cxxflags $extra_cxxflags yading@10: add_asflags $extra_cflags yading@10: yading@10: if test -n "$sysroot"; then yading@10: case "$cc_type" in yading@10: gcc|llvm_gcc|clang) yading@10: add_cppflags --sysroot="$sysroot" yading@10: add_ldflags --sysroot="$sysroot" yading@10: ;; yading@10: tms470) yading@10: add_cppflags -I"$sysinclude" yading@10: add_ldflags --sysroot="$sysroot" yading@10: ;; yading@10: esac yading@10: fi yading@10: yading@10: if test "$cpu" = host; then yading@10: enabled cross_compile && die "--cpu=host makes no sense when cross-compiling." yading@10: yading@10: case "$cc_type" in yading@10: gcc|llvm_gcc) yading@10: check_native(){ yading@10: $cc $1=native -v -c -o $TMPO $TMPC >$TMPE 2>&1 || return yading@10: sed -n "/cc1.*$1=/{ yading@10: s/.*$1=\\([^ ]*\\).*/\\1/ yading@10: p yading@10: q yading@10: }" $TMPE yading@10: } yading@10: cpu=$(check_native -march || check_native -mcpu) yading@10: ;; yading@10: esac yading@10: yading@10: test "${cpu:-host}" = host && die "--cpu=host not supported with compiler $cc" yading@10: fi yading@10: yading@10: # Deal with common $arch aliases yading@10: case "$arch" in yading@10: aarch64|arm64) yading@10: arch="aarch64" yading@10: ;; yading@10: arm*|iPad*) yading@10: arch="arm" yading@10: ;; yading@10: mips*|IP*) yading@10: arch="mips" yading@10: ;; yading@10: parisc*|hppa*) yading@10: arch="parisc" yading@10: ;; yading@10: "Power Macintosh"|ppc*|powerpc*) yading@10: arch="ppc" yading@10: ;; yading@10: s390|s390x) yading@10: arch="s390" yading@10: ;; yading@10: sh4|sh) yading@10: arch="sh4" yading@10: ;; yading@10: sun4u|sparc*) yading@10: arch="sparc" yading@10: ;; yading@10: tilegx|tile-gx) yading@10: arch="tilegx" yading@10: ;; yading@10: i[3-6]86|i86pc|BePC|x86pc|x86_64|x86_32|amd64) yading@10: arch="x86" yading@10: ;; yading@10: esac yading@10: yading@10: is_in $arch $ARCH_LIST || warn "unknown architecture $arch" yading@10: enable $arch yading@10: yading@10: # Add processor-specific flags yading@10: if enabled aarch64; then yading@10: yading@10: case $cpu in yading@10: armv*) yading@10: cpuflags="-march=$cpu" yading@10: ;; yading@10: *) yading@10: cpuflags="-mcpu=$cpu" yading@10: ;; yading@10: esac yading@10: yading@10: elif enabled alpha; then yading@10: yading@10: cpuflags="-mcpu=$cpu" yading@10: yading@10: elif enabled arm; then yading@10: yading@10: check_arm_arch() { yading@10: check_cpp_condition stddef.h \ yading@10: "defined __ARM_ARCH_${1}__ || defined __TARGET_ARCH_${2:-$1}" \ yading@10: $cpuflags yading@10: } yading@10: yading@10: probe_arm_arch() { yading@10: if check_arm_arch 4; then echo armv4; yading@10: elif check_arm_arch 4T; then echo armv4t; yading@10: elif check_arm_arch 5; then echo armv5; yading@10: elif check_arm_arch 5E; then echo armv5e; yading@10: elif check_arm_arch 5T; then echo armv5t; yading@10: elif check_arm_arch 5TE; then echo armv5te; yading@10: elif check_arm_arch 5TEJ; then echo armv5te; yading@10: elif check_arm_arch 6; then echo armv6; yading@10: elif check_arm_arch 6J; then echo armv6j; yading@10: elif check_arm_arch 6K; then echo armv6k; yading@10: elif check_arm_arch 6Z; then echo armv6z; yading@10: elif check_arm_arch 6ZK; then echo armv6zk; yading@10: elif check_arm_arch 6T2; then echo armv6t2; yading@10: elif check_arm_arch 7; then echo armv7; yading@10: elif check_arm_arch 7A 7_A; then echo armv7-a; yading@10: elif check_arm_arch 7R 7_R; then echo armv7-r; yading@10: elif check_arm_arch 7M 7_M; then echo armv7-m; yading@10: elif check_arm_arch 7EM 7E_M; then echo armv7-m; yading@10: elif check_arm_arch 8A 8_A; then echo armv8-a; yading@10: fi yading@10: } yading@10: yading@10: [ "$cpu" = generic ] && cpu=$(probe_arm_arch) yading@10: yading@10: case $cpu in yading@10: armv*) yading@10: cpuflags="-march=$cpu" yading@10: subarch=$(echo $cpu | sed 's/[^a-z0-9]//g') yading@10: ;; yading@10: *) yading@10: cpuflags="-mcpu=$cpu" yading@10: case $cpu in yading@10: cortex-a*) subarch=armv7a ;; yading@10: cortex-r*) subarch=armv7r ;; yading@10: cortex-m*) enable thumb; subarch=armv7m ;; yading@10: arm11*) subarch=armv6 ;; yading@10: arm[79]*e*|arm9[24]6*|arm96*|arm102[26]) subarch=armv5te ;; yading@10: armv4*|arm7*|arm9[24]*) subarch=armv4 ;; yading@10: *) subarch=$(probe_arm_arch) ;; yading@10: esac yading@10: ;; yading@10: esac yading@10: yading@10: case "$subarch" in yading@10: armv5t*) enable fast_clz ;; yading@10: armv[6-8]*) enable fast_clz fast_unaligned ;; yading@10: esac yading@10: yading@10: elif enabled avr32; then yading@10: yading@10: case $cpu in yading@10: ap7[02]0[0-2]) yading@10: subarch="avr32_ap" yading@10: cpuflags="-mpart=$cpu" yading@10: ;; yading@10: ap) yading@10: subarch="avr32_ap" yading@10: cpuflags="-march=$cpu" yading@10: ;; yading@10: uc3[ab]*) yading@10: subarch="avr32_uc" yading@10: cpuflags="-mcpu=$cpu" yading@10: ;; yading@10: uc) yading@10: subarch="avr32_uc" yading@10: cpuflags="-march=$cpu" yading@10: ;; yading@10: esac yading@10: yading@10: elif enabled bfin; then yading@10: yading@10: cpuflags="-mcpu=$cpu" yading@10: yading@10: elif enabled mips; then yading@10: yading@10: cpuflags="-march=$cpu" yading@10: yading@10: case $cpu in yading@10: 24kc) yading@10: disable mipsfpu yading@10: disable mipsdspr1 yading@10: disable mipsdspr2 yading@10: ;; yading@10: 24kf*) yading@10: disable mipsdspr1 yading@10: disable mipsdspr2 yading@10: ;; yading@10: 24kec|34kc|1004kc) yading@10: disable mipsfpu yading@10: disable mipsdspr2 yading@10: ;; yading@10: 24kef*|34kf*|1004kf*) yading@10: disable mipsdspr2 yading@10: ;; yading@10: 74kc) yading@10: disable mipsfpu yading@10: ;; yading@10: esac yading@10: yading@10: elif enabled ppc; then yading@10: yading@10: case $(tolower $cpu) in yading@10: 601|ppc601|powerpc601) yading@10: cpuflags="-mcpu=601" yading@10: disable altivec yading@10: ;; yading@10: 603*|ppc603*|powerpc603*) yading@10: cpuflags="-mcpu=603" yading@10: disable altivec yading@10: ;; yading@10: 604*|ppc604*|powerpc604*) yading@10: cpuflags="-mcpu=604" yading@10: disable altivec yading@10: ;; yading@10: g3|75*|ppc75*|powerpc75*) yading@10: cpuflags="-mcpu=750" yading@10: disable altivec yading@10: ;; yading@10: g4|745*|ppc745*|powerpc745*) yading@10: cpuflags="-mcpu=7450" yading@10: ;; yading@10: 74*|ppc74*|powerpc74*) yading@10: cpuflags="-mcpu=7400" yading@10: ;; yading@10: g5|970|ppc970|powerpc970) yading@10: cpuflags="-mcpu=970" yading@10: ;; yading@10: power[3-7]*) yading@10: cpuflags="-mcpu=$cpu" yading@10: ;; yading@10: cell) yading@10: cpuflags="-mcpu=cell" yading@10: enable ldbrx yading@10: ;; yading@10: e500mc) yading@10: cpuflags="-mcpu=e500mc" yading@10: disable altivec yading@10: ;; yading@10: e500v2) yading@10: cpuflags="-mcpu=8548 -mhard-float -mfloat-gprs=double" yading@10: disable altivec yading@10: ;; yading@10: e500) yading@10: cpuflags="-mcpu=8540 -mhard-float" yading@10: disable altivec yading@10: ;; yading@10: esac yading@10: yading@10: elif enabled sparc; then yading@10: yading@10: case $cpu in yading@10: cypress|f93[04]|tsc701|sparcl*|supersparc|hypersparc|niagara|v[789]) yading@10: cpuflags="-mcpu=$cpu" yading@10: disable vis yading@10: ;; yading@10: ultrasparc*|niagara[234]) yading@10: cpuflags="-mcpu=$cpu" yading@10: ;; yading@10: esac yading@10: yading@10: elif enabled x86; then yading@10: yading@10: case $cpu in yading@10: i[345]86|pentium) yading@10: cpuflags="-march=$cpu" yading@10: disable mmx yading@10: ;; yading@10: # targets that do NOT support conditional mov (cmov) yading@10: pentium-mmx|k6|k6-[23]|winchip-c6|winchip2|c3) yading@10: cpuflags="-march=$cpu" yading@10: disable cmov yading@10: ;; yading@10: # targets that do support conditional mov (cmov) yading@10: i686|pentiumpro|pentium[23]|pentium-m|athlon|athlon-tbird|athlon-4|athlon-[mx]p|athlon64*|k8*|opteron*|athlon-fx|core2|corei7*|amdfam10|barcelona|atom|bdver*) yading@10: cpuflags="-march=$cpu" yading@10: enable cmov yading@10: enable fast_cmov yading@10: ;; yading@10: # targets that do support conditional mov but on which it's slow yading@10: pentium4|pentium4m|prescott|nocona) yading@10: cpuflags="-march=$cpu" yading@10: enable cmov yading@10: disable fast_cmov yading@10: ;; yading@10: esac yading@10: yading@10: fi yading@10: yading@10: if [ "$cpu" != generic ]; then yading@10: add_cflags $cpuflags yading@10: add_asflags $cpuflags yading@10: fi yading@10: yading@10: # compiler sanity check yading@10: check_exec < yading@10: EOF yading@10: check_cc -D_LARGEFILE_SOURCE < yading@10: EOF yading@10: yading@10: check_host_cflags -std=c99 yading@10: check_host_cflags -Wall yading@10: yading@10: check_64bit(){ yading@10: arch32=$1 yading@10: arch64=$2 yading@10: expr=$3 yading@10: check_code cc "" "int test[2*($expr) - 1]" && yading@10: subarch=$arch64 || subarch=$arch32 yading@10: } yading@10: yading@10: case "$arch" in yading@10: aarch64|alpha|ia64) yading@10: spic=$shared yading@10: ;; yading@10: mips) yading@10: check_64bit mips mips64 '_MIPS_SIM > 1' yading@10: spic=$shared yading@10: ;; yading@10: parisc) yading@10: check_64bit parisc parisc64 'sizeof(void *) > 4' yading@10: spic=$shared yading@10: ;; yading@10: ppc) yading@10: check_64bit ppc ppc64 'sizeof(void *) > 4' yading@10: spic=$shared yading@10: ;; yading@10: sparc) yading@10: check_64bit sparc sparc64 'sizeof(void *) > 4' yading@10: spic=$shared yading@10: ;; yading@10: x86) yading@10: check_64bit x86_32 x86_64 'sizeof(void *) > 4' yading@10: if test "$subarch" = "x86_64"; then yading@10: spic=$shared yading@10: fi yading@10: ;; yading@10: ppc) yading@10: check_cc < mapfile && add_ldflags -Wl,-M,mapfile yading@10: nm_default='nm -P -g' yading@10: ;; yading@10: netbsd) yading@10: disable symver yading@10: oss_indev_extralibs="-lossaudio" yading@10: oss_outdev_extralibs="-lossaudio" yading@10: enabled gcc || check_ldflags -Wl,-zmuldefs yading@10: ;; yading@10: openbsd|bitrig) yading@10: disable symver yading@10: SHFLAGS='-shared' yading@10: SLIB_INSTALL_NAME='$(SLIBNAME).$(LIBMAJOR).$(LIBMINOR)' yading@10: SLIB_INSTALL_LINKS= yading@10: oss_indev_extralibs="-lossaudio" yading@10: oss_outdev_extralibs="-lossaudio" yading@10: ;; yading@10: dragonfly) yading@10: disable symver yading@10: ;; yading@10: freebsd) yading@10: ;; yading@10: bsd/os) yading@10: add_extralibs -lpoll -lgnugetopt yading@10: strip="strip -d" yading@10: ;; yading@10: darwin) yading@10: gas="gas-preprocessor.pl $cc" yading@10: enabled ppc && add_asflags -force_cpusubtype_ALL yading@10: SHFLAGS='-dynamiclib -Wl,-single_module -Wl,-install_name,$(SHLIBDIR)/$(SLIBNAME_WITH_MAJOR),-current_version,$(LIBVERSION),-compatibility_version,$(LIBMAJOR)' yading@10: enabled x86_32 && append SHFLAGS -Wl,-read_only_relocs,suppress yading@10: strip="${strip} -x" yading@10: add_ldflags -Wl,-dynamic,-search_paths_first yading@10: SLIBSUF=".dylib" yading@10: SLIBNAME_WITH_VERSION='$(SLIBPREF)$(FULLNAME).$(LIBVERSION)$(SLIBSUF)' yading@10: SLIBNAME_WITH_MAJOR='$(SLIBPREF)$(FULLNAME).$(LIBMAJOR)$(SLIBSUF)' yading@10: FFSERVERLDFLAGS=-Wl,-bind_at_load yading@10: objformat="macho" yading@10: enabled x86_64 && objformat="macho64" yading@10: enabled_any pic shared || yading@10: { check_cflags -mdynamic-no-pic && add_asflags -mdynamic-no-pic; } yading@10: ;; yading@10: mingw32*) yading@10: if test $target_os = "mingw32ce"; then yading@10: disable network yading@10: else yading@10: target_os=mingw32 yading@10: fi yading@10: LIBTARGET=i386 yading@10: if enabled x86_64; then yading@10: LIBTARGET="i386:x86-64" yading@10: elif enabled arm; then yading@10: LIBTARGET=arm-wince yading@10: fi yading@10: shlibdir_default="$bindir_default" yading@10: SLIBPREF="" yading@10: SLIBSUF=".dll" yading@10: SLIBNAME_WITH_VERSION='$(SLIBPREF)$(FULLNAME)-$(LIBVERSION)$(SLIBSUF)' yading@10: SLIBNAME_WITH_MAJOR='$(SLIBPREF)$(FULLNAME)-$(LIBMAJOR)$(SLIBSUF)' yading@10: dlltool="${cross_prefix}dlltool" yading@10: if check_cmd lib.exe -list; then yading@10: SLIB_EXTRA_CMD=-'sed -e "s/ @[^ ]*//" $$(@:$(SLIBSUF)=.orig.def) > $$(@:$(SLIBSUF)=.def); lib.exe /machine:$(LIBTARGET) /def:$$(@:$(SLIBSUF)=.def) /out:$(SUBDIR)$(SLIBNAME:$(SLIBSUF)=.lib)' yading@10: if enabled x86_64; then yading@10: LIBTARGET=x64 yading@10: fi yading@10: elif check_cmd $dlltool --version; then yading@10: SLIB_EXTRA_CMD=-'sed -e "s/ @[^ ]*//" $$(@:$(SLIBSUF)=.orig.def) > $$(@:$(SLIBSUF)=.def); $(DLLTOOL) -m $(LIBTARGET) -d $$(@:$(SLIBSUF)=.def) -l $(SUBDIR)$(SLIBNAME:$(SLIBSUF)=.lib) -D $(SLIBNAME_WITH_MAJOR)' yading@10: fi yading@10: SLIB_INSTALL_NAME='$(SLIBNAME_WITH_MAJOR)' yading@10: SLIB_INSTALL_LINKS= yading@10: SLIB_INSTALL_EXTRA_SHLIB='$(SLIBNAME:$(SLIBSUF)=.lib)' yading@10: SLIB_INSTALL_EXTRA_LIB='lib$(SLIBNAME:$(SLIBSUF)=.dll.a) $(SLIBNAME_WITH_MAJOR:$(SLIBSUF)=.def)' yading@10: SHFLAGS='-shared -Wl,--output-def,$$(@:$(SLIBSUF)=.orig.def) -Wl,--out-implib,$(SUBDIR)lib$(SLIBNAME:$(SLIBSUF)=.dll.a) -Wl,--enable-runtime-pseudo-reloc -Wl,--enable-auto-image-base' yading@10: objformat="win32" yading@10: ranlib=: yading@10: enable dos_paths yading@10: ;; yading@10: win32|win64) yading@10: if enabled shared; then yading@10: # Link to the import library instead of the normal static library yading@10: # for shared libs. yading@10: LD_LIB='%.lib' yading@10: # Cannot build shared and static libraries at the same time with yading@10: # MSVC. yading@10: disable static yading@10: fi yading@10: shlibdir_default="$bindir_default" yading@10: SLIBPREF="" yading@10: SLIBSUF=".dll" yading@10: SLIBNAME_WITH_VERSION='$(SLIBPREF)$(FULLNAME)-$(LIBVERSION)$(SLIBSUF)' yading@10: SLIBNAME_WITH_MAJOR='$(SLIBPREF)$(FULLNAME)-$(LIBMAJOR)$(SLIBSUF)' yading@10: SLIB_CREATE_DEF_CMD='makedef $(SUBDIR)lib$(NAME).ver $(OBJS) > $$(@:$(SLIBSUF)=.def)' yading@10: SLIB_INSTALL_NAME='$(SLIBNAME_WITH_MAJOR)' yading@10: SLIB_INSTALL_LINKS= yading@10: SLIB_INSTALL_EXTRA_SHLIB='$(SLIBNAME:$(SLIBSUF)=.lib)' yading@10: SLIB_INSTALL_EXTRA_LIB='$(SLIBNAME_WITH_MAJOR:$(SLIBSUF)=.def)' yading@10: SHFLAGS='-dll -def:$$(@:$(SLIBSUF)=.def) -implib:$(SUBDIR)$(SLIBNAME:$(SLIBSUF)=.lib)' yading@10: objformat="win32" yading@10: ranlib=: yading@10: enable dos_paths yading@10: ;; yading@10: cygwin*) yading@10: target_os=cygwin yading@10: shlibdir_default="$bindir_default" yading@10: SLIBPREF="cyg" yading@10: SLIBSUF=".dll" yading@10: SLIBNAME_WITH_VERSION='$(SLIBPREF)$(FULLNAME)-$(LIBVERSION)$(SLIBSUF)' yading@10: SLIBNAME_WITH_MAJOR='$(SLIBPREF)$(FULLNAME)-$(LIBMAJOR)$(SLIBSUF)' yading@10: SLIB_INSTALL_NAME='$(SLIBNAME_WITH_MAJOR)' yading@10: SLIB_INSTALL_LINKS= yading@10: SLIB_INSTALL_EXTRA_LIB='lib$(FULLNAME).dll.a' yading@10: SHFLAGS='-shared -Wl,--out-implib,$(SUBDIR)lib$(FULLNAME).dll.a' yading@10: objformat="win32" yading@10: enable dos_paths yading@10: ;; yading@10: *-dos|freedos|opendos) yading@10: network_extralibs="-lsocket" yading@10: objformat="coff" yading@10: enable dos_paths yading@10: add_cppflags -U__STRICT_ANSI__ yading@10: ;; yading@10: linux) yading@10: enable dv1394 yading@10: ;; yading@10: irix*) yading@10: target_os=irix yading@10: ranlib="echo ignoring ranlib" yading@10: ;; yading@10: os/2*) yading@10: strip="lxlite -CS" yading@10: ln_s="cp -f" yading@10: objformat="aout" yading@10: add_cppflags -D_GNU_SOURCE yading@10: add_ldflags -Zomf -Zbin-files -Zargs-wild -Zmap yading@10: SHFLAGS='$(SUBDIR)$(NAME).def -Zdll -Zomf' yading@10: FFSERVERLDFLAGS="" yading@10: LIBSUF="_s.a" yading@10: SLIBPREF="" yading@10: SLIBSUF=".dll" yading@10: SLIBNAME_WITH_VERSION='$(SLIBPREF)$(NAME)-$(LIBVERSION)$(SLIBSUF)' yading@10: SLIBNAME_WITH_MAJOR='$(SLIBPREF)$(shell echo $(NAME) | cut -c1-6)$(LIBMAJOR)$(SLIBSUF)' yading@10: SLIB_CREATE_DEF_CMD='echo LIBRARY $(SLIBNAME_WITH_MAJOR) INITINSTANCE TERMINSTANCE > $(SUBDIR)$(NAME).def; \ yading@10: echo PROTMODE >> $(SUBDIR)$(NAME).def; \ yading@10: echo CODE PRELOAD MOVEABLE DISCARDABLE >> $(SUBDIR)$(NAME).def; \ yading@10: echo DATA PRELOAD MOVEABLE MULTIPLE NONSHARED >> $(SUBDIR)$(NAME).def; \ yading@10: echo EXPORTS >> $(SUBDIR)$(NAME).def; \ yading@10: emxexp -o $(OBJS) >> $(SUBDIR)$(NAME).def' yading@10: SLIB_EXTRA_CMD='emximp -o $(SUBDIR)$(LIBPREF)$(NAME)_dll.a $(SUBDIR)$(NAME).def; \ yading@10: emximp -o $(SUBDIR)$(LIBPREF)$(NAME)_dll.lib $(SUBDIR)$(NAME).def;' yading@10: SLIB_INSTALL_EXTRA_LIB='$(LIBPREF)$(NAME)_dll.a $(LIBPREF)$(NAME)_dll.lib' yading@10: enable dos_paths yading@10: enable_weak os2threads yading@10: ;; yading@10: gnu/kfreebsd) yading@10: add_cppflags -D_BSD_SOURCE yading@10: ;; yading@10: gnu) yading@10: ;; yading@10: qnx) yading@10: add_cppflags -D_QNX_SOURCE yading@10: network_extralibs="-lsocket" yading@10: ;; yading@10: symbian) yading@10: SLIBSUF=".dll" yading@10: enable dos_paths yading@10: add_cflags --include=$sysinclude/gcce/gcce.h -fvisibility=default yading@10: add_cppflags -D__GCCE__ -D__SYMBIAN32__ -DSYMBIAN_OE_POSIX_SIGNALS yading@10: add_ldflags -Wl,--target1-abs,--no-undefined \ yading@10: -Wl,-Ttext,0x80000,-Tdata,0x1000000 -shared \ yading@10: -Wl,--entry=_E32Startup -Wl,-u,_E32Startup yading@10: add_extralibs -l:eexe.lib -l:usrt2_2.lib -l:dfpaeabi.dso \ yading@10: -l:drtaeabi.dso -l:scppnwdl.dso -lsupc++ -lgcc \ yading@10: -l:libc.dso -l:libm.dso -l:euser.dso -l:libcrt0.lib yading@10: ;; yading@10: osf1) yading@10: add_cppflags -D_OSF_SOURCE -D_POSIX_PII -D_REENTRANT yading@10: FFSERVERLDFLAGS= yading@10: ;; yading@10: minix) yading@10: ;; yading@10: plan9) yading@10: add_cppflags -D_C99_SNPRINTF_EXTENSION \ yading@10: -D_REENTRANT_SOURCE \ yading@10: -D_RESEARCH_SOURCE \ yading@10: -DFD_SETSIZE=96 \ yading@10: -DHAVE_SOCK_OPTS yading@10: add_compat strtod.o strtod=avpriv_strtod yading@10: network_extralibs='-lbsd' yading@10: exeobjs=compat/plan9/main.o yading@10: disable ffserver yading@10: cp_f='cp' yading@10: ;; yading@10: none) yading@10: ;; yading@10: *) yading@10: die "Unknown OS '$target_os'." yading@10: ;; yading@10: esac yading@10: yading@10: # determine libc flavour yading@10: yading@10: # uclibc defines __GLIBC__, so it needs to be checked before glibc. yading@10: if check_cpp_condition features.h "defined __UCLIBC__"; then yading@10: libc_type=uclibc yading@10: add_cppflags -D_POSIX_C_SOURCE=200112 -D_XOPEN_SOURCE=600 yading@10: elif check_cpp_condition features.h "defined __GLIBC__"; then yading@10: libc_type=glibc yading@10: add_cppflags -D_POSIX_C_SOURCE=200112 -D_XOPEN_SOURCE=600 yading@10: # MinGW headers can be installed on Cygwin, so check for newlib first. yading@10: elif check_cpp_condition newlib.h "defined _NEWLIB_VERSION"; then yading@10: libc_type=newlib yading@10: add_cppflags -U__STRICT_ANSI__ yading@10: elif check_header _mingw.h; then yading@10: libc_type=mingw yading@10: check_cpp_condition _mingw.h \ yading@10: "defined (__MINGW64_VERSION_MAJOR) || (__MINGW32_MAJOR_VERSION > 3) || \ yading@10: (__MINGW32_MAJOR_VERSION == 3 && __MINGW32_MINOR_VERSION >= 15)" || yading@10: die "ERROR: MinGW runtime version must be >= 3.15." yading@10: add_cppflags -U__STRICT_ANSI__ yading@10: if check_cpp_condition _mingw.h "defined(__MINGW64_VERSION_MAJOR) && \ yading@10: __MINGW64_VERSION_MAJOR < 3"; then yading@10: add_compat msvcrt/snprintf.o yading@10: add_cflags "-include $source_path/compat/msvcrt/snprintf.h" yading@10: fi yading@10: elif check_func_headers stdlib.h _get_doserrno; then yading@10: libc_type=msvcrt yading@10: add_compat strtod.o strtod=avpriv_strtod yading@10: add_compat msvcrt/snprintf.o snprintf=avpriv_snprintf \ yading@10: _snprintf=avpriv_snprintf \ yading@10: vsnprintf=avpriv_vsnprintf yading@10: elif check_cpp_condition stddef.h "defined __KLIBC__"; then yading@10: libc_type=klibc yading@10: fi yading@10: yading@10: test -n "$libc_type" && enable $libc_type yading@10: yading@10: # hacks for compiler/libc/os combinations yading@10: yading@10: if enabled_all tms470 glibc; then yading@10: CPPFLAGS="-I${source_path}/compat/tms470 ${CPPFLAGS}" yading@10: add_cppflags -D__USER_LABEL_PREFIX__= yading@10: add_cppflags -D__builtin_memset=memset yading@10: add_cppflags -D__gnuc_va_list=va_list -D_VA_LIST_DEFINED yading@10: add_cflags -pds=48 # incompatible redefinition of macro yading@10: fi yading@10: yading@10: if enabled_all ccc glibc; then yading@10: add_ldflags -Wl,-z,now # calls to libots crash without this yading@10: fi yading@10: yading@10: esc(){ yading@10: echo "$*" | sed 's/%/%25/g;s/:/%3a/g' yading@10: } yading@10: yading@10: echo "config:$arch:$subarch:$cpu:$target_os:$(esc $cc_ident):$(esc $FFMPEG_CONFIGURATION)" >config.fate yading@10: yading@10: check_cpp_condition stdlib.h "defined(__PIC__) || defined(__pic__) || defined(PIC)" && enable pic yading@10: yading@10: set_default $PATHS_LIST yading@10: set_default nm yading@10: yading@10: # we need to build at least one lib type yading@10: if ! enabled_any static shared; then yading@10: cat <= 2.0.0" aacplus.h aacplusEncOpen -laacplus yading@10: enabled libass && require_pkg_config libass ass/ass.h ass_library_init yading@10: enabled libbluray && require libbluray libbluray/bluray.h bd_open -lbluray yading@10: enabled libcelt && require libcelt celt/celt.h celt_decode -lcelt0 && yading@10: { check_lib celt/celt.h celt_decoder_create_custom -lcelt0 || yading@10: die "ERROR: libcelt must be installed and version must be >= 0.11.0."; } yading@10: enabled libcaca && require_pkg_config caca caca.h caca_create_canvas yading@10: enabled libfaac && require2 libfaac "stdint.h faac.h" faacEncGetVersion -lfaac yading@10: enabled libfdk_aac && require libfdk_aac fdk-aac/aacenc_lib.h aacEncOpen -lfdk-aac yading@10: flite_libs="-lflite_cmu_time_awb -lflite_cmu_us_awb -lflite_cmu_us_kal -lflite_cmu_us_kal16 -lflite_cmu_us_rms -lflite_cmu_us_slt -lflite_usenglish -lflite_cmulex -lflite" yading@10: enabled libflite && require2 libflite "flite/flite.h" flite_init $flite_libs yading@10: enabled libfreetype && require_pkg_config freetype2 "ft2build.h freetype/freetype.h" FT_Init_FreeType yading@10: enabled libgsm && { for gsm_hdr in "gsm.h" "gsm/gsm.h"; do yading@10: check_lib "${gsm_hdr}" gsm_create -lgsm && break; yading@10: done || die "ERROR: libgsm not found"; } yading@10: enabled libilbc && require libilbc ilbc.h WebRtcIlbcfix_InitDecode -lilbc yading@10: enabled libmodplug && require libmodplug libmodplug/modplug.h ModPlug_Load -lmodplug yading@10: enabled libmp3lame && require "libmp3lame >= 3.98.3" lame/lame.h lame_set_VBR_quality -lmp3lame yading@10: enabled libnut && require libnut libnut.h nut_demuxer_init -lnut yading@10: enabled libopencore_amrnb && require libopencore_amrnb opencore-amrnb/interf_dec.h Decoder_Interface_init -lopencore-amrnb yading@10: enabled libopencore_amrwb && require libopencore_amrwb opencore-amrwb/dec_if.h D_IF_init -lopencore-amrwb yading@10: enabled libopencv && require_pkg_config opencv opencv/cxcore.h cvCreateImageHeader yading@10: enabled libopenjpeg && { check_lib openjpeg-1.5/openjpeg.h opj_version -lopenjpeg || yading@10: check_lib openjpeg.h opj_version -lopenjpeg || yading@10: die "ERROR: libopenjpeg not found"; } yading@10: enabled libopus && require_pkg_config opus opus_multistream.h opus_multistream_decoder_create yading@10: enabled libpulse && require_pkg_config libpulse-simple pulse/simple.h pa_simple_new yading@10: enabled libquvi && require_pkg_config libquvi quvi/quvi.h quvi_init yading@10: enabled librtmp && require_pkg_config librtmp librtmp/rtmp.h RTMP_Socket yading@10: enabled libschroedinger && require_pkg_config schroedinger-1.0 schroedinger/schro.h schro_init yading@10: enabled libshine && require_pkg_config shine shine/layer3.h shine_encode_frame yading@10: enabled libsoxr && require libsoxr soxr.h soxr_create -lsoxr yading@10: enabled libspeex && require libspeex speex/speex.h speex_decoder_init -lspeex yading@10: enabled libstagefright_h264 && require_cpp libstagefright_h264 "binder/ProcessState.h media/stagefright/MetaData.h yading@10: media/stagefright/MediaBufferGroup.h media/stagefright/MediaDebug.h media/stagefright/MediaDefs.h yading@10: media/stagefright/OMXClient.h media/stagefright/OMXCodec.h" android::OMXClient -lstagefright -lmedia -lutils -lbinder -lgnustl_static yading@10: enabled libtheora && require libtheora theora/theoraenc.h th_info_init -ltheoraenc -ltheoradec -logg yading@10: enabled libtwolame && require libtwolame twolame.h twolame_init -ltwolame && yading@10: { check_lib twolame.h twolame_encode_buffer_float32_interleaved -ltwolame || yading@10: die "ERROR: libtwolame must be installed and version must be >= 0.3.10"; } yading@10: enabled libutvideo && require_cpp utvideo "stdint.h stdlib.h utvideo/utvideo.h utvideo/Codec.h" 'CCodec*' -lutvideo -lstdc++ yading@10: enabled libv4l2 && require_pkg_config libv4l2 libv4l2.h v4l2_ioctl yading@10: enabled libvo_aacenc && require libvo_aacenc vo-aacenc/voAAC.h voGetAACEncAPI -lvo-aacenc yading@10: enabled libvo_amrwbenc && require libvo_amrwbenc vo-amrwbenc/enc_if.h E_IF_init -lvo-amrwbenc yading@10: enabled libvorbis && require libvorbis vorbis/vorbisenc.h vorbis_info_init -lvorbisenc -lvorbis -logg yading@10: enabled libvpx && { yading@10: enabled libvpx_vp8_decoder && { check_lib2 "vpx/vpx_decoder.h vpx/vp8dx.h" vpx_codec_dec_init_ver -lvpx || yading@10: die "ERROR: libvpx decoder version must be >=0.9.1"; } yading@10: enabled libvpx_vp8_encoder && { check_lib2 "vpx/vpx_encoder.h vpx/vp8cx.h" "vpx_codec_enc_init_ver VP8E_SET_MAX_INTRA_BITRATE_PCT" -lvpx || yading@10: die "ERROR: libvpx encoder version must be >=0.9.7"; } yading@10: enabled libvpx_vp9_decoder && { check_lib2 "vpx/vpx_decoder.h vpx/vp8dx.h" "vpx_codec_vp9_dx" -lvpx || disable libvpx_vp9_decoder; } yading@10: enabled libvpx_vp9_encoder && { check_lib2 "vpx/vpx_encoder.h vpx/vp8cx.h" "vpx_codec_vp9_cx" -lvpx || disable libvpx_vp9_encoder; } } yading@10: enabled libx264 && require libx264 x264.h x264_encoder_encode -lx264 && yading@10: { check_cpp_condition x264.h "X264_BUILD >= 118" || yading@10: die "ERROR: libx264 must be installed and version must be >= 0.118."; } yading@10: enabled libxavs && require libxavs xavs.h xavs_encoder_encode -lxavs yading@10: enabled libxvid && require libxvid xvid.h xvid_global -lxvidcore yading@10: enabled openal && { { for al_libs in "${OPENAL_LIBS}" "-lopenal" "-lOpenAL32"; do yading@10: check_lib 'AL/al.h' alGetError "${al_libs}" && break; done } || yading@10: die "ERROR: openal not found"; } && yading@10: { check_cpp_condition "AL/al.h" "defined(AL_VERSION_1_1)" || yading@10: die "ERROR: openal must be installed and version must be 1.1 or compatible"; } yading@10: enabled opencl && require2 opencl CL/cl.h clEnqueueNDRangeKernel -lOpenCL yading@10: enabled openssl && { check_lib openssl/ssl.h SSL_library_init -lssl -lcrypto || yading@10: check_lib openssl/ssl.h SSL_library_init -lssl32 -leay32 || yading@10: check_lib openssl/ssl.h SSL_library_init -lssl -lcrypto -lws2_32 -lgdi32 || yading@10: die "ERROR: openssl not found"; } yading@10: yading@10: if enabled gnutls; then yading@10: { check_lib nettle/bignum.h nettle_mpz_get_str_256 -lnettle -lhogweed -lgmp && enable nettle; } || yading@10: { check_lib gcrypt.h gcry_mpi_new -lgcrypt && enable gcrypt; } yading@10: fi yading@10: yading@10: # libdc1394 check yading@10: if enabled libdc1394; then yading@10: { check_lib dc1394/dc1394.h dc1394_new -ldc1394 -lraw1394 && yading@10: enable libdc1394_2; } || yading@10: { check_lib libdc1394/dc1394_control.h dc1394_create_handle -ldc1394_control -lraw1394 && yading@10: enable libdc1394_1; } || yading@10: die "ERROR: No version of libdc1394 found " yading@10: fi yading@10: yading@10: SDL_CONFIG="${cross_prefix}sdl-config" yading@10: if check_pkg_config sdl SDL_events.h SDL_PollEvent; then yading@10: check_cpp_condition SDL.h "(SDL_MAJOR_VERSION<<16 | SDL_MINOR_VERSION<<8 | SDL_PATCHLEVEL) >= 0x010201" $sdl_cflags && yading@10: check_cpp_condition SDL.h "(SDL_MAJOR_VERSION<<16 | SDL_MINOR_VERSION<<8 | SDL_PATCHLEVEL) < 0x010300" $sdl_cflags && yading@10: enable sdl yading@10: else yading@10: if "${SDL_CONFIG}" --version > /dev/null 2>&1; then yading@10: sdl_cflags=$("${SDL_CONFIG}" --cflags) yading@10: sdl_libs=$("${SDL_CONFIG}" --libs) yading@10: check_func_headers SDL_version.h SDL_Linked_Version $sdl_cflags $sdl_libs && yading@10: check_cpp_condition SDL.h "(SDL_MAJOR_VERSION<<16 | SDL_MINOR_VERSION<<8 | SDL_PATCHLEVEL) >= 0x010201" $sdl_cflags && yading@10: check_cpp_condition SDL.h "(SDL_MAJOR_VERSION<<16 | SDL_MINOR_VERSION<<8 | SDL_PATCHLEVEL) < 0x010300" $sdl_cflags && yading@10: enable sdl yading@10: fi yading@10: fi yading@10: enabled sdl && add_cflags $sdl_cflags && add_extralibs $sdl_libs yading@10: yading@10: texi2html --help 2> /dev/null | grep -q 'init-file' && enable texi2html || disable texi2html yading@10: makeinfo --version > /dev/null 2>&1 && enable makeinfo || disable makeinfo yading@10: perl --version > /dev/null 2>&1 && enable perl || disable perl yading@10: pod2man --help > /dev/null 2>&1 && enable pod2man || disable pod2man yading@10: rsync --help 2> /dev/null | grep -q 'contimeout' && enable rsync_contimeout || disable rsync_contimeout yading@10: yading@10: check_header linux/fb.h yading@10: check_header linux/videodev.h yading@10: check_header linux/videodev2.h yading@10: check_code cc linux/videodev2.h "struct v4l2_frmsizeenum vfse; vfse.discrete.width = 0;" && enable_safe struct_v4l2_frmivalenum_discrete yading@10: yading@10: check_header sys/videoio.h yading@10: yading@10: check_func_headers "windows.h vfw.h" capCreateCaptureWindow "$vfwcap_indev_extralibs" yading@10: # check that WM_CAP_DRIVER_CONNECT is defined to the proper value yading@10: # w32api 3.12 had it defined wrong yading@10: check_cpp_condition vfw.h "WM_CAP_DRIVER_CONNECT > WM_USER" && enable vfwcap_defines yading@10: yading@10: check_type "dshow.h" IBaseFilter yading@10: yading@10: # check for ioctl_meteor.h, ioctl_bt848.h and alternatives yading@10: { check_header dev/bktr/ioctl_meteor.h && yading@10: check_header dev/bktr/ioctl_bt848.h; } || yading@10: { check_header machine/ioctl_meteor.h && yading@10: check_header machine/ioctl_bt848.h; } || yading@10: { check_header dev/video/meteor/ioctl_meteor.h && yading@10: check_header dev/video/bktr/ioctl_bt848.h; } || yading@10: check_header dev/ic/bt8xx.h yading@10: yading@10: check_header sndio.h yading@10: if check_struct sys/soundcard.h audio_buf_info bytes; then yading@10: enable_safe sys/soundcard.h yading@10: else yading@10: check_cc -D__BSD_VISIBLE -D__XSI_VISIBLE < yading@10: audio_buf_info abc; yading@10: EOF yading@10: fi yading@10: check_header soundcard.h yading@10: yading@10: enabled_any alsa_indev alsa_outdev && check_lib2 alsa/asoundlib.h snd_pcm_htimestamp -lasound yading@10: yading@10: enabled jack_indev && check_lib2 jack/jack.h jack_client_open -ljack && check_func sem_timedwait && yading@10: check_func jack_port_get_latency_range -ljack yading@10: yading@10: enabled_any sndio_indev sndio_outdev && check_lib2 sndio.h sio_open -lsndio yading@10: yading@10: if enabled libcdio; then yading@10: check_lib2 "cdio/cdda.h cdio/paranoia.h" cdio_cddap_open -lcdio_paranoia -lcdio_cdda -lcdio || check_lib2 "cdio/paranoia/cdda.h cdio/paranoia/paranoia.h" cdio_cddap_open -lcdio_paranoia -lcdio_cdda -lcdio yading@10: fi yading@10: yading@10: enabled x11grab && yading@10: require X11 X11/Xlib.h XOpenDisplay -lX11 && yading@10: require Xext X11/extensions/XShm.h XShmCreateImage -lXext && yading@10: require Xfixes X11/extensions/Xfixes.h XFixesGetCursorImage -lXfixes yading@10: yading@10: if ! disabled vaapi; then yading@10: check_lib va/va.h vaInitialize -lva && { yading@10: check_cpp_condition va/va_version.h "VA_CHECK_VERSION(0,32,0)" || yading@10: warn "Please upgrade to VA-API >= 0.32 if you would like full VA-API support."; yading@10: } || disable vaapi yading@10: fi yading@10: yading@10: enabled vdpau && yading@10: check_cpp_condition vdpau/vdpau.h "defined VDP_DECODER_PROFILE_MPEG4_PART2_ASP" || yading@10: disable vdpau yading@10: yading@10: # Funny iconv installations are not unusual, so check it after all flags have been set yading@10: disabled iconv || check_func_headers iconv.h iconv || check_lib2 iconv.h iconv -liconv || disable iconv yading@10: yading@10: enabled debug && add_cflags -g"$debuglevel" && add_asflags -g"$debuglevel" yading@10: test -n "$valgrind" && target_exec="$valgrind --error-exitcode=1 --malloc-fill=0x2a --track-origins=yes --leak-check=full --gen-suppressions=all --suppressions=$source_path/tests/fate-valgrind.supp" yading@10: yading@10: # add some useful compiler flags if supported yading@10: check_cflags -Wdeclaration-after-statement yading@10: check_cflags -Wall yading@10: check_cflags -Wno-parentheses yading@10: check_cflags -Wno-switch yading@10: check_cflags -Wno-format-zero-length yading@10: check_cflags -Wdisabled-optimization yading@10: check_cflags -Wpointer-arith yading@10: check_cflags -Wredundant-decls yading@10: check_cflags -Wno-pointer-sign yading@10: check_cflags -Wwrite-strings yading@10: check_cflags -Wtype-limits yading@10: check_cflags -Wundef yading@10: check_cflags -Wmissing-prototypes yading@10: check_cflags -Wno-pointer-to-int-cast yading@10: check_cflags -Wstrict-prototypes yading@10: enabled extra_warnings && check_cflags -Winline yading@10: yading@10: # add some linker flags yading@10: check_ldflags -Wl,--warn-common yading@10: check_ldflags -Wl,-rpath-link=libpostproc:libswresample:libswscale:libavfilter:libavdevice:libavformat:libavcodec:libavutil:libavresample yading@10: test_ldflags -Wl,-Bsymbolic && append SHFLAGS -Wl,-Bsymbolic yading@10: yading@10: enabled xmm_clobber_test && yading@10: check_ldflags -Wl,--wrap,avcodec_open2 \ yading@10: -Wl,--wrap,avcodec_decode_audio4 \ yading@10: -Wl,--wrap,avcodec_decode_video2 \ yading@10: -Wl,--wrap,avcodec_decode_subtitle2 \ yading@10: -Wl,--wrap,avcodec_encode_audio2 \ yading@10: -Wl,--wrap,avcodec_encode_video \ yading@10: -Wl,--wrap,avcodec_encode_subtitle \ yading@10: -Wl,--wrap,sws_scale || yading@10: disable xmm_clobber_test yading@10: yading@10: echo "X{};" > $TMPV yading@10: if test_ldflags -Wl,--version-script,$TMPV; then yading@10: append SHFLAGS '-Wl,--version-script,\$(SUBDIR)lib\$(NAME).ver' yading@10: check_cc < enable ${lib}_deps_${dep} yading@10: # -> add $dep to ${lib}_deps only once yading@10: add_dep() { yading@10: lib=$1 yading@10: dep=$2 yading@10: enabled "${lib}_deps_${dep}" && return 0 yading@10: enable "${lib}_deps_${dep}" yading@10: prepend "${lib}_deps" $dep yading@10: } yading@10: yading@10: # merge deps lib components yading@10: # merge all ${component}_deps into ${lib}_deps and ${lib}_deps_* yading@10: merge_deps() { yading@10: lib=$1 yading@10: shift yading@10: for comp in $*; do yading@10: enabled $comp || continue yading@10: eval "dep=\"\$${comp}_deps\"" yading@10: for d in $dep; do yading@10: add_dep $lib $d yading@10: done yading@10: done yading@10: } yading@10: yading@10: merge_deps libavfilter $FILTER_LIST yading@10: yading@10: echo "install prefix $prefix" yading@10: echo "source path $source_path" yading@10: echo "C compiler $cc" yading@10: echo "ARCH $arch ($cpu)" yading@10: if test "$build_suffix" != ""; then yading@10: echo "build suffix $build_suffix" yading@10: fi yading@10: if test "$progs_suffix" != ""; then yading@10: echo "progs suffix $progs_suffix" yading@10: fi yading@10: if test "$extra_version" != ""; then yading@10: echo "version string suffix $extra_version" yading@10: fi yading@10: echo "big-endian ${bigendian-no}" yading@10: echo "runtime cpu detection ${runtime_cpudetect-no}" yading@10: if enabled x86; then yading@10: echo "${yasmexe} ${yasm-no}" yading@10: echo "MMX enabled ${mmx-no}" yading@10: echo "MMXEXT enabled ${mmxext-no}" yading@10: echo "3DNow! enabled ${amd3dnow-no}" yading@10: echo "3DNow! extended enabled ${amd3dnowext-no}" yading@10: echo "SSE enabled ${sse-no}" yading@10: echo "SSSE3 enabled ${ssse3-no}" yading@10: echo "AVX enabled ${avx-no}" yading@10: echo "FMA4 enabled ${fma4-no}" yading@10: echo "CMOV enabled ${cmov-no}" yading@10: echo "CMOV is fast ${fast_cmov-no}" yading@10: echo "EBX available ${ebx_available-no}" yading@10: echo "EBP available ${ebp_available-no}" yading@10: fi yading@10: if enabled arm; then yading@10: echo "ARMv5TE enabled ${armv5te-no}" yading@10: echo "ARMv6 enabled ${armv6-no}" yading@10: echo "ARMv6T2 enabled ${armv6t2-no}" yading@10: echo "VFP enabled ${vfp-no}" yading@10: echo "NEON enabled ${neon-no}" yading@10: echo "THUMB enabled ${thumb-no}" yading@10: fi yading@10: if enabled mips; then yading@10: echo "MIPS FPU enabled ${mipsfpu-no}" yading@10: echo "MIPS32R2 enabled ${mips32r2-no}" yading@10: echo "MIPS DSP R1 enabled ${mipsdspr1-no}" yading@10: echo "MIPS DSP R2 enabled ${mipsdspr2-no}" yading@10: fi yading@10: if enabled ppc; then yading@10: echo "AltiVec enabled ${altivec-no}" yading@10: echo "PPC 4xx optimizations ${ppc4xx-no}" yading@10: echo "dcbzl available ${dcbzl-no}" yading@10: fi yading@10: if enabled sparc; then yading@10: echo "VIS enabled ${vis-no}" yading@10: fi yading@10: echo "debug symbols ${debug-no}" yading@10: echo "strip symbols ${stripping-no}" yading@10: echo "optimize for size ${small-no}" yading@10: echo "optimizations ${optimizations-no}" yading@10: echo "static ${static-no}" yading@10: echo "shared ${shared-no}" yading@10: echo "postprocessing support ${postproc-no}" yading@10: echo "new filter support ${avfilter-no}" yading@10: echo "network support ${network-no}" yading@10: echo "threading support ${thread_type-no}" yading@10: echo "safe bitstream reader ${safe_bitstream_reader-no}" yading@10: echo "SDL support ${sdl-no}" yading@10: echo "opencl enabled ${opencl-no}" yading@10: echo "libshine enabled ${libshine-no}" yading@10: echo "texi2html enabled ${texi2html-no}" yading@10: echo "perl enabled ${perl-no}" yading@10: echo "pod2man enabled ${pod2man-no}" yading@10: echo "makeinfo enabled ${makeinfo-no}" yading@10: test -n "$random_seed" && yading@10: echo "random seed ${random_seed}" yading@10: echo yading@10: yading@10: echo "External libraries:" yading@10: print_enabled '' $EXTERNAL_LIBRARY_LIST | print_3_columns yading@10: echo yading@10: yading@10: for type in decoder encoder hwaccel parser demuxer muxer protocol filter bsf indev outdev; do yading@10: echo "Enabled ${type}s:" yading@10: eval list=\$$(toupper $type)_LIST yading@10: print_enabled '_*' $list | print_3_columns yading@10: echo yading@10: done yading@10: yading@10: license="LGPL version 2.1 or later" yading@10: if enabled nonfree; then yading@10: license="nonfree and unredistributable" yading@10: elif enabled gplv3; then yading@10: license="GPL version 3 or later" yading@10: elif enabled lgplv3; then yading@10: license="LGPL version 3 or later" yading@10: elif enabled gpl; then yading@10: license="GPL version 2 or later" yading@10: fi yading@10: yading@10: echo "License: $license" yading@10: yading@10: echo "Creating config.mak, config.h, and doc/config.texi..." yading@10: yading@10: test -e Makefile || $ln_s "$source_path/Makefile" . yading@10: yading@10: enabled stripping || strip="echo skipping strip" yading@10: yading@10: config_files="$TMPH config.mak doc/config.texi" yading@10: yading@10: cat > config.mak <> config.mak yading@10: eval echo "${lcname}_VERSION_MAJOR=\$${name}_VERSION_MAJOR" >> config.mak yading@10: eval echo "${lcname}_VERSION_MINOR=\$${name}_VERSION_MINOR" >> config.mak yading@10: } yading@10: yading@10: map 'get_version $v' $LIBRARY_LIST yading@10: yading@10: cat > $TMPH <>$TMPH yading@10: yading@10: test -n "$malloc_prefix" && yading@10: echo "#define MALLOC_PREFIX $malloc_prefix" >>$TMPH yading@10: yading@10: if enabled yasm; then yading@10: append config_files $TMPASM yading@10: printf '' >$TMPASM yading@10: fi yading@10: yading@10: mkdir -p doc yading@10: echo "@c auto-generated by configure" > doc/config.texi yading@10: yading@10: print_config ARCH_ "$config_files" $ARCH_LIST yading@10: print_config HAVE_ "$config_files" $HAVE_LIST yading@10: print_config CONFIG_ "$config_files" $CONFIG_LIST \ yading@10: $CONFIG_EXTRA \ yading@10: $ALL_COMPONENTS \ yading@10: yading@10: echo "#endif /* FFMPEG_CONFIG_H */" >> $TMPH yading@10: echo "endif # FFMPEG_CONFIG_MAK" >> config.mak yading@10: yading@10: # Do not overwrite an unchanged config.h to avoid superfluous rebuilds. yading@10: cp_if_changed $TMPH config.h yading@10: touch .config yading@10: yading@10: enabled yasm && cp_if_changed $TMPASM config.asm yading@10: yading@10: cat > $TMPH <> $TMPH yading@10: yading@10: cp_if_changed $TMPH libavutil/avconfig.h yading@10: yading@10: if test -n "$WARNINGS"; then yading@10: printf "\n$WARNINGS" yading@10: enabled fatal_warnings && exit 1 yading@10: fi yading@10: yading@10: # build pkg-config files yading@10: yading@10: pkgconfig_generate(){ yading@10: name=$1 yading@10: shortname=${name#lib}${build_suffix} yading@10: comment=$2 yading@10: version=$3 yading@10: libs=$4 yading@10: requires=$5 yading@10: enabled ${name#lib} || return 0 yading@10: mkdir -p $name yading@10: cat < $name/$name${build_suffix}.pc yading@10: prefix=$prefix yading@10: exec_prefix=\${prefix} yading@10: libdir=$libdir yading@10: includedir=$incdir yading@10: yading@10: Name: $name yading@10: Description: $comment yading@10: Version: $version yading@10: Requires: $(enabled shared || echo $requires) yading@10: Requires.private: $(enabled shared && echo $requires) yading@10: Conflicts: yading@10: Libs: -L\${libdir} -l${shortname} $(enabled shared || echo $libs) yading@10: Libs.private: $(enabled shared && echo $libs) yading@10: Cflags: -I\${includedir} yading@10: EOF yading@10: yading@10: mkdir -p doc/examples/pc-uninstalled yading@10: includedir=${source_path} yading@10: [ "$includedir" = . ] && includedir="\${pcfiledir}/../../.." yading@10: cat < doc/examples/pc-uninstalled/$name.pc yading@10: prefix= yading@10: exec_prefix= yading@10: libdir=\${pcfiledir}/../../../$name yading@10: includedir=${includedir} yading@10: yading@10: Name: $name yading@10: Description: $comment yading@10: Version: $version yading@10: Requires: $requires yading@10: Conflicts: yading@10: Libs: -L\${libdir} -l${shortname} $(enabled shared || echo $libs) yading@10: Cflags: -I\${includedir} yading@10: EOF yading@10: } yading@10: yading@10: libavfilter_pc_deps="libavutil${build_suffix} = $LIBAVUTIL_VERSION" yading@10: enabled libavfilter_deps_avcodec && prepend libavfilter_pc_deps "libavcodec${build_suffix} = $LIBAVCODEC_VERSION," yading@10: enabled libavfilter_deps_avformat && prepend libavfilter_pc_deps "libavformat${build_suffix} = $LIBAVFORMAT_VERSION," yading@10: enabled libavfilter_deps_avresample && prepend libavfilter_pc_deps "libavresample${build_suffix} = $LIBAVRESAMPLE_VERSION," yading@10: enabled libavfilter_deps_swscale && prepend libavfilter_pc_deps "libswscale${build_suffix} = $LIBSWSCALE_VERSION," yading@10: enabled libavfilter_deps_swresample && prepend libavfilter_pc_deps "libswresample${build_suffix} = $LIBSWRESAMPLE_VERSION," yading@10: enabled libavfilter_deps_postproc && prepend libavfilter_pc_deps "libpostproc${build_suffix} = $LIBPOSTPROC_VERSION," yading@10: libavfilter_pc_deps=${libavfilter_pc_deps%, } yading@10: yading@10: libavdevice_pc_deps="libavformat${build_suffix} = $LIBAVFORMAT_VERSION" yading@10: enabled lavfi_indev && prepend libavdevice_pc_deps "libavfilter${build_suffix} = $LIBAVFILTER_VERSION," yading@10: yading@10: pkgconfig_generate libavutil "FFmpeg utility library" "$LIBAVUTIL_VERSION" "$LIBM" yading@10: pkgconfig_generate libavcodec "FFmpeg codec library" "$LIBAVCODEC_VERSION" "$extralibs" "libavutil${build_suffix} = $LIBAVUTIL_VERSION" yading@10: pkgconfig_generate libavformat "FFmpeg container format library" "$LIBAVFORMAT_VERSION" "$extralibs" "libavcodec${build_suffix} = $LIBAVCODEC_VERSION" yading@10: pkgconfig_generate libavdevice "FFmpeg device handling library" "$LIBAVDEVICE_VERSION" "$extralibs" "$libavdevice_pc_deps" yading@10: pkgconfig_generate libavfilter "FFmpeg audio/video filtering library" "$LIBAVFILTER_VERSION" "$extralibs" "$libavfilter_pc_deps" yading@10: pkgconfig_generate libpostproc "FFmpeg postprocessing library" "$LIBPOSTPROC_VERSION" "" "libavutil${build_suffix} = $LIBAVUTIL_VERSION" yading@10: pkgconfig_generate libavresample "Libav audio resampling library" "$LIBAVRESAMPLE_VERSION" "$extralibs" "libavutil${build_suffix} = $LIBAVUTIL_VERSION" yading@10: pkgconfig_generate libswscale "FFmpeg image rescaling library" "$LIBSWSCALE_VERSION" "$LIBM" "libavutil${build_suffix} = $LIBAVUTIL_VERSION" yading@10: pkgconfig_generate libswresample "FFmpeg audio resampling library" "$LIBSWRESAMPLE_VERSION" "$LIBM" "libavutil${build_suffix} = $LIBAVUTIL_VERSION" yading@10: yading@10: fix_ffmpeg_remote(){ yading@10: git_remote_from=$1 yading@10: git_remote_to=$2 yading@10: fixme_remote=$(git --git-dir=$source_path/.git --work-tree=$source_path remote -v | grep $git_remote_from | cut -f 1 | sort | uniq) yading@10: if [ "$fixme_remote" != "" ]; then yading@10: echolog " yading@10: Outdated domain in git config, the official domain for ffmpeg git is since yading@10: November 2011, source.ffmpeg.org, both the old and the new point to the same yading@10: repository and server. To update it enter the following commands: yading@10: " yading@10: for remote in $fixme_remote; do yading@10: echolog "git remote set-url $remote $git_remote_to" yading@10: done yading@10: fi yading@10: } yading@10: yading@10: if test -f "$source_path/.git/config"; then yading@10: remote_from=git.videolan.org yading@10: remote_to=source.ffmpeg.org yading@10: fix_ffmpeg_remote git@$remote_from:ffmpeg git@$remote_to:ffmpeg yading@10: fix_ffmpeg_remote git://$remote_from/ffmpeg git://$remote_to/ffmpeg yading@10: fi