X-Git-Url: https://git.sesse.net/?a=blobdiff_plain;f=configure;h=60834ca0fb78d8da3faaf2c8b0f6a6d6e68a3b0f;hb=703acd540e96e430c2a562d75a1672eee209f63d;hp=71ae5556d5409a7b4bca75eae877ec5a92137b1c;hpb=dc4f5a1c3aec96838da1850af550864a69fab0eb;p=ffmpeg diff --git a/configure b/configure index 71ae5556d54..60834ca0fb7 100755 --- a/configure +++ b/configure @@ -82,6 +82,7 @@ Configuration options: --disable-doc do not build documentation --disable-ffmpeg disable ffmpeg build --disable-ffplay disable ffplay build + --disable-ffprobe disable ffprobe build --disable-ffserver disable ffserver build --disable-avdevice disable libavdevice build --disable-avcodec disable libavcodec build @@ -115,6 +116,7 @@ Configuration options: --enable-hardcoded-tables use hardcoded tables instead of runtime generation --enable-memalign-hack emulate memalign, interferes with memory debuggers --enable-beos-netserver enable BeOS netserver + --disable-everything disable all components listed below --disable-encoder=NAME disable encoder NAME --enable-encoder=NAME enable encoder NAME --disable-encoders disable all encoders @@ -231,6 +233,8 @@ Advanced options (experts only): --disable-vis disable VIS optimizations --disable-yasm disable use of yasm assembler --enable-pic build position-independent code + --malloc-prefix=PFX prefix malloc and related names with PFX + --enable-sram allow use of on-chip SRAM Developer options (useful when working on FFmpeg itself): --disable-debug disable debugging symbols @@ -309,6 +313,12 @@ filter(){ done } +map(){ + m=$1 + shift + for _; do eval $m; done +} + set_all(){ value=$1 shift @@ -666,6 +676,18 @@ int main(void){ $func(); } EOF } +check_mathfunc(){ + log check_mathfunc "$@" + func=$1 + shift + disable $func + check_ld "$@" < +float foo(float f) { return $func(f); } +int main(void){ return 0; } +EOF +} + check_func_headers(){ log check_func_headers "$@" headers=$1 @@ -876,6 +898,7 @@ CONFIG_LIST=" fastdiv ffmpeg ffplay + ffprobe ffserver fft golomb @@ -901,6 +924,7 @@ CONFIG_LIST=" libx264 libxvid lpc + lsp mdct memalign_hack mlib @@ -914,6 +938,7 @@ CONFIG_LIST=" runtime_cpudetect shared small + sram static swscale swscale_alpha @@ -949,6 +974,7 @@ ARCH_LIST=' sh4 sparc sparc64 + tomi x86 x86_32 x86_64 @@ -984,6 +1010,7 @@ HAVE_LIST=" alsa_asoundlib_h altivec_h arpa_inet_h + attribute_may_alias attribute_packed bswap closesocket @@ -1009,8 +1036,10 @@ HAVE_LIST=" fork getaddrinfo gethrtime + GetProcessMemoryInfo GetProcessTimes getrusage + struct_rusage_ru_maxrss inet_aton inline_asm isatty @@ -1018,6 +1047,8 @@ HAVE_LIST=" libdc1394_1 libdc1394_2 llrint + local_aligned_16 + local_aligned_8 log2 log2f loongson @@ -1039,6 +1070,7 @@ HAVE_LIST=" socklen_t soundcard_h poll_h + setrlimit struct_addrinfo struct_ipv6_mreq struct_sockaddr_in6 @@ -1108,8 +1140,10 @@ CMDLINE_SET=" host_os ld logfile + malloc_prefix nm source_path + strip sysinclude sysroot target_exec @@ -1154,16 +1188,24 @@ fast_unaligned_if_any="armv6 ppc x86" need_memalign="altivec neon sse" inline_asm_deps="!tms470" +# subsystems +mdct_select="fft" +rdft_select="fft" + # decoders / encoders / hardware accelerators -aac_decoder_select="fft mdct aac_parser" -aac_encoder_select="fft mdct" -ac3_decoder_select="fft mdct ac3_parser" +aac_decoder_select="mdct rdft aac_parser" +aac_encoder_select="mdct" +ac3_decoder_select="mdct ac3_parser" alac_encoder_select="lpc" -atrac3_decoder_select="fft mdct" +amrnb_decoder_select="lsp" +atrac1_decoder_select="mdct" +atrac3_decoder_select="mdct" +binkaudio_dct_decoder_select="mdct rdft dct" +binkaudio_rdft_decoder_select="mdct rdft" cavs_decoder_select="golomb" -cook_decoder_select="fft mdct" +cook_decoder_select="mdct" cscd_decoder_suggest="zlib" -dca_decoder_select="fft mdct" +dca_decoder_select="mdct" dnxhd_encoder_select="aandct" dxa_decoder_select="zlib" eac3_decoder_select="ac3_decoder" @@ -1220,11 +1262,12 @@ msmpeg4v2_decoder_select="h263_decoder" msmpeg4v2_encoder_select="h263_encoder" msmpeg4v3_decoder_select="h263_decoder" msmpeg4v3_encoder_select="h263_encoder" -nellymoser_decoder_select="fft mdct" -nellymoser_encoder_select="fft mdct" +nellymoser_decoder_select="mdct" +nellymoser_encoder_select="mdct" png_decoder_select="zlib" png_encoder_select="zlib" -qdm2_decoder_select="fft mdct rdft" +qcelp_decoder_select="lsp" +qdm2_decoder_select="mdct rdft" rv10_decoder_select="h263_decoder" rv10_encoder_select="h263_encoder" rv20_decoder_select="h263_decoder" @@ -1232,9 +1275,12 @@ rv20_encoder_select="h263_encoder" rv30_decoder_select="golomb" rv40_decoder_select="golomb" shorten_decoder_select="golomb" +sipr_decoder_select="lsp" +snow_encoder_select="aandct" sonic_decoder_select="golomb" sonic_encoder_select="golomb" sonic_ls_encoder_select="golomb" +svq1_encoder_select="aandct" svq3_decoder_select="golomb" svq3_decoder_suggest="zlib" theora_decoder_select="vp3_decoder" @@ -1242,6 +1288,7 @@ tiff_decoder_suggest="zlib" tiff_encoder_suggest="zlib" truehd_decoder_select="mlp_decoder" tscc_decoder_select="zlib" +twinvq_decoder_select="mdct lsp" vc1_decoder_select="h263_decoder" vc1_dxva2_hwaccel_deps="dxva2api_h DXVA_PictureParameters_wDecodedPictureIndex" vc1_dxva2_hwaccel_select="dxva2 vc1_decoder" @@ -1249,14 +1296,16 @@ vc1_vaapi_hwaccel_deps="va_va_h" vc1_vaapi_hwaccel_select="vaapi vc1_decoder" vc1_vdpau_decoder_deps="vdpau_vdpau_h vdpau_vdpau_x11_h" vc1_vdpau_decoder_select="vdpau vc1_decoder" -vorbis_decoder_select="fft mdct" -vorbis_encoder_select="fft mdct" +vorbis_decoder_select="mdct" +vorbis_encoder_select="mdct" vp6a_decoder_select="vp6_decoder" vp6f_decoder_select="vp6_decoder" -wmav1_decoder_select="fft mdct" -wmav1_encoder_select="fft mdct" -wmav2_decoder_select="fft mdct" -wmav2_encoder_select="fft mdct" +wmapro_decoder_select="mdct" +wmav1_decoder_select="mdct" +wmav1_encoder_select="mdct" +wmav2_decoder_select="mdct" +wmav2_encoder_select="mdct" +wmavoice_decoder_select="lsp" wmv1_decoder_select="h263_decoder" wmv1_encoder_select="h263_encoder" wmv2_decoder_select="h263_decoder" @@ -1318,6 +1367,8 @@ mxf_d10_muxer_select="mxf_muxer" ogg_demuxer_select="golomb" psp_muxer_select="mov_muxer" rtsp_demuxer_deps="sdp_demuxer" +rtsp_muxer_deps="sdp_demuxer" +rtsp_muxer_select="rtp_muxer" sdp_demuxer_deps="rtp_protocol mpegts_demuxer" spdif_muxer_select="aac_parser" tg2_muxer_select="mov_muxer" @@ -1350,6 +1401,7 @@ x11_grab_device_indev_extralibs="-lX11 -lXext -lXfixes" # protocols gopher_protocol_deps="network" http_protocol_deps="network" +http_protocol_select="tcp_protocol" rtmp_protocol_deps="tcp_protocol" rtp_protocol_deps="udp_protocol" tcp_protocol_deps="network" @@ -1366,6 +1418,8 @@ avformat_deps="avcodec" # programs ffmpeg_deps="avcodec avformat swscale" ffplay_deps="avcodec avformat swscale sdl" +ffplay_select="rdft" +ffprobe_deps="avcodec avformat" ffserver_deps="avformat ffm_muxer rtp_protocol rtsp_demuxer" ffserver_extralibs='$ldl' @@ -1393,18 +1447,18 @@ ln_s="ln -sf" nm_default="nm" objformat="elf" ranlib="ranlib" -strip="strip" +strip_default="strip" yasmexe="yasm" nm_opts='-g' # machine -arch=$(uname -m) +arch_default=$(uname -m) cpu="generic" # OS -target_os=$(tolower $(uname -s)) -host_os=$target_os +target_os_default=$(tolower $(uname -s)) +host_os=$target_os_default # configurable options enable avcodec @@ -1417,6 +1471,7 @@ enable doc enable fastdiv enable ffmpeg enable ffplay +enable ffprobe enable ffserver enable mpegaudio_hp enable network @@ -1439,14 +1494,14 @@ SLIBSUF=".so" SLIBNAME='$(SLIBPREF)$(FULLNAME)$(SLIBSUF)' SLIBNAME_WITH_VERSION='$(SLIBNAME).$(LIBVERSION)' SLIBNAME_WITH_MAJOR='$(SLIBNAME).$(LIBMAJOR)' -LIB_INSTALL_EXTRA_CMD='$(RANLIB) "$(LIBDIR)/$(LIBNAME)"' +LIB_INSTALL_EXTRA_CMD='$$(RANLIB) "$(LIBDIR)/$(LIBNAME)"' CC_O='-o $@' host_cflags='-D_ISOC99_SOURCE -D_POSIX_C_SOURCE=200112 -O3 -g -Wall' host_libs='-lm' -target_path='.' +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. @@ -1530,6 +1585,9 @@ for opt do ;; --enable-debug=*) debuglevel="$optval" ;; + --disable-everything) + map 'eval disable \${$(toupper ${_%s})_LIST}' $COMPONENT_LIST + ;; --enable-*=*|--disable-*=*) eval $(echo "${opt%%=*}" | sed 's/--/action=/;s/-/ thing=/') is_in "${thing}s" $COMPONENT_LIST || die_unknown "$opt" @@ -1578,15 +1636,22 @@ set >> $logfile test -n "$cross_prefix" && enable cross_compile +if enabled cross_compile; then + test -n "$arch" && test -n "$target_os" || + die "Must specify target arch and OS when cross-compiling" +fi + +set_default arch target_os + ar="${cross_prefix}${ar}" cc_default="${cross_prefix}${cc_default}" nm_default="${cross_prefix}${nm_default}" ranlib="${cross_prefix}${ranlib}" -strip="${cross_prefix}${strip}" +strip_default="${cross_prefix}${strip_default}" sysinclude_default="${sysroot}/usr/include" -set_default cc nm sysinclude +set_default cc nm strip sysinclude enabled cross_compile || host_cc_default=$cc set_default host_cc @@ -1657,20 +1722,28 @@ if $cc -v 2>&1 | grep -qi ^gcc; then CC_DEPFLAGS='-MMD -MF $(@:.o=.d) -MT $@' AS_DEPFLAGS='-MMD -MF $(@:.o=.d) -MT $@' fi + speed_cflags='-O3' + size_cflags='-Os' elif $cc --version 2>/dev/null | grep -q Intel; then cc_type=icc cc_version="AV_STRINGIFY(__INTEL_COMPILER)" CC_DEPFLAGS='-MMD' AS_DEPFLAGS='-MMD' + speed_cflags='-O3' + size_cflags='-Os' elif $cc -v 2>&1 | grep -q xlc; then cc_type=xlc cc_version="AV_STRINGIFY(__IBMC__)" + speed_cflags='-O5' + size_cflags='-O5 -qcompact' elif $cc -V 2>/dev/null | grep -q Compaq; then cc_type=ccc cc_version="AV_STRINGIFY(__DECC_VER)" DEPFLAGS='$(CPPFLAGS) $(CFLAGS) -M' debuglevel=3 add_ldflags -Wl,-z,now # calls to libots crash without this + speed_cflags='-fast' + size_cflags='-O1' elif $cc --vsn 2>/dev/null | grep -q "ARM C/C++ Compiler"; then test -d "$sysroot" || die "No valid sysroot specified." cc_type=armcc @@ -1685,6 +1758,8 @@ elif $cc --vsn 2>/dev/null | grep -q "ARM C/C++ Compiler"; then as_default="${cross_prefix}gcc" CC_DEPFLAGS='-MMD' AS_DEPFLAGS='-MMD' + speed_cflags='-O3' + size_cflags='-Os' elif $cc -version 2>/dev/null | grep -q TMS470; then cc_type=tms470 cc_version="AV_STRINGIFY(__TI_COMPILER_VERSION__)" @@ -1697,6 +1772,8 @@ elif $cc -version 2>/dev/null | grep -q TMS470; then add_cflags -D__gnuc_va_list=va_list -D__USER_LABEL_PREFIX__= CC_DEPFLAGS='-ppa -ppd=$(@:.o=.d)' AS_DEPFLAGS='-MMD' + speed_cflags='-O3 -mf=5' + size_cflags='-O3 -mf=2' filter_cflags=tms470_flags tms470_flags(){ for flag; do @@ -1716,8 +1793,7 @@ elif $cc -version 2>/dev/null | grep -q TMS470; then -mfpu=vfp) echo --float_support=vfpv2 ;; -mfpu=vfpv3) echo --float_support=vfpv3 ;; -msoft-float) echo --float_support=vfplib ;; - -Os) echo -O3 -mf=2 ;; - -O[0-3]) echo $flag -mf=5 ;; + -O[0-3]|-mf=*) echo $flag ;; -g) echo -g -mn ;; -pds=*) echo $flag ;; esac @@ -1728,11 +1804,15 @@ elif $cc -v 2>&1 | grep -q clang; then cc_version=__VERSION__ CC_DEPFLAGS='-MMD' AS_DEPFLAGS='-MMD' + speed_cflags='-O3' + size_cflags='-Os' elif $cc -V 2>&1 | grep -q Sun; then cc_type=suncc cc_version="AV_STRINGIFY(__SUNPRO_C)" DEPEND_CMD='$(DEPCC) $(DEPFLAGS) $< | sed -e "1s,^.*: ,$@: ," -e "\$$!s,\$$, \\\," -e "1!s,^.*: , ," > $(@:.o=.d)' DEPFLAGS='$(CPPFLAGS) $(CFLAGS) -xM1' + speed_cflags='-O5' + size_cflags='-O5 -xspace' filter_cflags=suncc_flags suncc_flags(){ for flag; do @@ -1761,7 +1841,6 @@ elif $cc -V 2>&1 | grep -q Sun; then -std=c99) echo -xc99 ;; -fomit-frame-pointer) echo -xregs=frameptr ;; -fPIC) echo -KPIC -xcode=pic32 ;; - -Os) echo -O5 -xspace ;; -W*,*) echo $flag ;; -f*-*|-W*) ;; *) echo $flag ;; @@ -1794,8 +1873,8 @@ if test -n "$sysroot"; then add_ldflags --sysroot="$sysroot" ;; clang) - add_cppflags -isysroot="$sysroot" - add_ldflags -isysroot="$sysroot" + add_cppflags -isysroot "$sysroot" + add_ldflags -isysroot "$sysroot" ;; esac fi @@ -1828,7 +1907,7 @@ case "$arch" in mips|mipsel|IP*) arch="mips" ;; - mips64) + mips64*) arch="mips" subarch="mips64" ;; @@ -1842,7 +1921,7 @@ case "$arch" in "Power Macintosh"|ppc|powerpc) arch="ppc" ;; - ppc64) + ppc64|powerpc64) arch="ppc" subarch="ppc64" ;; @@ -1869,32 +1948,44 @@ if test "$cpu" = generic; then : do nothing elif enabled ppc; then - case $cpu in - 601|ppc601|PowerPC601) + case $(tolower $cpu) in + 601|ppc601|powerpc601) cpuflags="-mcpu=601" + disable altivec ;; - 603*|ppc603*|PowerPC603*) + 603*|ppc603*|powerpc603*) cpuflags="-mcpu=603" + disable altivec ;; - 604*|ppc604*|PowerPC604*) + 604*|ppc604*|powerpc604*) cpuflags="-mcpu=604" + disable altivec ;; - G3|g3|75*|ppc75*|PowerPC75*) + g3|75*|ppc75*|powerpc75*) cpuflags="-mcpu=750 -mpowerpc-gfxopt" + disable altivec ;; - G4|g4|745*|ppc745*|PowerPC745*) + g4|745*|ppc745*|powerpc745*) cpuflags="-mcpu=7450 -mpowerpc-gfxopt" ;; - 74*|ppc74*|PowerPC74*) + 74*|ppc74*|powerpc74*) cpuflags="-mcpu=7400 -mpowerpc-gfxopt" ;; - G5|g5|970|ppc970|PowerPC970|power4*|Power4*) + g5|970|ppc970|powerpc970|power4*) cpuflags="-mcpu=970 -mpowerpc-gfxopt -mpowerpc64" ;; - Cell|CELL|cell) + cell) cpuflags="-mcpu=cell" enable ldbrx ;; + e500v2) + cpuflags="-mcpu=8548 -mhard-float -mfloat-gprs=double" + disable altivec + ;; + e500) + cpuflags="-mcpu=8540 -mhard-float" + disable altivec + ;; esac elif enabled x86; then @@ -2060,6 +2151,7 @@ case $target_os in netbsd) oss_indev_extralibs="-lossaudio" oss_outdev_extralibs="-lossaudio" + add_cppflags -D_XOPEN_SOURCE=600 ;; openbsd) enable malloc_aligned @@ -2095,11 +2187,6 @@ case $target_os in { check_cflags -mdynamic-no-pic && add_asflags -mdynamic-no-pic; } ;; mingw32*) - # Adding _WIN32_WINNT=0x0501 makes functions that require - # XP visible and thus may make it binary incompatible with - # earlier versions. Set --target-os=mingw32-prexp if this - # isn't desired. - test $target_os = "mingw32" && add_cflags -D_WIN32_WINNT=0x0501 if test $target_os = "mingw32ce"; then disable network else @@ -2189,7 +2276,8 @@ case $target_os in ;; gnu) ;; - + none) + ;; *) die "Unknown OS '$target_os'." ;; @@ -2282,6 +2370,10 @@ check_cc <= 0x0501 is defined - check_func_headers ws2tcpip.h getaddrinfo $network_extralibs check_type ws2tcpip.h socklen_t check_type ws2tcpip.h "struct addrinfo" check_type ws2tcpip.h "struct ipv6_mreq" @@ -2619,6 +2716,7 @@ check_cflags -Wcast-qual check_cflags -Wwrite-strings check_cflags -Wtype-limits check_cflags -Wundef +check_cflags -Wmissing-prototypes enabled extra_warnings && check_cflags -Winline # add some linker flags @@ -2632,19 +2730,10 @@ test_ldflags -Wl,--version-script,$TMPV && append SHFLAGS '-Wl,--version-script,\$(SUBDIR)lib\$(NAME).ver' if enabled small; then - check_cflags -Os # not all compilers support -Os + add_cflags $size_cflags optimizations="small" elif enabled optimizations; then - if enabled xlc; then - add_cflags -O5 - add_ldflags -O5 - elif enabled suncc; then - add_cflags -O5 - elif enabled ccc; then - add_cflags -fast - else - add_cflags -O3 - fi + add_cflags $speed_cflags fi check_cflags -fno-math-errno check_cflags -fno-signed-zeros @@ -2674,11 +2763,14 @@ 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=missing-prototypes elif enabled clang; then check_cflags -Qunused-arguments elif enabled armcc; then # 2523: use of inline assembler is deprecated add_cflags -Wrvct,--diag_suppress=2523 + add_cflags -Wrvct,--diag_suppress=1207 elif enabled tms470; then add_cflags -pds=824 -pds=837 fi @@ -2857,12 +2949,8 @@ if enabled source_path_used; then libpostproc/Makefile libswscale/Makefile " - for dir in $DIRS ; do - mkdir -p $dir - done - for f in $FILES ; do - $ln_s "$source_path/$f" $f - done + map 'mkdir -p $_' $DIRS; + map '$ln_s "$source_path/$_" $_' $FILES fi enabled stripping || strip="echo skipping strip" @@ -2888,8 +2976,10 @@ AS=$as LD=$ld DEPCC=$dep_cc YASM=$yasmexe +YASMDEP=$yasmexe AR=$ar RANLIB=$ranlib +CP=cp -p LN_S=$ln_s STRIP=$strip CPPFLAGS=$CPPFLAGS @@ -2925,6 +3015,15 @@ SDL_LIBS=$sdl_libs SDL_CFLAGS=$sdl_cflags LIB_INSTALL_EXTRA_CMD=$LIB_INSTALL_EXTRA_CMD EXTRALIBS=$extralibs +INSTALL=install +LIBTARGET=${LIBTARGET} +SLIBNAME=${SLIBNAME} +SLIBNAME_WITH_VERSION=${SLIBNAME_WITH_VERSION} +SLIBNAME_WITH_MAJOR=${SLIBNAME_WITH_MAJOR} +SLIB_CREATE_DEF_CMD=${SLIB_CREATE_DEF_CMD} +SLIB_EXTRA_CMD=${SLIB_EXTRA_CMD} +SLIB_INSTALL_EXTRA_CMD=${SLIB_INSTALL_EXTRA_CMD} +SLIB_UNINSTALL_EXTRA_CMD=${SLIB_UNINSTALL_EXTRA_CMD} EOF get_version(){ @@ -2945,17 +3044,6 @@ get_version LIBAVFORMAT libavformat/avformat.h get_version LIBAVUTIL libavutil/avutil.h get_version LIBAVFILTER libavfilter/avfilter.h -enabled shared && cat >> config.mak < $TMPH < $TMPH <>$TMPH + if enabled small || disabled optimizations; then + echo "#undef av_always_inline" >> $TMPH echo "#define av_always_inline" >> $TMPH fi