]> git.sesse.net Git - ffmpeg/blobdiff - configure
Use globally consistent include guard names.
[ffmpeg] / configure
index dbc9ceb819495c771e70fc8731c3027e680cc7f4..8b7b99668089669861d5158aa32a2261ccd97355 100755 (executable)
--- a/configure
+++ b/configure
@@ -646,8 +646,7 @@ check_func_headers(){
     check_ld "$@" <<EOF && enable $func && enable_safe $headers
 $incs
 int main(int argc, char **argv){
-    (void) $func;
-    return 0;
+    return (long) $func;
 }
 EOF
 }
@@ -900,6 +899,7 @@ HAVE_LIST="
     alsa_asoundlib_h
     altivec_h
     arpa_inet_h
+    attribute_packed
     bigendian
     bswap
     closesocket
@@ -1040,6 +1040,8 @@ sse_deps="mmx"
 ssse3_deps="sse"
 vis_deps="sparc"
 
+need_memalign="altivec neon sse"
+
 # decoders / encoders / hardware accelerators
 aac_decoder_select="fft mdct"
 ac3_decoder_select="fft mdct"
@@ -1265,7 +1267,6 @@ enable stripping
 enable swscale_alpha
 
 # build settings
-add_cppflags -D_ISOC99_SOURCE -D_POSIX_C_SOURCE=200112
 SHFLAGS='-shared -Wl,-soname,$$(@F)'
 FFSERVERLDFLAGS=-Wl,-E
 LIBPREF="lib"
@@ -1294,7 +1295,7 @@ DEPFLAGS='$(CPPFLAGS) $(CFLAGS) -MM'
 # find source path
 source_path="$(dirname "$0")"
 enable source_path_used
-if test -z "$source_path" -o "$source_path" = "." ; then
+if test -f configure; then
     source_path="$(pwd)"
     disable source_path_used
 else
@@ -1478,6 +1479,10 @@ EOF
     die "Sanity test failed."
 fi
 
+filter_cflags=echo
+filter_cppflags=echo
+filter_asflags=echo
+
 if   $cc --version 2>/dev/null | grep -qi gcc; then
     cc_type=gcc
 elif $cc --version 2>/dev/null | grep -q Intel; then
@@ -1509,10 +1514,6 @@ test -n "$cc_type" && enable $cc_type || echolog "Unknown C compiler $cc"
 : ${ld_default:=$cc}
 set_default as dep_cc ld
 
-: ${filter_cflags:=echo}
-: ${filter_cppflags:=echo}
-: ${filter_asflags:=echo}
-
 add_cflags $extra_cflags
 add_asflags $extra_cflags
 
@@ -1525,6 +1526,86 @@ if test -n "$sysroot"; then
     esac
 fi
 
+# Add processor-specific flags
+case $cpu in
+    601|ppc601|PowerPC601)
+        cpuflags="-mcpu=601"
+    ;;
+    603*|ppc603*|PowerPC603*)
+        cpuflags="-mcpu=603"
+    ;;
+    604*|ppc604*|PowerPC604*)
+        cpuflags="-mcpu=604"
+    ;;
+    G3|g3|75*|ppc75*|PowerPC75*)
+        cpuflags="-mcpu=750 -mpowerpc-gfxopt"
+    ;;
+    G4|g4|745*|ppc745*|PowerPC745*)
+        cpuflags="-mcpu=7450 -mpowerpc-gfxopt"
+    ;;
+    74*|ppc74*|PowerPC74*)
+        cpuflags="-mcpu=7400 -mpowerpc-gfxopt"
+    ;;
+    G5|g5|970|ppc970|PowerPC970|power4*|Power4*)
+        cpuflags="-mcpu=970 -mpowerpc-gfxopt -mpowerpc64"
+    ;;
+    Cell|CELL|cell)
+        cpuflags="-mcpu=cell"
+        enable ldbrx
+    ;;
+    # targets that do NOT support conditional mov (cmov)
+    i[345]86|pentium|pentium-mmx|k6|k6-[23]|winchip-c6|winchip2|c3)
+        cpuflags="-march=$cpu"
+        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)
+        cpuflags="-march=$cpu"
+        enable cmov
+        enable fast_cmov
+    ;;
+    # targets that do support conditional mov but on which it's slow
+    pentium4|pentium4m|prescott|nocona)
+        cpuflags="-march=$cpu"
+        enable cmov
+        disable fast_cmov
+    ;;
+    sparc64)
+        cpuflags="-mcpu=v9"
+    ;;
+    arm11*|cortex*)
+        cpuflags="-mcpu=$cpu"
+        enable fast_unaligned
+    ;;
+    armv[67]*)
+        cpuflags="-march=$cpu"
+        enable fast_unaligned
+    ;;
+    armv*)
+        cpuflags="-march=$cpu"
+    ;;
+    arm*)
+        cpuflags="-mcpu=$cpu"
+    ;;
+    ev4|ev45|ev5|ev56|pca56|ev6|ev67)
+        enabled ccc && cpuflags="-arch $cpu" || cpuflags="-mcpu=$cpu"
+    ;;
+    bf*)
+        cpuflags="-mcpu=$cpu"
+    ;;
+    mips*|[45]k*|[237]4k*|m4k|r*000|loongson2[ef])
+        cpuflags="-march=$cpu"
+    ;;
+    generic)
+    ;;
+    *)
+        echo "WARNING: Unknown CPU \"$cpu\", ignored."
+    ;;
+esac
+
+add_cflags $cpuflags
+add_asflags $cpuflags
+
 # compiler sanity check
 check_exec <<EOF
 int main(void){ return 0; }
@@ -1538,6 +1619,7 @@ if test "$?" != 0; then
     die "C compiler test failed."
 fi
 
+add_cppflags -D_ISOC99_SOURCE -D_POSIX_C_SOURCE=200112
 check_cflags -std=c99
 check_cc -D_FILE_OFFSET_BITS=64 <<EOF && add_cppflags -D_FILE_OFFSET_BITS=64
 #include <stdlib.h>
@@ -1668,21 +1750,21 @@ case $target_os in
         oss_outdev_extralibs="-lossaudio"
         ;;
     openbsd)
-        disable need_memalign
+        enable malloc_aligned
         LIBOBJFLAGS='$(PIC)'
         SHFLAGS='-shared'
         oss_indev_extralibs="-lossaudio"
         oss_outdev_extralibs="-lossaudio"
         ;;
     freebsd|dragonfly)
-        disable need_memalign
+        enable malloc_aligned
         ;;
     bsd/os)
         osextralibs="-lpoll -lgnugetopt"
         strip="strip -d"
         ;;
     darwin)
-        disable need_memalign
+        enable malloc_aligned
         SHFLAGS='-dynamiclib -Wl,-single_module -Wl,-install_name,$(SHLIBDIR)/$(SLIBNAME),-current_version,$(LIBVERSION),-compatibility_version,$(LIBMAJOR) -Wl,-read_only_relocs,suppress'
         strip="strip -x"
         FFLDFLAGS="-Wl,-dynamic,-search_paths_first"
@@ -1697,8 +1779,10 @@ case $target_os in
         target_os=mingw32
         LIBTARGET=i386
         if enabled x86_64; then
-            disable need_memalign
+            enable malloc_aligned
             LIBTARGET=x64
+        elif enabled arm; then
+            LIBTARGET=arm
         fi
         shlibdir_default="$bindir_default"
         disable ffserver
@@ -1708,7 +1792,9 @@ case $target_os in
         SLIBNAME_WITH_MAJOR='$(SLIBPREF)$(FULLNAME)-$(LIBMAJOR)$(SLIBSUF)'
         SLIB_EXTRA_CMD='-lib.exe /machine:$(LIBTARGET) /def:$$(@:$(SLIBSUF)=.def) /out:$(SUBDIR)$(SLIBNAME_WITH_MAJOR:$(SLIBSUF)=.lib)'
         SLIB_INSTALL_EXTRA_CMD='-install -m 644 $(SUBDIR)$(SLIBNAME_WITH_MAJOR:$(SLIBSUF)=.lib) "$(SHLIBDIR)/$(SLIBNAME:$(SLIBSUF)=.lib)"; \
-            install -m 644 $(SUBDIR)$(SLIBNAME_WITH_MAJOR:$(SLIBSUF)=.lib) "$(SHLIBDIR)/$(SLIBNAME_WITH_MAJOR:$(SLIBSUF)=.lib)"'
+            install -m 644 $(SUBDIR)$(SLIBNAME_WITH_MAJOR:$(SLIBSUF)=.lib) "$(SHLIBDIR)/$(SLIBNAME_WITH_MAJOR:$(SLIBSUF)=.lib)"; \
+            install -d "$(LIBDIR)"; \
+            install -m 644 $(SUBDIR)lib$(SLIBNAME:$(SLIBSUF)=.dll.a) "$(LIBDIR)/lib$(SLIBNAME:$(SLIBSUF)=.dll.a)"'
         SLIB_UNINSTALL_EXTRA_CMD='rm -f "$(SHLIBDIR)/$(SLIBNAME:$(SLIBSUF)=.lib)"'
         SHFLAGS='-shared -Wl,--output-def,$$(@:$(SLIBSUF)=.def) -Wl,--out-implib,$(SUBDIR)lib$(SLIBNAME:$(SLIBSUF)=.dll.a) -Wl,--enable-runtime-pseudo-reloc -Wl,--enable-auto-image-base'
         objformat="win32"
@@ -1717,9 +1803,9 @@ case $target_os in
         if ! enabled x86_64; then
             check_cpp_condition _mingw.h "(__MINGW32_MAJOR_VERSION > 3) || (__MINGW32_MAJOR_VERSION == 3 && __MINGW32_MINOR_VERSION >= 15)" ||
                 die "ERROR: MinGW runtime version must be >= 3.15."
-            enabled_any avisynth vfwcap_demuxer &&
+            enabled_any avisynth vfwcap_indev &&
                 { check_cpp_condition w32api.h "(__W32API_MAJOR_VERSION > 3) || (__W32API_MAJOR_VERSION == 3 && __W32API_MINOR_VERSION >= 13)" ||
-                  die "ERROR: avisynth and vfwcap_demuxer require w32api version 3.13 or later."; }
+                  die "ERROR: avisynth and vfwcap_indev require w32api version 3.13 or later."; }
             fi
         ;;
     cygwin*)
@@ -1836,8 +1922,6 @@ enabled version3 && { enabled gpl && enable gplv3 || enable lgplv3; }
 
 check_deps $ARCH_EXT_LIST
 
-test -z "$need_memalign" && need_memalign="$mmx"
-
 #Darwin CC versions
 if test $target_os = darwin; then
     if enabled xlc; then
@@ -1852,97 +1936,6 @@ fi
 
 disabled optimizations || check_cflags -fomit-frame-pointer
 
-# Add processor-specific flags
-if test $cpu != "generic"; then
-    warn_altivec(){
-        $1 altivec && echo "WARNING: Tuning for $2 but AltiVec $1.";
-    }
-    case $cpu in
-        601|ppc601|PowerPC601)
-            cpuflags="-mcpu=601"
-            warn_altivec enabled PPC601
-        ;;
-        603*|ppc603*|PowerPC603*)
-            cpuflags="-mcpu=603"
-            warn_altivec enabled PPC603
-        ;;
-        604*|ppc604*|PowerPC604*)
-            cpuflags="-mcpu=604"
-            warn_altivec enabled PPC604
-        ;;
-        G3|g3|75*|ppc75*|PowerPC75*)
-            cpuflags="-mcpu=750 -mpowerpc-gfxopt"
-            warn_altivec enabled PPC75x
-        ;;
-        G4|g4|745*|ppc745*|PowerPC745*)
-            cpuflags="-mcpu=7450 -mpowerpc-gfxopt"
-            warn_altivec disabled PPC745x
-        ;;
-        74*|ppc74*|PowerPC74*)
-            cpuflags="-mcpu=7400 -mpowerpc-gfxopt"
-            warn_altivec disabled PPC74xx
-        ;;
-        G5|g5|970|ppc970|PowerPC970|power4*|Power4*)
-            cpuflags="-mcpu=970 -mpowerpc-gfxopt -mpowerpc64"
-            warn_altivec disabled PPC970
-        ;;
-        Cell|CELL|cell)
-            cpuflags="-mcpu=cell"
-            warn_altivec disabled Cell
-            enable ldbrx
-        ;;
-        # targets that do NOT support conditional mov (cmov)
-        i[345]86|pentium|pentium-mmx|k6|k6-[23]|winchip-c6|winchip2|c3)
-            cpuflags="-march=$cpu"
-            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)
-            cpuflags="-march=$cpu"
-            enable cmov
-            enable fast_cmov
-        ;;
-        # targets that do support conditional mov but on which it's slow
-        pentium4|pentium4m|prescott|nocona)
-            cpuflags="-march=$cpu"
-            enable cmov
-            disable fast_cmov
-        ;;
-        sparc64)
-            cpuflags="-mcpu=v9"
-        ;;
-        arm11*|cortex*)
-            cpuflags="-mcpu=$cpu"
-            enable fast_unaligned
-        ;;
-        armv[67]*)
-            cpuflags="-march=$cpu"
-            enable fast_unaligned
-        ;;
-        armv*)
-            cpuflags="-march=$cpu"
-        ;;
-        arm*)
-            cpuflags="-mcpu=$cpu"
-        ;;
-        ev4|ev45|ev5|ev56|pca56|ev6|ev67)
-            enabled ccc && cpuflags="-arch $cpu" || cpuflags="-mcpu=$cpu"
-        ;;
-        bf*)
-            cpuflags="-mcpu=$cpu"
-        ;;
-        mips*|[45]k*|[237]4k*|m4k|r*000|loongson2[ef])
-            cpuflags="-march=$cpu"
-        ;;
-        *)
-            echo "WARNING: Unknown CPU \"$cpu\", ignored."
-        ;;
-    esac
-fi
-
-add_cflags $cpuflags
-add_asflags $cpuflags
-
 check_cc <<EOF || die "Symbol mangling check failed."
 int ff_extern;
 EOF
@@ -2044,16 +2037,11 @@ enabled vis     && check_asm vis     '"pdist %f0, %f0, %f0"' -mcpu=ultrasparc
 
 enabled vis && add_cflags -mcpu=ultrasparc -mtune=ultrasparc
 
-# ---
-# big/little-endian test
 check_cc <<EOF || die "endian test failed"
 unsigned int endian = 'B' << 24 | 'I' << 16 | 'G' << 8 | 'E';
 EOF
 od -A n -t x1 $TMPO | grep -q '42 *49 *47 *45' && enable bigendian
 
-# ---
-# check availability of some header files
-
 if check_func dlopen; then
     ldl=
 elif check_func dlopen -ldl; then
@@ -2087,7 +2075,8 @@ check_header vdpau/vdpau.h
 check_header vdpau/vdpau_x11.h
 check_header X11/extensions/XvMClib.h
 
-if ! enabled_any memalign memalign_hack posix_memalign && enabled need_memalign ; then
+if ! enabled_any memalign memalign_hack posix_memalign malloc_aligned &&
+     enabled_any $need_memalign ; then
     die "Error, no aligned memory allocator but SSE enabled, disable it or use --enable-memalign-hack."
 fi
 
@@ -2123,13 +2112,13 @@ done
 check_lib math.h sin -lm
 check_lib va/va.h vaInitialize -lva
 
-# test for C99 functions in math.h
-for func in llrint log2 lrint lrintf round roundf truncf; do
-    check_exec <<EOF && enable $func || disable $func
-#include <math.h>
-int main(void) { return ($func(3.999f) > 0)?0:1; }
-EOF
-done
+check_func llrint
+check_func log2
+check_func lrint
+check_func lrintf
+check_func round
+check_func roundf
+check_func truncf
 
 # these are off by default, so fail if requested and not available
 enabled avisynth   && require2 vfw32 "windows.h vfw.h" AVIFileInit -lvfw32
@@ -2172,8 +2161,9 @@ void foo(char * $restrict_keyword p);
 EOF
 done
 
-##########################################
-# SDL check
+check_cc <<EOF && enable attribute_packed
+struct { int x; } __attribute__((packed)) x;
+EOF
 
 disable sdl_too_old
 disable sdl
@@ -2203,26 +2193,22 @@ fi
 
 texi2html -version > /dev/null 2>&1 && enable texi2html || disable texi2html
 
-##########################################
-# Network check
-
 if enabled network; then
     check_type "sys/types.h sys/socket.h" socklen_t
     # 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_func_headers winsock2.h closesocket -lws2 && \
+            network_extralibs="-lws2" || \
+        { check_func_headers winsock2.h closesocket -lws2_32 && \
+            network_extralibs="-lws2_32"; }
         check_type ws2tcpip.h socklen_t
-        check_func_headers winsock2.h closesocket
     else
         disable network
     fi
 fi
 
-##########################################
-# IPv6 check
-
 enabled network && enabled ipv6 && check_ld <<EOF && enable ipv6 || disable ipv6
 #include <sys/types.h>
 #include <sys/socket.h>
@@ -2255,11 +2241,10 @@ check_header dev/ic/bt8xx.h
 check_header sys/soundcard.h
 check_header soundcard.h
 
-enabled alsa_demuxer || enabled alsa_muxer && check_lib2 alsa/asoundlib.h snd_pcm_htimestamp -lasound
+enabled alsa_indev || enabled alsa_outdev && check_lib2 alsa/asoundlib.h snd_pcm_htimestamp -lasound
 
-enabled jack_demuxer && check_lib2 jack/jack.h jack_client_open -ljack
+enabled jack_indev && check_lib2 jack/jack.h jack_client_open -ljack
 
-# deal with the X11 frame grabber
 enabled x11grab                         &&
 check_header X11/Xlib.h                 &&
 check_header X11/extensions/XShm.h      &&
@@ -2304,7 +2289,6 @@ fi
 check_cflags -fno-math-errno
 check_cflags -fno-signed-zeros
 
-# add some flags for Intel C Compiler
 if enabled icc; then
     # Just warnings, no remarks
     check_cflags -w1
@@ -2328,6 +2312,8 @@ elif enabled ccc; then
     add_cflags -msg_disable nomainieee
     add_cflags -msg_disable ptrmismatch1
     add_cflags -msg_disable unreachcode
+elif enabled gcc; then
+    check_cflags -fno-tree-vectorize
 fi
 
 # PIC flags for shared library objects where they are needed