X-Git-Url: https://git.sesse.net/?a=blobdiff_plain;f=configure;h=7c377aa0616d70797013c03039e0293cc7ea5f15;hb=6365e4db79cc1a8c2c153e73828e922962d1086e;hp=bf8f5f1848c079ecae84ca35d04420c971f022ad;hpb=4264a0dd54420182ce0d083b308452739311edaa;p=ffmpeg diff --git a/configure b/configure index bf8f5f1848c..7c377aa0616 100755 --- a/configure +++ b/configure @@ -55,7 +55,7 @@ if test "$E1" != 0 || test "$E2" = 0; then fi show_help(){ -cat < $TMPC log_file $TMPC - check_cmd $as $CPPFLAGS $ASFLAGS "$@" $AS_C -o $TMPO $TMPC + check_cmd $as $CPPFLAGS $ASFLAGS "$@" $AS_C $(as_o $TMPO) $TMPC } check_inline_asm(){ @@ -679,6 +694,10 @@ check_yasm(){ check_cmd $yasmexe $YASMFLAGS "$@" -o $TMPO $TMPS } +ld_o(){ + eval printf '%s\\n' $LD_O +} + check_ld(){ log check_ld "$@" flags='' @@ -689,7 +708,7 @@ check_ld(){ check_cc $($cflags_filter $flags) || return flags=$($ldflags_filter $flags) libs=$($ldflags_filter $libs) - check_cmd $ld $LDFLAGS $flags -o $TMPE $TMPO $libs $extralibs + check_cmd $ld $LDFLAGS $flags $(ld_o $TMPE) $TMPO $libs $extralibs } check_code(){ @@ -844,6 +863,9 @@ check_exec_crash(){ static void sighandler(int sig){ raise(SIGTERM); } +int foo(void){ + $code +} int main(void){ signal(SIGILL, sighandler); signal(SIGFPE, sighandler); @@ -851,7 +873,7 @@ int main(void){ #ifdef SIGBUS signal(SIGBUS, sighandler); #endif - { $code } + foo(); } EOF } @@ -899,11 +921,15 @@ require_pkg_config(){ add_extralibs $(get_safe ${pkg}_libs) } +hostcc_o(){ + eval printf '%s\\n' $HOSTCC_O +} + check_host_cc(){ log check_host_cc "$@" cat > $TMPC log_file $TMPC - check_cmd $host_cc $host_cflags "$@" -c -o $TMPO $TMPC + check_cmd $host_cc $host_cflags "$@" $HOSTCC_C $(hostcc_o $TMPO) $TMPC } check_host_cflags(){ @@ -964,7 +990,6 @@ CONFIG_LIST=" doc dwt dxva2 - fastdiv fft frei0r gnutls @@ -1050,26 +1075,34 @@ ARCH_LIST=' x86_64 ' -ARCH_EXT_LIST=' - altivec +ARCH_EXT_LIST_X86=' amd3dnow amd3dnowext + avx + fma4 + mmx + mmxext + sse + sse2 + sse3 + sse4 + sse42 + ssse3 +' + +ARCH_EXT_LIST=" + $ARCH_EXT_LIST_X86 + altivec armv5te armv6 armv6t2 armvfp - avx - fma4 mmi - mmx - mmxext neon ppc4xx - sse - ssse3 vfpv3 vis -' +" HAVE_LIST_PUB=' bigendian @@ -1078,6 +1111,8 @@ HAVE_LIST_PUB=' HAVE_LIST=" $ARCH_EXT_LIST + $(add_suffix _external $ARCH_EXT_LIST) + $(add_suffix _inline $ARCH_EXT_LIST) $HAVE_LIST_PUB $THREADS_LIST aligned_malloc @@ -1100,6 +1135,7 @@ HAVE_LIST=" dev_ic_bt8xx_h dev_video_bktr_ioctl_bt848_h dev_video_meteor_ioctl_meteor_h + direct_h dlfcn_h dlopen dos_paths @@ -1152,6 +1188,7 @@ HAVE_LIST=" mkstemp mm_empty mmap + msvcrt nanosleep poll_h posix_memalign @@ -1243,6 +1280,7 @@ CMDLINE_SELECT=" cross_compile debug extra_warnings + inline_asm logging optimizations symver @@ -1272,6 +1310,7 @@ CMDLINE_SET=" extra_version host_cc host_cflags + host_ld host_ldflags host_libs host_os @@ -1313,15 +1352,31 @@ ppc4xx_deps="ppc" vis_deps="sparc" x86_64_suggest="cmov fast_cmov" + amd3dnow_deps="mmx" amd3dnowext_deps="amd3dnow" mmx_deps="x86" mmxext_deps="mmx" -sse_deps="mmx" -ssse3_deps="sse" -avx_deps="ssse3" +sse_deps="mmxext" +sse2_deps="sse" +sse3_deps="sse2" +ssse3_deps="sse3" +sse4_deps="ssse3" +sse42_deps="sse4" +avx_deps="sse42" fma4_deps="avx" +mmx_external_deps="yasm" +mmx_inline_deps="inline_asm" +mmx_suggest="mmx_external mmx_inline" + +for ext in $(filter_out mmx $ARCH_EXT_LIST_X86); do + eval dep=\$${ext}_deps + eval ${ext}_external_deps='"${dep}_external"' + eval ${ext}_inline_deps='"${dep}_inline"' + eval ${ext}_suggest='"${ext}_external ${ext}_inline"' +done + aligned_stack_if_any="ppc x86" fast_64bit_if_any="alpha ia64 mips64 parisc64 ppc64 sparc64 x86_64" fast_clz_if_any="alpha armv5te avr32 mips ppc x86" @@ -1332,6 +1387,8 @@ need_memalign="altivec neon sse" symver_if_any="symver_asm_label symver_gnu_asm" +log2_deps="!msvcrt" + # subsystems dct_select="rdft" mdct_select="fft" @@ -1361,11 +1418,12 @@ dnxhd_encoder_select="aandcttables mpegvideoenc" dxa_decoder_select="zlib" eac3_decoder_select="ac3_decoder" eac3_encoder_select="ac3_encoder" -eamad_decoder_select="aandcttables error_resilience" +eamad_decoder_select="aandcttables error_resilience mpegvideo" eatgq_decoder_select="aandcttables" eatqi_decoder_select="aandcttables error_resilience mpegvideo" ffv1_decoder_select="golomb rangecoder" ffv1_encoder_select="rangecoder" +ffvhuff_encoder_select="huffman" flac_decoder_select="golomb" flac_encoder_select="golomb lpc" flashsv_decoder_select="zlib" @@ -1387,6 +1445,7 @@ h264_dxva2_hwaccel_select="dxva2 h264_decoder" h264_vaapi_hwaccel_select="vaapi h264_decoder" h264_vda_hwaccel_select="vda h264_decoder" h264_vdpau_decoder_select="vdpau h264_decoder" +huffyuv_encoder_select="huffman" iac_decoder_select="fft mdct sinewin" imc_decoder_select="fft mdct sinewin" jpegls_decoder_select="golomb" @@ -1429,6 +1488,7 @@ msmpeg4v2_decoder_select="h263_decoder" msmpeg4v2_encoder_select="h263_encoder" msmpeg4v3_decoder_select="h263_decoder" msmpeg4v3_encoder_select="h263_encoder" +mss2_decoder_select="vc1_decoder" nellymoser_decoder_select="mdct sinewin" nellymoser_encoder_select="mdct sinewin" png_decoder_select="zlib" @@ -1457,6 +1517,7 @@ tiff_encoder_suggest="zlib" truehd_decoder_select="mlp_decoder" tscc_decoder_select="zlib" twinvq_decoder_select="mdct lsp sinewin" +utvideo_encoder_select="huffman" vc1_decoder_select="h263_decoder h264chroma h264qpel" vc1_dxva2_hwaccel_deps="dxva2api_h" vc1_dxva2_hwaccel_select="dxva2 vc1_decoder" @@ -1739,7 +1800,6 @@ enable swscale enable asm enable debug enable doc -enable fastdiv enable network enable optimizations enable safe_bitstream_reader @@ -1772,8 +1832,11 @@ CC_C='-c' CC_E='-E -o $@' CC_O='-o $@' LD_O='-o $@' +LD_LIB='-l%' +LD_PATH='-L' HOSTCC_C='-c' HOSTCC_O='-o $@' +HOSTLD_O='-o $@' host_cflags='-D_ISOC99_SOURCE -D_XOPEN_SOURCE=600 -O3 -g' host_libs='-lm' @@ -2042,6 +2105,26 @@ EOF die "Sanity test failed." fi +msvc_flags(){ + for flag; do + case $flag in + -fomit-frame-pointer) echo -Oy ;; + -g) echo -Z7 ;; + -Wall) echo -W4 -wd4244 -wd4127 -wd4018 -wd4389 \ + -wd4146 -wd4057 -wd4204 -wd4706 -wd4305 \ + -wd4152 -wd4324 -we4013 -wd4100 -wd4214 \ + -wd4996 ;; + -std=c99) ;; + -fno-math-errno) ;; + -fno-common) ;; + -fno-signed-zeros) ;; + -lz) echo zlib.lib ;; + -l*) echo ${flag#-l}.lib ;; + *) echo $flag ;; + esac + done +} + pgi_flags(){ for flag; do case $flag in @@ -2069,7 +2152,7 @@ suncc_flags(){ prescott|nocona) echo -xarch=sse3 -xchip=pentium4 ;; *-sse3) echo -xarch=sse3 ;; core2) echo -xarch=ssse3 -xchip=core2 ;; - amdfam10|barcelona) echo -xarch=sse4_1 ;; + amdfam10|barcelona|bdver*) echo -xarch=sse4_1 ;; athlon-4|athlon-[mx]p) echo -xarch=ssea ;; k8|opteron|athlon64|athlon-fx) echo -xarch=sse2a ;; @@ -2118,7 +2201,8 @@ probe_cc(){ pfx=$1 _cc=$2 - unset _type _ident _cc_c _cc_e _cc_o _flags _cflags _ldflags + unset _type _ident _cc_c _cc_e _cc_o _flags _cflags + unset _ld_o _ldflags _ld_lib _ld_path unset _depflags _DEPCMD _DEPFLAGS _flags_filter=echo @@ -2227,6 +2311,29 @@ probe_cc(){ _cflags_size="-O2 -Munroll=c:1 $opt_common" _cflags_noopt="-O1" _flags_filter=pgi_flags + elif $_cc 2>&1 | grep -q Microsoft; then + _type=msvc + _ident=$($cc 2>&1 | head -n1) + _DEPCMD='$(DEP$(1)) $(DEP$(1)FLAGS) $($(1)DEP_FLAGS) $< 2>&1 | awk '\''/including/ { sub(/^.*file: */, ""); gsub(/\\/, "/"); if (!match($$0, / /)) print "$@:", $$0 }'\'' > $(@:.o=.d)' + _DEPFLAGS='$(CPPFLAGS) $(CFLAGS) -showIncludes -Zs' + _cflags_speed="-O2" + _cflags_size="-O1" + # Nonstandard output options, to avoid msys path conversion issues, relies on wrapper to remap it + if $_cc 2>&1 | grep -q Linker; then + _ld_o='-out $@' + else + _ld_o='-Fe$@' + fi + _cc_o='-Fo $@' + _cc_e='-P -Fi $@' + _flags_filter=msvc_flags + _ld_lib='lib%.a' + _ld_path='-libpath:' + _flags='-nologo' + _cflags='-D_USE_MATH_DEFINES -Dinline=__inline -FIstdlib.h -Dstrtoll=_strtoi64' + if [ $pfx = hostcc ]; then + append _cflags -Dsnprintf=_snprintf + fi fi eval ${pfx}_type=\$_type @@ -2258,9 +2365,7 @@ set_ccvars CC probe_cc hostcc "$host_cc" host_cflags_filter=$_flags_filter -host_ldflags_filter=$_flags_filter add_host_cflags $_flags $_cflags -add_host_ldflags $_flags $_ldflags set_ccvars HOSTCC test -n "$cc_type" && enable $cc_type || @@ -2269,7 +2374,8 @@ test -n "$cc_type" && enable $cc_type || : ${as_default:=$cc} : ${dep_cc_default:=$cc} : ${ld_default:=$cc} -set_default ar as dep_cc ld +: ${host_ld_default:=$host_cc} +set_default ar as dep_cc ld host_ld probe_cc as "$as" asflags_filter=$_flags_filter @@ -2280,7 +2386,14 @@ probe_cc ld "$ld" ldflags_filter=$_flags_filter add_ldflags $_flags $_ldflags test "$cc_type" != "$ld_type" && add_ldflags $cc_ldflags -LD_O=${_cc_o-$LD_O} +LD_O=${_ld_o-$LD_O} +LD_LIB=${_ld_lib-$LD_LIB} +LD_PATH=${_ld_path-$LD_PATH} + +probe_cc hostld "$host_ld" +host_ldflags_filter=$_flags_filter +add_host_ldflags $_flags $_ldflags +HOSTLD_O=${_ld_o-$HOSTLD_O} if [ -z "$CC_DEPFLAGS" ] && [ "$dep_cc" != "$cc" ]; then probe_cc depcc "$dep_cc" @@ -2434,7 +2547,7 @@ elif enabled x86; then 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|amdfam10|barcelona|atom) + i686|pentiumpro|pentium[23]|pentium-m|athlon|athlon-tbird|athlon-4|athlon-[mx]p|athlon64*|k8*|opteron*|athlon-fx|core2|amdfam10|barcelona|atom|bdver*) cpuflags="-march=$cpu" enable cmov enable fast_cmov @@ -2584,7 +2697,7 @@ case $target_os in oss_indev_extralibs="-lossaudio" oss_outdev_extralibs="-lossaudio" ;; - openbsd) + openbsd|bitrig) # On OpenBSD 4.5. the compiler does not use PIC unless # explicitly using -fPIC. Libav builds fine without PIC, # however the generated executable will not do anything @@ -2593,6 +2706,8 @@ case $target_os in enable pic disable symver SHFLAGS='-shared' + SLIBNAME_WITH_MAJOR='$(SLIBNAME).$(LIBVERSION)' + SLIB_INSTALL_LINKS= oss_indev_extralibs="-lossaudio" oss_outdev_extralibs="-lossaudio" ;; @@ -2644,11 +2759,9 @@ case $target_os in 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" dlltool="${cross_prefix}dlltool" + ranlib=: enable dos_paths check_cflags -fno-common - check_cpp_condition _mingw.h "defined (__MINGW64_VERSION_MAJOR) || (__MINGW32_MAJOR_VERSION > 3) \ - || (__MINGW32_MAJOR_VERSION == 3 && __MINGW32_MINOR_VERSION >= 15)" || - die "ERROR: MinGW runtime version must be >= 3.15." add_cppflags -U__STRICT_ANSI__ ;; cygwin*) @@ -2694,13 +2807,13 @@ case $target_os in SLIBNAME_WITH_VERSION='$(SLIBPREF)$(NAME)-$(LIBVERSION)$(SLIBSUF)' SLIBNAME_WITH_MAJOR='$(SLIBPREF)$(shell echo $(NAME) | cut -c1-6)$(LIBMAJOR)$(SLIBSUF)' SLIB_CREATE_DEF_CMD='echo LIBRARY $(SLIBNAME_WITH_MAJOR) INITINSTANCE TERMINSTANCE > $(SUBDIR)$(NAME).def; \ - echo PROTMODE >> $(SUBDIR)$(NAME).def; \ - echo CODE PRELOAD MOVEABLE DISCARDABLE >> $(SUBDIR)$(NAME).def; \ - echo DATA PRELOAD MOVEABLE MULTIPLE NONSHARED >> $(SUBDIR)$(NAME).def; \ - echo EXPORTS >> $(SUBDIR)$(NAME).def; \ - emxexp -o $(OBJS) >> $(SUBDIR)$(NAME).def' + echo PROTMODE >> $(SUBDIR)$(NAME).def; \ + echo CODE PRELOAD MOVEABLE DISCARDABLE >> $(SUBDIR)$(NAME).def; \ + echo DATA PRELOAD MOVEABLE MULTIPLE NONSHARED >> $(SUBDIR)$(NAME).def; \ + echo EXPORTS >> $(SUBDIR)$(NAME).def; \ + emxexp -o $(OBJS) >> $(SUBDIR)$(NAME).def' SLIB_EXTRA_CMD='emximp -o $(SUBDIR)$(LIBPREF)$(NAME)_dll.a $(SUBDIR)$(NAME).def; \ - emximp -o $(SUBDIR)$(LIBPREF)$(NAME)_dll.lib $(SUBDIR)$(NAME).def;' + emximp -o $(SUBDIR)$(LIBPREF)$(NAME)_dll.lib $(SUBDIR)$(NAME).def;' SLIB_INSTALL_EXTRA_LIB='$(LIBPREF)$(NAME)_dll.a $(LIBPREF)$(NAME)_dll.lib' enable dos_paths ;; @@ -2733,6 +2846,32 @@ case $target_os in ;; esac +# determine libc flavour + +if check_cpp_condition features.h "defined __UCLIBC__"; then + libc_type=uclibc +elif check_cpp_condition features.h "defined __GLIBC__"; then + libc_type=glibc +elif check_header _mingw.h; then + libc_type=mingw + check_cpp_condition _mingw.h \ + "defined (__MINGW64_VERSION_MAJOR) || (__MINGW32_MAJOR_VERSION > 3) || \ + (__MINGW32_MAJOR_VERSION == 3 && __MINGW32_MINOR_VERSION >= 15)" || + die "ERROR: MinGW runtime version must be >= 3.15." +elif check_cpp_condition newlib.h "defined _NEWLIB_VERSION"; then + libc_type=newlib +elif check_func_headers stdlib.h _get_doserrno; then + libc_type=msvcrt + add_cflags -Dstrtod=avpriv_strtod + add_cflags -Dsnprintf=avpriv_snprintf \ + -D_snprintf=avpriv_snprintf \ + -Dvsnprintf=avpriv_vsnprintf +elif check_cpp_condition stddef.h "defined __KLIBC__"; then + libc_type=klibc +fi + +test -n "$libc_type" && enable $libc_type + esc(){ echo "$*" | sed 's/%/%25/g;s/:/%3a/g' } @@ -2792,7 +2931,7 @@ EOF sym=$($nm $nm_opts $TMPO | awk '/ff_extern/{ print substr($0, match($0, /[^ \t]*ff_extern/)) }') extern_prefix=${sym%%ff_extern*} -check_cc <= 0.2 if you would like vdpau support." && - disable vdpau; } + check_cpp_condition vdpau/vdpau.h "defined VDP_DECODER_PROFILE_MPEG4_PART2_ASP" || + { echolog "Please upgrade to libvdpau >= 0.2 if you would like vdpau support." && disable vdpau; } fi enabled debug && add_cflags -g"$debuglevel" && add_asflags -g"$debuglevel" @@ -3338,18 +3474,20 @@ elif enabled tms470; then add_cflags -pds=824 -pds=837 elif enabled pathscale; then add_cflags -fstrict-overflow -OPT:wrap_around_unsafe_opt=OFF +elif enabled msvc; then + enabled x86_32 && disable aligned_stack fi enabled_any $THREADS_LIST && enable threads +enabled asm || { arch=c; disable $ARCH_LIST $ARCH_EXT_LIST; } + check_deps $CONFIG_LIST \ $CONFIG_EXTRA \ $HAVE_LIST \ $ALL_COMPONENTS \ $ALL_TESTS \ -enabled asm || { arch=c; disable $ARCH_LIST $ARCH_EXT_LIST; } - ! enabled_any memalign posix_memalign aligned_malloc && enabled_any $need_memalign && enable memalign_hack @@ -3503,6 +3641,8 @@ AS_O=$AS_O CC_C=$CC_C CC_O=$CC_O LD_O=$LD_O +LD_LIB=$LD_LIB +LD_PATH=$LD_PATH DLLTOOL=$dlltool LDFLAGS=$LDFLAGS LDFLAGS-avserver=$AVSERVERLDFLAGS @@ -3524,6 +3664,7 @@ ASDEP_FLAGS=$ASDEP_FLAGS CC_DEPFLAGS=$CC_DEPFLAGS AS_DEPFLAGS=$AS_DEPFLAGS HOSTCC=$host_cc +HOSTLD=$host_ld HOSTCFLAGS=$host_cflags HOSTEXESUF=$HOSTEXESUF HOSTLDFLAGS=$host_ldflags @@ -3535,10 +3676,12 @@ HOSTCCDEP_FLAGS=$HOSTCCDEP_FLAGS HOSTCC_DEPFLAGS=$HOSTCC_DEPFLAGS HOSTCC_C=$HOSTCC_C HOSTCC_O=$HOSTCC_O +HOSTLD_O=$HOSTLD_O TARGET_EXEC=$target_exec TARGET_PATH=$target_path LIBS-avplay=$sdl_libs CFLAGS-avplay=$sdl_cflags +ZLIB=$($ldflags_filter -lz) LIB_INSTALL_EXTRA_CMD=$LIB_INSTALL_EXTRA_CMD EXTRALIBS=$extralibs INSTALL=install @@ -3632,15 +3775,15 @@ test -n "$WARNINGS" && printf "\n$WARNINGS" # build pkg-config files pkgconfig_generate(){ -name=$1 -shortname=${name#lib}${build_suffix} -comment=$2 -version=$3 -libs=$4 -requires=$5 -enabled ${name#lib} || return 0 -mkdir -p $name -cat < $name/$name.pc + name=$1 + shortname=${name#lib}${build_suffix} + comment=$2 + version=$3 + libs=$4 + requires=$5 + enabled ${name#lib} || return 0 + mkdir -p $name + cat < $name/$name.pc prefix=$prefix exec_prefix=\${prefix} libdir=$libdir @@ -3656,7 +3799,7 @@ Libs: -L\${libdir} -l${shortname} $(enabled shared || echo $libs) Libs.private: $(enabled shared && echo $libs) Cflags: -I\${includedir} EOF -cat < $name/$name-uninstalled.pc + cat < $name/$name-uninstalled.pc prefix= exec_prefix= libdir=\${pcfiledir}