X-Git-Url: https://git.sesse.net/?a=blobdiff_plain;f=configure;h=b8fa9ee31419ca143d8c4975ec29b90cf385a5d3;hb=476f9b74ec21eaae467d20732aab75b8cdc4c75b;hp=530f29da2ffe780ac63d417790ea6318659c9183;hpb=d5697779971ac7d7daaac12bc9d8388973f58a4b;p=ffmpeg diff --git a/configure b/configure index 530f29da2ff..b8fa9ee3141 100755 --- a/configure +++ b/configure @@ -62,51 +62,53 @@ show_help(){ 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 " --enable-mingw32 enable MinGW native/cross Windows compile" echo " --enable-mingwce enable MinGW native/cross WinCE compile" 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]" echo " --disable-shared do not build shared libraries [default=yes]" + echo " --enable-gpl allow use of GPL code, the resulting libav*" + echo " and ffmpeg will be under GPL [default=no]" echo " --enable-pp enable GPLed postprocessing support [default=no]" echo " --enable-swscaler software scaler support [default=no]" - echo " --enable-sunmlib use Sun medialib [default=no]" echo " --enable-beosthreads use BeOS threads [default=no]" echo " --enable-os2threads use OS/2 threads [default=no]" echo " --enable-pthreads use pthreads [default=no]" echo " --enable-w32threads use Win32 threads [default=no]" echo " --enable-x11grab enable X11 grabbing [default=no]" + 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-a52 enable GPLed liba52 support [default=no]" - echo " --enable-a52bin open liba52.so.0 at runtime [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-dts enable GPLed libdts support [default=no]" - echo " --enable-faac enable FAAC support via libfaac [default=no]" - echo " --enable-faad enable FAAD support via libfaad [default=no]" - echo " --enable-faadbin build FAAD support with runtime linking [default=no]" + echo " --enable-libdts enable GPLed libdts support [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 build FAAD support with runtime linking [default=no]" echo " --enable-libgsm enable GSM support via libgsm [default=no]" - echo " --enable-mp3lame enable MP3 encoding via libmp3lame [default=no]" + echo " --enable-libmp3lame enable MP3 encoding via libmp3lame [default=no]" echo " --enable-libnut enable NUT (de)muxing via libnut," echo " native demuxer exists [default=no]" echo " --enable-libogg enable Ogg muxing via libogg [default=no]" echo " --enable-libtheora enable Theora encoding via libtheora [default=no]" - echo " --enable-vorbis enable Vorbis en/decoding via libvorbis," + echo " --enable-libvorbis enable Vorbis en/decoding via libvorbis," echo " native implementations exist [default=no]" echo " --enable-x264 enable H.264 encoding via x264 [default=no]" echo " --enable-xvid enable Xvid encoding via xvidcore," echo " native MPEG-4/Xvid encoder exists [default=no]" - echo " --enable-amr_nb enable amr_nb float audio codec" - echo " --enable-amr_nb-fixed use fixed point for amr-nb codec" - echo " --enable-amr_wb enable amr_wb float audio codec" - echo " --enable-amr_if2 enable amr_wb IF2 audio codec" - echo " --enable-gpl allow use of GPL code, the resulting libav*" - echo " and ffmpeg will be under GPL [default=no]" + echo " --enable-amr-nb enable amr-nb floating point audio codec" + echo " --enable-amr-nb-fixed enable amr-nb fixed-point codec" + echo " --enable-amr-wb enable amr-wb floating point audio codec" + echo " --enable-amr-if2 enable amr-wb IF2 audio codec" echo "" echo "Advanced options (experts only):" echo " --source-path=PATH path to source code [$source_path]" echo " --cross-prefix=PREFIX use PREFIX for compilation tools [$cross_prefix]" echo " --cross-compile assume a cross-compiler is used" + echo " --target-os=OS compiler targets OS [$targetos]" echo " --cc=CC use C compiler CC [$cc]" echo " --make=MAKE use specified make [$make]" echo " --extra-cflags=ECFLAGS add ECFLAGS to CFLAGS [$CFLAGS]" @@ -114,9 +116,9 @@ show_help(){ echo " --extra-libs=ELIBS add ELIBS [$ELIBS]" echo " --build-suffix=SUFFIX suffix for application specific build []" echo " --arch=ARCH select architecture [$arch]" - echo " --cpu=CPU selects the minimum cpu required (affects - instruction selection, may crash on older CPUs)" - echo " --powerpc-perf-enable enable performance report on PPC" + echo " --cpu=CPU selects the minimum cpu required (affects" + echo " instruction selection, may crash on older CPUs)" + echo " --enable-powerpc-perf enable performance report on PPC" echo " (requires enabling PMC)" echo " --disable-mmx disable MMX usage" echo " --disable-armv5te disable armv5te usage" @@ -133,10 +135,7 @@ show_help(){ echo " --disable-ipv6 disable ipv6 support [default=no]" echo " --disable-zlib disable zlib [default=no]" echo " --disable-vhook disable video hooking support" - echo " --enable-gprof enable profiling with gprof [$gprof]" echo " --disable-debug disable debugging symbols" - echo " --disable-opts disable compiler optimizations" - echo " --enable-extra-warnings enable more compiler warnings" echo " --disable-mpegaudio-hp faster (but less accurate)" echo " MPEG audio decoding [default=no]" echo " --disable-protocols disable I/O protocols support [default=no]" @@ -145,7 +144,6 @@ show_help(){ echo " --disable-ffplay disable ffplay build" echo " --enable-small optimize for size instead of speed" echo " --enable-memalign-hack emulate memalign, interferes with memory debuggers" - echo " --disable-strip disable stripping of executables and shared libraries" echo " --disable-encoder=NAME disables encoder NAME" echo " --enable-encoder=NAME enables encoder NAME" echo " --disable-decoder=NAME disables decoder NAME" @@ -161,6 +159,12 @@ show_help(){ echo " --enable-parser=NAME enables parser NAME" echo " --disable-parser=NAME disables parser NAME" echo " --disable-parsers disables all parsers" + 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 " --enable-extra-warnings enable more compiler warnings" + echo " --disable-strip disable stripping of executables and shared libraries" echo "" echo "NOTE: Object files are built at the place where configure is launched." exit 1 @@ -208,6 +212,10 @@ toupper(){ echo "$@" | tr '[a-z]' '[A-Z]' } +tolower(){ + echo "$@" | tr '[A-Z]' '[a-z]' +} + set_all(){ value=$1 shift @@ -216,6 +224,25 @@ set_all(){ done } +pushvar(){ + for var in $*; do + eval level=\${${var}_level:=0} + eval ${var}_${level}="\$$var" + eval ${var}_level=$(($level+1)) + done +} + +popvar(){ + for var in $*; do + eval level=\${${var}_level:-0} + test $level = 0 && continue + eval level=$(($level-1)) + eval $var="\${${var}_${level}}" + eval ${var}_level=$level + eval unset ${var}_${level} + done +} + enable(){ set_all yes $* } @@ -258,10 +285,21 @@ disabled_any(){ check_deps(){ for cfg; do + enabled ${cfg}_checking && die "Circular dependency for $cfg." + disabled ${cfg}_checking && continue + enable ${cfg}_checking + eval dep_all="\$${cfg}_deps" eval dep_any="\$${cfg}_deps_any" + + pushvar cfg dep_all dep_any + check_deps $dep_all $dep_any + popvar cfg dep_all dep_any + enabled_all $dep_all || disable $cfg enabled_any $dep_any || disable $cfg + + disable ${cfg}_checking done } @@ -291,6 +329,7 @@ save_flags(){ } restore_flags(){ + flags_saved || return CFLAGS="$SAVE_CFLAGS" LDFLAGS="$SAVE_LDFLAGS" extralibs="$SAVE_extralibs" @@ -378,29 +417,45 @@ check_header(){ log check_header "$@" header=$1 shift - check_cpp "$@" < int x; EOF - err=$? - var=`echo $header | sed 's/[^A-Za-z0-9_]/_/g'` - test "$err" = 0 && enable $var || disable $var - return $err } check_func(){ log check_func "$@" func=$1 shift - check_ld "$@" <>$logfile 2>&1; } } @@ -427,6 +494,31 @@ require(){ check_lib $header $func "$@" || die "ERROR: $name not found" } +require2(){ + name="$1" + headers="$2" + func="$3" + shift 3 + check_lib2 "$headers" $func "$@" || die "ERROR: $name not found" +} + +check_foo_config(){ + cfg=$1 + pkg=$2 + header=$3 + func=$4 + shift 4 + disable $cfg + check_cmd ${pkg}-config --version + err=$? + if test "$err" = 0; then + temp_cflags `${pkg}-config --cflags` + temp_extralibs `${pkg}-config --libs` + check_lib "$@" $header $func && enable $cfg + fi + return $err +} + apply(){ file=$1 shift @@ -454,6 +546,7 @@ CONFIG_LIST=' ffplay ffserver gpl + gprof ipv6 liba52 liba52bin @@ -470,12 +563,13 @@ CONFIG_LIST=' memalign_hack mpegaudio_hp network + powerpc_perf pp protocols swscaler vhook - video4linux - video4linux2 + v4l + v4l2 wince x11grab x264 @@ -483,12 +577,19 @@ CONFIG_LIST=' zlib ' -HAVE_LIST=' +THREADS_LIST=' + beosthreads + os2threads + pthreads + w32threads +' + +HAVE_LIST=" + $THREADS_LIST altivec altivec_h armv5te armv6 - beosthreads byteswap_h cmov dcbzl @@ -499,9 +600,9 @@ HAVE_LIST=' dev_video_bktr_ioctl_bt848_h dlfcn_h dlopen + fast_64bit fast_cmov freetype2 - gprof imlib2 inet_aton iwmmxt @@ -515,24 +616,34 @@ HAVE_LIST=' mmi mmx os2 - os2threads - pthreads sdl sdl_video_size soundcard_h + sys_poll_h sys_soundcard_h threads - w32threads -' +" TARGET_LIST=' altivec armv5te + armv6 iwmmxt mmi mmx ' +CMDLINE_SELECT=" + $CONFIG_LIST + $TARGET_LIST + $THREADS_LIST + amr_if2 + debug + extra_warnings + shared + static +" + flashsv_decoder_deps="zlib" flashsv_encoder_deps="zlib" mpeg_xvmc_decoder_deps="xvmc" @@ -545,15 +656,17 @@ zmbv_encoder_deps="zlib" aac_decoder_deps="libfaad" mpeg4aac_decoder_deps="libfaad" -ac3_decoder_deps="liba52" amr_nb_decoder_deps_any="amr_nb amr_nb_fixed" amr_nb_encoder_deps_any="amr_nb amr_nb_fixed" amr_wb_decoder_deps="amr_wb" amr_wb_encoder_deps="amr_wb" dts_decoder_deps="libdts" faac_encoder_deps="libfaac" +liba52_decoder_deps="liba52" libgsm_decoder_deps="libgsm" libgsm_encoder_deps="libgsm" +libgsm_ms_decoder_deps="libgsm" +libgsm_ms_encoder_deps="libgsm" libtheora_encoder_deps="libtheora" mp3lame_encoder_deps="libmp3lame" oggvorbis_decoder_deps="libvorbis" @@ -571,10 +684,14 @@ redir_demuxer_deps="network" rtp_muxer_deps="network" rtsp_demuxer_deps="network" sdp_demuxer_deps="network" -v4l2_demuxer_deps="video4linux2" -video_grab_device_demuxer_deps_any="video4linux bktr" +v4l2_demuxer_deps="v4l2" +video_grab_device_demuxer_deps_any="v4l bktr" x11_grab_device_demuxer_deps="x11grab" +ffplay_deps="sdl" +ffserver_deps="network protocols muxers" +network_deps="protocols" + # set temporary file name if test ! -z "$TMPDIR" ; then TMPDIR1="${TMPDIR}" @@ -628,74 +745,19 @@ dcbzl="no" mmi="default" bigendian="no" -case "$arch" in - i386|i486|i586|i686|i86pc|BePC) - arch="x86_32" - ;; - x86_64|amd64) - arch="x86_32" - canon_arch="`$cc -dumpmachine | sed -e 's,\([^-]*\)-.*,\1,'`" - if [ x"$canon_arch" = x"x86_64" -o x"$canon_arch" = x"amd64" ]; then - if [ -z "`echo $CFLAGS | grep -- -m32`" ]; then - arch="x86_64" - fi - fi - ;; - # armv4l is a subset of armv[567]*l - arm|armv[4567]*l) - arch="armv4l" - ;; - alpha) - arch="alpha" - ;; - "Power Macintosh"|ppc|ppc64|powerpc) - arch="powerpc" - ;; - mips|mipsel|IP*) - arch="mips" - ;; - sun4u|sparc64) - arch="sparc64" - ;; - sparc) - arch="sparc" - ;; - sh4) - arch="sh4" - ;; - parisc|parisc64) - arch="parisc" - ;; - s390|s390x) - arch="s390" - ;; - m68k) - arch="m68k" - ;; - ia64) - arch="ia64" - ;; - bfin) - arch="bfin" - ;; - *) - arch="unknown" - ;; -esac - # OS +targetos=`uname -s` beos_netserver="no" -mingw32="no" os2="no" wince="no" # non-library system interfaces -audio_beos="no" +audio_beos="default" audio_oss="yes" bktr="yes" dv1394="yes" -video4linux2="yes" -video4linux="yes" +v4l2="yes" +v4l="yes" # libraries amr_if2="no" @@ -728,15 +790,15 @@ zlib="yes" # configurable options debug="yes" dostrip="yes" -extrawarnings="no" +extra_warnings="no" ffmpeg="yes" ffplay="yes" ffserver="yes" gpl="no" gprof="no" ipv6="yes" -lshared="no" -lstatic="yes" +shared="no" +static="yes" memalign_hack="no" mpegaudio_hp="yes" network="yes" @@ -754,7 +816,6 @@ w32threads="no" thread_type="no" # build settings -extralibs="-lm" SHFLAGS='-shared -Wl,-soname,$@' VHOOKSHFLAGS='$(SHFLAGS)' LIBOBJFLAGS="" @@ -774,146 +835,6 @@ EXESUF="" BUILDSUF="" LIB_INSTALL_EXTRA_CMD='$(RANLIB) "$(libdir)/$(LIB)"' -# OS specific -targetos=`uname -s` -case $targetos in - BeOS|Haiku|Zeta) - PREFIX="$HOME/config" - # helps building libavcodec - add_cflags "-DPIC -fomit-frame-pointer" - # 3 gcc releases known for BeOS, each with ugly bugs - 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" - ;; - *20010315*) echo "BeBits gcc" - add_cflags "-fno-expensive-optimizations" - ;; - esac - LDCONFIG="echo ignoring ldconfig" - SHFLAGS=-nostart - # disable Linux things - dv1394="no" - # enable BeOS things - audio_beos="yes" - # 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 - extralibs="-lbind -lsocket" - else - beos_netserver="yes" - extralibs="-lnet" - fi ;; - SunOS) - dv1394="no" - make="gmake" - FFLDFLAGS="" - FFSERVERLDFLAGS="" - SHFLAGS="-shared -Wl,-h,\$@" - add_extralibs "-lsocket -lnsl" - ;; - NetBSD) - dv1394="no" - make="gmake" - add_extralibs "-lossaudio" - ;; - OpenBSD) - dv1394="no" - need_memalign="no" - make="gmake" - LIBOBJFLAGS="\$(PIC)" - LDCONFIG="ldconfig -m \$(shlibdir)" - SHFLAGS='-shared' - SLIBNAME='$(SLIBPREF)$(NAME)$(SLIBSUF).$(LIBVERSION)' - SLIBNAME_WITH_VERSION='$(SLIBNAME)' - SLIBNAME_WITH_MAJOR='$(SLIBNAME)' - add_extralibs "-lossaudio" - ;; - FreeBSD) - dv1394="no" - make="gmake" - need_memalign="no" - add_cflags "-pthread" - ;; - GNU/kFreeBSD) - dv1394="no" - add_cflags "-pthread" - ;; - BSD/OS) - dv1394="no" - extralibs="-lpoll -lgnugetopt -lm" - make="gmake" - strip="strip -d" - ;; - Darwin) - cc="cc" - 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/$@' - extralibs="" - 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)' - FFSERVERLDFLAGS=-Wl,-bind_at_load - ;; - MINGW32*) - # Note: the rest of the mingw32 config is done afterwards as mingw32 - # can be forced on the command line for Linux cross compilation. - mingw32="yes" - ;; - 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)' - extralibs="" - 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' - ;; - Linux) - LDLATEFLAGS="-Wl,--as-needed $LDLATEFLAGS" - ;; - IRIX*) - targetos=IRIX - ranlib="echo ignoring ranlib" - make="gmake" - ;; - OS/2) - TMPE=$TMPE".exe" - ar="emxomfar -p128" - ranlib="echo ignoring ranlib" - strip="echo ignoring strip" - add_cflags "-Zomf" - FFLDFLAGS="-Zomf -Zstack 16384 -s" - SHFLAGS="-Zdll -Zomf" - FFSERVERLDFLAGS="" - LIBPREF="" - LIBSUF=".lib" - SLIBPREF="" - SLIBSUF=".dll" - EXESUF=".exe" - extralibs="" - pkg_requires="" - dv1394="no" - ffserver="no" - vhook="no" - os2="yes" - ;; - *) - targetos="${targetos}-UNKNOWN" - ;; -esac - # find source path source_path="`dirname \"$0\"`" source_path_used="yes" @@ -940,6 +861,12 @@ DEMUXER_LIST=`sed -n 's/^[^#]*DEMUX.*, *\(.*\)).*/\1_demuxer/p' "$source_path/li enable $ENCODER_LIST $DECODER_LIST $PARSER_LIST $MUXER_LIST $DEMUXER_LIST +die_unknown(){ + echo "Unknown option \"$1\"." + echo "See $0 --help for available options." + exit 1 +} + for opt do optval="${opt#*=}" case "$opt" in @@ -961,7 +888,9 @@ for opt do ;; --cross-prefix=*) cross_prefix="$optval" ;; - --cross-compile) cross_compile=yes + --cross-compile) cross_compile="yes" + ;; + --target-os=*) targetos="$optval" ;; --cc=*) cc="$optval" ;; @@ -977,188 +906,198 @@ for opt do ;; --arch=*) arch="$optval" ;; - --cpu=*) cpu="$optval" - ;; - --powerpc-perf-enable) powerpc_perf="yes" - ;; - --disable-mmx) mmx="no" - ;; - --disable-armv5te) armv5te="no" - ;; - --disable-armv6) armv6="no" - ;; - --disable-iwmmxt) iwmmxt="no" - ;; - --disable-altivec) altivec="no" - ;; - --enable-gprof) gprof="yes" - ;; - --disable-v4l) video4linux="no" - ;; - --disable-v4l2) video4linux2="no" - ;; - --disable-bktr) bktr="no" - ;; - --disable-audio-oss) audio_oss="no" - ;; - --disable-audio-beos) audio_beos="no" - ;; - --disable-dv1394) dv1394="no" - ;; - --disable-network) network="no"; ffserver="no" - ;; - --disable-ipv6) ipv6="no"; - ;; - --disable-zlib) zlib="no" - ;; - --enable-a52) liba52="yes" - ;; - --enable-a52bin) liba52bin="yes" - ;; - --enable-dts) libdts="yes" - ;; - --enable-pp) pp="yes" - ;; - --enable-libgsm) libgsm="yes" - ;; - --enable-mp3lame) libmp3lame="yes" - ;; - --enable-libnut) libnut="yes" - ;; - --enable-libogg) libogg="yes" - pkg_requires="$pkg_requires ogg >= 1.1" - ;; - --enable-libtheora) libtheora="yes" - pkg_requires="$pkg_requires theora" - ;; - --enable-vorbis) libvorbis="yes" - pkg_requires="$pkg_requires vorbis vorbisenc" - ;; - --enable-faad) libfaad="yes" - ;; - --enable-faadbin) libfaadbin="yes" - ;; - --enable-faac) libfaac="yes" - ;; - --enable-xvid) xvid="yes" - ;; - --enable-x264) x264="yes" - ;; - --enable-avisynth) avisynth="yes"; - ;; - --enable-x11grab) x11grab="yes"; - ;; - --enable-dc1394) dc1394="yes" - pkg_requires="$pkg_requires libraw1394" - ;; - --disable-vhook) vhook="no" - ;; - --enable-mingw32) mingw32="yes" - ;; - --enable-mingwce) wince="yes" - ;; - --enable-static) lstatic="yes" - ;; - --disable-static) lstatic="no" - ;; - --enable-shared) lshared="yes" - ;; - --disable-shared) lshared="no" - ;; - --disable-debug) debug="no" - ;; - --disable-opts) optimize="no" - ;; - --enable-extra-warnings) extrawarnings="yes" - ;; - --disable-mpegaudio-hp) mpegaudio_hp="no" - ;; - --disable-protocols) protocols="no"; network="no"; ffserver="no" - ;; - --disable-ffmpeg) ffmpeg="no" + --cpu=*) cpu="$optval" ;; - --disable-ffserver) ffserver="no" + --enable-mingwce) wince="yes" ;; - --disable-ffplay) ffplay="no" + --disable-opts) optimize="no" ;; --enable-small) optimize="small" ;; - --enable-amr_nb) amr="yes"; amr_nb="yes"; amr_nb_fixed="no" - ;; - --enable-amr_nb-fixed) amr="yes"; amr_nb_fixed="yes"; amr_nb="no" - ;; - --enable-amr_wb) amr="yes"; amr_wb="yes" + --enable-sunmlib) mlib="yes" ;; - --enable-amr_if2) amr="yes"; amr_if2="yes" + --disable-strip) dostrip="no" ;; - --enable-sunmlib) mlib="yes" + --disable-encoders) disable $ENCODER_LIST ;; - --enable-pthreads) pthreads="yes" + --disable-decoders) disable $DECODER_LIST ;; - --enable-w32threads) w32threads="yes" + --disable-muxers) disable $MUXER_LIST ;; - --enable-beosthreads) beosthreads="yes" + --disable-demuxers) disable $DEMUXER_LIST ;; - --enable-os2threads) os2threads="yes" + --disable-parsers) disable $PARSER_LIST ;; - --enable-swscaler) swscaler="yes" + --enable-*=*|--disable-*=*) + eval `echo "$opt" | sed 's/=/-/;s/--/action=/;s/-/ thing=/;s/-/ name=/'` + case "$thing" in + encoder|decoder|muxer|demuxer|parser) $action ${optval}_${thing} ;; + *) die_unknown "$opt" ;; + esac ;; - --enable-gpl) gpl="yes" + --enable-?*|--disable-?*) + eval `echo "$opt" | sed 's/--/action=/;s/-/ option=/;s/-/_/g'` + echo "$CMDLINE_SELECT" | grep -q "^ *$option\$" || die_unknown $opt + $action $option ;; - --enable-memalign-hack) memalign_hack="yes" + --help) show_help ;; - --disable-strip) dostrip="no" + *) + die_unknown $opt ;; - --enable-encoder=*) enable ${optval}_encoder + esac +done + +case "$arch" in + i386|i486|i586|i686|i86pc|BePC) + arch="x86_32" ;; - --enable-decoder=*) enable ${optval}_decoder + x86_64|amd64) + arch="x86_32" + canon_arch="`$cc -dumpmachine | sed -e 's,\([^-]*\)-.*,\1,'`" + if [ x"$canon_arch" = x"x86_64" -o x"$canon_arch" = x"amd64" ]; then + if [ -z "`echo $CFLAGS | grep -- -m32`" ]; then + arch="x86_64" + enable fast_64bit + fi + fi ;; - --disable-encoder=*) disable ${optval}_encoder + # armv4l is a subset of armv[567]*l + arm|armv[4567]*l) + arch="armv4l" ;; - --disable-decoder=*) disable ${optval}_decoder + alpha) + arch="alpha" + enable fast_64bit ;; - --disable-encoders) disable $ENCODER_LIST + "Power Macintosh"|ppc|powerpc) + arch="powerpc" ;; - --disable-decoders) disable $DECODER_LIST + ppc64) + arch="powerpc" + enable fast_64bit ;; - --enable-muxer=*) enable ${optval}_muxer + mips|mipsel|IP*) + arch="mips" ;; - --disable-muxer=*) disable ${optval}_muxer + sun4u|sparc64) + arch="sparc64" + enable fast_64bit ;; - --disable-muxers) disable $MUXER_LIST; ffserver="no" + sparc) + arch="sparc" ;; - --enable-demuxer=*) enable ${optval}_demuxer + sh4) + arch="sh4" ;; - --disable-demuxer=*) disable ${optval}_demuxer + parisc) + arch="parisc" ;; - --disable-demuxers) disable $DEMUXER_LIST + parisc64) + arch="parisc" + enable fast_64bit ;; - --enable-parser=*) enable ${optval}_parser + s390|s390x) + arch="s390" ;; - --disable-parser=*) disable ${optval}_parser + m68k) + arch="m68k" ;; - --disable-parsers) disable $PARSER_LIST + ia64) + arch="ia64" + enable fast_64bit ;; - --help) show_help + bfin) + arch="bfin" ;; *) - echo "Unknown option \"$opt\"." - echo "See $0 --help for available options." - exit 1 + arch="unknown" ;; - esac -done - -if ! disabled logging ; then - enabled logging || logfile="$logging" - echo "# $0 $@" >$logfile - set >>$logfile -else - logfile=/dev/null -fi +esac -if enabled_any mingw32 wince; then - if enabled_all lshared lstatic; then +# OS specific +osextralibs="-lm" +case `tolower $targetos` in + beos|haiku|zeta) + PREFIX="$HOME/config" + # helps building libavcodec + add_cflags "-DPIC -fomit-frame-pointer" + # 3 gcc releases known for BeOS, each with ugly bugs + 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" + ;; + *20010315*) echo "BeBits gcc" + add_cflags "-fno-expensive-optimizations" + ;; + esac + LDCONFIG="echo ignoring ldconfig" + SHFLAGS=-nostart + # disable Linux things + dv1394="no" + # enable BeOS things + disabled 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" + else + beos_netserver="yes" + osextralibs="-lnet" + fi ;; + sunos) + dv1394="no" + FFLDFLAGS="" + FFSERVERLDFLAGS="" + SHFLAGS="-shared -Wl,-h,\$@" + add_extralibs "-lsocket -lnsl" + ;; + netbsd) + dv1394="no" + add_extralibs "-lossaudio" + ;; + openbsd) + dv1394="no" + need_memalign="no" + LIBOBJFLAGS="\$(PIC)" + LDCONFIG="ldconfig -m \$(shlibdir)" + SHFLAGS='-shared' + SLIBNAME='$(SLIBPREF)$(NAME)$(SLIBSUF).$(LIBVERSION)' + SLIBNAME_WITH_VERSION='$(SLIBNAME)' + SLIBNAME_WITH_MAJOR='$(SLIBNAME)' + add_extralibs "-lossaudio" + ;; + freebsd) + dv1394="no" + need_memalign="no" + add_cflags "-pthread" + ;; + gnu/kfreebsd) + dv1394="no" + add_cflags "-pthread" + ;; + bsd/os) + dv1394="no" + osextralibs="-lpoll -lgnugetopt -lm" + 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="" + 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)' + FFSERVERLDFLAGS=-Wl,-bind_at_load + ;; + mingw32*) + if enabled_all shared static; then cat <$logfile + set >>$logfile +else + logfile=/dev/null fi # Combine FFLDFLAGS and the LDFLAGS environment variable. @@ -1194,7 +1189,7 @@ ranlib="${cross_prefix}${ranlib}" strip="${cross_prefix}${strip}" # we need to build at least one lib type -if disabled_all lstatic lshared; then +if disabled_all static shared; then cat <&1 | grep -q GNU +} + +if ! gnu_make $make; then + gnu_make gmake && make=gmake || die "GNU make not found." +fi + # make sure we can execute files in $TMPDIR cat >$TMPE 2>>$logfile < -#include -int main(){ - char *id, *cpr; - faacEncGetVersion(&id, &cpr); - return 0; -} -EOF - restore_flags -fi - -# Ugh, recent faad2 versions have renamed all functions and #define the -# old names in faad.h. Generic tests won't work. -if enabled libfaad; then - save_flags - temp_extralibs -lfaad - check_ld < -int main(){ - faacDecOpen(); - return 0; -} -EOF - restore_flags -fi - -# Ugh, avisynth uses WINAPI calls. Generic tests won't work. -if enabled avisynth; then - save_flags - temp_extralibs -lvfw32 - check_ld < -#include -int main(){ - AVIFileInit(); - return 0; -} -EOF - restore_flags -fi - +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 # test for lrintf in math.h check_exec </dev/null 2>&1 ; then - temp_cflags `imlib2-config --cflags` - temp_extralibs `imlib2-config --libs` - check_ld < -int main( void ) { return (int) imlib_load_font("foo"); } -EOF - restore_flags -fi +enabled audio_beos && add_extralibs "-lmedia -lbe" -########################################## -# FreeType check - -freetype2=no -if test "x$targetos" != "xBeOS"; then - if (freetype-config --version) >/dev/null 2>&1 ; then - temp_cflags `freetype-config --cflags` - temp_extralibs `freetype-config --libs` - check_ld < -int main( void ) { return (int) FT_Init_FreeType(0); } -EOF - restore_flags - fi -fi +check_foo_config imlib2 imlib2 Imlib2.h imlib_load_font +check_foo_config freetype2 freetype ft2build.h FT_Init_FreeType ########################################## # SDL check @@ -1682,21 +1617,17 @@ fi sdl_too_old=no sdl=no SDL_CONFIG="${cross_prefix}sdl-config" -if ("${SDL_CONFIG}" --version) >/dev/null 2>&1 ; then - temp_cflags `"${SDL_CONFIG}" --cflags` +if "${SDL_CONFIG}" --version >/dev/null 2>&1; then + sdl_cflags=`"${SDL_CONFIG}" --cflags` + temp_cflags $sdl_cflags temp_extralibs `"${SDL_CONFIG}" --libs` - check_ld < -#undef main /* We don't want SDL to override our main() */ -int main( void ) { return SDL_Init (SDL_INIT_VIDEO); } -EOF - if test $? = 0; 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 else sdl=yes - check_cc < int main(void){ const SDL_VideoInfo *vi = SDL_GetVideoInfo(); @@ -1709,8 +1640,6 @@ EOF restore_flags fi -enabled sdl || ffplay=no - texi2html -version >/dev/null 2>&1 && enable texi2html || disable texi2html ########################################## @@ -1730,8 +1659,8 @@ int main( void ) { } EOF -enabled video4linux && check_header linux/videodev.h || disable video4linux -enabled video4linux2 && check_header linux/videodev2.h || disable video4linux2 +enabled v4l && check_header linux/videodev.h || disable v4l +enabled v4l2 && check_header linux/videodev2.h || disable v4l2 # check for ioctl_meteor.h, ioctl_bt848.h and alternatives if enabled bktr; then @@ -1771,7 +1700,7 @@ check_cflags -Wdisabled-optimization check_cflags -Wpointer-arith check_cflags -Wredundant-decls check_cflags -Wno-pointer-sign -enabled extrawarnings && check_cflags -Winline +enabled extra_warnings && check_cflags -Winline # add some linker flags check_ldflags $LDLATEFLAGS @@ -1789,7 +1718,7 @@ if enabled optimize; then fi # PIC flags for shared library objects where they are needed -if enabled lshared; then +if enabled shared; then # LIBOBJFLAGS may have already been set in the OS configuration if test -z "$LIBOBJFLAGS" ; then case "$arch" in @@ -1812,6 +1741,21 @@ if test $asmalign_pot = "unknown"; then echo 'asm (".align 3");' | check_cc && asmalign_pot="yes" fi +enabled_any $ENCODER_LIST && enable encoders +enabled_any $DECODER_LIST && enable decoders +enabled_any $MUXER_LIST && enable muxers +enabled_any $DEMUXER_LIST && enable demuxers + +enabled_any $THREADS_LIST && enable threads + +check_deps $CONFIG_LIST $HAVE_LIST $DECODER_LIST $ENCODER_LIST $PARSER_LIST \ + $DEMUXER_LIST $MUXER_LIST + +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" echo "C compiler $cc" @@ -1843,8 +1787,8 @@ echo "gprof enabled $gprof" echo "debug symbols $debug" echo "strip symbols $dostrip" echo "optimize $optimize" -echo "static $lstatic" -echo "shared $lshared" +echo "static $static" +echo "shared $shared" echo "postprocessing support $pp" echo "software scaler enabled $swscaler" echo "video hooking $vhook" @@ -1920,11 +1864,11 @@ echo "SHFLAGS=$SHFLAGS" >> config.mak echo "VHOOKSHFLAGS=$VHOOKSHFLAGS" >> config.mak echo "VHOOKLIBS=$VHOOKLIBS" >> config.mak echo "LIBOBJFLAGS=$LIBOBJFLAGS" >> config.mak -echo "BUILD_STATIC=$lstatic" >> config.mak +echo "BUILD_STATIC=$static" >> config.mak echo "BUILDSUF=$BUILDSUF" >> config.mak echo "LIBPREF=$LIBPREF" >> config.mak echo "LIBSUF=\${BUILDSUF}$LIBSUF" >> config.mak -if enabled lstatic; then +if enabled static; then echo "LIB=$LIB" >> config.mak else # Some Make complain if this variable does not exist. echo "LIB=" >> config.mak @@ -1932,7 +1876,6 @@ fi echo "SLIBPREF=$SLIBPREF" >> config.mak echo "SLIBSUF=\${BUILDSUF}$SLIBSUF" >> config.mak echo "EXESUF=\${BUILDSUF}$EXESUF" >> config.mak -echo "TARGET_OS=$targetos" >> config.mak ucarch=`toupper $arch` echo "TARGET_ARCH_${ucarch}=yes" >> config.mak @@ -1948,9 +1891,6 @@ case "$arch" in if test "$POWERPCMODE" = "64bits"; then echo "#define POWERPC_MODE_64BITS 1" >> $TMPH fi - if enabled powerpc_perf; then - echo "#define POWERPC_PERFORMANCE_REPORT 1" >> $TMPH - fi ;; sparc64) echo "TARGET_ARCH_SPARC=yes" >> config.mak @@ -1982,7 +1922,7 @@ lavu_version=`grep '#define LIBAVUTIL_VERSION ' "$source_path/libavutil/avutil.h -if enabled lshared; then +if enabled shared; then echo "BUILD_SHARED=yes" >> config.mak echo "PIC=-fPIC -DPIC" >> config.mak echo "SPPMAJOR=${pp_version%%.*}" >> config.mak @@ -2004,16 +1944,6 @@ fi echo "LIB_INSTALL_EXTRA_CMD=${LIB_INSTALL_EXTRA_CMD}" >> config.mak echo "EXTRALIBS=$extralibs" >> config.mak -enabled_any $ENCODER_LIST && enable encoders -enabled_any $DECODER_LIST && enable decoders -enabled_any $MUXER_LIST && enable muxers -enabled_any $DEMUXER_LIST && enable demuxers - -enabled_any pthreads beosthreads os2threads w32threads && enable threads - -check_deps $CONFIG_LIST $HAVE_LIST $DECODER_LIST $ENCODER_LIST $PARSER_LIST \ - $DEMUXER_LIST $MUXER_LIST - print_config HAVE_ $TMPH config.mak $HAVE_LIST print_config CONFIG_ $TMPH config.mak $CONFIG_LIST print_config TARGET_ $TMPH config.mak $TARGET_LIST @@ -2080,7 +2010,6 @@ if enabled source_path_used; then libavcodec/sparc \ libavcodec/mlib \ libavcodec/ppc \ - libavcodec/liba52 \ libavcodec/amr \ libavcodec/amr_float \ libavcodec/amrwb_float \ @@ -2176,10 +2105,10 @@ if enabled pp; then fi if enabled swscaler; then - pkgconfig_generate libswscale "FFmpeg image rescaling library" "$sws_version" "-lswscale" "libavutil = $lavu_version" swscale + pkgconfig_generate libswscale "FFmpeg image rescaling library" "$sws_version" -lswscale "libavutil = $lavu_version" ffmpeg pkgconfig_generate_uninstalled libswscale "FFmpeg image rescaling library" "$sws_version" "" "libavutil = $lavu_version" else - pkgconfig_generate libswscale "FFmpeg image rescaling library" "$sws_version" "" "$pkg_requires libavcodec = $lavc_version" swscale + pkgconfig_generate libswscale "FFmpeg image rescaling library" "$sws_version" "" "$pkg_requires libavcodec = $lavc_version" ffmpeg pkgconfig_generate_uninstalled libswscale "FFmpeg image rescaling library" "$sws_version" "" "$pkg_requires libavcodec = $lavc_version" apply libswscale.pc sed s/^Libs:.*$/Libs:/ apply libswscale-uninstalled.pc sed s/^Libs:.*$/Libs:/