X-Git-Url: https://git.sesse.net/?a=blobdiff_plain;f=configure;h=baff12f90031916fe7e217473fbba5f3a31a5681;hb=81dfa21ec9766b80dfb878b2f7eba80992b1170a;hp=29c4317f17e18013302f43e43bf3b9d5a09aaf8b;hpb=afb5ed55d2e4cc9cadd5ab6bcbf5b0a1abb5080a;p=ffmpeg diff --git a/configure b/configure index 29c4317f17e..baff12f9003 100755 --- a/configure +++ b/configure @@ -54,8 +54,10 @@ if test "$E1" != 0 || test "$E2" = 0; then exit 1 fi +test -d /usr/xpg4/bin && PATH=/usr/xpg4/bin:$PATH + show_help(){ -cat <>$f - done - done + map 'eval echo "$v \${$v:-no}"' "$@" | + awk "BEGIN { split(\"$files\", files) } + { + c = \"$pfx\" toupper(\$1); + v = \$2; + sub(/yes/, 1, v); + sub(/no/, 0, v); + for (f in files) { + file = files[f]; + if (file ~ /\\.h\$/) { + printf(\"#define %s %d\\n\", c, v) >>file; + } else if (file ~ /\\.asm\$/) { + printf(\"%%define %s %d\\n\", c, v) >>file; + } else if (file ~ /\\.mak\$/) { + n = -v ? \"\" : \"!\"; + printf(\"%s%s=yes\\n\", n, c) >>file; + } + } + }" } print_enabled(){ - test "$1" = -n && end=" " && shift || end="\n" suf=$1 shift for v; do - enabled $v && printf "%s$end" ${v%$suf}; + enabled $v && printf "%s\n" ${v%$suf}; done } @@ -637,6 +643,12 @@ add_host_ldflags(){ append host_ldflags $($host_ldflags_filter "$@") } +add_compat(){ + append compat_objs $1 + shift + map 'add_cppflags -D$v' "$@" +} + check_cmd(){ log "$@" "$@" >> $logfile 2>&1 @@ -700,11 +712,8 @@ ld_o(){ check_ld(){ log check_ld "$@" - flags='' - libs='' - for f; do - test "${f}" = "${f#-l}" && flags="$flags $f" || libs="$libs $f" - done + flags=$(filter_out '-l*' "$@") + libs=$(filter '-l*' "$@") check_cc $($cflags_filter $flags) || return flags=$($ldflags_filter $flags) libs=$($ldflags_filter $libs) @@ -777,11 +786,13 @@ EOF check_mathfunc(){ log check_mathfunc "$@" func=$1 - shift + narg=$2 + shift 2 + test $narg = 2 && args="f, g" || args="f" disable $func check_ld "$@" < -float foo(float f) { return $func(f); } +float foo(float f, float g) { return $func($args); } int main(void){ return 0; } EOF } @@ -863,6 +874,9 @@ check_exec_crash(){ static void sighandler(int sig){ raise(SIGTERM); } +int foo(void){ + $code +} int main(void){ signal(SIGILL, sighandler); signal(SIGFPE, sighandler); @@ -870,7 +884,7 @@ int main(void){ #ifdef SIGBUS signal(SIGBUS, sighandler); #endif - { $code } + foo(); } EOF } @@ -946,7 +960,7 @@ apply(){ cp_if_changed(){ cmp -s "$1" "$2" && echo "$2 is unchanged" && return mkdir -p "$(dirname $2)" - cp -f "$1" "$2" + $cp_f "$1" "$2" } # CONFIG_LIST contains configurable options, while HAVE_LIST is for @@ -966,6 +980,16 @@ COMPONENT_LIST=" protocols " +LIBRARY_LIST=" + avcodec + avdevice + avfilter + avformat + avresample + avutil + swscale +" + PROGRAM_LIST=" avconv avplay @@ -975,12 +999,8 @@ PROGRAM_LIST=" CONFIG_LIST=" $COMPONENT_LIST + $LIBRARY_LIST $PROGRAM_LIST - avcodec - avdevice - avfilter - avformat - avresample avisynth bzlib dct @@ -1005,6 +1025,7 @@ CONFIG_LIST=" libopencore_amrwb libopencv libopenjpeg + libopus libpulse librtmp libschroedinger @@ -1018,6 +1039,7 @@ CONFIG_LIST=" libxavs libxvid lsp + lzo mdct memalign_hack network @@ -1031,7 +1053,6 @@ CONFIG_LIST=" small sram static - swscale swscale_alpha thumb vaapi @@ -1049,6 +1070,7 @@ THREADS_LIST=' ' ARCH_LIST=' + aarch64 alpha arm avr32 @@ -1066,12 +1088,23 @@ ARCH_LIST=' sh4 sparc sparc64 + tilegx + tilepro tomi x86 x86_32 x86_64 ' +ARCH_EXT_LIST_ARM=' + armv5te + armv6 + armv6t2 + armvfp + neon + vfpv3 +' + ARCH_EXT_LIST_X86=' amd3dnow amd3dnowext @@ -1088,30 +1121,59 @@ ARCH_EXT_LIST_X86=' ' ARCH_EXT_LIST=" + $ARCH_EXT_LIST_ARM $ARCH_EXT_LIST_X86 altivec - armv5te - armv6 - armv6t2 - armvfp - mmi - neon ppc4xx - vfpv3 vis " +HAVE_LIST_CMDLINE=' + inline_asm + symver + yasm +' + HAVE_LIST_PUB=' bigendian fast_unaligned ' +MATH_FUNCS=" + atanf + atan2f + cbrtf + cosf + exp2 + exp2f + expf + isinf + isnan + ldexpf + llrint + llrintf + log2 + log2f + log10f + lrint + lrintf + powf + rint + round + roundf + sinf + trunc + truncf +" + HAVE_LIST=" $ARCH_EXT_LIST $(add_suffix _external $ARCH_EXT_LIST) $(add_suffix _inline $ARCH_EXT_LIST) + $HAVE_LIST_CMDLINE $HAVE_LIST_PUB $THREADS_LIST + $MATH_FUNCS aligned_malloc aligned_stack alsa_asoundlib_h @@ -1121,25 +1183,24 @@ HAVE_LIST=" asm_mod_y attribute_may_alias attribute_packed - cbrtf closesocket cmov - cpuid + CommandLineToArgvW cpunop + CryptGenRandom dcbzl dev_bktr_ioctl_bt848_h dev_bktr_ioctl_meteor_h dev_ic_bt8xx_h dev_video_bktr_ioctl_bt848_h dev_video_meteor_ioctl_meteor_h + direct_h dlfcn_h dlopen dos_paths dxva_h ebp_available ebx_available - exp2 - exp2f fast_64bit fast_clz fast_cmov @@ -1153,29 +1214,21 @@ HAVE_LIST=" GetProcessTimes GetSystemTimeAsFileTime getrusage + getservbyport gettimeofday gnu_as ibm_asm inet_aton - inline_asm io_h isatty - isinf - isnan jack_port_get_latency_range ldbrx libdc1394_1 libdc1394_2 - llrint - llrintf local_aligned_16 local_aligned_8 localtime_r - log2 - log2f loongson - lrint - lrintf machine_ioctl_bt848_h machine_ioctl_meteor_h malloc_h @@ -1184,18 +1237,16 @@ HAVE_LIST=" mkstemp mm_empty mmap + mprotect msvcrt nanosleep poll_h posix_memalign rdtsc - rint - round - roundf - rweflags sched_getaffinity sdl sdl_video_size + SetConsoleTextAttribute setmode setrlimit Sleep @@ -1215,7 +1266,6 @@ HAVE_LIST=" struct_sockaddr_sa_len struct_sockaddr_storage struct_v4l2_frmivalenum_discrete - symver symver_asm_label symver_gnu_asm sysconf @@ -1228,8 +1278,6 @@ HAVE_LIST=" sys_time_h sys_videoio_h threads - trunc - truncf unistd_h usleep vfp_args @@ -1237,16 +1285,13 @@ HAVE_LIST=" windows_h winsock2_h xform_asm - xgetbv xmm_clobbers - yasm " # options emitted with CONFIG_ prefix but not available on command line CONFIG_EXTRA=" aandcttables ac3dsp - avutil error_resilience gcrypt golomb @@ -1258,6 +1303,7 @@ CONFIG_EXTRA=" huffman lgplv3 lpc + mpegaudio mpegaudiodsp mpegvideo mpegvideoenc @@ -1271,16 +1317,15 @@ CONFIG_EXTRA=" CMDLINE_SELECT=" $ARCH_EXT_LIST $CONFIG_LIST + $HAVE_LIST_CMDLINE $THREADS_LIST asm cross_compile debug extra_warnings - inline_asm logging + lto optimizations - symver - yasm " PATHS_LIST=' @@ -1323,6 +1368,7 @@ CMDLINE_SET=" target_exec target_os target_path + toolchain " CMDLINE_APPEND=" @@ -1340,8 +1386,6 @@ armvfp_deps="arm" neon_deps="arm" vfpv3_deps="armvfp" -mmi_deps="mips" - altivec_deps="ppc" ppc4xx_deps="ppc" @@ -1389,6 +1433,7 @@ log2_deps="!msvcrt" dct_select="rdft" mdct_select="fft" rdft_select="fft" +mpegaudio_select="mpegaudiodsp" mpegaudiodsp_select="dct" mpegvideoenc_select="mpegvideo" @@ -1407,7 +1452,9 @@ atrac3_decoder_select="mdct" binkaudio_dct_decoder_select="mdct rdft dct sinewin" binkaudio_rdft_decoder_select="mdct rdft sinewin" cavs_decoder_select="golomb mpegvideo" +comfortnoise_encoder_select="lpc" cook_decoder_select="mdct sinewin" +cscd_decoder_select="lzo" cscd_decoder_suggest="zlib" dca_decoder_select="mdct" dnxhd_encoder_select="aandcttables mpegvideoenc" @@ -1451,16 +1498,16 @@ loco_decoder_select="golomb" mdec_decoder_select="error_resilience mpegvideo" mjpeg_encoder_select="aandcttables mpegvideoenc" mlp_decoder_select="mlp_parser" -mp1_decoder_select="mpegaudiodsp" -mp1float_decoder_select="mpegaudiodsp" -mp2_decoder_select="mpegaudiodsp" -mp2float_decoder_select="mpegaudiodsp" -mp3_decoder_select="mpegaudiodsp" -mp3adu_decoder_select="mpegaudiodsp" -mp3adufloat_decoder_select="mpegaudiodsp" -mp3float_decoder_select="mpegaudiodsp" -mp3on4_decoder_select="mpegaudiodsp" -mp3on4float_decoder_select="mpegaudiodsp" +mp1_decoder_select="mpegaudio" +mp1float_decoder_select="mpegaudio" +mp2_decoder_select="mpegaudio" +mp2float_decoder_select="mpegaudio" +mp3_decoder_select="mpegaudio" +mp3adu_decoder_select="mpegaudio" +mp3adufloat_decoder_select="mpegaudio" +mp3float_decoder_select="mpegaudio" +mp3on4_decoder_select="mpegaudio" +mp3on4float_decoder_select="mpegaudio" mpc7_decoder_select="mpegaudiodsp" mpc8_decoder_select="mpegaudiodsp" mpeg_vdpau_decoder_select="vdpau mpegvideo_decoder" @@ -1487,6 +1534,7 @@ msmpeg4v3_encoder_select="h263_encoder" mss2_decoder_select="vc1_decoder" nellymoser_decoder_select="mdct sinewin" nellymoser_encoder_select="mdct sinewin" +nuv_decoder_select="lzo" png_decoder_select="zlib" png_encoder_select="zlib" qcelp_decoder_select="lsp" @@ -1574,6 +1622,8 @@ libopencore_amrnb_encoder_deps="libopencore_amrnb" libopencore_amrwb_decoder_deps="libopencore_amrwb" libopenjpeg_decoder_deps="libopenjpeg" libopenjpeg_encoder_deps="libopenjpeg" +libopus_decoder_deps="libopus" +libopus_encoder_deps="libopus" libschroedinger_decoder_deps="libschroedinger" libschroedinger_encoder_deps="libschroedinger" libspeex_decoder_deps="libspeex" @@ -1597,7 +1647,7 @@ eac3_demuxer_select="ac3_parser" flac_demuxer_select="flac_parser" ipod_muxer_select="mov_muxer" matroska_audio_muxer_select="matroska_muxer" -matroska_demuxer_suggest="zlib bzlib" +matroska_demuxer_suggest="bzlib lzo zlib" mov_demuxer_suggest="zlib" mp3_demuxer_select="mpegaudio_parser" mp4_muxer_select="mov_muxer" @@ -1614,6 +1664,7 @@ rtsp_muxer_select="rtp_muxer http_protocol rtp_protocol" sap_demuxer_select="sdp_demuxer" sap_muxer_select="rtp_muxer rtp_protocol" sdp_demuxer_select="rtpdec" +smoothstreaming_muxer_select="ismv_muxer" spdif_muxer_select="aac_parser" tg2_muxer_select="mov_muxer" tgp_muxer_select="mov_muxer" @@ -1689,14 +1740,18 @@ scale_filter_deps="swscale" yadif_filter_deps="gpl" # libraries -avdevice_deps="avcodec avformat" -avformat_deps="avcodec" +avcodec_deps="avutil" +avdevice_deps="avutil avcodec avformat" +avfilter_deps="avutil" +avformat_deps="avutil avcodec" +avresample_deps="avutil" +swscale_deps="avutil" # programs -avconv_deps="avcodec avfilter avformat avresample swscale - aformat_filter asyncts_filter - format_filter fps_filter scale_filter setpts_filter" -avplay_deps="avcodec avformat swscale sdl" +avconv_deps="avcodec avfilter avformat avresample swscale" +avconv_select="aformat_filter asyncts_filter + format_filter fps_filter scale_filter setpts_filter" +avplay_deps="avcodec avformat avresample swscale sdl" avplay_select="rdft" avprobe_deps="avcodec avformat" avserver_deps="avformat ffm_muxer fork rtp_protocol rtsp_demuxer !shared" @@ -1704,49 +1759,6 @@ avserver_extralibs='$ldl' doc_deps="texi2html" -# tests - -mpg_test_deps="mpeg1system_muxer mpegps_demuxer" -seek_lavf_mxf_d10_test_deps="mxf_d10_test" - -test_deps(){ - suf1=$1 - suf2=$2 - shift 2 - for v; do - dep=${v%=*} - tests=${v#*=} - for name in ${tests}; do - append ${name}_test_deps ${dep}$suf1 ${dep}$suf2 - done - done -} - -test_deps _muxer _demuxer \ - aiff \ - pcm_alaw=alaw \ - asf \ - au \ - avi \ - dv=dv_fmt \ - ffm \ - flv=flv_fmt \ - gxf \ - matroska=mkv \ - mmf \ - mov \ - pcm_mulaw=mulaw \ - mxf="mxf mxf_d10" \ - nut \ - ogg \ - rawvideo=pixfmt \ - rm \ - swf \ - mpegts=ts \ - voc \ - wav \ - yuv4mpegpipe=yuv4mpeg \ - # default parameters logfile="config.log" @@ -1764,14 +1776,14 @@ shlibdir_default="$libdir_default" ar_default="ar" cc_default="gcc" host_cc_default="gcc" +cp_f="cp -f" ln_s="ln -sf" -nm_default="nm" +nm_default="nm -g" objformat="elf" pkg_config_default=pkg-config ranlib="ranlib" yasmexe="yasm" -nm_opts='-g' nogas=":" # machine @@ -1783,15 +1795,7 @@ target_os_default=$(tolower $(uname -s)) host_os=$target_os_default # configurable options -enable $PROGRAM_LIST - -enable avcodec -enable avdevice -enable avfilter -enable avformat -enable avresample -enable avutil -enable swscale +enable $LIBRARY_LIST $PROGRAM_LIST enable asm enable debug @@ -1897,23 +1901,15 @@ ALL_COMPONENTS=" $PROTOCOL_LIST " -find_tests(){ - map "echo ${2}\${v}_test" $(ls "$source_path"/tests/ref/$1 | grep -v '[^-a-z0-9_]') -} - -LAVF_TESTS=$(find_tests lavf) -LAVFI_TESTS=$(find_tests lavfi) -SEEK_TESTS=$(find_tests seek seek_) - -ALL_TESTS="$LAVF_TESTS $LAVFI_TESTS $SEEK_TESTS" - for n in $COMPONENT_LIST; do v=$(toupper ${n%s})_LIST eval enable \$$v eval ${n}_if_any="\$$v" done -enable $ARCH_EXT_LIST $ALL_TESTS +disable snow_decoder snow_encoder + +enable $ARCH_EXT_LIST die_unknown(){ echo "Unknown option \"$1\"." @@ -1952,63 +1948,66 @@ do_random(){ for opt do optval="${opt#*=}" case "$opt" in - --extra-ldflags=*) add_ldflags $optval - ;; - --extra-libs=*) add_extralibs $optval - ;; - --disable-devices) disable $INDEV_LIST $OUTDEV_LIST - ;; - --enable-debug=*) debuglevel="$optval" - ;; - --disable-everything) - map 'eval unset \${$(toupper ${v%s})_LIST}' $COMPONENT_LIST - ;; - --enable-random|--disable-random) - action=${opt%%-random} - do_random ${action#--} $COMPONENT_LIST - ;; - --enable-random=*|--disable-random=*) - action=${opt%%-random=*} - do_random ${action#--} $optval - ;; - --enable-*=*|--disable-*=*) - eval $(echo "${opt%%=*}" | sed 's/--/action=/;s/-/ thing=/') - is_in "${thing}s" $COMPONENT_LIST || die_unknown "$opt" - eval list=\$$(toupper $thing)_LIST - name=$(echo "${optval}" | sed "s/,/_${thing}|/g")_${thing} - $action $(filter "$name" $list) - ;; - --enable-?*|--disable-?*) - eval $(echo "$opt" | sed 's/--/action=/;s/-/ option=/;s/-/_/g') - if is_in $option $COMPONENT_LIST; then - test $action = disable && action=unset - eval $action \$$(toupper ${option%s})_LIST - elif is_in $option $CMDLINE_SELECT; then - $action $option - else - die_unknown $opt - fi - ;; - --list-*) - NAME="${opt#--list-}" - is_in $NAME $COMPONENT_LIST || die_unknown $opt - NAME=${NAME%s} - eval show_list $NAME \$$(toupper $NAME)_LIST - ;; - --help|-h) show_help - ;; - *) - optname="${opt%%=*}" - optname="${optname#--}" - optname=$(echo "$optname" | sed 's/-/_/g') - if is_in $optname $CMDLINE_SET; then - eval $optname='$optval' - elif is_in $optname $CMDLINE_APPEND; then - append $optname "$optval" - else - die_unknown $opt - fi - ;; + --extra-ldflags=*) add_ldflags $optval + ;; + --extra-libs=*) add_extralibs $optval + ;; + --disable-devices) disable $INDEV_LIST $OUTDEV_LIST + ;; + --enable-debug=*) debuglevel="$optval" + ;; + --disable-programs) + disable $PROGRAM_LIST + ;; + --disable-everything) + map 'eval unset \${$(toupper ${v%s})_LIST}' $COMPONENT_LIST + ;; + --enable-random|--disable-random) + action=${opt%%-random} + do_random ${action#--} $COMPONENT_LIST + ;; + --enable-random=*|--disable-random=*) + action=${opt%%-random=*} + do_random ${action#--} $optval + ;; + --enable-*=*|--disable-*=*) + eval $(echo "${opt%%=*}" | sed 's/--/action=/;s/-/ thing=/') + is_in "${thing}s" $COMPONENT_LIST || die_unknown "$opt" + eval list=\$$(toupper $thing)_LIST + name=$(echo "${optval}" | sed "s/,/_${thing}|/g")_${thing} + $action $(filter "$name" $list) + ;; + --enable-?*|--disable-?*) + eval $(echo "$opt" | sed 's/--/action=/;s/-/ option=/;s/-/_/g') + if is_in $option $COMPONENT_LIST; then + test $action = disable && action=unset + eval $action \$$(toupper ${option%s})_LIST + elif is_in $option $CMDLINE_SELECT; then + $action $option + else + die_unknown $opt + fi + ;; + --list-*) + NAME="${opt#--list-}" + is_in $NAME $COMPONENT_LIST || die_unknown $opt + NAME=${NAME%s} + eval show_list $NAME \$$(toupper $NAME)_LIST + ;; + --help|-h) show_help + ;; + *) + optname="${opt%%=*}" + optname="${optname#--}" + optname=$(echo "$optname" | sed 's/-/_/g') + if is_in $optname $CMDLINE_SET; then + eval $optname='$optval' + elif is_in $optname $CMDLINE_APPEND; then + append $optname "$optval" + else + die_unknown $opt + fi + ;; esac done @@ -2024,8 +2023,6 @@ if enabled cross_compile; then die "Must specify target arch and OS when cross-compiling" fi -set_default arch target_os - ar_default="${cross_prefix}${ar_default}" cc_default="${cross_prefix}${cc_default}" nm_default="${cross_prefix}${nm_default}" @@ -2034,7 +2031,30 @@ ranlib="${cross_prefix}${ranlib}" sysinclude_default="${sysroot}/usr/include" -set_default cc nm pkg_config sysinclude +case "$toolchain" in + clang-asan) + cc_default="clang" + add_cflags -faddress-sanitizer + add_ldflags -faddress-sanitizer + ;; + clang-tsan) + cc_default="clang" + add_cflags -fthread-sanitizer + add_ldflags -fthread-sanitizer + ;; + msvc) + cc_default="c99wrap cl" + ld_default="c99wrap link" + nm_default="dumpbin -symbols" + ar_default="lib" + target_os_default="win32" + ;; + ?*) + die "Unknown toolchain $toolchain" + ;; +esac + +set_default arch cc pkg_config sysinclude target_os enabled cross_compile || host_cc_default=$cc set_default host_cc @@ -2045,7 +2065,7 @@ fi exesuf() { case $1 in - mingw32*|cygwin*|*-dos|freedos|opendos|os/2*|symbian) echo .exe ;; + mingw32*|win32|win64|cygwin*|*-dos|freedos|opendos|os/2*|symbian) echo .exe ;; esac } @@ -2101,6 +2121,24 @@ EOF die "Sanity test failed." fi +ccc_flags(){ + for flag; do + case $flag in + -std=c99) echo -c99 ;; + -mcpu=*) echo -arch ${flag#*=} ;; + -mieee) echo -ieee ;; + -O*|-fast) echo $flag ;; + -fno-math-errno) echo -assume nomath_errno ;; + -g) echo -g3 ;; + -Wall) echo -msg_enable level2 ;; + -Wno-pointer-sign) echo -msg_disable ptrmismatch1 ;; + -Wl,*) echo $flag ;; + -f*|-W*) ;; + *) echo $flag ;; + esac + done +} + msvc_flags(){ for flag; do case $flag in @@ -2109,12 +2147,14 @@ msvc_flags(){ -Wall) echo -W4 -wd4244 -wd4127 -wd4018 -wd4389 \ -wd4146 -wd4057 -wd4204 -wd4706 -wd4305 \ -wd4152 -wd4324 -we4013 -wd4100 -wd4214 \ - -wd4996 ;; + -wd4996 -wd4273 ;; -std=c99) ;; -fno-math-errno) ;; -fno-common) ;; -fno-signed-zeros) ;; -lz) echo zlib.lib ;; + -lavifil32) echo vfw32.lib ;; + -lavicap32) echo vfw32.lib user32.lib ;; -l*) echo ${flag#-l}.lib ;; *) echo $flag ;; esac @@ -2124,6 +2164,7 @@ msvc_flags(){ pgi_flags(){ for flag; do case $flag in + -flto) echo -Mipa=fast,libopt,libinline,vestigial ;; -fomit-frame-pointer) echo -Mnoframe ;; -g) echo -gopt ;; *) echo $flag ;; @@ -2148,6 +2189,8 @@ suncc_flags(){ prescott|nocona) echo -xarch=sse3 -xchip=pentium4 ;; *-sse3) echo -xarch=sse3 ;; core2) echo -xarch=ssse3 -xchip=core2 ;; + corei7) echo -xarch=sse4_2 -xchip=nehalem ;; + corei7-avx) echo -xarch=avx -xchip=sandybridge ;; amdfam10|barcelona|bdver*) echo -xarch=sse4_1 ;; athlon-4|athlon-[mx]p) echo -xarch=ssea ;; k8|opteron|athlon64|athlon-fx) @@ -2182,6 +2225,7 @@ tms470_flags(){ -mfpu=neon) echo --float_support=vfpv3 --neon ;; -mfpu=vfp) echo --float_support=vfpv2 ;; -mfpu=vfpv3) echo --float_support=vfpv3 ;; + -mfpu=vfpv3-d16) echo --float_support=vfpv3d16 ;; -msoft-float) echo --float_support=vfplib ;; -O[0-3]|-mf=*) echo $flag ;; -g) echo -g -mn ;; @@ -2237,10 +2281,9 @@ probe_cc(){ _type=ccc _ident=$($_cc -V | head -n1 | cut -d' ' -f1-3) _DEPFLAGS='-M' - debuglevel=3 - _ldflags='-Wl,-z,now' # calls to libots crash without this _cflags_speed='-fast' _cflags_size='-O1' + _flags_filter=ccc_flags elif $_cc --vsn 2>/dev/null | grep -q "ARM C/C++ Compiler"; then test -d "$sysroot" || die "No valid sysroot specified." _type=armcc @@ -2257,15 +2300,12 @@ probe_cc(){ _depflags='-MMD' _cflags_speed='-O3' _cflags_size='-Os' - elif $_cc -version 2>/dev/null | grep -q TMS470; then + elif $_cc -version 2>/dev/null | grep -Eq 'TMS470|TI ARM'; then _type=tms470 _ident=$($_cc -version | head -n1 | tr -s ' ') _flags='--gcc --abi=eabi -me' - _cflags='-D__gnuc_va_list=va_list -D__USER_LABEL_PREFIX__=' _cc_e='-ppl -fe=$@' _cc_o='-fe=$@' - as_default="${cross_prefix}gcc" - ld_default="${cross_prefix}gcc" _depflags='-ppa -ppd=$(@:.o=.d)' _cflags_speed='-O3 -mf=5' _cflags_size='-O3 -mf=2' @@ -2302,7 +2342,7 @@ probe_cc(){ elif $_cc -V 2>&1 | grep -q Portland; then _type=pgi _ident="PGI $($_cc -V 2>&1 | awk '/^pgcc/ { print $2; exit }')" - opt_common='-alias=ansi -Mlre -Mpre' + opt_common='-alias=ansi -Mdse -Mlre -Mpre' _cflags_speed="-O3 -Mautoinline -Munroll=c:4 $opt_common" _cflags_size="-O2 -Munroll=c:1 $opt_common" _cflags_noopt="-O1" @@ -2330,7 +2370,6 @@ probe_cc(){ if [ $pfx = hostcc ]; then append _cflags -Dsnprintf=_snprintf fi - disable aligned_stack fi eval ${pfx}_type=\$_type @@ -2399,6 +2438,17 @@ if [ -z "$CC_DEPFLAGS" ] && [ "$dep_cc" != "$cc" ]; then DEPCCFLAGS=$_flags fi +if $ar 2>&1 | grep -q Microsoft; then + arflags="-nologo" + ar_o='-out:$@' +elif $ar 2>&1 | grep -q 'Texas Instruments'; then + arflags="rq" + ar_o='$@' +else + arflags="rc" + ar_o='$@' +fi + add_cflags $extra_cflags add_asflags $extra_cflags @@ -2437,39 +2487,32 @@ fi # Deal with common $arch aliases case "$arch" in + aarch64|arm64) + arch="aarch64" + ;; arm*) arch="arm" ;; - mips|mipsel|IP*) - arch="mips" - ;; - mips64*) + mips*|IP*) arch="mips" - subarch="mips64" ;; - parisc|hppa) + parisc*|hppa*) arch="parisc" ;; - parisc64|hppa64) - arch="parisc" - subarch="parisc64" - ;; - "Power Macintosh"|ppc|powerpc) + "Power Macintosh"|ppc*|powerpc*) arch="ppc" ;; - ppc64|powerpc64) - arch="ppc" - subarch="ppc64" - ;; s390|s390x) arch="s390" ;; sh4|sh) arch="sh4" ;; - sun4u|sparc64) + sun4u|sparc*) arch="sparc" - subarch="sparc64" + ;; + tilegx|tile-gx) + arch="tilegx" ;; i[3-6]86|i86pc|BePC|x86pc|x86_64|amd64) arch="x86" @@ -2482,6 +2525,71 @@ enable $arch # Add processor-specific flags if test "$cpu" = generic; then : do nothing + +elif enabled aarch64; then + + case $cpu in + armv*) + cpuflags="-march=$cpu" + ;; + *) + cpuflags="-mcpu=$cpu" + ;; + esac + +elif enabled alpha; then + + cpuflags="-mcpu=$cpu" + +elif enabled arm; then + + case $cpu in + armv*) + cpuflags="-march=$cpu" + subarch=$(echo $cpu | sed 's/[^a-z0-9]//g') + ;; + *) + cpuflags="-mcpu=$cpu" + case $cpu in + cortex-a*) subarch=armv7a ;; + cortex-r*) subarch=armv7r ;; + cortex-m*) enable thumb; subarch=armv7m ;; + arm11*) subarch=armv6 ;; + arm[79]*e*|arm9[24]6*|arm96*|arm102[26]) subarch=armv5te ;; + armv4*|arm7*|arm9[24]*) subarch=armv4 ;; + esac + ;; + esac + +elif enabled avr32; then + + case $cpu in + ap7[02]0[0-2]) + subarch="avr32_ap" + cpuflags="-mpart=$cpu" + ;; + ap) + subarch="avr32_ap" + cpuflags="-march=$cpu" + ;; + uc3[ab]*) + subarch="avr32_uc" + cpuflags="-mcpu=$cpu" + ;; + uc) + subarch="avr32_uc" + cpuflags="-march=$cpu" + ;; + esac + +elif enabled bfin; then + + cpuflags="-mcpu=$cpu" + +elif enabled mips; then + + cpuflags="-march=$cpu" + elif enabled ppc; then case $(tolower $cpu) in @@ -2498,20 +2606,20 @@ elif enabled ppc; then disable altivec ;; g3|75*|ppc75*|powerpc75*) - cpuflags="-mcpu=750 -mpowerpc-gfxopt" + cpuflags="-mcpu=750" disable altivec ;; g4|745*|ppc745*|powerpc745*) - cpuflags="-mcpu=7450 -mpowerpc-gfxopt" + cpuflags="-mcpu=7450" ;; 74*|ppc74*|powerpc74*) - cpuflags="-mcpu=7400 -mpowerpc-gfxopt" + cpuflags="-mcpu=7400" ;; g5|970|ppc970|powerpc970) - cpuflags="-mcpu=970 -mpowerpc-gfxopt -mpowerpc64" + cpuflags="-mcpu=970" ;; power[3-7]*) - cpuflags="-mcpu=$cpu -mpowerpc-gfxopt -mpowerpc64" + cpuflags="-mcpu=$cpu" ;; cell) cpuflags="-mcpu=cell" @@ -2531,6 +2639,18 @@ elif enabled ppc; then ;; esac +elif enabled sparc; then + + case $cpu in + cypress|f93[04]|tsc701|sparcl*|supersparc|hypersparc|niagara|v[789]) + cpuflags="-mcpu=$cpu" + disable vis + ;; + ultrasparc*|niagara[234]) + cpuflags="-mcpu=$cpu" + ;; + esac + elif enabled x86; then case $cpu in @@ -2544,7 +2664,7 @@ elif enabled x86; then disable cmov ;; # targets that do support conditional mov (cmov) - i686|pentiumpro|pentium[23]|pentium-m|athlon|athlon-tbird|athlon-4|athlon-[mx]p|athlon64*|k8*|opteron*|athlon-fx|core2|amdfam10|barcelona|atom|bdver*) + 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*) cpuflags="-march=$cpu" enable cmov enable fast_cmov @@ -2557,71 +2677,6 @@ elif enabled x86; then ;; esac -elif enabled sparc; then - - case $cpu in - niagara) - cpuflags="-mcpu=$cpu" - disable vis - ;; - sparc64) - cpuflags="-mcpu=v9" - ;; - esac - -elif enabled arm; then - - case $cpu in - armv*) - cpuflags="-march=$cpu" - subarch=$(echo $cpu | sed 's/[^a-z0-9]//g') - ;; - *) - cpuflags="-mcpu=$cpu" - case $cpu in - cortex-a*) subarch=armv7a ;; - cortex-r*) subarch=armv7r ;; - cortex-m*) enable thumb; subarch=armv7m ;; - arm11*) subarch=armv6 ;; - arm[79]*e*|arm9[24]6*|arm96*|arm102[26]) subarch=armv5te ;; - armv4*|arm7*|arm9[24]*) subarch=armv4 ;; - esac - ;; - esac - -elif enabled alpha; then - - enabled ccc && cpuflags="-arch $cpu" || cpuflags="-mcpu=$cpu" - -elif enabled bfin; then - - cpuflags="-mcpu=$cpu" - -elif enabled mips; then - - cpuflags="-march=$cpu" - -elif enabled avr32; then - - case $cpu in - ap7[02]0[0-2]) - subarch="avr32_ap" - cpuflags="-mpart=$cpu" - ;; - ap) - subarch="avr32_ap" - cpuflags="-march=$cpu" - ;; - uc3[ab]*) - subarch="avr32_uc" - cpuflags="-mcpu=$cpu" - ;; - uc) - subarch="avr32_uc" - cpuflags="-march=$cpu" - ;; - esac - fi add_cflags $cpuflags @@ -2652,13 +2707,35 @@ EOF check_host_cflags -std=c99 check_host_cflags -Wall +check_64bit(){ + arch32=$1 + arch64=$2 + expr=$3 + check_code cc "" "int test[2*($expr) - 1]" && + subarch=$arch64 || subarch=$arch32 +} + case "$arch" in - alpha|ia64|mips|parisc|sparc) + alpha|ia64) + spic=$shared + ;; + mips) + check_64bit mips mips64 '_MIPS_SIM > 1' + spic=$shared + ;; + parisc) + check_64bit parisc parisc64 'sizeof(void *) > 4' + spic=$shared + ;; + ppc) + check_64bit ppc ppc64 'sizeof(void *) > 4' + ;; + sparc) + check_64bit sparc sparc64 'sizeof(void *) > 4' spic=$shared ;; x86) - subarch="x86_32" - check_code cc "" "int test[(int)sizeof(char*) - 7]" && subarch="x86_64" + check_64bit x86_32 x86_64 'sizeof(void *) > 4' if test "$subarch" = "x86_64"; then spic=$shared fi @@ -2687,7 +2764,7 @@ case $target_os in # guards for processor-specific code, instead suppress # generation of the HWCAPS ELF section on Solaris x86 only. enabled_all suncc x86 && echo "hwcap_1 = OVERRIDE;" > mapfile && add_ldflags -Wl,-M,mapfile - nm_opts='-P -g' + nm_default='nm -P -g' ;; netbsd) disable symver @@ -2758,9 +2835,32 @@ case $target_os in dlltool="${cross_prefix}dlltool" ranlib=: enable dos_paths - check_cflags -fno-common add_cppflags -U__STRICT_ANSI__ ;; + win32|win64) + if enabled shared; then + # Link to the import library instead of the normal static library + # for shared libs. + LD_LIB='%.lib' + # Cannot build shared and static libraries at the same time with + # MSVC. + disable static + fi + shlibdir_default="$bindir_default" + SLIBPREF="" + SLIBSUF=".dll" + SLIBNAME_WITH_VERSION='$(SLIBPREF)$(FULLNAME)-$(LIBVERSION)$(SLIBSUF)' + SLIBNAME_WITH_MAJOR='$(SLIBPREF)$(FULLNAME)-$(LIBMAJOR)$(SLIBSUF)' + SLIB_CREATE_DEF_CMD='makedef $(SUBDIR)lib$(NAME).ver $(OBJS) > $$(@:$(SLIBSUF)=.def)' + SLIB_INSTALL_NAME='$(SLIBNAME_WITH_MAJOR)' + SLIB_INSTALL_LINKS= + SLIB_INSTALL_EXTRA_SHLIB='$(SLIBNAME:$(SLIBSUF)=.lib)' + SLIB_INSTALL_EXTRA_LIB='$(SLIBNAME_WITH_MAJOR:$(SLIBSUF)=.def)' + SHFLAGS='-dll -def:$$(@:$(SLIBSUF)=.def) -implib:$(SUBDIR)$(SLIBNAME:$(SLIBSUF)=.lib)' + objformat="win32" + ranlib=: + enable dos_paths + ;; cygwin*) target_os=cygwin shlibdir_default="$bindir_default" @@ -2774,8 +2874,6 @@ case $target_os in SHFLAGS='-shared -Wl,--out-implib,$(SUBDIR)lib$(FULLNAME).dll.a' objformat="win32" enable dos_paths - check_cflags -fno-common - add_cppflags -U__STRICT_ANSI__ ;; *-dos|freedos|opendos) network_extralibs="-lsocket" @@ -2784,7 +2882,6 @@ case $target_os in add_cppflags -U__STRICT_ANSI__ ;; linux) - add_cppflags -D_POSIX_C_SOURCE=200112 -D_XOPEN_SOURCE=600 enable dv1394 ;; irix*) @@ -2804,21 +2901,20 @@ case $target_os in SLIBNAME_WITH_VERSION='$(SLIBPREF)$(NAME)-$(LIBVERSION)$(SLIBSUF)' SLIBNAME_WITH_MAJOR='$(SLIBPREF)$(shell echo $(NAME) | cut -c1-6)$(LIBMAJOR)$(SLIBSUF)' SLIB_CREATE_DEF_CMD='echo LIBRARY $(SLIBNAME_WITH_MAJOR) INITINSTANCE TERMINSTANCE > $(SUBDIR)$(NAME).def; \ - echo PROTMODE >> $(SUBDIR)$(NAME).def; \ - echo CODE PRELOAD MOVEABLE DISCARDABLE >> $(SUBDIR)$(NAME).def; \ - echo DATA PRELOAD MOVEABLE MULTIPLE NONSHARED >> $(SUBDIR)$(NAME).def; \ - echo EXPORTS >> $(SUBDIR)$(NAME).def; \ - emxexp -o $(OBJS) >> $(SUBDIR)$(NAME).def' + echo PROTMODE >> $(SUBDIR)$(NAME).def; \ + echo CODE PRELOAD MOVEABLE DISCARDABLE >> $(SUBDIR)$(NAME).def; \ + echo DATA PRELOAD MOVEABLE MULTIPLE NONSHARED >> $(SUBDIR)$(NAME).def; \ + echo EXPORTS >> $(SUBDIR)$(NAME).def; \ + emxexp -o $(OBJS) >> $(SUBDIR)$(NAME).def' SLIB_EXTRA_CMD='emximp -o $(SUBDIR)$(LIBPREF)$(NAME)_dll.a $(SUBDIR)$(NAME).def; \ - emximp -o $(SUBDIR)$(LIBPREF)$(NAME)_dll.lib $(SUBDIR)$(NAME).def;' + emximp -o $(SUBDIR)$(LIBPREF)$(NAME)_dll.lib $(SUBDIR)$(NAME).def;' SLIB_INSTALL_EXTRA_LIB='$(LIBPREF)$(NAME)_dll.a $(LIBPREF)$(NAME)_dll.lib' enable dos_paths ;; gnu/kfreebsd) - add_cppflags -D_POSIX_C_SOURCE=200112 -D_XOPEN_SOURCE=600 -D_BSD_SOURCE + add_cppflags -D_BSD_SOURCE ;; gnu) - add_cppflags -D_POSIX_C_SOURCE=200112 -D_XOPEN_SOURCE=600 ;; qnx) add_cppflags -D_QNX_SOURCE @@ -2836,6 +2932,25 @@ case $target_os in -l:drtaeabi.dso -l:scppnwdl.dso -lsupc++ -lgcc \ -l:libc.dso -l:libm.dso -l:euser.dso -l:libcrt0.lib ;; + osf1) + add_cppflags -D_OSF_SOURCE -D_POSIX_PII -D_REENTRANT + AVSERVERLDFLAGS= + ;; + minix) + ;; + plan9) + add_cppflags -D_C99_SNPRINTF_EXTENSION \ + -D_REENTRANT_SOURCE \ + -D_RESEARCH_SOURCE \ + -DFD_SETSIZE=96 \ + -DHAVE_SOCK_OPTS + add_compat strtod.o strtod=avpriv_strtod + network_extralibs='-lbsd' + exeobjs=compat/plan9/main.o + disable avserver + ln_s='ln -s -f' + cp_f='cp' + ;; none) ;; *) @@ -2847,8 +2962,10 @@ esac if check_cpp_condition features.h "defined __UCLIBC__"; then libc_type=uclibc + add_cppflags -D_POSIX_C_SOURCE=200112 -D_XOPEN_SOURCE=600 elif check_cpp_condition features.h "defined __GLIBC__"; then libc_type=glibc + add_cppflags -D_POSIX_C_SOURCE=200112 -D_XOPEN_SOURCE=600 elif check_header _mingw.h; then libc_type=mingw check_cpp_condition _mingw.h \ @@ -2857,18 +2974,33 @@ elif check_header _mingw.h; then die "ERROR: MinGW runtime version must be >= 3.15." elif check_cpp_condition newlib.h "defined _NEWLIB_VERSION"; then libc_type=newlib + add_cppflags -U__STRICT_ANSI__ elif check_func_headers stdlib.h _get_doserrno; then libc_type=msvcrt - add_cflags -Dstrtod=avpriv_strtod - add_cflags -Dsnprintf=avpriv_snprintf \ - -D_snprintf=avpriv_snprintf \ - -Dvsnprintf=avpriv_vsnprintf + add_compat strtod.o strtod=avpriv_strtod + add_compat msvcrt/snprintf.o snprintf=avpriv_snprintf \ + _snprintf=avpriv_snprintf \ + vsnprintf=avpriv_vsnprintf elif check_cpp_condition stddef.h "defined __KLIBC__"; then libc_type=klibc fi test -n "$libc_type" && enable $libc_type +# hacks for compiler/libc/os combinations + +if enabled_all tms470 glibc; then + CPPFLAGS="-I${source_path}/compat/tms470 ${CPPFLAGS}" + add_cppflags -D__USER_LABEL_PREFIX__= + add_cppflags -D__builtin_memset=memset + add_cppflags -D__gnuc_va_list=va_list -D_VA_LIST_DEFINED + add_cflags -pds=48 # incompatible redefinition of macro +fi + +if enabled_all ccc glibc; then + add_ldflags -Wl,-z,now # calls to libots crash without this +fi + esc(){ echo "$*" | sed 's/%/%25/g;s/:/%3a/g' } @@ -2878,6 +3010,7 @@ echo "config:$arch:$subarch:$cpu:$target_os:$(esc $cc_ident):$(esc $LIBAV_CONFIG check_cpp_condition stdlib.h "defined(__PIC__) || defined(__pic__) || defined(PIC)" && enable pic set_default $PATHS_LIST +set_default nm # we need to build at least one lib type if ! enabled_any static shared; then @@ -2925,7 +3058,7 @@ enabled pic && enable_pic check_cc <=0.9.1"; } - enabled libvpx_encoder && { check_lib2 "vpx/vpx_encoder.h vpx/vp8cx.h" vpx_codec_enc_init_ver -lvpx || - die "ERROR: libvpx encoder version must be >=0.9.1"; } } + enabled libvpx_encoder && { check_lib2 "vpx/vpx_encoder.h vpx/vp8cx.h" "vpx_codec_enc_init_ver VPX_CQ" -lvpx || + die "ERROR: libvpx encoder version must be >=0.9.6"; } } enabled libx264 && require libx264 x264.h x264_encoder_encode -lx264 && { check_cpp_condition x264.h "X264_BUILD >= 118" || die "ERROR: libx264 version must be >= 0.118."; } @@ -3340,7 +3469,7 @@ enabled jack_indev && check_lib2 jack/jack.h jack_client_open -ljack && enabled_any sndio_indev sndio_outdev && check_lib2 sndio.h sio_open -lsndio enabled libcdio && - check_lib2 "cdio/cdda.h cdio/paranoia.h" cdio_cddap_open "-lcdio_paranoia -lcdio_cdda -lcdio" + check_lib2 "cdio/cdda.h cdio/paranoia.h" cdio_cddap_open -lcdio_paranoia -lcdio_cdda -lcdio enabled x11grab && require X11 X11/Xlib.h XOpenDisplay -lX11 && @@ -3353,10 +3482,8 @@ if ! disabled vda && check_header VideoDecodeAcceleration/VDADecoder.h; then fi if ! disabled vdpau && enabled vdpau_vdpau_h; then -check_cpp_condition \ - vdpau/vdpau.h "defined VDP_DECODER_PROFILE_MPEG4_PART2_ASP" || - { echolog "Please upgrade to libvdpau >= 0.2 if you would like vdpau support." && - disable vdpau; } + check_cpp_condition vdpau/vdpau.h "defined VDP_DECODER_PROFILE_MPEG4_PART2_ASP" || + { echolog "Please upgrade to libvdpau >= 0.2 if you would like vdpau support." && disable vdpau; } fi enabled debug && add_cflags -g"$debuglevel" && add_asflags -g"$debuglevel" @@ -3408,17 +3535,31 @@ void ff_foo(void) {} EOF fi -if [ -n "$optflags" ]; then - add_cflags $optflags -elif enabled small; then - add_cflags $cflags_size -elif enabled optimizations; then - add_cflags $cflags_speed -else - add_cflags $cflags_noopt +if [ -z "$optflags" ]; then + if enabled small; then + optflags=$cflags_size + elif enabled optimizations; then + optflags=$cflags_speed + else + optflags=$cflags_noopt + fi +fi + +check_optflags(){ + check_cflags "$@" + enabled lto && check_ldflags "$@" +} + + +if enabled lto; then + test "$cc_type" != "$ld_type" && die "LTO requires same compiler and linker" + check_cflags -flto + check_ldflags -flto $cpuflags fi -check_cflags -fno-math-errno -check_cflags -fno-signed-zeros + +check_optflags $optflags +check_optflags -fno-math-errno +check_optflags -fno-signed-zeros if enabled icc; then # Just warnings, no remarks @@ -3446,22 +3587,23 @@ if enabled icc; then fi elif enabled ccc; then # disable some annoying warnings - add_cflags -msg_disable cvtu32to64 - add_cflags -msg_disable embedcomment - add_cflags -msg_disable needconstext - add_cflags -msg_disable nomainieee - add_cflags -msg_disable ptrmismatch1 - add_cflags -msg_disable unreachcode + add_cflags -msg_disable bitnotint + add_cflags -msg_disable mixfuncvoid + add_cflags -msg_disable nonstandcast + add_cflags -msg_disable unsupieee elif enabled gcc; then - check_cflags -fno-tree-vectorize + check_optflags -fno-tree-vectorize check_cflags -Werror=implicit-function-declaration check_cflags -Werror=missing-prototypes check_cflags -Werror=declaration-after-statement + check_cflags -Werror=vla elif enabled llvm_gcc; then check_cflags -mllvm -stack-alignment=16 elif enabled clang; then check_cflags -mllvm -stack-alignment=16 check_cflags -Qunused-arguments + check_cflags -Werror=implicit-function-declaration + check_cflags -Werror=missing-prototypes elif enabled armcc; then # 2523: use of inline assembler is deprecated add_cflags -W${armcc_opt},--diag_suppress=2523 @@ -3474,8 +3616,19 @@ elif enabled tms470; then add_cflags -pds=824 -pds=837 elif enabled pathscale; then add_cflags -fstrict-overflow -OPT:wrap_around_unsafe_opt=OFF +elif enabled msvc; then + enabled x86_32 && disable aligned_stack fi +case $target_os in + osf1) + enabled ccc && add_ldflags '-Wl,-expect_unresolved,*' + ;; + plan9) + add_cppflags -Dmain=plan9_main + ;; +esac + enabled_any $THREADS_LIST && enable threads enabled asm || { arch=c; disable $ARCH_LIST $ARCH_EXT_LIST; } @@ -3484,7 +3637,6 @@ check_deps $CONFIG_LIST \ $CONFIG_EXTRA \ $HAVE_LIST \ $ALL_COMPONENTS \ - $ALL_TESTS \ ! enabled_any memalign posix_memalign aligned_malloc && enabled_any $need_memalign && enable memalign_hack @@ -3523,9 +3675,6 @@ if enabled arm; then echo "ARM VFP enabled ${armvfp-no}" echo "NEON enabled ${neon-no}" fi -if enabled mips; then - echo "MMI enabled ${mmi-no}" -fi if enabled ppc; then echo "AltiVec enabled ${altivec-no}" echo "PPC 4xx optimizations ${ppc4xx-no}" @@ -3561,6 +3710,7 @@ echo "libopencore-amrnb support ${libopencore_amrnb-no}" echo "libopencore-amrwb support ${libopencore_amrwb-no}" echo "libopencv support ${libopencv-no}" echo "libopenjpeg enabled ${libopenjpeg-no}" +echo "libopus enabled ${libopus-no}" echo "libpulse enabled ${libpulse-no}" echo "librtmp enabled ${librtmp-no}" echo "libschroedinger enabled ${libschroedinger-no}" @@ -3629,6 +3779,8 @@ DEPASFLAGS=$DEPASFLAGS \$(CPPFLAGS) YASM=$yasmexe DEPYASM=$yasmexe AR=$ar +ARFLAGS=$arflags +AR_O=$ar_o RANLIB=$ranlib LN_S=$ln_s CPPFLAGS=$CPPFLAGS @@ -3637,6 +3789,7 @@ ASFLAGS=$ASFLAGS AS_C=$AS_C AS_O=$AS_O CC_C=$CC_C +CC_E=$CC_E CC_O=$CC_O LD_O=$LD_O LD_LIB=$LD_LIB @@ -3682,6 +3835,8 @@ CFLAGS-avplay=$sdl_cflags ZLIB=$($ldflags_filter -lz) LIB_INSTALL_EXTRA_CMD=$LIB_INSTALL_EXTRA_CMD EXTRALIBS=$extralibs +COMPAT_OBJS=$compat_objs +EXEOBJS=$exeobjs INSTALL=install LIBTARGET=${LIBTARGET} SLIBNAME=${SLIBNAME} @@ -3697,22 +3852,16 @@ SAMPLES:=${samples:-\$(LIBAV_SAMPLES)} EOF get_version(){ - lcname=$1 + lcname=lib${1} name=$(toupper $lcname) file=$source_path/$lcname/version.h - eval $(grep "#define ${name}_VERSION_M" "$file" | awk '{ print $2"="$3 }') + eval $(awk "/#define ${name}_VERSION_M/ { print \$2 \"=\" \$3 }" "$file") eval ${name}_VERSION=\$${name}_VERSION_MAJOR.\$${name}_VERSION_MINOR.\$${name}_VERSION_MICRO eval echo "${lcname}_VERSION=\$${name}_VERSION" >> config.mak eval echo "${lcname}_VERSION_MAJOR=\$${name}_VERSION_MAJOR" >> config.mak } -get_version libavcodec -get_version libavdevice -get_version libavfilter -get_version libavformat -get_version libavresample -get_version libavutil -get_version libswscale +map 'get_version $v' $LIBRARY_LIST cat > $TMPH <>config.mak <> $TMPH # Do not overwrite an unchanged config.h to avoid superfluous rebuilds. @@ -3773,15 +3916,15 @@ test -n "$WARNINGS" && printf "\n$WARNINGS" # build pkg-config files pkgconfig_generate(){ -name=$1 -shortname=${name#lib}${build_suffix} -comment=$2 -version=$3 -libs=$4 -requires=$5 -enabled ${name#lib} || return 0 -mkdir -p $name -cat < $name/$name.pc + name=$1 + shortname=${name#lib}${build_suffix} + comment=$2 + version=$3 + libs=$4 + requires=$5 + enabled ${name#lib} || return 0 + mkdir -p $name + cat < $name/$name.pc prefix=$prefix exec_prefix=\${prefix} libdir=$libdir @@ -3797,7 +3940,7 @@ Libs: -L\${libdir} -l${shortname} $(enabled shared || echo $libs) Libs.private: $(enabled shared && echo $libs) Cflags: -I\${includedir} EOF -cat < $name/$name-uninstalled.pc + cat < $name/$name-uninstalled.pc prefix= exec_prefix= libdir=\${pcfiledir} @@ -3817,6 +3960,6 @@ pkgconfig_generate libavutil "Libav utility library" "$LIBAVUTIL_VERSION" "$LIBM pkgconfig_generate libavcodec "Libav codec library" "$LIBAVCODEC_VERSION" "$extralibs" "libavutil = $LIBAVUTIL_VERSION" pkgconfig_generate libavformat "Libav container format library" "$LIBAVFORMAT_VERSION" "$extralibs" "libavcodec = $LIBAVCODEC_VERSION" pkgconfig_generate libavdevice "Libav device handling library" "$LIBAVDEVICE_VERSION" "$extralibs" "libavformat = $LIBAVFORMAT_VERSION" -pkgconfig_generate libavfilter "Libav video filtering library" "$LIBAVFILTER_VERSION" "$extralibs" -pkgconfig_generate libavresample "Libav audio resampling library" "$LIBAVRESAMPLE_VERSION" "$extralibs" +pkgconfig_generate libavfilter "Libav video filtering library" "$LIBAVFILTER_VERSION" "$extralibs" "libavutil = $LIBAVUTIL_VERSION" +pkgconfig_generate libavresample "Libav audio resampling library" "$LIBAVRESAMPLE_VERSION" "$extralibs" "libavutil = $LIBAVUTIL_VERSION" pkgconfig_generate libswscale "Libav image rescaling library" "$LIBSWSCALE_VERSION" "$LIBM" "libavutil = $LIBAVUTIL_VERSION"