X-Git-Url: https://git.sesse.net/?a=blobdiff_plain;f=configure;h=6195d81dce949400eece973dc4ab3f7abaf74913;hb=badcd8d7197e1678e24100fec9f5f262052e4abf;hp=b55c2fc353e3ae6f0c51b226afb253a3b0f3dedd;hpb=b517af05b9996ebdffc92042c01313a7fffadd43;p=ffmpeg diff --git a/configure b/configure index b55c2fc353e..6195d81dce9 100755 --- a/configure +++ b/configure @@ -135,7 +135,6 @@ show_help(){ echo " --disable-zlib disable zlib [default=no]" echo " --disable-bzlib disable bzlib [default=no]" echo " --disable-vhook disable video hooking support" - 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)" @@ -178,6 +177,8 @@ show_help(){ echo " --list-outdevs show all available output devices" echo echo "Developer options (useful when working on FFmpeg itself):" + echo " --disable-debug disable debugging symbols" + echo " --enable-debug=LEVEL set the debug level [$debuglevel]" echo " --enable-gprof enable profiling with gprof [$gprof]" echo " --disable-optimizations disable compiler optimizations" echo " --enable-extra-warnings enable more compiler warnings" @@ -269,11 +270,13 @@ disable(){ } enabled(){ - eval test "x\$$1" = "xyes" + test "${1#!}" = "$1" && op== || op=!= + eval test "x\$${1#!}" $op "xyes" } disabled(){ - eval test "x\$$1" = "xno" + test "${1#!}" = "$1" && op== || op=!= + eval test "x\$${1#!}" $op "xno" } enabled_all(){ @@ -317,6 +320,7 @@ is_in(){ check_deps(){ for cfg; do + cfg="${cfg#!}" enabled ${cfg}_checking && die "Circular dependency for $cfg." disabled ${cfg}_checking && continue enable ${cfg}_checking @@ -441,6 +445,14 @@ int foo(void){ asm volatile($asm); } EOF } +check_yasm(){ + log check_yasm "$@" + echo "$1" > $TMPS + log_file $TMPS + shift 1 + check_cmd $yasmexe $YASMFLAGS "$@" -o $TMPO $TMPS +} + check_ld(){ log check_ld "$@" check_cc || return @@ -619,6 +631,9 @@ apply(){ "$@" < "$file" > "$file.tmp" && mv "$file.tmp" "$file" || rm "$file.tmp" } +# CONFIG_LIST contains configurable options, while HAVE_LIST is for +# system-dependent things. + COMPONENT_LIST=" bsfs decoders @@ -721,7 +736,6 @@ HAVE_LIST=" $ARCH_EXT_LIST $THREADS_LIST altivec_h - altivec_vector_braces arpa_inet_h bswap byteswap_h @@ -775,6 +789,7 @@ HAVE_LIST=" termios_h threads winsock2_h + yasm " CMDLINE_SELECT=" @@ -827,8 +842,11 @@ neon_deps="armv4l" ssse3_deps="x86" vis_deps="sparc" +# system headers and functions +byteswap_h_deps="!armv4l" + # decoders / encoders -ac3_decoder_deps="gpl" +ac3_decoder_deps="gpl !liba52" dxa_decoder_deps="zlib" flashsv_decoder_deps="zlib" flashsv_encoder_deps="zlib" @@ -846,7 +864,7 @@ libamr_nb_decoder_deps="libamr_nb" libamr_nb_encoder_deps="libamr_nb" libamr_wb_decoder_deps="libamr_wb" libamr_wb_encoder_deps="libamr_wb" -libdirac_decoder_deps="libdirac" +libdirac_decoder_deps="libdirac !libschroedinger" libdirac_encoder_deps="libdirac" libfaac_encoder_deps="libfaac" libfaad_decoder_deps="libfaad" @@ -921,12 +939,14 @@ shlibdir_default="$libdir_default" # toolchain cc="gcc" +yasmexe="yasm" ar="ar" nm="nm" ranlib="ranlib" strip="strip" asmalign_pot="unknown" ln_s="ln -sf" +objformat="elf" # machine arch=`uname -m` @@ -954,9 +974,9 @@ enable stripping vhook="default" # build settings +add_cflags -D_ISOC99_SOURCE -D_POSIX_C_SOURCE=200112 SHFLAGS='-shared -Wl,-soname,$$(@F)' VHOOKSHFLAGS='$(SHFLAGS)' -LDLATEFLAGS='-Wl,-rpath-link,\$(BUILD_ROOT)/libpostproc -Wl,-rpath-link,\$(BUILD_ROOT)/libswscale -Wl,-rpath-link,\$(BUILD_ROOT)/libavfilter -Wl,-rpath-link,\$(BUILD_ROOT)/libavdevice -Wl,-rpath-link,\$(BUILD_ROOT)/libavformat -Wl,-rpath-link,\$(BUILD_ROOT)/libavcodec -Wl,-rpath-link,\$(BUILD_ROOT)/libavutil' FFSERVERLDFLAGS=-Wl,-E LIBPREF="lib" LIBSUF=".a" @@ -970,7 +990,7 @@ SLIBNAME_WITH_MAJOR='$(SLIBNAME).$(LIBMAJOR)' LIB_INSTALL_EXTRA_CMD='$(RANLIB) "$(LIBDIR)/$(LIBNAME)"' # gcc stupidly only outputs the basename of targets with -MM -DEPEND_CMD='$(CC) $(CFLAGS) -MM -MG $< | sed -e "/^\#.*/d" -e "1s,^,$(@D)/," -e "s,\\([[:space:]]\\)\\(version\\.h\\),\\1\$$(BUILD_ROOT_REL)/\\2," -e "s/\(.*\)\.o/\1.d &/"' +DEPEND_CMD='$(CC) $(CFLAGS) -MM -MG $< | sed -e "/^\#.*/d" -e "1s,^,$(@D)/," -e "s,\\([[:space:]]\\)\\(version\\.h\\),\\1\$$(BUILD_ROOT_REL)/\\2,"' # find source path source_path="`dirname \"$0\"`" @@ -1083,6 +1103,7 @@ echo "# $0 $@" > $logfile set >> $logfile cc="${cross_prefix}${cc}" +yasmexe="${cross_prefix}${yasmexe}" ar="${cross_prefix}${ar}" nm="${cross_prefix}${nm}" ranlib="${cross_prefix}${ranlib}" @@ -1104,6 +1125,9 @@ TMPO="${TMPDIR1}/ffmpeg-conf-${RANDOM}-$$-${RANDOM}.o" TMPS="${TMPDIR1}/ffmpeg-conf-${RANDOM}-$$-${RANDOM}.S" TMPSH="${TMPDIR1}/ffmpeg-conf-${RANDOM}-$$-${RANDOM}.sh" +check_cflags -fasm +check_cflags -std=c99 + case "$arch" in i386|i486|i586|i686|i86pc|BePC) arch="x86_32" @@ -1237,6 +1261,8 @@ case $target_os in SLIBNAME_WITH_VERSION='$(SLIBPREF)$(FULLNAME).$(LIBVERSION)$(SLIBSUF)' SLIBNAME_WITH_MAJOR='$(SLIBPREF)$(FULLNAME).$(LIBMAJOR)$(SLIBSUF)' FFSERVERLDFLAGS=-Wl,-bind_at_load + objformat="macho" + enabled x86_64 && objformat="macho64" ;; mingw32*) target_os=mingw32 @@ -1263,6 +1289,7 @@ case $target_os in install -m 644 $(SUBDIR)$(SLIBNAME_WITH_MAJOR:$(SLIBSUF)=.lib) "$(SHLIBDIR)/$(SLIBNAME_WITH_MAJOR:$(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' + objformat="win32" ;; cygwin*) target_os=cygwin @@ -1279,15 +1306,16 @@ case $target_os in SLIBNAME_WITH_VERSION='$(SLIBPREF)$(FULLNAME)-$(LIBVERSION)$(SLIBSUF)' SLIBNAME_WITH_MAJOR='$(SLIBPREF)$(FULLNAME)-$(LIBMAJOR)$(SLIBSUF)' SHFLAGS='-shared -Wl,--enable-auto-image-base' + objformat="win32" ;; *-dos|freedos|opendos) disable ffplay ffserver vhook disable $INDEV_LIST $OUTDEV_LIST network_extralibs="-lsocket" EXESUF=".exe" + objformat="win32" ;; linux) - LDLATEFLAGS="-Wl,--as-needed $LDLATEFLAGS" enable dv1394 ;; irix*) @@ -1528,6 +1556,16 @@ EOF enabled mmx2 && check_asm mmx2 '"movss %xmm0, %xmm0"' check_asm bswap '"bswap %%eax" ::: "%eax"' + + YASMFLAGS="-f $objformat -DARCH_$(toupper $arch)" + enabled x86_64 && append YASMFLAGS "-m amd64" + enabled_all x86_64 shared && append YASMFLAGS "-DPIC" + case "$objformat" in + elf) enabled debug && append YASMFLAGS "-g dwarf2" ;; + macho64) append YASMFLAGS "-DPIC -DPREFIX" ;; + *) append YASMFLAGS "-DPREFIX" ;; + esac + check_yasm "pabsw xmm0, xmm0" && enable yasm fi # check for assembler specific support @@ -1562,10 +1600,9 @@ int main(void) { EOF # check if our compiler supports braces for vector declarations - check_cc < int main(void) { return ($func(3.999f) > 0)?0:1; } EOF @@ -1685,12 +1716,6 @@ enabled libx264 && require x264 x264.h x264_encoder_open -lx264 -lm enabled libxvid && require Xvid xvid.h xvid_global -lxvidcore enabled mlib && require mediaLib mlib_types.h mlib_VectorSub_S16_U8_Mod -lmlib -# disable the native AC-3 decoder if liba52 is enabled -enabled liba52 && disable ac3_decoder - -# disable the slower libdirac decoder if libschroedinger is enabled -enabled libschroedinger && enabled libdirac && disable libdirac_decoder - # libdc1394 check if enabled libdc1394; then { check_lib dc1394/dc1394.h dc1394_new -ldc1394 -lraw1394 && @@ -1757,12 +1782,11 @@ fi texi2html -version > /dev/null 2>&1 && enable texi2html || disable texi2html -check_type sys/socket.h socklen_t - ########################################## # Network check if enabled network; then + check_type sys/socket.h socklen_t # Prefer arpa/inet.h over winsock2 if check_header arpa/inet.h ; then check_func closesocket @@ -1831,7 +1855,8 @@ enabled extra_warnings && check_cflags -Winline # add some linker flags check_ldflags -Wl,--warn-common -check_ldflags $LDLATEFLAGS +check_ldflags -Wl,--as-needed +check_ldflags '-Wl,-rpath-link,\$(BUILD_ROOT)/libpostproc -Wl,-rpath-link,\$(BUILD_ROOT)/libswscale -Wl,-rpath-link,\$(BUILD_ROOT)/libavfilter -Wl,-rpath-link,\$(BUILD_ROOT)/libavdevice -Wl,-rpath-link,\$(BUILD_ROOT)/libavformat -Wl,-rpath-link,\$(BUILD_ROOT)/libavcodec -Wl,-rpath-link,\$(BUILD_ROOT)/libavutil' check_ldflags -Wl,-Bsymbolic if enabled small; then @@ -1869,7 +1894,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*|parisc*) LIBOBJFLAGS='$(PIC)' ;; esac fi fi @@ -1927,6 +1952,7 @@ if test "$build_suffix" != ""; then fi echo "big-endian ${bigendian-no}" if test $arch = "x86_32" -o $arch = "x86_64"; then + echo "yasm ${yasm-no}" echo "MMX enabled ${mmx-no}" echo "CMOV enabled ${cmov-no}" echo "CMOV is fast ${fast_cmov-no}" @@ -2020,6 +2046,7 @@ echo "#ifndef FFMPEG_CONFIG_H" >> $TMPH echo "#define FFMPEG_CONFIG_H" >> $TMPH echo "#define FFMPEG_CONFIGURATION \"$FFMPEG_CONFIGURATION\"" >> $TMPH +echo "FFMPEG_CONFIGURATION=$FFMPEG_CONFIGURATION" >> config.mak echo "prefix=$prefix" >> config.mak echo "LIBDIR=\$(DESTDIR)$libdir" >> config.mak echo "SHLIBDIR=\$(DESTDIR)$shlibdir" >> config.mak @@ -2027,6 +2054,7 @@ echo "INCDIR=\$(DESTDIR)$incdir" >> config.mak echo "BINDIR=\$(DESTDIR)$bindir" >> config.mak echo "MANDIR=\$(DESTDIR)$mandir" >> config.mak echo "CC=$cc" >> config.mak +echo "YASM=$yasmexe" >> config.mak echo "AR=$ar" >> config.mak echo "RANLIB=$ranlib" >> config.mak echo "LN_S=$ln_s" >> config.mak @@ -2039,6 +2067,7 @@ echo "VHOOKCFLAGS=$VHOOKCFLAGS" >> config.mak echo "LDFLAGS=$LDFLAGS" >> config.mak echo "FFSERVERLDFLAGS=$FFSERVERLDFLAGS" >> config.mak echo "SHFLAGS=$SHFLAGS" >> config.mak +echo "YASMFLAGS=$YASMFLAGS" >> config.mak echo "VHOOKSHFLAGS=$VHOOKSHFLAGS" >> config.mak echo "VHOOKLIBS=$VHOOKLIBS" >> config.mak echo "LIBOBJFLAGS=$LIBOBJFLAGS" >> config.mak @@ -2212,8 +2241,8 @@ EOF cat < $name/$name-uninstalled.pc prefix= exec_prefix= -libdir=\${pcfiledir}/$name -includedir=\${pcfiledir} +libdir=\${pcfiledir} +includedir=\${pcfiledir}/.. Name: $name Description: $comment