X-Git-Url: https://git.sesse.net/?a=blobdiff_plain;f=configure;h=05137511368a9e0f0cfbbcb8ae0e3f16f5fc0c46;hb=a1db009e6c0a51804ec8e1046b1ed132ab54ff59;hp=3de19a547af31eda1f808d8c84187e162dea2c2a;hpb=9efdf9b5c0905540d94e8998526583e37786df54;p=ffmpeg diff --git a/configure b/configure index 3de19a547af..05137511368 100755 --- a/configure +++ b/configure @@ -211,8 +211,6 @@ Advanced options (experts only): --arch=ARCH select architecture [$arch] --cpu=CPU select the minimum required CPU (affects instruction selection, may crash on older CPUs) - --enable-powerpc-perf enable performance report on PPC - (requires enabling PMC) --disable-asm disable all assembler optimizations --disable-altivec disable AltiVec optimizations --disable-amd3dnow disable 3DNow! optimizations @@ -237,7 +235,6 @@ Advanced options (experts only): Developer options (useful when working on FFmpeg itself): --disable-debug disable debugging symbols --enable-debug=LEVEL set the debug level [$debuglevel] - --enable-gprof enable profiling with gprof [$gprof] --disable-optimizations disable compiler optimizations --enable-extra-warnings enable more compiler warnings --disable-stripping disable stripping of executables and shared libraries @@ -513,40 +510,13 @@ print_config(){ done } -flags_saved(){ - (: ${SAVE_CFLAGS?}) 2> /dev/null -} - -save_flags(){ - flags_saved && return - SAVE_CFLAGS="$CFLAGS" - SAVE_LDFLAGS="$LDFLAGS" - SAVE_extralibs="$extralibs" -} - -restore_flags(){ - flags_saved || return - CFLAGS="$SAVE_CFLAGS" - LDFLAGS="$SAVE_LDFLAGS" - extralibs="$SAVE_extralibs" - unset SAVE_CFLAGS - unset SAVE_LDFLAGS - unset SAVE_extralibs -} - -temp_cflags(){ - save_flags - CFLAGS="$CFLAGS $*" -} - -temp_ldflags(){ - save_flags - LDFLAGS="$LDFLAGS $*" -} - -temp_extralibs(){ - save_flags - extralibs="$extralibs $*" +print_enabled(){ + test "$1" = -n && end=" " && shift || end="\n" + suf=$1 + shift + for v; do + enabled $v && printf "%s$end" ${v%$suf}; + done } append(){ @@ -555,6 +525,12 @@ append(){ eval "$var=\"\$$var $*\"" } +prepend(){ + var=$1 + shift + eval "$var=\"$* \$$var\"" +} + add_cppflags(){ append CPPFLAGS $($filter_cppflags "$@") } @@ -572,7 +548,7 @@ add_ldflags(){ } add_extralibs(){ - append extralibs "$@" + prepend extralibs "$@" } check_cmd(){ @@ -887,7 +863,6 @@ CONFIG_LIST=" fft golomb gpl - gprof gray h264dsp hardcoded_tables @@ -918,7 +893,6 @@ CONFIG_LIST=" nonfree pic postproc - powerpc_perf rdft runtime_cpudetect shared @@ -984,6 +958,7 @@ ARCH_EXT_LIST=' HAVE_LIST_PUB=' bigendian + fast_unaligned ' HAVE_LIST=" @@ -1015,14 +990,16 @@ HAVE_LIST=" fast_64bit fast_clz fast_cmov - fast_unaligned + fcntl fork getaddrinfo gethrtime GetProcessMemoryInfo GetProcessTimes getrusage + gnu_as struct_rusage_ru_maxrss + ibm_asm inet_aton inline_asm isatty @@ -1181,11 +1158,12 @@ inline_asm_deps="!tms470" symver_if_any="symver_asm_label symver_gnu_asm" # subsystems +dct_select="rdft" mdct_select="fft" rdft_select="fft" # decoders / encoders / hardware accelerators -aac_decoder_select="mdct rdft aac_parser" +aac_decoder_select="mdct rdft" aac_encoder_select="mdct" ac3_decoder_select="mdct ac3_parser" alac_encoder_select="lpc" @@ -1229,6 +1207,11 @@ ljpeg_encoder_select="aandct" loco_decoder_select="golomb" mjpeg_encoder_select="aandct" mlp_decoder_select="mlp_parser" +mp1float_decoder_select="dct" +mp2float_decoder_select="dct" +mp3adufloat_decoder_select="dct" +mp3float_decoder_select="dct" +mp3on4float_decoder_select="dct" mpeg1video_encoder_select="aandct" mpeg2video_encoder_select="aandct" mpeg4_decoder_select="h263_decoder mpeg4video_parser" @@ -1286,12 +1269,13 @@ vorbis_decoder_select="mdct" vorbis_encoder_select="mdct" vp6a_decoder_select="vp6_decoder" vp6f_decoder_select="vp6_decoder" +vp8_decoder_select="h264dsp" wmapro_decoder_select="mdct" wmav1_decoder_select="mdct" wmav1_encoder_select="mdct" wmav2_decoder_select="mdct" wmav2_encoder_select="mdct" -wmavoice_decoder_select="lsp rdft dct" +wmavoice_decoder_select="lsp rdft dct mdct" wmv1_decoder_select="h263_decoder" wmv1_encoder_select="h263_encoder" wmv2_decoder_select="h263_decoder" @@ -1311,9 +1295,6 @@ vdpau_deps="vdpau_vdpau_h vdpau_vdpau_x11_h" # parsers h264_parser_select="golomb h264dsp" -# bitstream_filters -aac_adtstoasc_bsf_select="aac_parser" - # external libraries libdirac_decoder_deps="libdirac !libschroedinger" libdirac_encoder_deps="libdirac" @@ -1379,7 +1360,7 @@ oss_indev_deps_any="soundcard_h sys_soundcard_h" oss_outdev_deps_any="soundcard_h sys_soundcard_h" v4l_indev_deps="linux_videodev_h" v4l2_indev_deps_any="linux_videodev2_h sys_videoio_h" -vfwcap_indev_deps="capCreateCaptureWindow" +vfwcap_indev_deps="capCreateCaptureWindow vfwcap_defines" vfwcap_indev_extralibs="-lavicap32" x11_grab_device_indev_deps="x11grab XShmCreateImage" x11_grab_device_indev_extralibs="-lX11 -lXext -lXfixes" @@ -1413,6 +1394,96 @@ ffserver_extralibs='$ldl' doc_deps="texi2html" +# tests + +test_deps(){ + suf1=$1 + suf2=$2 + shift 2 + for v; do + dep=${v%=*} + tests=${v#*=} + for name in ${tests}; do + eval ${name}_test_deps="'${dep}$suf1 ${dep}$suf2'" + done + done +} + +test_deps _encoder _decoder \ + ac3 \ + adpcm_g726=g726 \ + adpcm_ima_qt \ + adpcm_ima_wav \ + adpcm_ms \ + adpcm_swf \ + adpcm_yamaha=adpcm_yam \ + alac \ + asv1 \ + asv2 \ + bmp \ + dnxhd="hdxhd_1080i dnxhd_720p dnxhd_720p_rd" \ + dvvideo="dv dv50" \ + ffv1 \ + flac \ + flashsv \ + flv \ + gif \ + h261 \ + h263="h263 h263p" \ + huffyuv \ + jpegls \ + mjpeg="jpg mjpeg ljpeg" \ + mp2 \ + mpeg1video="mpeg mpeg1b" \ + mpeg2video="mpeg2 mpeg2thread" \ + mpeg4="mpeg4 mpeg4adv mpeg4nr mpeg4thread error rc" \ + msmpeg4v3=msmpeg4 \ + msmpeg4v2 \ + pbm=pbmpipe \ + pcx \ + pgm="pgm pgmpipe" \ + ppm="ppm ppmpipe" \ + rawvideo="rgb yuv" \ + roq \ + rv10 \ + rv20 \ + sgi \ + snow="snow snowll" \ + svq1 \ + targa=tga \ + tiff \ + wmav1 \ + wmav2 \ + wmv1 \ + wmv2 \ + +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 \ + nut \ + ogg \ + rawvideo=pixfmt \ + rm \ + swf \ + mpegts=ts \ + voc \ + wav \ + yuv4mpegpipe=yuv4mpeg \ + +mpg_test_deps="mpeg1system_muxer mpegps_demuxer" + # default parameters logfile="config.log" @@ -1437,6 +1508,7 @@ objformat="elf" ranlib="ranlib" strip_default="strip" yasmexe="yasm" +nogas=":" nm_opts='-g' @@ -1492,8 +1564,8 @@ host_libs='-lm' target_path='$(CURDIR)' -# gcc stupidly only outputs the basename of targets with -MM, but we need the -# full relative path for objects in subdirectories for non-recursive Make. +# since the object filename is not given with the -MM flag, the compiler +# is only able to print the basename, and we must add the path ourselves DEPEND_CMD='$(DEPCC) $(DEPFLAGS) $< | sed -e "/^\#.*/d" -e "s,^[[:space:]]*$(*F)\\.o,$(@D)/$(*F).o," > $(@:.o=.d)' DEPFLAGS='$(CPPFLAGS) $(CFLAGS) -MM' @@ -1537,13 +1609,23 @@ INDEV_LIST=$(find_things indev _IN libavdevice/alldevices.c) PROTOCOL_LIST=$(find_things protocol PROTOCOL libavformat/allformats.c) FILTER_LIST=$(find_things filter FILTER libavfilter/allfilters.c) +find_tests(){ + map 'echo ${v}_test' $(ls "$source_path"/tests/ref/$1 | grep -v '[^-a-z0-9_]') +} + +ACODEC_TESTS=$(find_tests acodec) +VCODEC_TESTS=$(find_tests vsynth1) +LAVF_TESTS=$(find_tests lavf) + +pcm_test_deps=$(map 'echo ${v%_*}_decoder $v' $(filter pcm_* $ENCODER_LIST)) + for n in $COMPONENT_LIST; do v=$(toupper ${n%s})_LIST eval enable \$$v eval ${n}_if_any="\$$v" done -enable $ARCH_EXT_LIST +enable $ARCH_EXT_LIST $ACODEC_TESTS $VCODEC_TESTS $LAVF_TESTS die_unknown(){ echo "Unknown option \"$1\"." @@ -1570,7 +1652,7 @@ for opt do --enable-debug=*) debuglevel="$optval" ;; --disable-everything) - map 'eval disable \${$(toupper ${v%s})_LIST}' $COMPONENT_LIST + map 'eval unset \${$(toupper ${v%s})_LIST}' $COMPONENT_LIST ;; --enable-*=*|--disable-*=*) eval $(echo "${opt%%=*}" | sed 's/--/action=/;s/-/ thing=/') @@ -1786,7 +1868,8 @@ elif $cc -version 2>/dev/null | grep -q TMS470; then } elif $cc -v 2>&1 | grep -q clang; then cc_type=clang - cc_version=__VERSION__ + $cc -dM -E $TMPC | grep -q __clang_version__ && + cc_version=__clang_version__ || cc_version=__VERSION__ CC_DEPFLAGS='-MMD' AS_DEPFLAGS='-MMD' speed_cflags='-O3' @@ -2138,14 +2221,16 @@ case $target_os in enable malloc_aligned ;; bsd/os) - osextralibs="-lpoll -lgnugetopt" + add_extralibs -lpoll -lgnugetopt strip="strip -d" ;; darwin) enable malloc_aligned + gas="gas-preprocessor.pl $cc" + enabled ppc && add_asflags -force_cpusubtype_ALL SHFLAGS='-dynamiclib -Wl,-single_module -Wl,-install_name,$(SHLIBDIR)/$(SLIBNAME),-current_version,$(LIBVERSION),-compatibility_version,$(LIBMAJOR) -Wl,-read_only_relocs,suppress' strip="${strip} -x" - FFLDFLAGS="-Wl,-dynamic,-search_paths_first" + add_ldflags -Wl,-dynamic,-search_paths_first SLIBSUF=".dylib" SLIBNAME_WITH_VERSION='$(SLIBPREF)$(FULLNAME).$(LIBVERSION)$(SLIBSUF)' SLIBNAME_WITH_MAJOR='$(SLIBPREF)$(FULLNAME).$(LIBMAJOR)$(SLIBSUF)' @@ -2184,13 +2269,9 @@ case $target_os in objformat="win32" enable dos_paths check_cflags -fno-common - if ! enabled x86_64; then - check_cpp_condition _mingw.h "(__MINGW32_MAJOR_VERSION > 3) || (__MINGW32_MAJOR_VERSION == 3 && __MINGW32_MINOR_VERSION >= 15)" || + check_cpp_condition _mingw.h "defined (__MINGW64_VERSION_MAJOR) || (__MINGW32_MAJOR_VERSION > 3) \ + || (__MINGW32_MAJOR_VERSION == 3 && __MINGW32_MINOR_VERSION >= 15)" || die "ERROR: MinGW runtime version must be >= 3.15." - enabled_any avisynth vfwcap_indev && - { check_cpp_condition w32api.h "(__W32API_MAJOR_VERSION > 3) || (__W32API_MAJOR_VERSION == 3 && __W32API_MINOR_VERSION >= 13)" || - die "ERROR: avisynth and vfwcap_indev require w32api version 3.13 or later."; } - fi ;; cygwin*) target_os=cygwin @@ -2221,7 +2302,7 @@ case $target_os in os/2*) strip="lxlite" ln_s="cp -f" - FFLDFLAGS="-Zomf -Zbin-files -Zargs-wild -Zmap" + add_ldflags -Zomf -Zbin-files -Zargs-wild -Zmap SHFLAGS='$(SUBDIR)$(NAME).def -Zdll -Zomf' FFSERVERLDFLAGS="" LIBSUF="_s.a" @@ -2256,11 +2337,6 @@ check_cpp_condition stdlib.h "defined(__PIC__) || defined(__pic__) || defined(PI set_default $PATHS_LIST -add_extralibs $osextralibs - -# Combine FFLDFLAGS and the LDFLAGS environment variable. -LDFLAGS="$FFLDFLAGS $LDFLAGS" - # we need to build at least one lib type if ! enabled_any static shared; then cat <= 2.2.f"; } enabled libschroedinger && add_cflags $(pkg-config --cflags schroedinger-1.0) && require libschroedinger schroedinger/schro.h schro_init $(pkg-config --libs schroedinger-1.0) enabled libspeex && require libspeex speex/speex.h speex_decoder_init -lspeex enabled libtheora && require libtheora theora/theoraenc.h th_info_init -ltheoraenc -ltheoradec -logg enabled libvorbis && require libvorbis vorbis/vorbisenc.h vorbis_info_init -lvorbisenc -lvorbis -logg -enabled libvpx && require2 libvpx "vpx/vpx_decoder.h vpx/vp8dx.h" "vpx_codec_dec_init_ver" -lvpx && - require2 libvpx "vpx/vpx_encoder.h vpx/vp8cx.h" "vpx_codec_enc_init_ver" -lvpx -enabled libx264 && require libx264 x264.h x264_encoder_encode -lx264 -lm && +enabled libvpx && { check_lib2 "vpx/vpx_decoder.h vpx/vp8dx.h" vpx_codec_dec_init_ver -lvpx && + check_lib2 "vpx/vpx_encoder.h vpx/vp8cx.h" vpx_codec_enc_init_ver -lvpx || + die "ERROR: libvpx version must be >=0.9.1"; } +enabled libx264 && require libx264 x264.h x264_encoder_encode -lx264 && { check_cpp_condition x264.h "X264_BUILD >= 98" || die "ERROR: libx264 version must be >= 0.98."; } enabled libxvid && require libxvid xvid.h xvid_global -lxvidcore @@ -2627,6 +2715,9 @@ check_header linux/videodev2.h check_header sys/videoio.h check_func_headers "windows.h vfw.h" capCreateCaptureWindow "$vfwcap_indev_extralibs" +# check that WM_CAP_DRIVER_CONNECT is defined to the proper value +# w32api 3.12 had it defined wrong +check_cpp_condition vfw.h "WM_CAP_DRIVER_CONNECT > WM_USER" && enable vfwcap_defines # check for ioctl_meteor.h, ioctl_bt848.h and alternatives { check_header dev/bktr/ioctl_meteor.h && @@ -2731,7 +2822,7 @@ elif enabled ccc; then add_cflags -msg_disable unreachcode elif enabled gcc; then check_cflags -fno-tree-vectorize - check_cflags -Werror=implicit + check_cflags -Werror=implicit-function-declaration check_cflags -Werror=missing-prototypes elif enabled clang; then check_cflags -Qunused-arguments @@ -2743,11 +2834,6 @@ elif enabled tms470; then add_cflags -pds=824 -pds=837 fi -if enabled gprof; then - add_cflags -p - add_ldflags -p -fi - enabled_any $THREADS_LIST && enable threads check_deps $CONFIG_LIST \ @@ -2764,6 +2850,9 @@ check_deps $CONFIG_LIST \ $INDEV_LIST \ $OUTDEV_LIST \ $PROTOCOL_LIST \ + $ACODEC_TESTS \ + $VCODEC_TESTS \ + $LAVF_TESTS \ enabled asm || { arch=c; disable $ARCH_LIST $ARCH_EXT_LIST; } @@ -2808,12 +2897,10 @@ if enabled ppc; then echo "AltiVec enabled ${altivec-no}" echo "PPC 4xx optimizations ${ppc4xx-no}" echo "dcbzl available ${dcbzl-no}" - echo "performance report ${powerpc_perf-no}" fi if enabled sparc; then echo "VIS enabled ${vis-no}" fi -echo "gprof enabled ${gprof-no}" echo "debug symbols ${debug-no}" echo "strip symbols ${stripping-no}" echo "optimizations ${optimizations-no}" @@ -2851,9 +2938,7 @@ echo for type in decoder encoder hwaccel parser demuxer muxer protocol filter bsf indev outdev; do echo "Enabled ${type}s:" eval list=\$$(toupper $type)_LIST - for part in $list; do - enabled $part && echo ${part%_*} - done | sort | pr -3 -t + print_enabled '_*' $list | sort | pr -3 -t echo done @@ -3038,6 +3123,12 @@ print_config CONFIG_ $TMPH config.mak $CONFIG_LIST \ $INDEV_LIST \ $OUTDEV_LIST \ +cat >>config.mak <> $TMPH echo "endif # FFMPEG_CONFIG_MAK" >> config.mak