]> git.sesse.net Git - ffmpeg/blobdiff - configure
Add CP make variable
[ffmpeg] / configure
index d4cebfe50baf938e62cb3b33a392dfa3bb106b9d..e85e7c2c5fd60b62ccfbc38be1b9219de93e1589 100755 (executable)
--- a/configure
+++ b/configure
@@ -82,6 +82,7 @@ Configuration options:
   --disable-doc            do not build documentation
   --disable-ffmpeg         disable ffmpeg build
   --disable-ffplay         disable ffplay build
+  --disable-ffprobe        disable ffprobe build
   --disable-ffserver       disable ffserver build
   --disable-avdevice       disable libavdevice build
   --disable-avcodec        disable libavcodec build
@@ -232,6 +233,7 @@ Advanced options (experts only):
   --disable-yasm           disable use of yasm assembler
   --enable-pic             build position-independent code
   --malloc-prefix=PFX      prefix malloc and related names with PFX
+  --enable-sram            allow use of on-chip SRAM
 
 Developer options (useful when working on FFmpeg itself):
   --disable-debug          disable debugging symbols
@@ -667,6 +669,18 @@ int main(void){ $func(); }
 EOF
 }
 
+check_mathfunc(){
+    log check_mathfunc "$@"
+    func=$1
+    shift
+    disable $func
+    check_ld "$@" <<EOF && enable $func
+#include <math.h>
+float foo(float f) { return $func(f); }
+int main(void){ return 0; }
+EOF
+}
+
 check_func_headers(){
     log check_func_headers "$@"
     headers=$1
@@ -877,6 +891,7 @@ CONFIG_LIST="
     fastdiv
     ffmpeg
     ffplay
+    ffprobe
     ffserver
     fft
     golomb
@@ -902,6 +917,7 @@ CONFIG_LIST="
     libx264
     libxvid
     lpc
+    lsp
     mdct
     memalign_hack
     mlib
@@ -915,6 +931,7 @@ CONFIG_LIST="
     runtime_cpudetect
     shared
     small
+    sram
     static
     swscale
     swscale_alpha
@@ -950,6 +967,7 @@ ARCH_LIST='
     sh4
     sparc
     sparc64
+    tomi
     x86
     x86_32
     x86_64
@@ -1011,8 +1029,10 @@ HAVE_LIST="
     fork
     getaddrinfo
     gethrtime
+    GetProcessMemoryInfo
     GetProcessTimes
     getrusage
+    struct_rusage_ru_maxrss
     inet_aton
     inline_asm
     isatty
@@ -1020,6 +1040,8 @@ HAVE_LIST="
     libdc1394_1
     libdc1394_2
     llrint
+    local_aligned_16
+    local_aligned_8
     log2
     log2f
     loongson
@@ -1041,6 +1063,7 @@ HAVE_LIST="
     socklen_t
     soundcard_h
     poll_h
+    setrlimit
     struct_addrinfo
     struct_ipv6_mreq
     struct_sockaddr_in6
@@ -1113,6 +1136,7 @@ CMDLINE_SET="
     malloc_prefix
     nm
     source_path
+    strip
     sysinclude
     sysroot
     target_exec
@@ -1157,16 +1181,24 @@ fast_unaligned_if_any="armv6 ppc x86"
 need_memalign="altivec neon sse"
 inline_asm_deps="!tms470"
 
+# subsystems
+mdct_select="fft"
+rdft_select="fft"
+
 # decoders / encoders / hardware accelerators
-aac_decoder_select="fft mdct aac_parser"
-aac_encoder_select="fft mdct"
-ac3_decoder_select="fft mdct ac3_parser"
+aac_decoder_select="mdct aac_parser"
+aac_encoder_select="mdct"
+ac3_decoder_select="mdct ac3_parser"
 alac_encoder_select="lpc"
-atrac3_decoder_select="fft mdct"
+amrnb_decoder_select="lsp"
+atrac1_decoder_select="mdct"
+atrac3_decoder_select="mdct"
+binkaudio_dct_decoder_select="mdct rdft dct"
+binkaudio_rdft_decoder_select="mdct rdft"
 cavs_decoder_select="golomb"
-cook_decoder_select="fft mdct"
+cook_decoder_select="mdct"
 cscd_decoder_suggest="zlib"
-dca_decoder_select="fft mdct"
+dca_decoder_select="mdct"
 dnxhd_encoder_select="aandct"
 dxa_decoder_select="zlib"
 eac3_decoder_select="ac3_decoder"
@@ -1223,11 +1255,12 @@ msmpeg4v2_decoder_select="h263_decoder"
 msmpeg4v2_encoder_select="h263_encoder"
 msmpeg4v3_decoder_select="h263_decoder"
 msmpeg4v3_encoder_select="h263_encoder"
-nellymoser_decoder_select="fft mdct"
-nellymoser_encoder_select="fft mdct"
+nellymoser_decoder_select="mdct"
+nellymoser_encoder_select="mdct"
 png_decoder_select="zlib"
 png_encoder_select="zlib"
-qdm2_decoder_select="fft mdct rdft"
+qcelp_decoder_select="lsp"
+qdm2_decoder_select="mdct rdft"
 rv10_decoder_select="h263_decoder"
 rv10_encoder_select="h263_encoder"
 rv20_decoder_select="h263_decoder"
@@ -1235,9 +1268,12 @@ rv20_encoder_select="h263_encoder"
 rv30_decoder_select="golomb"
 rv40_decoder_select="golomb"
 shorten_decoder_select="golomb"
+sipr_decoder_select="lsp"
+snow_encoder_select="aandct"
 sonic_decoder_select="golomb"
 sonic_encoder_select="golomb"
 sonic_ls_encoder_select="golomb"
+svq1_encoder_select="aandct"
 svq3_decoder_select="golomb"
 svq3_decoder_suggest="zlib"
 theora_decoder_select="vp3_decoder"
@@ -1245,6 +1281,7 @@ tiff_decoder_suggest="zlib"
 tiff_encoder_suggest="zlib"
 truehd_decoder_select="mlp_decoder"
 tscc_decoder_select="zlib"
+twinvq_decoder_select="mdct lsp"
 vc1_decoder_select="h263_decoder"
 vc1_dxva2_hwaccel_deps="dxva2api_h DXVA_PictureParameters_wDecodedPictureIndex"
 vc1_dxva2_hwaccel_select="dxva2 vc1_decoder"
@@ -1252,14 +1289,16 @@ vc1_vaapi_hwaccel_deps="va_va_h"
 vc1_vaapi_hwaccel_select="vaapi vc1_decoder"
 vc1_vdpau_decoder_deps="vdpau_vdpau_h vdpau_vdpau_x11_h"
 vc1_vdpau_decoder_select="vdpau vc1_decoder"
-vorbis_decoder_select="fft mdct"
-vorbis_encoder_select="fft mdct"
+vorbis_decoder_select="mdct"
+vorbis_encoder_select="mdct"
 vp6a_decoder_select="vp6_decoder"
 vp6f_decoder_select="vp6_decoder"
-wmav1_decoder_select="fft mdct"
-wmav1_encoder_select="fft mdct"
-wmav2_decoder_select="fft mdct"
-wmav2_encoder_select="fft mdct"
+wmapro_decoder_select="mdct"
+wmav1_decoder_select="mdct"
+wmav1_encoder_select="mdct"
+wmav2_decoder_select="mdct"
+wmav2_encoder_select="mdct"
+wmavoice_decoder_select="lsp"
 wmv1_decoder_select="h263_decoder"
 wmv1_encoder_select="h263_encoder"
 wmv2_decoder_select="h263_decoder"
@@ -1321,6 +1360,8 @@ mxf_d10_muxer_select="mxf_muxer"
 ogg_demuxer_select="golomb"
 psp_muxer_select="mov_muxer"
 rtsp_demuxer_deps="sdp_demuxer"
+rtsp_muxer_deps="sdp_demuxer"
+rtsp_muxer_select="rtp_muxer"
 sdp_demuxer_deps="rtp_protocol mpegts_demuxer"
 spdif_muxer_select="aac_parser"
 tg2_muxer_select="mov_muxer"
@@ -1369,6 +1410,8 @@ avformat_deps="avcodec"
 # programs
 ffmpeg_deps="avcodec avformat swscale"
 ffplay_deps="avcodec avformat swscale sdl"
+ffplay_select="rdft"
+ffprobe_deps="avcodec avformat"
 ffserver_deps="avformat ffm_muxer rtp_protocol rtsp_demuxer"
 ffserver_extralibs='$ldl'
 
@@ -1396,18 +1439,18 @@ ln_s="ln -sf"
 nm_default="nm"
 objformat="elf"
 ranlib="ranlib"
-strip="strip"
+strip_default="strip"
 yasmexe="yasm"
 
 nm_opts='-g'
 
 # machine
-arch=$(uname -m)
+arch_default=$(uname -m)
 cpu="generic"
 
 # OS
-target_os=$(tolower $(uname -s))
-host_os=$target_os
+target_os_default=$(tolower $(uname -s))
+host_os=$target_os_default
 
 # configurable options
 enable avcodec
@@ -1420,6 +1463,7 @@ enable doc
 enable fastdiv
 enable ffmpeg
 enable ffplay
+enable ffprobe
 enable ffserver
 enable mpegaudio_hp
 enable network
@@ -1449,7 +1493,7 @@ CC_O='-o $@'
 host_cflags='-D_ISOC99_SOURCE -D_POSIX_C_SOURCE=200112 -O3 -g -Wall'
 host_libs='-lm'
 
-target_path='$(PWD)'
+target_path='$(CURDIR)'
 
 # gcc stupidly only outputs the basename of targets with -MM, but we need the
 # full relative path for objects in subdirectories for non-recursive Make.
@@ -1581,15 +1625,22 @@ set >> $logfile
 
 test -n "$cross_prefix" && enable cross_compile
 
+if enabled cross_compile; then
+    test -n "$arch" && test -n "$target_os" ||
+        die "Must specify target arch and OS when cross-compiling"
+fi
+
+set_default arch target_os
+
 ar="${cross_prefix}${ar}"
 cc_default="${cross_prefix}${cc_default}"
 nm_default="${cross_prefix}${nm_default}"
 ranlib="${cross_prefix}${ranlib}"
-strip="${cross_prefix}${strip}"
+strip_default="${cross_prefix}${strip_default}"
 
 sysinclude_default="${sysroot}/usr/include"
 
-set_default cc nm sysinclude
+set_default cc nm strip sysinclude
 enabled cross_compile || host_cc_default=$cc
 set_default host_cc
 
@@ -1886,32 +1937,44 @@ if test "$cpu" = generic; then
     : do nothing
 elif enabled ppc; then
 
-    case $cpu in
-        601|ppc601|PowerPC601)
+    case $(tolower $cpu) in
+        601|ppc601|powerpc601)
             cpuflags="-mcpu=601"
+            disable altivec
         ;;
-        603*|ppc603*|PowerPC603*)
+        603*|ppc603*|powerpc603*)
             cpuflags="-mcpu=603"
+            disable altivec
         ;;
-        604*|ppc604*|PowerPC604*)
+        604*|ppc604*|powerpc604*)
             cpuflags="-mcpu=604"
+            disable altivec
         ;;
-        G3|g3|75*|ppc75*|PowerPC75*)
+        g3|75*|ppc75*|powerpc75*)
             cpuflags="-mcpu=750 -mpowerpc-gfxopt"
+            disable altivec
         ;;
-        G4|g4|745*|ppc745*|PowerPC745*)
+        g4|745*|ppc745*|powerpc745*)
             cpuflags="-mcpu=7450 -mpowerpc-gfxopt"
         ;;
-        74*|ppc74*|PowerPC74*)
+        74*|ppc74*|powerpc74*)
             cpuflags="-mcpu=7400 -mpowerpc-gfxopt"
         ;;
-        G5|g5|970|ppc970|PowerPC970|power4*|Power4*)
+        g5|970|ppc970|powerpc970|power4*)
             cpuflags="-mcpu=970 -mpowerpc-gfxopt -mpowerpc64"
         ;;
-        Cell|CELL|cell)
+        cell)
             cpuflags="-mcpu=cell"
             enable ldbrx
         ;;
+        e500v2)
+            cpuflags="-mcpu=8548 -mhard-float -mfloat-gprs=double"
+            disable altivec
+        ;;
+        e500)
+            cpuflags="-mcpu=8540 -mhard-float"
+            disable altivec
+        ;;
     esac
 
 elif enabled x86; then
@@ -2112,11 +2175,6 @@ case $target_os in
             { check_cflags -mdynamic-no-pic && add_asflags -mdynamic-no-pic; }
         ;;
     mingw32*)
-        # Adding _WIN32_WINNT=0x0501 makes functions that require
-        # XP visible and thus may make it binary incompatible with
-        # earlier versions. Set --target-os=mingw32-prexp if this
-        # isn't desired.
-        test $target_os = "mingw32" && add_cflags -D_WIN32_WINNT=0x0501
         if test $target_os = "mingw32ce"; then
             disable network
         else
@@ -2206,7 +2264,8 @@ case $target_os in
         ;;
     gnu)
         ;;
-
+    none)
+        ;;
     *)
         die "Unknown OS '$target_os'."
         ;;
@@ -2345,6 +2404,8 @@ elif enabled mips; then
 
 elif enabled ppc; then
 
+    enable local_aligned_8 local_aligned_16
+
     check_asm dcbzl     '"dcbzl 0, 1"'
     check_asm ppc4xx    '"maclhw r10, r11, r12"'
     check_asm xform_asm '"lwzx %1, %y0" :: "Z"(*(int*)0), "r"(0)'
@@ -2379,6 +2440,8 @@ elif enabled sparc; then
 
 elif enabled x86; then
 
+    enable local_aligned_8 local_aligned_16
+
     # check whether EBP is available on x86
     # As 'i' is stored on the stack, this program will crash
     # if the base pointer is used to access it because the
@@ -2443,13 +2506,16 @@ check_func  fork
 check_func  getaddrinfo $network_extralibs
 check_func  gethrtime
 check_func  getrusage
+check_struct "sys/time.h sys/resource.h" "struct rusage" ru_maxrss
 check_func  inet_aton $network_extralibs
 check_func  isatty
 check_func  ${malloc_prefix}memalign            && enable memalign
 check_func  mkstemp
 check_func  ${malloc_prefix}posix_memalign      && enable posix_memalign
+check_func  setrlimit
 check_func_headers io.h setmode
 check_func_headers lzo/lzo1x.h lzo1x_999_compress
+check_lib2 "windows.h psapi.h" GetProcessMemoryInfo -lpsapi
 check_func_headers windows.h GetProcessTimes
 check_func_headers windows.h VirtualAlloc
 
@@ -2505,16 +2571,16 @@ done
 check_lib math.h sin -lm
 check_lib va/va.h vaInitialize -lva
 
-check_func exp2
-check_func exp2f
-check_func llrint
-check_func log2
-check_func log2f
-check_func lrint
-check_func lrintf
-check_func round
-check_func roundf
-check_func truncf
+check_mathfunc exp2
+check_mathfunc exp2f
+check_mathfunc llrint
+check_mathfunc log2
+check_mathfunc log2f
+check_mathfunc lrint
+check_mathfunc lrintf
+check_mathfunc round
+check_mathfunc roundf
+check_mathfunc truncf
 
 # these are off by default, so fail if requested and not available
 enabled avisynth   && require2 vfw32 "windows.h vfw.h" AVIFileInit -lavifil32
@@ -2523,7 +2589,7 @@ enabled libdirac   && add_cflags $(pkg-config --cflags dirac) &&
                       require  libdirac libdirac_encoder/dirac_encoder.h dirac_encoder_init $(pkg-config --libs dirac)
 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 libgsm     && require  libgsm gsm/gsm.h gsm_create -lgsm
 enabled libmp3lame && require  libmp3lame lame/lame.h lame_init -lmp3lame -lm
 enabled libnut     && require  libnut libnut.h nut_demuxer_init -lnut
 enabled libopencore_amrnb  && require libopencore_amrnb opencore-amrnb/interf_dec.h Decoder_Interface_init -lopencore-amrnb -lm
@@ -2576,8 +2642,6 @@ if enabled network; then
             network_extralibs="-lws2" || \
         { check_func_headers winsock2.h closesocket -lws2_32 && \
             network_extralibs="-lws2_32"; }
-        # getaddrinfo is available if _WIN32_WINNT >= 0x0501 is defined
-        check_func_headers ws2tcpip.h getaddrinfo $network_extralibs
         check_type ws2tcpip.h socklen_t
         check_type ws2tcpip.h "struct addrinfo"
         check_type ws2tcpip.h "struct ipv6_mreq"
@@ -2640,6 +2704,7 @@ check_cflags -Wcast-qual
 check_cflags -Wwrite-strings
 check_cflags -Wtype-limits
 check_cflags -Wundef
+check_cflags -Wmissing-prototypes
 enabled extra_warnings && check_cflags -Winline
 
 # add some linker flags
@@ -2691,6 +2756,7 @@ elif enabled clang; then
 elif enabled armcc; then
     # 2523: use of inline assembler is deprecated
     add_cflags -Wrvct,--diag_suppress=2523
+    add_cflags -Wrvct,--diag_suppress=1207
 elif enabled tms470; then
     add_cflags -pds=824 -pds=837
 fi
@@ -2900,8 +2966,10 @@ AS=$as
 LD=$ld
 DEPCC=$dep_cc
 YASM=$yasmexe
+YASMDEP=$yasmexe
 AR=$ar
 RANLIB=$ranlib
+CP=cp -p
 LN_S=$ln_s
 STRIP=$strip
 CPPFLAGS=$CPPFLAGS