--enable-chromaprint enable audio fingerprinting with chromaprint [no]
--enable-fontconfig enable fontconfig, useful for drawtext filter [no]
--enable-frei0r enable frei0r video filtering [no]
+ --enable-gcrypt enable gcrypt, needed for rtmp(t)e support
+ if openssl, librtmp or gmp is not used [no]
+ --enable-gmp enable gmp, needed for rtmp(t)e support
+ if openssl or librtmp is not used [no]
--enable-gnutls enable gnutls, needed for https support
if openssl is not used [no]
--disable-iconv disable iconv [autodetect]
--enable-libzmq enable message passing via libzmq [no]
--enable-libzvbi enable teletext support via libzvbi [no]
--disable-lzma disable lzma [autodetect]
- --enable-decklink enable Blackmagick DeckLink I/O support [no]
+ --enable-decklink enable Blackmagic DeckLink I/O support [no]
--enable-mmal enable decoding via MMAL [no]
--enable-nvenc enable NVIDIA NVENC support [no]
--enable-openal enable OpenAL 1.1 capture support [no]
--enable-opengl enable OpenGL rendering [no]
--enable-openssl enable openssl, needed for https support
if gnutls is not used [no]
+ --disable-schannel disable SChannel SSP, needed for TLS support on
+ Windows if openssl and gnutls are not used [autodetect]
--disable-sdl disable sdl [autodetect]
--disable-securetransport disable Secure Transport, needed for TLS support
on OSX if openssl and gnutls are not used [autodetect]
--yasmexe=EXE use yasm-compatible assembler EXE [$yasmexe_default]
--cc=CC use C compiler CC [$cc_default]
--cxx=CXX use C compiler CXX [$cxx_default]
+ --objcc=OCC use ObjC compiler OCC [$cc_default]
--dep-cc=DEPCC use dependency generator DEPCC [$cc_default]
--ld=LD use linker LD [$ld_default]
--pkg-config=PKGCONFIG use pkg-config tool PKGCONFIG [$pkg_config_default]
--host-os=OS compiler host OS [$target_os]
--extra-cflags=ECFLAGS add ECFLAGS to CFLAGS [$CFLAGS]
--extra-cxxflags=ECFLAGS add ECFLAGS to CXXFLAGS [$CXXFLAGS]
+ --extra-objcflags=FLAGS add FLAGS to OBJCFLAGS [$CFLAGS]
--extra-ldflags=ELDFLAGS add ELDFLAGS to LDFLAGS [$LDFLAGS]
--extra-ldexeflags=ELDFLAGS add ELDFLAGS to LDEXEFLAGS [$LDEXEFLAGS]
--extra-ldlibflags=ELDFLAGS add ELDFLAGS to LDLIBFLAGS [$LDLIBFLAGS]
--disable-neon disable NEON optimizations
--disable-inline-asm disable use of inline assembly
--disable-yasm disable use of nasm/yasm assembly
- --disable-mips32r5 disable MIPS32R5 optimizations
--disable-mips64r6 disable MIPS64R6 optimizations
- --disable-mipsdspr1 disable MIPS DSP ASE R1 optimizations
+ --disable-mipsdsp disable MIPS DSP ASE R1 optimizations
--disable-mipsdspr2 disable MIPS DSP ASE R2 optimizations
--disable-msa disable MSA optimizations
--disable-mipsfpu disable floating point MIPS optimizations
append ASFLAGS $($asflags_filter "$@")
}
+add_objcflags(){
+ append OBJCFLAGS $($objcflags_filter "$@")
+}
+
add_ldflags(){
append LDFLAGS $($ldflags_filter "$@")
}
check_cmd $cxx $CPPFLAGS $CFLAGS $CXXFLAGS "$@" $CXX_C -o $TMPO $TMPCPP
}
-check_oc(){
- log check_oc "$@"
+check_objcc(){
+ log check_objcc "$@"
cat > $TMPM
log_file $TMPM
- check_cmd $cc -Werror=missing-prototypes $CPPFLAGS $CFLAGS "$@" $CC_C $(cc_o $TMPO) $TMPM
+ check_cmd $objcc -Werror=missing-prototypes $CPPFLAGS $CFLAGS $OBJCFLAGS "$@" $OBJCC_C $(cc_o $TMPO) $TMPM
}
check_cpp(){
EOF
}
+test_objcflags(){
+ log test_cflags "$@"
+ set -- $($cflags_filter "$@")
+ check_objcc "$@" <<EOF
+int x;
+EOF
+}
+
+check_objcflags(){
+ log check_cflags "$@"
+ test_objcflags "$@" && add_objcflags "$@"
+}
+
test_ldflags(){
log test_ldflags "$@"
check_ld "cc" "$@" <<EOF
EOF
}
-check_header_oc(){
- log check_header_oc "$@"
+check_header_objcc(){
+ log check_header_objcc "$@"
rm -f -- "$TMPO"
header=$1
shift
{
echo "#include <$header>"
echo "int main(void) { return 0; }"
- } | check_oc && check_stat "$TMPO" && enable_safe $headers
+ } | check_objcc && check_stat "$TMPO" && enable_safe $headers
}
check_func(){
EOF
}
+check_complexfunc(){
+ log check_complexfunc "$@"
+ func=$1
+ narg=$2
+ shift 2
+ test $narg = 2 && args="f, g" || args="f * I"
+ disable $func
+ check_ld "cc" "$@" <<EOF && enable $func
+#include <complex.h>
+#include <math.h>
+float foo(complex float f, complex float g) { return $func($args); }
+int main(void){ return (int) foo; }
+EOF
+}
+
check_mathfunc(){
log check_mathfunc "$@"
func=$1
crystalhd
decklink
frei0r
+ gcrypt
+ gmp
gnutls
iconv
ladspa
opencl
opengl
openssl
+ schannel
sdl
securetransport
x11grab
ARCH_EXT_LIST_MIPS="
mipsfpu
mips32r2
- mips32r5
mips64r6
- mipsdspr1
+ mipsdsp
mipsdspr2
msa
"
intrinsics_neon
"
+COMPLEX_FUNCS="
+ cabs
+ cexp
+"
+
MATH_FUNCS="
atanf
atan2f
exp2
exp2f
expf
+ hypot
isinf
isnan
ldexpf
CONDITION_VARIABLE_Ptr
socklen_t
struct_addrinfo
- struct_dcadec_exss_info_matrix_encoding
struct_group_source_req
struct_ip_mreq_source
struct_ipv6_mreq
$ARCH_FEATURES
$ATOMICS_LIST
$BUILTIN_LIST
+ $COMPLEX_FUNCS
$HAVE_LIST_CMDLINE
$HAVE_LIST_PUB
$HEADERS_LIST
fmtconvert
frame_thread_encoder
g722dsp
- gcrypt
- gmp
golomb
gplv3
h263dsp
assert_level
build_suffix
cc
+ objcc
cpu
cross_prefix
custom_allocator
CMDLINE_APPEND="
extra_cflags
extra_cxxflags
+ extra_objcflags
host_cppflags
"
map 'eval ${v}_inline_deps=inline_asm' $ARCH_EXT_LIST_ARM
mipsfpu_deps="mips"
-mipsdspr1_deps="mips"
+mipsdsp_deps="mips"
mipsdspr2_deps="mips"
mips32r2_deps="mips"
-mips32r5_deps="mips"
mips64r6_deps="mips"
msa_deps="mips"
mmi_deps="mips"
vc1_mmal_decoder_select="vc1_decoder"
vc1_qsv_hwaccel_deps="libmfx"
vc1_qsv_hwaccel_select="qsvdec_vc1"
+vp9_d3d11va_hwaccel_deps="dxva2 DXVA_PicParams_VP9"
+vp9_d3d11va_hwaccel_select="vp9_decoder"
+vp9_dxva2_hwaccel_deps="dxva2 DXVA_PicParams_VP9"
+vp9_dxva2_hwaccel_select="vp9_decoder"
wmv3_crystalhd_decoder_select="crystalhd"
wmv3_d3d11va_hwaccel_select="vc1_d3d11va_hwaccel"
wmv3_dxva2_hwaccel_select="vc1_dxva2_hwaccel"
sctp_protocol_select="network"
srtp_protocol_select="rtp_protocol"
tcp_protocol_select="network"
-tls_gnutls_protocol_deps="gnutls !tls_securetransport_protocol"
+tls_gnutls_protocol_deps="gnutls !tls_schannel_protocol !tls_securetransport_protocol"
tls_gnutls_protocol_select="tcp_protocol"
-tls_openssl_protocol_deps="openssl !tls_securetransport_protocol !tls_gnutls_protocol"
+tls_openssl_protocol_deps="openssl !tls_schannel_protocol !tls_securetransport_protocol !tls_gnutls_protocol"
tls_openssl_protocol_select="tcp_protocol"
+tls_schannel_protocol_deps="schannel"
+tls_schannel_protocol_select="tcp_protocol"
tls_securetransport_protocol_deps="securetransport"
tls_securetransport_protocol_select="tcp_protocol"
-tls_protocol_deps_any="tls_securetransport_protocol tls_gnutls_protocol tls_openssl_protocol"
+tls_protocol_deps_any="tls_schannel_protocol tls_securetransport_protocol tls_gnutls_protocol tls_openssl_protocol"
udp_protocol_select="network"
udplite_protocol_select="network"
unix_protocol_deps="sys_un_h"
unix_protocol_select="network"
# filters
+aemphasis_filter_deps="cabs cexp"
amovie_filter_deps="avcodec avformat"
aresample_filter_deps="swresample"
ass_filter_deps="libass"
CC_O='-o $@'
CXX_C='-c'
CXX_O='-o $@'
+OBJCC_C='-c'
+OBJCC_E='-E -o $@'
+OBJCC_O='-o $@'
LD_O='-o $@'
LD_LIB='-l%'
LD_PATH='-L'
warn "Unknown C compiler $cc, unable to select optimal CFLAGS"
: ${as_default:=$cc}
+: ${objcc_default:=$cc}
: ${dep_cc_default:=$cc}
: ${ld_default:=$cc}
: ${host_ld_default:=$host_cc}
-set_default ar as dep_cc ld host_ld windres
+set_default ar as objcc dep_cc ld host_ld windres
probe_cc as "$as"
asflags_filter=$_flags_filter
add_asflags $_flags $_cflags
set_ccvars AS
+probe_cc objcc "$objcc"
+objcflags_filter=$_flags_filter
+add_objcflags $_flags $_cflags
+set_ccvars OBJC
+
probe_cc ld "$ld"
ldflags_filter=$_flags_filter
add_ldflags $_flags $_ldflags
add_cflags $extra_cflags
add_cxxflags $extra_cxxflags
+add_objcflags $extra_objcflags
add_asflags $extra_cflags
if test -n "$sysroot"; then
case $cpu in
24kc)
- disable mips32r5
disable mips64r6
disable mipsfpu
- disable mipsdspr1
+ disable mipsdsp
disable mipsdspr2
disable msa
;;
24kf*)
- disable mips32r5
disable mips64r6
- disable mipsdspr1
+ disable mipsdsp
disable mipsdspr2
disable msa
;;
24kec|34kc|1004kc)
- disable mips32r5
disable mips64r6
disable mipsfpu
disable mipsdspr2
disable msa
;;
24kef*|34kf*|1004kf*)
- disable mips32r5
disable mips64r6
disable mipsdspr2
disable msa
;;
74kc)
- disable mips32r5
disable mips64r6
disable mipsfpu
disable msa
;;
74kf)
- disable mips32r5
disable mips64r6
disable msa
;;
p5600)
disable mips64r6
- disable mipsdspr1
+ disable mipsdsp
disable mipsdspr2
-
- check_cflags "-mtune=p5600"
+ check_cflags "-mtune=p5600" &&
+ check_cflags "-mfp64 -msched-weight -mload-store-pairs -funroll-loops" &&
+ add_asflags "-mfp64"
;;
i6400)
- disable mips32r5
- disable mipsdspr1
+ disable mipsdsp
disable mipsdspr2
disable mipsfpu
loongson*)
disable mipsfpu
disable mips32r2
- disable mips32r5
disable mips64r6
- disable mipsdspr1
+ disable mipsdsp
disable mipsdspr2
disable msa
enable local_aligned_8 local_aligned_16 local_aligned_32
esac
;;
generic)
- disable mips32r5
disable mips64r6
disable msa
;;
*)
disable mipsfpu
disable mips32r2
- disable mips32r5
disable mips64r6
- disable mipsdspr1
+ disable mipsdsp
disable mipsdspr2
disable msa
;;
enabled_any pic shared x86_64 ||
{ check_cflags -mdynamic-no-pic && add_asflags -mdynamic-no-pic; }
;;
+ msys*)
+ die "Native MSYS builds are discouraged, please use the MINGW environment.";
+ ;;
mingw32*|mingw64*)
if test $target_os = "mingw32ce"; then
disable network
enabled gpl && die_license_disabled_gpl nonfree libfdk_aac
enabled gpl && die_license_disabled_gpl nonfree openssl
+die_license_disabled version3 gmp
die_license_disabled version3 libopencore_amrnb
die_license_disabled version3 libopencore_amrwb
die_license_disabled version3 libsmbclient
enabled mmi && check_inline_asm mmi '"punpcklhw $f0, $f0, $f0"'
# Enable minimum ISA based on selected options
- if enabled mips64 && (enabled mipsdspr1 || enabled mipsdspr2); then
+ if enabled mips64 && (enabled mipsdsp || enabled mipsdspr2); then
add_cflags "-mips64r2"
add_asflags "-mips64r2"
elif enabled mips64 && enabled mipsfpu && disabled loongson2 && disabled loongson3; then
add_cflags "-mips64"
add_asflags "-mips64"
- elif enabled mipsdspr1 || enabled mipsdspr2; then
+ elif enabled mipsdsp || enabled mipsdspr2; then
add_cflags "-mips32r2 -mfp32"
add_asflags "-mips32r2 -mfp32"
- elif enabled mips32r5 || enabled mips64r6; then
+ elif enabled mips64r6; then
check_cflags "-mfp64"
check_ldflags "-mfp64"
fi
- enabled mips32r5 && check_cflags "-mips32r5 -msched-weight -mload-store-pairs -funroll-loops" &&
- check_ldflags "-mips32r5" &&
- check_inline_asm mips32r5 '"ulw $t0, ($t1)"'
enabled mips64r6 && check_cflags "-mips64r6 -msched-weight -mload-store-pairs -funroll-loops" &&
check_ldflags "-mips64r6" &&
check_inline_asm mips64r6 '"aui $t0, $t1, 1"'
- enabled mipsdspr1 && add_cflags "-mdsp" && add_asflags "-mdsp" &&
- check_inline_asm mipsdspr1 '"addu.qb $t0, $t1, $t2"'
+ enabled mipsdsp && add_cflags "-mdsp" && add_asflags "-mdsp" &&
+ check_inline_asm mipsdsp '"addu.qb $t0, $t1, $t2"'
enabled mipsdspr2 && add_cflags "-mdspr2" && add_asflags "-mdspr2" &&
check_inline_asm mipsdspr2 '"absq_s.qb $t0, $t1"'
enabled mipsfpu && add_cflags "-mhard-float" && add_asflags "-mhard-float" &&
enabled msa && check_cflags "-mmsa" && check_ldflags "-mmsa" &&
check_inline_asm msa '"addvi.b $w0, $w1, 1"'
- enabled mips32r5 && add_asflags "-mips32r5 -mfp64"
enabled mips64r6 && add_asflags "-mips64r6 -mfp64"
enabled msa && add_asflags "-mmsa"
check_struct "sys/time.h sys/resource.h" "struct rusage" ru_maxrss
check_type "windows.h dxva.h" "DXVA_PicParams_HEVC" -DWINAPI_FAMILY=WINAPI_FAMILY_DESKTOP_APP -D_CRT_BUILD_DESKTOP_APP=0
+check_type "windows.h dxva.h" "DXVA_PicParams_VP9" -DWINAPI_FAMILY=WINAPI_FAMILY_DESKTOP_APP -D_CRT_BUILD_DESKTOP_APP=0
check_type "windows.h d3d11.h" "ID3D11VideoDecoder"
check_type "windows.h d3d11.h" "ID3D11VideoContext"
check_type "d3d9.h dxva2api.h" DXVA2_ConfigPictureDecode -D_WIN32_WINNT=0x0602
atan2f_args=2
copysign_args=2
+hypot_args=2
ldexpf_args=2
powf_args=2
eval check_mathfunc $func \${${func}_args:-1}
done
+for func in $COMPLEX_FUNCS; do
+ eval check_complexfunc $func \${${func}_args:-1}
+done
+
# these are off by default, so fail if requested and not available
-enabled avfoundation_indev && { check_header_oc AVFoundation/AVFoundation.h || disable avfoundation_indev; }
+enabled avfoundation_indev && { check_header_objcc AVFoundation/AVFoundation.h || disable avfoundation_indev; }
enabled avfoundation_indev && { check_lib2 CoreGraphics/CoreGraphics.h CGGetActiveDisplayList -framework CoreGraphics ||
check_lib2 ApplicationServices/ApplicationServices.h CGGetActiveDisplayList -framework ApplicationServices; }
enabled avisynth && { { check_lib2 "windows.h" LoadLibrary; } ||
enabled chromaprint && require chromaprint chromaprint.h chromaprint_get_version -lchromaprint
enabled decklink && { check_header DeckLinkAPI.h || die "ERROR: DeckLinkAPI.h header not found"; }
enabled frei0r && { check_header frei0r.h || die "ERROR: frei0r.h header not found"; }
+enabled gcrypt && require2 gcrypt gcrypt.h gcry_mpi_new -lgcrypt
+enabled gmp && require2 gmp gmp.h mpz_export -lgmp
enabled gnutls && require_pkg_config gnutls gnutls/gnutls.h gnutls_global_init
enabled ladspa && { check_header ladspa.h || die "ERROR: ladspa.h header not found"; }
enabled libiec61883 && require libiec61883 libiec61883/iec61883.h iec61883_cmp_connect -lraw1394 -lavc1394 -lrom1394 -liec61883
{ check_lib celt/celt.h celt_decoder_create_custom -lcelt0 ||
die "ERROR: libcelt must be installed and version must be >= 0.11.0."; }
enabled libcaca && require_pkg_config caca caca.h caca_create_canvas
-enabled libdcadec && require_pkg_config dcadec libdcadec/dca_context.h dcadec_context_create &&
- check_struct libdcadec/dca_context.h "struct dcadec_exss_info" matrix_encoding
+enabled libdcadec && require_pkg_config "dcadec >= 0.1.0" libdcadec/dca_context.h dcadec_context_create
enabled libfaac && require2 libfaac "stdint.h faac.h" faacEncGetVersion -lfaac
enabled libfdk_aac && { use_pkg_config fdk-aac "fdk-aac/aacenc_lib.h" aacEncOpen ||
{ require libfdk_aac fdk-aac/aacenc_lib.h aacEncOpen -lfdk-aac &&
check_lib openssl/ssl.h SSL_library_init -lssl32 -leay32 ||
check_lib openssl/ssl.h SSL_library_init -lssl -lcrypto -lws2_32 -lgdi32 ||
die "ERROR: openssl not found"; }
-enabled qtkit_indev && { check_header_oc QTKit/QTKit.h || disable qtkit_indev; }
-
-if enabled gnutls; then
- { check_lib2 gmp.h mpz_export -lgmp && enable gmp; } ||
- { check_lib gcrypt.h gcry_mpi_new -lgcrypt && enable gcrypt; }
-fi
+enabled qtkit_indev && { check_header_objcc QTKit/QTKit.h || disable qtkit_indev; }
# libdc1394 check
if enabled libdc1394; then
check_lib2 "Security/SecureTransport.h Security/Security.h" "SSLCreateContext SecItemImport" "-Wl,-framework,CoreFoundation -Wl,-framework,Security" &&
enable securetransport; }
+disabled schannel || { check_func_headers "windows.h Security.h" InitializeSecurityContext -DSECURITY_WIN32 -lSecur32 &&
+ enable schannel && add_extralibs -lSecur32; }
+
makeinfo --version > /dev/null 2>&1 && enable makeinfo || disable makeinfo
enabled makeinfo \
&& [ 0$(makeinfo --version | grep "texinfo" | sed 's/.*texinfo[^0-9]*\([0-9]*\)\..*/\1/') -ge 5 ] \
fi
if enabled mips; then
echo "MIPS FPU enabled ${mipsfpu-no}"
- echo "MIPS32R5 enabled ${mips32r5-no}"
echo "MIPS64R6 enabled ${mips64r6-no}"
- echo "MIPS DSP R1 enabled ${mipsdspr1-no}"
+ echo "MIPS DSP R1 enabled ${mipsdsp-no}"
echo "MIPS DSP R2 enabled ${mipsdspr2-no}"
echo "MIPS MSA enabled ${msa-no}"
echo "LOONGSON MMI enabled ${mmi-no}"
CC=$cc
CXX=$cxx
AS=$as
+OBJCC=$objcc
LD=$ld
DEPCC=$dep_cc
DEPCCFLAGS=$DEPCCFLAGS \$(CPPFLAGS)
CPPFLAGS=$CPPFLAGS
CFLAGS=$CFLAGS
CXXFLAGS=$CXXFLAGS
+OBJCFLAGS=$OBJCFLAGS
ASFLAGS=$ASFLAGS
AS_C=$AS_C
AS_O=$AS_O
+OBJCC_C=$OBJCC_C
+OBJCC_E=$OBJCC_E
+OBJCC_O=$OBJCC_O
CC_C=$CC_C
CC_E=$CC_E
CC_O=$CC_O