X-Git-Url: https://git.sesse.net/?a=blobdiff_plain;f=configure;h=69cd10b3fd451df8bbc3579f3bd6f7ac5c53eee0;hb=97e6ee20645c9717164f98d979b5593abe3c9b02;hp=a7a57d198bf5afce8dce0e03e7564a0149ac97c0;hpb=c07ed8c8a22c1427323dccb7722b2b094f95e728;p=ffmpeg diff --git a/configure b/configure index a7a57d198bf..69cd10b3fd4 100755 --- a/configure +++ b/configure @@ -61,7 +61,7 @@ show_help(){ echo " --libdir=DIR install libs in DIR [PREFIX/lib]" echo " --shlibdir=DIR install shared libs in DIR [PREFIX/lib]" echo " --incdir=DIR install includes in DIR [PREFIX/include/ffmpeg]" - echo " --mandir=DIR install man page in DIR [PREFIX/man]" + echo " --mandir=DIR install man page in DIR [PREFIX/share/man]" echo " --enable-static build static libraries [default=yes]" echo " --disable-static do not build static libraries [default=no]" echo " --enable-shared build shared libraries [default=no]" @@ -77,13 +77,13 @@ show_help(){ echo echo "External library support:" echo " --enable-sunmlib use Sun medialib [default=no]" - echo " --enable-dc1394 enable IIDC-1394 grabbing using libdc1394" - echo " and libraw1394 [default=no]" echo " --enable-liba52 enable GPLed liba52 support [default=no]" echo " --enable-liba52bin open liba52.so.0 at runtime [default=no]" echo " --enable-avisynth allow reading AVISynth script files [default=no]" echo " --enable-libamr-nb enable libamr-nb floating point audio codec" echo " --enable-libamr-wb enable libamr-wb floating point audio codec" + echo " --enable-libdc1394 enable IIDC-1394 grabbing using libdc1394" + echo " and libraw1394 [default=no]" echo " --enable-libfaac enable FAAC support via libfaac [default=no]" echo " --enable-libfaad enable FAAD support via libfaad [default=no]" echo " --enable-libfaadbin open libfaad.so.0 at runtime [default=no]" @@ -120,12 +120,6 @@ show_help(){ echo " --disable-armv6 disable armv6 usage" echo " --disable-iwmmxt disable iwmmxt usage" echo " --disable-altivec disable AltiVec usage" - echo " --disable-audio-oss disable OSS audio support [default=no]" - echo " --disable-audio-beos disable BeOS audio support [default=no]" - echo " --disable-v4l disable video4linux grabbing [default=no]" - echo " --disable-v4l2 disable video4linux2 grabbing [default=no]" - echo " --disable-bktr disable bktr video grabbing [default=no]" - echo " --disable-dv1394 disable DV1394 grabbing [default=no]" echo " --disable-network disable network support [default=no]" echo " --disable-ipv6 disable ipv6 support [default=no]" echo " --disable-zlib disable zlib [default=no]" @@ -133,6 +127,7 @@ show_help(){ echo " --disable-debug disable debugging symbols" echo " --disable-mpegaudio-hp faster (but less accurate)" echo " MPEG audio decoding [default=no]" + echo " --enable-gray enable full grayscale support (slower color)" echo " --disable-ffmpeg disable ffmpeg build" echo " --disable-ffserver disable ffserver build" echo " --disable-ffplay disable ffplay build" @@ -159,10 +154,17 @@ show_help(){ echo " --enable-protocol=NAME enables protocol NAME" echo " --disable-protocol=NAME disables protocol NAME" echo " --disable-protocols disables all protocols" + echo " --list-decoders show all available decoders" + echo " --list-encoders show all available encoders" + echo " --list-muxers show all available muxers" + echo " --list-demuxers show all available demuxers" + echo " --list-parsers show all available parsers" + echo " --list-protocols show all available protocols" + echo " --list-bsfs show all available bitstream filters" echo echo "Developer options (useful when working on FFmpeg itself):" echo " --enable-gprof enable profiling with gprof [$gprof]" - echo " --disable-opts disable compiler optimizations" + echo " --disable-optimizations disable compiler optimizations" echo " --enable-extra-warnings enable more compiler warnings" echo " --disable-strip disable stripping of executables and shared libraries" echo "" @@ -176,7 +178,7 @@ log(){ log_file(){ log BEGIN $1 - cat -n $1 >>$logfile + pr -n -t $1 >>$logfile log END $1 } @@ -283,6 +285,15 @@ disabled_any(){ done } +is_in(){ + value=$1 + shift + for var in $*; do + [ $var = $value ] && return 0 + done + return 1 +} + check_deps(){ for cfg; do enabled ${cfg}_checking && die "Circular dependency for $cfg." @@ -299,6 +310,11 @@ check_deps(){ enabled_all $dep_all || disable $cfg enabled_any $dep_any || disable $cfg + if enabled $cfg; then + eval dep_extralibs="\$${cfg}_extralibs" + test -n "$dep_extralibs" && add_extralibs $dep_extralibs + fi + disable ${cfg}_checking done } @@ -394,6 +410,18 @@ check_cpp(){ check_cmd $cc $CFLAGS "$@" -E -o $TMPO $TMPC } +check_asm(){ + log check_asm "$@" + name="$1" + asm="$2" + shift 2 + check_cc "$@" < "$file.tmp" && mv "$file.tmp" "$file" || rm "$file.tmp" } -CONFIG_LIST=' - encoders - decoders - parsers +COMPONENT_LIST=" bsfs - muxers + decoders demuxers - audio_beos - audio_oss + encoders + muxers + parsers + protocols +" + +CONFIG_LIST=" + $COMPONENT_LIST avisynth beos_netserver - bktr - dc1394 - dv1394 ffmpeg ffplay ffserver gpl gprof + gray ipv6 liba52 liba52bin libamr libamr_nb libamr_wb + libdc1394 libfaac libfaad libfaadbin @@ -600,15 +630,12 @@ CONFIG_LIST=' network powerpc_perf pp - protocols small swscaler vhook - v4l - v4l2 x11grab zlib -' +" THREADS_LIST=' beosthreads @@ -642,6 +669,7 @@ ARCH_EXT_LIST=' mmi mmx ssse3 + vis ' HAVE_LIST=" @@ -650,6 +678,7 @@ HAVE_LIST=" altivec_h arpa_inet_h byteswap_h + closesocket cmov conio_h dcbzl @@ -667,6 +696,7 @@ HAVE_LIST=" fast_unaligned fork freetype2 + gethrtime GetProcessTimes getrusage imlib2 @@ -686,6 +716,7 @@ HAVE_LIST=" sys_soundcard_h termios_h threads + winsock2_h " CMDLINE_SELECT=" @@ -694,6 +725,7 @@ CMDLINE_SELECT=" $THREADS_LIST debug extra_warnings + optimizations shared static " @@ -708,8 +740,10 @@ iwmmxt_deps="armv4l" mmi_deps="mips" mmx_deps="x86" ssse3_deps="x86" +vis_deps="sparc" # decoders / encoders +ac3_decoder_deps="gpl" dxa_decoder_deps="zlib" flashsv_decoder_deps="zlib" flashsv_encoder_deps="zlib" @@ -724,6 +758,7 @@ msmpeg4v2_decoder_deps="h263_decoder" msmpeg4v3_decoder_deps="h263_decoder" png_decoder_deps="zlib" png_encoder_deps="zlib" +svq3_decoder_deps="h264_parser" vc1_decoder_deps="h263_decoder" wmv1_decoder_deps="h263_decoder" wmv2_decoder_deps="h263_decoder" @@ -732,14 +767,15 @@ zmbv_decoder_deps="zlib" zmbv_encoder_deps="zlib" # external libraries -mpeg4aac_decoder_deps="libfaad" liba52_decoder_deps="liba52" +liba52bin_decoder_extralibs='$ldl' libamr_nb_decoder_deps="libamr_nb" libamr_nb_encoder_deps="libamr_nb" libamr_wb_decoder_deps="libamr_wb" libamr_wb_encoder_deps="libamr_wb" libfaac_encoder_deps="libfaac" libfaad_decoder_deps="libfaad" +libfaadbin_decoder_extralibs='$ldl' libgsm_decoder_deps="libgsm" libgsm_encoder_deps="libgsm" libgsm_ms_decoder_deps="libgsm" @@ -750,25 +786,32 @@ libvorbis_decoder_deps="libvorbis" libvorbis_encoder_deps="libvorbis" libx264_encoder_deps="libx264" libxvid_encoder_deps="libxvid" +mpeg4aac_decoder_deps="libfaad" # demuxers / muxers ac3_demuxer_deps="ac3_parser" -audio_demuxer_deps_any="audio_oss audio_beos" -audio_muxer_deps_any="audio_oss audio_beos" -dc1394_demuxer_deps="dc1394" +audio_beos_demuxer_deps="audio_beos" +audio_beos_demuxer_extralibs="-lmedia -lbe" +audio_beos_muxer_deps="audio_beos" +audio_beos_muxer_extralibs="-lmedia -lbe" +avisynth_demuxer_deps="avisynth" +bktr_demuxer_deps_any="dev_bktr_ioctl_bt848_h machine_ioctl_bt848_h dev_video_bktr_ioctl_bt848_h dev_ic_bt8xx_h" dv1394_demuxer_deps="dv1394" +libdc1394_demuxer_deps="libdc1394" libnut_demuxer_deps="libnut" libnut_muxer_deps="libnut" mp3_demuxer_deps="mpegaudio_parser" ogg_muxer_deps="libogg" +oss_demuxer_deps_any="soundcard_h sys_soundcard_h" +oss_muxer_deps_any="soundcard_h sys_soundcard_h" redir_demuxer_deps="network" rtp_muxer_deps="network mpegts_demuxer" rtsp_demuxer_deps="rtp_protocol rtp_muxer" sdp_demuxer_deps="rtsp_demuxer" -v4l2_demuxer_deps="v4l2" -video_grab_bktr_demuxer_deps="bktr" -video_grab_v4l_demuxer_deps="v4l" -x11_grab_device_demuxer_deps="x11grab" +v4l2_demuxer_deps="linux_videodev2_h" +v4l_demuxer_deps="linux_videodev_h" +x11_grab_device_demuxer_deps="x11grab XShmCreateImage" +x11_grab_device_demuxer_extralibs="-lX11 -lXext" # protocols http_protocol_deps="network" @@ -778,7 +821,9 @@ udp_protocol_deps="network" # programs ffplay_deps="sdl" -ffserver_deps="muxers rtp_protocol" +ffserver_deps="ffm_muxer rtp_protocol rtsp_demuxer" +ffserver_extralibs='$ldl' +vhook_extralibs='$ldl' # set temporary file name @@ -798,26 +843,25 @@ TMPH="${TMPDIR1}/ffmpeg-conf-${RANDOM}-$$-${RANDOM}.h" # default parameters -logging="yes" +enable logging logfile="config.err" # installation paths PREFIX="/usr/local" -libdir='${PREFIX}/lib' +libdir='$(PREFIX)/lib' shlibdir="$libdir" -incdir='${PREFIX}/include/ffmpeg' -mandir='${PREFIX}/man' -bindir='${PREFIX}/bin' +incdir='$(PREFIX)/include/ffmpeg' +mandir='$(PREFIX)/share/man' +bindir='$(PREFIX)/bin' # toolchain -cross_prefix="" -cross_compile="no" cc="gcc" ar="ar" ranlib="ranlib" make="make" strip="strip" asmalign_pot="unknown" +ln_s="ln -sf" # machine arch=`uname -m` @@ -826,69 +870,52 @@ cpu="generic" # OS targetos=$(tolower $(uname -s)) -# non-library system interfaces -audio_oss="yes" -bktr="yes" -dv1394="yes" -v4l2="yes" -v4l="yes" - # libraries -zlib="yes" +enable zlib # configurable options -debug="yes" -dostrip="yes" -ffmpeg="yes" -ffplay="yes" -ffserver="yes" -gpl="no" -ipv6="yes" -shared="no" -static="yes" -memalign_hack="no" -mpegaudio_hp="yes" -network="yes" -optimize="yes" -protocols="yes" +enable debug +enable dostrip +enable ffmpeg +enable ffplay +enable ffserver +enable ipv6 +enable static +enable mpegaudio_hp +enable network +enable optimizations +enable protocols vhook="default" # build settings SHFLAGS='-shared -Wl,-soname,$@' VHOOKSHFLAGS='$(SHFLAGS)' -LIBOBJFLAGS="" -FFLDFLAGS= LDLATEFLAGS='-Wl,-rpath-link,\$(BUILD_ROOT)/libavcodec -Wl,-rpath-link,\$(BUILD_ROOT)/libavformat -Wl,-rpath-link,\$(BUILD_ROOT)/libavutil' FFSERVERLDFLAGS=-Wl,-E LDCONFIG="ldconfig" LIBPREF="lib" LIBSUF=".a" -LIB='$(LIBPREF)$(NAME)$(LIBSUF)' +FULLNAME='$(NAME)$(BUILDSUF)' +LIBNAME='$(LIBPREF)$(FULLNAME)$(LIBSUF)' SLIBPREF="lib" SLIBSUF=".so" -SLIBNAME='$(SLIBPREF)$(NAME)$(SLIBSUF)' +SLIBNAME='$(SLIBPREF)$(FULLNAME)$(SLIBSUF)' SLIBNAME_WITH_VERSION='$(SLIBNAME).$(LIBVERSION)' SLIBNAME_WITH_MAJOR='$(SLIBNAME).$(LIBMAJOR)' -EXESUF="" -BUILDSUF="" -LIB_INSTALL_EXTRA_CMD='$(RANLIB) "$(libdir)/$(LIB)"' +LIB_INSTALL_EXTRA_CMD='$(RANLIB) "$(LIBDIR)/$(LIBNAME)"' # find source path source_path="`dirname \"$0\"`" -source_path_used="yes" +enable source_path_used if test -z "$source_path" -o "$source_path" = "." ; then source_path="`pwd`" - source_path_used="no" + disable source_path_used else source_path="`cd \"$source_path\"; pwd`" echo "$source_path" | grep -q '[[:blank:]]' && die "Out of tree builds are impossible with whitespace in source path." fi -if test x"$1" = x"-h" -o x"$1" = x"--help" ; then - show_help -fi - FFMPEG_CONFIGURATION="$@" ENCODER_LIST=`sed -n 's/^[^#]*ENC.*(.*, *\(.*\)).*/\1_encoder/p' "$source_path/libavcodec/allcodecs.c"` @@ -908,6 +935,13 @@ die_unknown(){ exit 1 } +show_list() { + for part in $*; do + echo $part | sed 's/_[^_]*$//' + done | sort + exit 0 +} + for opt do optval="${opt#*=}" case "$opt" in @@ -929,7 +963,7 @@ for opt do ;; --cross-prefix=*) cross_prefix="$optval" ;; - --cross-compile) cross_compile="yes" + --cross-compile) enable cross_compile ;; --target-os=*) targetos="$optval" ;; @@ -949,11 +983,9 @@ for opt do ;; --cpu=*) cpu="$optval" ;; - --disable-opts) optimize="no" - ;; - --enable-sunmlib) mlib="yes" + --enable-sunmlib) enable mlib ;; - --disable-strip) dostrip="no" + --disable-strip) disable dostrip ;; --disable-encoders) disable $ENCODER_LIST ;; @@ -981,7 +1013,13 @@ for opt do echo "$CMDLINE_SELECT" | grep -q "^ *$option\$" || die_unknown $opt $action $option ;; - --help) show_help + --list-*) + NAME="${opt#--list-}" + is_in $NAME $COMPONENT_LIST || die_unknown $opt + NAME=$(toupper ${NAME%s}) + eval show_list \$${NAME}_LIST + ;; + --help|-h) show_help ;; *) die_unknown $opt @@ -1063,7 +1101,6 @@ enabled_any x86_32 x86_64 && enable x86 enabled sparc64 && enable sparc # OS specific -osextralibs="-lm" case $targetos in beos|haiku|zeta) PREFIX="$HOME/config" @@ -1073,7 +1110,7 @@ case $targetos in gcc_version="`$cc -v 2>&1 | grep version | cut -d ' ' -f3-`" case "$gcc_version" in 2.9-beos-991026*|2.9-beos-000224*) echo "R5/GG gcc" - mmx="no" + disable mmx ;; *20010315*) echo "BeBits gcc" add_cflags "-fno-expensive-optimizations" @@ -1081,106 +1118,94 @@ case $targetos in esac LDCONFIG="echo ignoring ldconfig" SHFLAGS=-nostart - # disable Linux things - dv1394="no" # enable BeOS things - disabled audio_beos || enable_audio_beos + enable audio_beos # no need for libm, but the inet stuff # Check for BONE # XXX: actually should check for NOT net_server if (echo $BEINCLUDES|grep 'headers/be/bone' >/dev/null); then - osextralibs="-lbind -lsocket" + network_extralibs="-lbind -lsocket" else - beos_netserver="yes" - osextralibs="-lnet" + enable beos_netserver + network_extralibs="-lnet" fi ;; sunos) - dv1394="no" - FFLDFLAGS="" FFSERVERLDFLAGS="" - SHFLAGS="-shared -Wl,-h,\$@" - add_extralibs "-lsocket -lnsl" + SHFLAGS='-shared -Wl,-h,$@' + network_extralibs="-lsocket -lnsl" ;; netbsd) - dv1394="no" - add_extralibs "-lossaudio" + oss_demuxer_extralibs="-lossaudio" + oss_muxer_extralibs="-lossaudio" ;; openbsd) - dv1394="no" - need_memalign="no" - LIBOBJFLAGS="\$(PIC)" - LDCONFIG="ldconfig -m \$(shlibdir)" + disable need_memalign + LIBOBJFLAGS='$(PIC)' + LDCONFIG='ldconfig -m $(SHLIBDIR)' SHFLAGS='-shared' - SLIBNAME='$(SLIBPREF)$(NAME)$(SLIBSUF).$(LIBVERSION)' + SLIBNAME='$(SLIBPREF)$(FULLNAME)$(SLIBSUF).$(LIBVERSION)' SLIBNAME_WITH_VERSION='$(SLIBNAME)' SLIBNAME_WITH_MAJOR='$(SLIBNAME)' - add_extralibs "-lossaudio" + oss_demuxer_extralibs="-lossaudio" + oss_muxer_extralibs="-lossaudio" ;; freebsd) - dv1394="no" - need_memalign="no" - add_cflags "-pthread" - ;; - gnu/kfreebsd) - dv1394="no" - add_cflags "-pthread" + disable need_memalign ;; bsd/os) - dv1394="no" - osextralibs="-lpoll -lgnugetopt -lm" + osextralibs="-lpoll -lgnugetopt" strip="strip -d" ;; darwin) - dv1394="no" - need_memalign="no" - SHFLAGS="-dynamiclib -Wl,-single_module -Wl,-install_name,\$(shlibdir)/\$(SLIBNAME),-current_version,\$(SPPVERSION),-compatibility_version,\$(SPPVERSION) -Wl,-read_only_relocs,suppress" - VHOOKSHFLAGS='-dynamiclib -Wl,-single_module -flat_namespace -undefined suppress -Wl,-install_name,$(shlibdir)/vhook/$@' - osextralibs="" + disable need_memalign + SHFLAGS='-dynamiclib -Wl,-single_module -Wl,-install_name,$(SHLIBDIR)/$(SLIBNAME),-current_version,$(SPPVERSION),-compatibility_version,$(SPPVERSION) -Wl,-read_only_relocs,suppress' + VHOOKSHFLAGS='-dynamiclib -Wl,-single_module -flat_namespace -undefined suppress -Wl,-install_name,$(SHLIBDIR)/vhook/$@' strip="strip -x" FFLDFLAGS="-Wl,-dynamic,-search_paths_first" SLIBSUF=".dylib" - SLIBNAME_WITH_VERSION='$(SLIBPREF)$(NAME).$(LIBVERSION)$(SLIBSUF)' - SLIBNAME_WITH_MAJOR='$(SLIBPREF)$(NAME).$(LIBMAJOR)$(SLIBSUF)' + SLIBNAME_WITH_VERSION='$(SLIBPREF)$(FULLNAME).$(LIBVERSION)$(SLIBSUF)' + SLIBNAME_WITH_MAJOR='$(SLIBPREF)$(FULLNAME).$(LIBMAJOR)$(SLIBSUF)' FFSERVERLDFLAGS=-Wl,-bind_at_load ;; mingw32*) targetos=mingw32 shlibdir="$bindir" - dv1394="no" - VHOOKSHFLAGS='-shared -L$(BUILD_ROOT)/libavformat -L$(BUILD_ROOT)/libavcodec -L$(BUILD_ROOT)/libswscale -L$(BUILD_ROOT)/libavutil' - VHOOKLIBS='-lavformat$(BUILDSUF) -lavcodec$(BUILDSUF) -lswscale$(BUILDSUF) -lavutil$(BUILDSUF) $(EXTRALIBS)' - ffserver="no" - network="no" + VHOOKSHFLAGS='-shared -L$(BUILD_ROOT)/libavformat -L$(BUILD_ROOT)/libavcodec -L$(BUILD_ROOT)/libavutil' + VHOOKLIBS='-lavformat$(BUILDSUF) -lavcodec$(BUILDSUF) -lavutil$(BUILDSUF) $(EXTRALIBS)' + if enabled swscaler; then + VHOOKSHFLAGS="$VHOOKSHFLAGS -L\$(BUILD_ROOT)/libswscale" + VHOOKLIBS="$VHOOKLIBS -lswscale\$(BUILDSUF)" + fi + disable ffserver SLIBPREF="" SLIBSUF=".dll" EXESUF=".exe" - SLIBNAME_WITH_VERSION='$(SLIBPREF)$(NAME)-$(LIBVERSION)$(SLIBSUF)' - SLIBNAME_WITH_MAJOR='$(SLIBPREF)$(NAME)-$(LIBMAJOR)$(SLIBSUF)' - SLIB_EXTRA_CMD="-lib /machine:i386 /def:\$(@:${SLIBSUF}=.def)" - SLIB_INSTALL_EXTRA_CMD="-install -m 644 \$(SLIBNAME_WITH_MAJOR:\$(SLIBSUF)=.lib) \"\$(shlibdir)/\$(SLIBNAME_WITH_MAJOR:\$(SLIBSUF)=.lib)\"" - SHFLAGS="-shared -Wl,--output-def,\$(@:${SLIBSUF}=.def),--out-implib,lib\$(SLIBNAME:\$(SLIBSUF)=.dll.a) -Wl,--enable-runtime-pseudo-reloc -Wl,--enable-auto-image-base" - enabled network && add_extralibs -lws2_32 + SLIBNAME_WITH_VERSION='$(SLIBPREF)$(FULLNAME)-$(LIBVERSION)$(SLIBSUF)' + SLIBNAME_WITH_MAJOR='$(SLIBPREF)$(FULLNAME)-$(LIBMAJOR)$(SLIBSUF)' + SLIB_EXTRA_CMD='-lib /machine:i386 /def:$(@:$(SLIBSUF)=.def)' + SLIB_INSTALL_EXTRA_CMD='-install -m 644 $(SLIBNAME_WITH_MAJOR:$(SLIBSUF)=.lib) "$(SHLIBDIR)/$(SLIBNAME:$(SLIBSUF)=.lib)"' + SLIB_UNINSTALL_EXTRA_CMD='rm -f "$(SHLIBDIR)/$(SLIBNAME:$(SLIBSUF)=.lib)"' + SHFLAGS='-shared -Wl,--output-def,$(@:$(SLIBSUF)=.def) -Wl,--enable-runtime-pseudo-reloc -Wl,--enable-auto-image-base' ;; cygwin*) targetos=cygwin shlibdir="$bindir" - dv1394="no" VHOOKSHFLAGS='-shared -L$(BUILD_ROOT)/libavformat -L$(BUILD_ROOT)/libavcodec -L$(BUILD_ROOT)/libavutil' VHOOKLIBS='-lavformat$(BUILDSUF) -lavcodec$(BUILDSUF) -lavutil$(BUILDSUF) $(EXTRALIBS)' if enabled swscaler; then VHOOKSHFLAGS="$VHOOKSHFLAGS -L\$(BUILD_ROOT)/libswscale" VHOOKLIBS="$VHOOKLIBS -lswscale\$(BUILDSUF)" fi - osextralibs="" EXESUF=".exe" SLIBPREF="cyg" SLIBSUF=".dll" - SLIBNAME_WITH_VERSION='$(SLIBPREF)$(NAME)-$(LIBVERSION)$(SLIBSUF)' - SLIBNAME_WITH_MAJOR='$(SLIBPREF)$(NAME)-$(LIBMAJOR)$(SLIBSUF)' - SHFLAGS='-shared -Wl,--out-implib=lib$(NAME).dll.a -Wl,--enable-auto-image-base' + SLIBNAME_WITH_VERSION='$(SLIBPREF)$(FULLNAME)-$(LIBVERSION)$(SLIBSUF)' + SLIBNAME_WITH_MAJOR='$(SLIBPREF)$(FULLNAME)-$(LIBMAJOR)$(SLIBSUF)' + SHFLAGS='-shared -Wl,--enable-auto-image-base' ;; linux) LDLATEFLAGS="-Wl,--as-needed $LDLATEFLAGS" + enable dv1394 ;; irix*) targetos=irix @@ -1204,14 +1229,14 @@ fi # Combine FFLDFLAGS and the LDFLAGS environment variable. LDFLAGS="$FFLDFLAGS $LDFLAGS" -test -n "$cross_prefix" && cross_compile=yes +test -n "$cross_prefix" && enable cross_compile cc="${cross_prefix}${cc}" ar="${cross_prefix}${ar}" ranlib="${cross_prefix}${ranlib}" strip="${cross_prefix}${strip}" # we need to build at least one lib type -if disabled_all static shared; then +if ! enabled_any static shared; then cat <&1 | grep xlc`"; then add_cflags "-qpdf2 -qlanglvl=extc99 -qmaxmem=-1 -qarch=auto -qtune=auto" @@ -1270,12 +1296,11 @@ if test $targetos = darwin; then add_cflags "-no-cpp-precomp -pipe" check_cflags "-force_cpusubtype_ALL" check_cflags "-Wno-sign-compare" - disabled shared && needmdynamicnopic="yes" + disabled shared && add_cflags -mdynamic-no-pic fi fi -enabled needmdynamicnopic && add_cflags -mdynamic-no-pic -disabled optimize || add_cflags -fomit-frame-pointer +disabled optimizations || add_cflags -fomit-frame-pointer # Add processor-specific flags if test $cpu != "generic"; then @@ -1320,19 +1345,19 @@ if test $cpu != "generic"; then # targets that do NOT support conditional mov (cmov) i[345]86|pentium|pentium-mmx|k6|k6-[23]|winchip-c6|winchip2|c3) add_cflags "-march=$cpu" - cmov="no" + 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) add_cflags "-march=$cpu" - cmov="yes" - fast_cmov="yes" + enable cmov + enable fast_cmov ;; # targets that do support conditional mov but on which it's slow pentium4|prescott|nocona) add_cflags "-march=$cpu" - cmov="yes" - fast_cmov="no" + enable cmov + disable fast_cmov ;; sparc64) add_cflags "-mcpu=v9" @@ -1341,6 +1366,9 @@ if test $cpu != "generic"; then add_cflags "-mfdpic" add_ldflags "-mfdpic" ;; + arm*) + add_cflags "-mcpu=$cpu" + ;; *) echo "WARNING: Unknown CPU \"$cpu\", ignored." ;; @@ -1378,7 +1406,7 @@ int main(){ EOF if test "$?" != 0; then echo "$cc is unable to create an executable file." - if test -z "$cross_prefix" && disabled cross_compile ; then + if test -z "$cross_prefix" && ! enabled cross_compile ; then echo "If $cc is a cross-compiler, use the --cross-compile option." echo "Only do this if you know what cross compiling means." fi @@ -1399,24 +1427,16 @@ if enabled x86; then EOF # check wether EBX is available on x86 - check_cc <&1 | grep version | grep Apple`"; then - add_cflags "-faltivec" - else + test -n "`$cc -v 2>&1 | grep version | grep Apple`" && + add_cflags "-faltivec" || add_cflags "-maltivec -mabi=altivec" - fi check_header altivec.h # check if our compiler supports Motorola AltiVec C API - if enabled altivec_h; then - inc_altivec_h="#include " - else + enabled altivec_h && + inc_altivec_h="#include " || inc_altivec_h= - fi - check_cc < -int main(int argc, char ** argv){ - volatile uint32_t i=0x01234567; - return (*((uint8_t*)(&i))) == 0x67; -} +check_cc < int main( void ) { return (lrintf(3.999f) > 0)?0:1; } @@ -1563,22 +1556,25 @@ EOF enabled_any libamr_nb libamr_wb && enable libamr # these are off by default, so fail if requested and not available +enabled avisynth && require2 vfw32 "windows.h vfw.h" AVIFileInit -lvfw32 enabled liba52 && require liba52 a52dec/a52.h a52_init -la52 enabled libamr_nb && require libamrnb amrnb/interf_dec.h Speech_Decode_Frame_init -lamrnb -lm enabled libamr_wb && require libamrwb amrwb/dec_if.h D_IF_init -lamrwb -lm +enabled libdc1394 && require libdc1394 libdc1394/dc1394_control.h dc1394_create_handle -ldc1394_control -lraw1394 +enabled libfaac && require2 libfaac "stdint.h faac.h" faacEncGetVersion -lfaac +enabled libfaad && require2 libfaad faad.h faacDecOpen -lfaad enabled libgsm && require libgsm gsm.h gsm_create -lgsm enabled libmp3lame && require LAME lame/lame.h lame_init -lmp3lame -lm +enabled libnut && require libnut libnut.h nut_demuxer_init -lnut +enabled libogg && require libogg ogg/ogg.h ogg_sync_init -logg enabled libtheora && require libtheora theora/theora.h theora_info_init -ltheora -logg enabled libvorbis && require libvorbis vorbis/vorbisenc.h vorbis_info_init -lvorbis -lvorbisenc -logg -enabled libogg && require libogg ogg/ogg.h ogg_sync_init -logg -enabled libnut && require libnut libnut.h nut_demuxer_init -lnut enabled libx264 && require x264 x264.h x264_encoder_open -lx264 enabled libxvid && require Xvid xvid.h xvid_global -lxvidcore -enabled dc1394 && require libdc1394 libdc1394/dc1394_control.h dc1394_create_handle -ldc1394_control -lraw1394 enabled mlib && require mediaLib mlib_types.h mlib_VectorSub_S16_U8_Mod -lmlib -enabled libfaac && require2 libfaac "stdint.h faac.h" faacEncGetVersion -lfaac -enabled libfaad && require2 libfaad faad.h faacDecOpen -lfaad -enabled avisynth && require2 vfw32 "windows.h vfw.h" AVIFileInit -lvfw32 + +# disable the native AC-3 decoder if liba52 is enabled +enabled liba52 && disable ac3_decoder _restrict= for restrict_keyword in restrict __restrict__ __restrict; do @@ -1587,27 +1583,10 @@ void foo(char * $restrict_keyword p); EOF done -# dlopen/dlfcn.h probing - -check_header dlfcn.h - -if check_func dlopen; then - ldl= -elif check_func dlopen -ldl; then - ldl=-ldl -fi - -check_func getrusage -check_func2 windows.h GetProcessTimes - -check_func fork - test "$vhook" = "default" && vhook="$dlopen" -enabled_any vhook liba52bin libfaadbin ffserver && add_extralibs $ldl - if test "$targetos" = cygwin -o "$targetos" = mingw32 && enabled_all static vhook ; then - vhook="no" + disable vhook echo echo "At the moment vhooks don't work on Cygwin or MinGW static builds." echo "Patches welcome." @@ -1619,16 +1598,14 @@ if enabled vhook; then check_ldflags -export-dynamic fi -enabled audio_beos && add_extralibs "-lmedia -lbe" - check_foo_config imlib2 imlib2 Imlib2.h imlib_load_font check_foo_config freetype2 freetype ft2build.h FT_Init_FreeType ########################################## # SDL check -sdl_too_old=no -sdl=no +disable sdl_too_old +disable sdl SDL_CONFIG="${cross_prefix}sdl-config" if "${SDL_CONFIG}" --version >/dev/null 2>&1; then sdl_cflags=`"${SDL_CONFIG}" --cflags` @@ -1637,9 +1614,9 @@ if "${SDL_CONFIG}" --version >/dev/null 2>&1; then if check_lib SDL.h SDL_Init; then _sdlversion=`"${SDL_CONFIG}" --version | sed 's/[^0-9]//g'` if test "$_sdlversion" -lt 121 ; then - sdl_too_old=yes + enable sdl_too_old else - sdl=yes + enable sdl check_cc $sdl_cflags < int main(void){ @@ -1655,10 +1632,23 @@ fi texi2html -version >/dev/null 2>&1 && enable texi2html || disable texi2html +########################################## +# Network check + +if enabled network; then + # Prefer arpa/inet.h over winsock2 + if check_header arpa/inet.h ; then + check_func closesocket + elif check_header winsock2.h ; then + network_extralibs="-lws2_32" + check_func2 winsock2.h closesocket + fi +fi + ########################################## # IPv6 check -enabled network && enabled ipv6 && check_ld < #include #include @@ -1672,36 +1662,27 @@ int main( void ) { } EOF -enabled v4l && check_header linux/videodev.h || disable v4l -enabled v4l2 && check_header linux/videodev2.h || disable v4l2 +check_header linux/videodev.h +check_header linux/videodev2.h # check for ioctl_meteor.h, ioctl_bt848.h and alternatives -if enabled bktr; then - { check_header dev/bktr/ioctl_meteor.h && - check_header dev/bktr/ioctl_bt848.h; } || - { check_header machine/ioctl_meteor.h && - check_header machine/ioctl_bt848.h; } || - { check_header dev/video/meteor/ioctl_meteor.h && - check_header dev/video/bktr/ioctl_bt848.h; } || - check_header dev/ic/bt8xx.h || - disable bktr -fi +{ check_header dev/bktr/ioctl_meteor.h && + check_header dev/bktr/ioctl_bt848.h; } || +{ check_header machine/ioctl_meteor.h && + check_header machine/ioctl_bt848.h; } || +{ check_header dev/video/meteor/ioctl_meteor.h && + check_header dev/video/bktr/ioctl_bt848.h; } || +check_header dev/ic/bt8xx.h -enabled audio_oss && - check_header sys/soundcard.h || - check_header soundcard.h || - disable audio_oss +check_header sys/soundcard.h +check_header soundcard.h # Deal with the x11 frame grabber enabled x11grab && -enabled gpl && -enabled x11_grab_device_demuxer && check_header X11/Xlib.h && check_header X11/extensions/XShm.h && check_func XOpenDisplay -lX11 && -check_func XShmCreateImage -lX11 -lXext && -add_extralibs -lX11 -lXext || -disable x11_grab_device_demuxer +check_func XShmCreateImage -lX11 -lXext enabled debug && add_cflags -g @@ -1721,8 +1702,8 @@ check_ldflags $LDLATEFLAGS if enabled small; then check_cflags -Os # not all compilers support -Os - optimize="small" -elif enabled optimize; then + optimizations="small" +elif enabled optimizations; then if test -n "`$cc -v 2>&1 | grep xlc`"; then add_cflags "-O5" add_ldflags "-O5" @@ -1736,7 +1717,7 @@ if enabled shared; then # LIBOBJFLAGS may have already been set in the OS configuration if test -z "$LIBOBJFLAGS" ; then case "$arch" in - x86_64|ia64|alpha|sparc*|power*) LIBOBJFLAGS="\$(PIC)" ;; + x86_64|ia64|alpha|sparc*|power*) LIBOBJFLAGS='$(PIC)' ;; esac fi fi @@ -1748,10 +1729,10 @@ fi VHOOKCFLAGS="-fPIC" -# find if .align arg is power-of-two or not +# Find out if the .align argument is a power of two or not. if test $asmalign_pot = "unknown"; then - asmalign_pot="no" - echo 'asm (".align 3");' | check_cc && asmalign_pot="yes" + disable asmalign_pot + echo 'asm (".align 3");' | check_cc && enable asmalign_pot fi enabled_any $ENCODER_LIST && enable encoders @@ -1766,10 +1747,10 @@ enabled_any $THREADS_LIST && enable threads check_deps $CONFIG_LIST $HAVE_LIST $DECODER_LIST $ENCODER_LIST $PARSER_LIST \ $BSF_LIST $DEMUXER_LIST $MUXER_LIST $PROTOCOL_LIST +enabled libdc1394 && append pkg_requires "libraw1394" enabled libogg && append pkg_requires "ogg >= 1.1" enabled libtheora && append pkg_requires "theora" enabled libvorbis && append pkg_requires "vorbis vorbisenc" -enabled dc1394 && append pkg_requires "libraw1394" echo "install prefix $PREFIX" echo "source path $source_path" @@ -1785,6 +1766,8 @@ if test $arch = "x86_32" -o $arch = "x86_64"; then echo "MMX enabled ${mmx-no}" echo "CMOV enabled ${cmov-no}" echo "CMOV is fast ${fast_cmov-no}" + echo "EBX available ${ebx_available-no}" + echo "EBP available ${ebp_available-no}" fi if test $arch = "armv4l"; then echo "ARMv5TE enabled ${armv5te-no}" @@ -1801,7 +1784,7 @@ fi echo "gprof enabled ${gprof-no}" echo "debug symbols ${debug-no}" echo "strip symbols ${dostrip-no}" -echo "optimize ${optimize-no}" +echo "optimizations ${optimizations-no}" echo "static ${static-no}" echo "shared ${shared-no}" echo "postprocessing support ${pp-no}" @@ -1826,6 +1809,7 @@ echo "liba52 support ${liba52-no}" echo "liba52 dlopened ${liba52bin-no}" echo "libamr-nb support ${libamr_nb-no}" echo "libamr-wb support ${libamr_wb-no}" +echo "libdc1394 support ${libdc1394-no}" echo "libfaac enabled ${libfaac-no}" echo "libfaad enabled ${libfaad-no}" echo "libfaad dlopened ${libfaadbin-no}" @@ -1838,39 +1822,38 @@ echo "libvorbis enabled ${libvorbis-no}" echo "x264 enabled ${libx264-no}" echo "XviD enabled ${libxvid-no}" echo "zlib enabled ${zlib-no}" -if disabled gpl; then +enabled gpl && + echo "License: GPL" || echo "License: LGPL" -else - echo "License: GPL" -fi echo "Creating config.mak and config.h..." echo "# Automatically generated by configure - do not modify!" > config.mak echo "/* Automatically generated by configure - do not modify! */" > $TMPH +echo "#ifndef FFMPEG_CONFIG_H" >> $TMPH +echo "#define FFMPEG_CONFIG_H" >> $TMPH echo "#define FFMPEG_CONFIGURATION \"$FFMPEG_CONFIGURATION\"" >> $TMPH echo "PREFIX=$PREFIX" >> config.mak -echo "prefix=\$(DESTDIR)\${PREFIX}" >> config.mak -echo "libdir=\$(DESTDIR)$libdir" >> config.mak -echo "shlibdir=\$(DESTDIR)$shlibdir" >> config.mak -echo "incdir=\$(DESTDIR)$incdir" >> config.mak -echo "bindir=\$(DESTDIR)$bindir" >> config.mak -echo "mandir=\$(DESTDIR)$mandir" >> config.mak +echo "prefix=\$(DESTDIR)\$(PREFIX)" >> config.mak +echo "LIBDIR=\$(DESTDIR)$libdir" >> config.mak +echo "SHLIBDIR=\$(DESTDIR)$shlibdir" >> config.mak +echo "INCDIR=\$(DESTDIR)$incdir" >> config.mak +echo "BINDIR=\$(DESTDIR)$bindir" >> config.mak +echo "MANDIR=\$(DESTDIR)$mandir" >> config.mak echo "MAKE=$make" >> config.mak echo "CC=$cc" >> config.mak echo "AR=$ar" >> config.mak echo "RANLIB=$ranlib" >> config.mak -if enabled dostrip; then - echo "STRIP=$strip" >> config.mak -else +echo "LDCONFIG=$LDCONFIG" >> config.mak +echo "LN_S=$ln_s" >> config.mak +enabled dostrip && + echo "STRIP=$strip" >> config.mak || echo "STRIP=echo ignoring strip" >> config.mak -fi echo "OPTFLAGS=$CFLAGS" >> config.mak echo "VHOOKCFLAGS=$VHOOKCFLAGS">>config.mak echo "LDFLAGS=$LDFLAGS" >> config.mak -echo "LDCONFIG=$LDCONFIG" >> config.mak echo "FFSERVERLDFLAGS=$FFSERVERLDFLAGS" >> config.mak echo "SHFLAGS=$SHFLAGS" >> config.mak echo "VHOOKSHFLAGS=$VHOOKSHFLAGS" >> config.mak @@ -1878,16 +1861,13 @@ echo "VHOOKLIBS=$VHOOKLIBS" >> config.mak echo "LIBOBJFLAGS=$LIBOBJFLAGS" >> config.mak echo "BUILD_STATIC=$static" >> config.mak echo "BUILDSUF=$BUILDSUF" >> config.mak +echo "FULLNAME=$FULLNAME" >> config.mak echo "LIBPREF=$LIBPREF" >> config.mak -echo "LIBSUF=\${BUILDSUF}$LIBSUF" >> config.mak -if enabled static; then - echo "LIB=$LIB" >> config.mak -else # Some Make complain if this variable does not exist. - echo "LIB=" >> config.mak -fi +echo "LIBSUF=$LIBSUF" >> config.mak +echo "LIBNAME=$LIBNAME" >> config.mak echo "SLIBPREF=$SLIBPREF" >> config.mak -echo "SLIBSUF=\${BUILDSUF}$SLIBSUF" >> config.mak -echo "EXESUF=\${BUILDSUF}$EXESUF" >> config.mak +echo "SLIBSUF=$SLIBSUF" >> config.mak +echo "EXESUF=$EXESUF" >> config.mak if enabled bigendian; then echo "WORDS_BIGENDIAN=yes" >> config.mak @@ -1931,6 +1911,7 @@ if enabled shared; then echo "SLIBNAME_WITH_MAJOR=${SLIBNAME_WITH_MAJOR}" >> config.mak echo "SLIB_EXTRA_CMD=${SLIB_EXTRA_CMD}" >> config.mak echo "SLIB_INSTALL_EXTRA_CMD=${SLIB_INSTALL_EXTRA_CMD}" >> config.mak + echo "SLIB_UNINSTALL_EXTRA_CMD=${SLIB_UNINSTALL_EXTRA_CMD}" >> config.mak fi echo "LIB_INSTALL_EXTRA_CMD=${LIB_INSTALL_EXTRA_CMD}" >> config.mak echo "EXTRALIBS=$extralibs" >> config.mak @@ -1946,14 +1927,10 @@ print_config CONFIG_ $TMPH config.mak $CONFIG_LIST \ $MUXER_LIST \ $PROTOCOL_LIST \ -if test "$targetos" = darwin; then - echo "#define CONFIG_DARWIN 1" >> $TMPH -fi - echo "#define restrict $_restrict" >> $TMPH if enabled small; then - echo "#define always_inline" >> $TMPH + echo "#define av_always_inline" >> $TMPH fi echo "SRC_PATH=\"$source_path\"" >> config.mak @@ -1961,19 +1938,17 @@ echo "SRC_PATH_BARE=$source_path" >> config.mak echo "BUILD_ROOT=\"$PWD\"" >> config.mak # Apparently it's not possible to portably echo a backslash. -if enabled asmalign_pot; then - printf '#define ASMALIGN(ZEROBITS) ".align " #ZEROBITS "\\n\\t"\n' >> $TMPH -else +enabled asmalign_pot && + printf '#define ASMALIGN(ZEROBITS) ".align " #ZEROBITS "\\n\\t"\n' >> $TMPH || printf '#define ASMALIGN(ZEROBITS) ".align 1<<" #ZEROBITS "\\n\\t"\n' >> $TMPH -fi +echo "#endif /* FFMPEG_CONFIG_H */" >> $TMPH + # Do not overwrite config.h if unchanged to avoid superfluous rebuilds. -if ! cmp -s $TMPH config.h; then - mv -f $TMPH config.h -else - echo "config.h is unchanged" -fi +cmp -s $TMPH config.h && + echo "config.h is unchanged" || + mv -f $TMPH config.h rm -f $TMPO $TMPC $TMPE $TMPS $TMPH @@ -1981,17 +1956,18 @@ rm -f $TMPO $TMPC $TMPE $TMPS $TMPH if enabled source_path_used; then DIRS="\ doc \ - libavformat \ libavcodec \ libavcodec/alpha \ libavcodec/armv4l \ libavcodec/bfin \ libavcodec/i386 \ - libavcodec/sparc \ libavcodec/mlib \ libavcodec/ppc \ - libpostproc \ + libavcodec/sh4 \ + libavcodec/sparc \ + libavformat \ libavutil \ + libpostproc \ libswscale \ tests \ tools \ @@ -2000,18 +1976,18 @@ if enabled source_path_used; then FILES="\ Makefile \ common.mak \ - libavformat/Makefile \ + doc/texi2pod.pl \ libavcodec/Makefile \ - libpostproc/Makefile \ + libavformat/Makefile \ libavutil/Makefile \ + libpostproc/Makefile \ libswscale/Makefile \ - doc/texi2pod.pl \ " for dir in $DIRS ; do mkdir -p $dir done for f in $FILES ; do - ln -sf "$source_path/$f" $f + $ln_s "$source_path/$f" $f done fi