--enable-pic build position-independent code
--enable-thumb compile for Thumb instruction set
--enable-lto use link-time optimization
+ --env="ENV=override" override the environment variables
Advanced options (experts only):
--malloc-prefix=PREFIX prefix malloc and related names with PREFIX
Optimization options (experts only):
--disable-asm disable all assembly optimizations
--disable-altivec disable AltiVec optimizations
+ --disable-vsx disable VSX optimizations
+ --disable-power8 disable POWER8 optimizations
--disable-amd3dnow disable 3DNow! optimizations
--disable-amd3dnowext disable 3DNow! extended optimizations
--disable-mmx disable MMX optimizations
pkg_cflags=$($pkg_config --cflags $pkg_config_flags $pkg)
pkg_libs=$($pkg_config --libs $pkg_config_flags $pkg)
check_func_headers "$headers" "$funcs" $pkg_cflags $pkg_libs "$@" &&
- set_safe ${pkg}_cflags $pkg_cflags &&
- set_safe ${pkg}_libs $pkg_libs
+ set_safe "${pkg}_cflags" $pkg_cflags &&
+ set_safe "${pkg}_libs" $pkg_libs
}
check_exec(){
use_pkg_config(){
pkg="$1"
check_pkg_config "$@" || return 1
- add_cflags $(get_safe ${pkg}_cflags)
- add_extralibs $(get_safe ${pkg}_libs)
+ add_cflags $(get_safe "${pkg}_cflags")
+ add_extralibs $(get_safe "${pkg}_libs")
}
require_pkg_config(){
echo "long check_func(void) { return (long) FT_Init_FreeType; }"
echo "int main(void) { return 0; }"
} | check_ld "cc" $pkg_cflags $pkg_libs \
- && set_safe ${pkg}_cflags $pkg_cflags \
- && set_safe ${pkg}_libs $pkg_libs \
+ && set_safe "${pkg}_cflags" $pkg_cflags \
+ && set_safe "${pkg}_libs" $pkg_libs \
|| die "ERROR: $pkg not found"
- add_cflags $(get_safe ${pkg}_cflags)
- add_extralibs $(get_safe ${pkg}_libs)
+ add_cflags $(get_safe "${pkg}_cflags")
+ add_extralibs $(get_safe "${pkg}_libs")
}
hostcc_e(){
altivec
dcbzl
ldbrx
+ power8
ppc4xx
vsx
"
TYPES_LIST="
CONDITION_VARIABLE_Ptr
- DXVA_PicParams_HEVC
- ID3D11VideoDecoder
socklen_t
struct_addrinfo
struct_group_source_req
$TYPES_LIST
atomics_native
dos_paths
- d3d11_cobj
- d3d11va_lib
dxva2api_cobj
dxva2_lib
libc_msvcrt
fmtconvert
frame_thread_encoder
gcrypt
+ gmp
golomb
gplv3
h263dsp
mpegaudiodsp
mpegvideo
mpegvideoenc
- nettle
pixblockdsp
qpeldsp
qsv
cxx
dep_cc
doxygen
+ env
extra_version
gas
host_cc
dcbzl_deps="ppc"
ldbrx_deps="ppc"
ppc4xx_deps="ppc"
-vsx_deps="ppc"
+vsx_deps="altivec"
+power8_deps="vsx"
cpunop_deps="i686"
x86_64_select="i686"
# hardware accelerators
crystalhd_deps="libcrystalhd_libcrystalhd_if_h"
d3d11va_deps="d3d11_h dxva_h ID3D11VideoDecoder"
-dxva2_deps="dxva2api_h"
+dxva2_deps="dxva2api_h DXVA2_ConfigPictureDecode"
vaapi_deps="va_va_h"
vda_deps="VideoDecodeAcceleration_VDADecoder_h pthreads"
vda_extralibs="-framework CoreFoundation -framework VideoDecodeAcceleration -framework QuartzCore"
libutvideo_encoder_deps="libutvideo"
libzvbi_teletext_decoder_deps="libzvbi"
nvenc_encoder_deps="nvenc"
-nvenc_h265_encoder_deps="nvenc"
+nvenc_h264_encoder_deps="nvenc"
+nvenc_hevc_encoder_deps="nvenc"
# demuxers / muxers
ac3_demuxer_select="ac3_parser"
# protocols
bluray_protocol_deps="libbluray"
ffrtmpcrypt_protocol_deps="!librtmp_protocol"
-ffrtmpcrypt_protocol_deps_any="gcrypt nettle openssl"
+ffrtmpcrypt_protocol_deps_any="gcrypt gmp openssl"
ffrtmpcrypt_protocol_select="tcp_protocol"
ffrtmphttp_protocol_deps="!librtmp_protocol"
ffrtmphttp_protocol_select="http_protocol"
sctp_protocol_select="network"
srtp_protocol_select="rtp_protocol"
tcp_protocol_select="network"
-tls_securetransport_protocol_deps="securetransport"
tls_gnutls_protocol_deps="gnutls !tls_securetransport_protocol"
+tls_gnutls_protocol_select="tcp_protocol"
tls_openssl_protocol_deps="openssl !tls_securetransport_protocol !tls_gnutls_protocol"
+tls_openssl_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_select="tcp_protocol"
udp_protocol_select="network"
udplite_protocol_select="network"
unix_protocol_deps="sys_un_h"
esac
done
+for e in $env; do
+ eval "export $e"
+done
+
disabled logging && logfile=/dev/null
echo "# $0 $FFMPEG_CONFIGURATION" > $logfile
elif enabled ppc; then
disable ldbrx
- disable vsx
case $(tolower $cpu) in
601|ppc601|powerpc601)
;;
g4|745*|ppc745*|powerpc745*)
cpuflags="-mcpu=7450"
+ disable vsx
;;
74*|ppc74*|powerpc74*)
cpuflags="-mcpu=7400"
+ disable vsx
;;
g5|970|ppc970|powerpc970)
cpuflags="-mcpu=970"
+ disable vsx
;;
- power[3-8]*)
+ power[3-6]*)
+ cpuflags="-mcpu=$cpu"
+ disable vsx
+ ;;
+ power[7-8]*)
cpuflags="-mcpu=$cpu"
;;
cell)
cpuflags="-mcpu=cell"
enable ldbrx
+ disable vsx
;;
e500mc)
cpuflags="-mcpu=e500mc"
EOF
od -t x1 $TMPO | grep -q '42 *49 *47 *45' && enable bigendian
-if [ "$cpu" = "power7" ] || [ "$cpu" = "power8" ] || enabled ppc64; then
- if ! enabled bigendian && enabled altivec ;then
- enable vsx
- fi
-fi
check_gas() {
log "check_gas using '$as' as AS"
fi
if enabled vsx; then
- check_cflags -mvsx
+ check_cflags -mvsx &&
+ check_builtin vec_vsx_ld "altivec.h" "__builtin_vec_vsx_ld" || disable vsx
fi
+
+ if enabled power8; then
+ check_cpp_condition "altivec.h" "defined(_ARCH_PWR8)" || disable power8
+ fi
+
elif enabled x86; then
check_builtin rdtsc intrin.h "__rdtsc()"
check_builtin MemoryBarrier windows.h "MemoryBarrier()"
check_builtin sarestart signal.h "SA_RESTART"
check_builtin sync_val_compare_and_swap "" "int *ptr; int oldval, newval; __sync_val_compare_and_swap(ptr, oldval, newval)"
+check_builtin gmtime_r time.h "time_t *time; struct tm *tm; gmtime_r(time, tm)"
+check_builtin localtime_r time.h "time_t *time; struct tm *tm; localtime_r(time, tm)"
check_func_headers malloc.h _aligned_malloc && enable aligned_malloc
check_func ${malloc_prefix}memalign && enable memalign
check_func getopt
check_func getrusage
check_func gettimeofday
-check_func gmtime_r
check_func isatty
-check_func localtime_r
check_func mach_absolute_time
check_func mkstemp
check_func mmap
check_type "windows.h dxva.h" "DXVA_PicParams_HEVC"
check_type "windows.h d3d11.h" "ID3D11VideoDecoder"
+check_type "d3d9.h dxva2api.h" DXVA2_ConfigPictureDecode -D_WIN32_WINNT=0x0600
if ! disabled w32threads && ! enabled pthreads; then
check_func_headers "windows.h process.h" _beginthreadex &&
enabled libcaca && require_pkg_config caca caca.h caca_create_canvas
enabled libdcadec && require_pkg_config dcadec libdcadec/dca_context.h dcadec_context_create
enabled libfaac && require2 libfaac "stdint.h faac.h" faacEncGetVersion -lfaac
-enabled libfdk_aac && require libfdk_aac fdk-aac/aacenc_lib.h aacEncOpen -lfdk-aac
+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 &&
+ warn "using libfdk without pkg-config"; } }
flite_libs="-lflite_cmu_time_awb -lflite_cmu_us_awb -lflite_cmu_us_kal -lflite_cmu_us_kal16 -lflite_cmu_us_rms -lflite_cmu_us_slt -lflite_usenglish -lflite_cmulex -lflite"
enabled libflite && require2 libflite "flite/flite.h" flite_init $flite_libs
enabled fontconfig && enable libfontconfig
enabled qtkit_indev && { check_header_oc QTKit/QTKit.h || disable qtkit_indev; }
if enabled gnutls; then
- { check_lib nettle/bignum.h nettle_mpz_get_str_256 -lnettle -lhogweed -lgmp && enable nettle; } ||
+ { check_lib2 gmp.h mpz_export -lgmp && enable gmp; } ||
{ check_lib gcrypt.h gcry_mpi_new -lgcrypt && enable gcrypt; }
fi
enabled sdl && add_cflags $sdl_cflags && add_extralibs $sdl_libs
disabled securetransport || { check_func SecIdentityCreate "-Wl,-framework,CoreFoundation -Wl,-framework,Security" &&
- check_lib2 Security/SecureTransport.h SSLCreateContext "-Wl,-framework,CoreFoundation -Wl,-framework,Security" &&
+ check_lib2 "Security/SecureTransport.h Security/Security.h" "SSLCreateContext SecItemImport" "-Wl,-framework,CoreFoundation -Wl,-framework,Security" &&
enable securetransport; }
makeinfo --version > /dev/null 2>&1 && enable makeinfo || disable makeinfo
int main(void) { IDirectXVideoDecoder *o = NULL; IDirectXVideoDecoder_Release(o); return 0; }
EOF
-enabled d3d11_h &&
- check_cc <<EOF && enable d3d11_cobj
-#define _WIN32_WINNT 0x0600
-#define COBJMACROS
-#include <windows.h>
-#include <d3d11.h>
-int main(void) { ID3D11VideoDecoder *o = NULL; ID3D11VideoDecoder_Release(o); return 0; }
-EOF
-
enabled vaapi &&
check_lib va/va.h vaInitialize -lva ||
disable vaapi
disable posix_memalign
fi
-enabled_all d3d11va d3d11_cobj CoTaskMemFree &&
- prepend ffmpeg_libs $($ldflags_filter "-lole32") &&
- enable d3d11va_lib
-
enabled_all dxva2 dxva2api_cobj CoTaskMemFree &&
prepend ffmpeg_libs $($ldflags_filter "-lole32" "-luser32") &&
enable dxva2_lib
fi
if enabled ppc; then
echo "AltiVec enabled ${altivec-no}"
+ echo "VSX enabled ${vsx-no}"
+ echo "POWER8 enabled ${power8-no}"
echo "PPC 4xx optimizations ${ppc4xx-no}"
- echo "PPC VSX optimizations ${vsx-no}"
echo "dcbzl available ${dcbzl-no}"
fi
echo "debug symbols ${debug-no}"