--enable-libwavpack enable wavpack encoding via libwavpack [no]
--enable-libwebp enable WebP encoding via libwebp [no]
--enable-libx264 enable H.264 encoding via x264 [no]
+ --enable-libx265 enable HEVC encoding via x265 [no]
--enable-libxavs enable AVS encoding via xavs [no]
--enable-libxvid enable Xvid encoding via xvidcore,
native MPEG-4/Xvid encoder exists [no]
--target-path=DIR path to view of build directory on target
--target-samples=DIR path to samples directory on target
--toolchain=NAME set tool defaults according to NAME
+ --pkg-config=PKGCONFIG use pkg-config tool PKGCONFIG [$pkg_config_default]
--nm=NM use nm tool
--ar=AR use archive tool AR [$ar_default]
--as=AS use assembler AS [$as_default]
--disable-sse4 disable SSE4 optimizations
--disable-sse42 disable SSE4.2 optimizations
--disable-avx disable AVX optimizations
+ --disable-xop disable XOP optimizations
+ --disable-fma3 disable FMA3 optimizations
--disable-fma4 disable FMA4 optimizations
--disable-avx2 disable AVX2 optimizations
--disable-armv5te disable armv5te optimizations
check_code ld "$headers" "$builtin" "$@" && enable "$name"
}
+check_compile_assert(){
+ log check_compile_assert "$@"
+ name=$1
+ headers=$2
+ condition=$3
+ shift 3
+ disable "$name"
+ check_code cc "$headers" "char c[2 * !!($condition) - 1]" "$@" && enable "$name"
+}
+
require(){
name="$1"
header="$2"
"
EXAMPLE_LIST="
+ avcodec_example
+ filter_audio_example
+ metadata_example
output_example
transcode_aac_example
"
libwavpack
libwebp
libx264
+ libx265
libxavs
libxvid
openssl
vda
vdpau
"
+
LIBRARY_LIST="
avcodec
avdevice
neon_clobber_test
network
nonfree
- pod2man
pic
+ pod2man
rdft
runtime_cpudetect
safe_bitstream_reader
xmm_clobber_test
"
-THREADS_LIST='
+THREADS_LIST="
pthreads
w32threads
-'
+"
-ATOMICS_LIST='
+ATOMICS_LIST="
atomics_gcc
atomics_suncc
atomics_win32
-'
+"
-ARCH_LIST='
+ARCH_LIST="
aarch64
alpha
arm
x86
x86_32
x86_64
-'
+"
-ARCH_EXT_LIST_ARM='
+ARCH_EXT_LIST_ARM="
armv5te
armv6
armv6t2
neon
vfp
vfpv3
-'
+"
-ARCH_EXT_LIST_X86='
+ARCH_EXT_LIST_X86_SIMD="
amd3dnow
amd3dnowext
avx
avx2
+ fma3
fma4
- i686
mmx
mmxext
sse
sse4
sse42
ssse3
-'
+ xop
+"
+
+ARCH_EXT_LIST_X86="
+ $ARCH_EXT_LIST_X86_SIMD
+ cpunop
+ i686
+"
ARCH_EXT_LIST="
$ARCH_EXT_LIST_ARM
vis
"
-HAVE_LIST_CMDLINE='
+HAVE_LIST_CMDLINE="
inline_asm
symver
yasm
-'
+"
-HAVE_LIST_PUB='
+HAVE_LIST_PUB="
bigendian
fast_unaligned
-'
+"
MATH_FUNCS="
atanf
$ARCH_EXT_LIST
$(add_suffix _external $ARCH_EXT_LIST)
$(add_suffix _inline $ARCH_EXT_LIST)
+ $ATOMICS_LIST
$HAVE_LIST_CMDLINE
$HAVE_LIST_PUB
- $THREADS_LIST
- $ATOMICS_LIST
$MATH_FUNCS
+ $THREADS_LIST
aligned_malloc
aligned_stack
alsa_asoundlib_h
altivec_h
arpa_inet_h
asm_mod_q
- asm_mod_y
atomic_cas_ptr
atomics_native
attribute_may_alias
cdio_paranoia_paranoia_h
closesocket
CommandLineToArgvW
- cpunop
CryptGenRandom
dcbzl
dev_bktr_ioctl_bt848_h
fast_clz
fast_cmov
fcntl
+ flt_lim
fork
getaddrinfo
gethrtime
GetProcessAffinityMask
GetProcessMemoryInfo
GetProcessTimes
- GetSystemTimeAsFileTime
getrusage
getservbyport
+ GetSystemTimeAsFileTime
gettimeofday
gnu_as
gsm_h
ibm_asm
inet_aton
- io_h
inline_asm_labels
+ io_h
isatty
jack_port_get_latency_range
ldbrx
local_aligned_8
localtime_r
loongson
+ mach_absolute_time
+ mach_mach_time_h
machine_ioctl_bt848_h
machine_ioctl_meteor_h
machine_rw_barrier
soundcard_h
strerror_r
strptime
- strtok_r
struct_addrinfo
struct_group_source_req
struct_ip_mreq_source
symver_asm_label
symver_gnu_asm
sync_val_compare_and_swap
- sysconf
- sysctl
sys_mman_h
sys_param_h
sys_resource_h
sys_time_h
sys_un_h
sys_videoio_h
+ sysconf
+ sysctl
threads
unistd_h
usleep
optimizations
"
-PATHS_LIST='
+PATHS_LIST="
bindir
datadir
docdir
mandir
prefix
shlibdir
-'
+"
CMDLINE_SET="
$PATHS_LIST
sse4_deps="ssse3"
sse42_deps="sse4"
avx_deps="sse42"
+xop_deps="avx"
+fma3_deps="avx"
fma4_deps="avx"
avx2_deps="avx"
mmx_inline_deps="inline_asm"
mmx_suggest="mmx_external mmx_inline"
-for ext in $(filter_out mmx $ARCH_EXT_LIST_X86); do
+for ext in $(filter_out mmx $ARCH_EXT_LIST_X86_SIMD); do
eval dep=\$${ext}_deps
eval ${ext}_external_deps='"${dep}_external"'
eval ${ext}_inline_deps='"${dep}_inline"'
atomics_suncc_if="atomic_cas_ptr machine_rw_barrier"
atomics_win32_if="MemoryBarrier"
atomics_native_if_any="$ATOMICS_LIST"
+w32threads_deps="atomics_native"
threads_if_any="$THREADS_LIST"
# subsystems
als_decoder_select="dsputil"
amrnb_decoder_select="lsp"
amrwb_decoder_select="lsp"
-amv_decoder_select="dsputil hpeldsp"
+amv_decoder_select="sp5x_decoder"
ape_decoder_select="dsputil"
asv1_decoder_select="dsputil"
asv1_encoder_select="dsputil"
eatqi_decoder_select="aandcttables error_resilience mpegvideo"
ffv1_decoder_select="dsputil golomb rangecoder"
ffv1_encoder_select="dsputil rangecoder"
-ffvhuff_decoder_select="dsputil"
-ffvhuff_encoder_select="dsputil huffman"
+ffvhuff_decoder_select="huffyuv_decoder"
+ffvhuff_encoder_select="huffyuv_encoder"
+fic_decoder_select="dsputil golomb"
flac_decoder_select="golomb"
flac_encoder_select="dsputil golomb lpc"
flashsv_decoder_deps="zlib"
hevc_decoder_select="dsputil golomb videodsp"
huffyuv_decoder_select="dsputil"
huffyuv_encoder_select="dsputil huffman"
-iac_decoder_select="dsputil fft mdct sinewin"
+iac_decoder_select="imc_decoder"
imc_decoder_select="dsputil fft mdct sinewin"
indeo3_decoder_select="hpeldsp"
interplay_video_decoder_select="hpeldsp"
-jpegls_decoder_select="dsputil golomb hpeldsp"
+jpegls_decoder_select="golomb mjpeg_decoder"
jpegls_encoder_select="golomb"
jv_decoder_select="dsputil"
lagarith_decoder_select="dsputil"
metasound_decoder_select="lsp mdct sinewin"
mimic_decoder_select="dsputil hpeldsp"
mjpeg_decoder_select="dsputil hpeldsp"
-mjpegb_decoder_select="dsputil hpeldsp"
mjpeg_encoder_select="aandcttables dsputil mpegvideoenc"
+mjpegb_decoder_select="mjpeg_decoder"
mlp_decoder_select="dsputil mlp_parser"
motionpixels_decoder_select="dsputil"
mp1_decoder_select="mpegaudio"
msmpeg4v3_decoder_select="h263_decoder"
msmpeg4v3_encoder_select="h263_encoder"
mss2_decoder_select="error_resilience vc1_decoder"
-mxpeg_decoder_select="dsputil hpeldsp"
+mxpeg_decoder_select="mjpeg_decoder"
nellymoser_decoder_select="mdct sinewin"
nellymoser_encoder_select="audio_frame_queue mdct sinewin"
nuv_decoder_select="dsputil lzo"
rv40_decoder_select="error_resilience golomb h264chroma h264pred h264qpel mpegvideo videodsp"
shorten_decoder_select="golomb"
sipr_decoder_select="lsp"
-sp5x_decoder_select="dsputil hpeldsp"
+sp5x_decoder_select="mjpeg_decoder"
svq1_decoder_select="hpeldsp"
svq1_encoder_select="aandcttables dsputil hpeldsp mpegvideoenc"
-svq3_decoder_select="golomb h264chroma h264dsp h264pred h264qpel hpeldsp mpegvideo videodsp"
-svq3_decoder_suggest="error_resilience zlib"
+svq3_decoder_select="h264_decoder hpeldsp mpegvideo"
+svq3_decoder_suggest="zlib"
tak_decoder_select="dsputil"
theora_decoder_select="vp3_decoder"
+thp_decoder_select="mjpeg_decoder"
tiff_decoder_suggest="zlib"
tiff_encoder_suggest="zlib"
-thp_decoder_select="dsputil hpeldsp"
truehd_decoder_select="mlp_decoder"
truemotion2_decoder_select="dsputil"
truespeech_decoder_select="dsputil"
# parsers
h264_parser_select="golomb h264chroma h264dsp h264pred h264qpel videodsp"
-mpeg4video_parser_select="error_resilience mpegvideo"
+mpeg4video_parser_select="error_resilience h263dsp mpegvideo"
mpegvideo_parser_select="error_resilience mpegvideo"
vc1_parser_select="mpegvideo"
libwavpack_encoder_deps="libwavpack"
libwebp_encoder_deps="libwebp"
libx264_encoder_deps="libx264"
+libx265_encoder_deps="libx265"
libxavs_encoder_deps="libxavs"
libxvid_encoder_deps="libxvid"
ffrtmphttp_protocol_deps="!librtmp_protocol"
ffrtmphttp_protocol_select="http_protocol"
gopher_protocol_select="network"
-httpproxy_protocol_select="tcp_protocol"
http_protocol_select="tcp_protocol"
+httpproxy_protocol_select="tcp_protocol"
https_protocol_select="tls_protocol"
librtmp_protocol_deps="librtmp"
librtmpe_protocol_deps="librtmp"
cropdetect_filter_deps="gpl"
delogo_filter_deps="gpl"
drawtext_filter_deps="libfreetype"
-frei0r_filter_deps="frei0r dlopen strtok_r"
+frei0r_filter_deps="frei0r dlopen"
frei0r_filter_extralibs='$ldl'
-frei0r_src_filter_deps="frei0r dlopen strtok_r"
+frei0r_src_filter_deps="frei0r dlopen"
frei0r_src_filter_extralibs='$ldl'
hqdn3d_filter_deps="gpl"
interlace_filter_deps="gpl"
-resample_filter_deps="avresample"
ocv_filter_deps="libopencv"
+resample_filter_deps="avresample"
scale_filter_deps="swscale"
# examples
+avcodec_example_deps="avcodec avutil"
+filter_audio_example_deps="avfilter avutil"
+metadata_example_deps="avformat avutil"
output_example_deps="avcodec avformat avutil swscale"
transcode_aac_example_deps="avcodec avformat avresample"
fps_filter null_filter resample_filter scale_filter
setpts_filter trim_filter"
avplay_deps="avcodec avformat avresample swscale sdl"
+avplay_libs='$sdl_libs'
avplay_select="rdft"
avprobe_deps="avcodec avformat"
avserver_deps="avformat fork !shared"
avserver_select="ffm_muxer rtp_protocol rtsp_demuxer"
-avserver_extralibs='$ldl'
# documentation
pod2man_deps="doc"
add_cflags -fsanitize=thread -pie
add_ldflags -fsanitize=thread -pie
;;
+ clang-usan)
+ cc_default="clang"
+ add_cflags -fsanitize=undefined
+ add_ldflags -fsanitize=undefined
+ ;;
gcc-asan)
cc_default="gcc"
add_cflags -fsanitize=address
add_cflags -fsanitize=thread -pie -fPIC
add_ldflags -fsanitize=thread -pie -fPIC
;;
+ gcc-usan)
+ cc_default="gcc"
+ add_cflags -fsanitize=undefined
+ add_ldflags -fsanitize=undefined
+ ;;
valgrind-massif)
target_exec_default="valgrind"
target_exec_args="--alloc-fn=av_malloc --alloc-fn=av_mallocz"
add_ldflags -fprofile-arcs -ftest-coverage
;;
hardened)
- add_cflags -U_FORTIFY_SOURCE -D_FORTIFY_SOURCE=2 -fno-strict-overflow -fstack-protector-all
+ add_cflags -U_FORTIFY_SOURCE -D_FORTIFY_SOURCE=2 -fno-strict-overflow -fstack-protector-all
add_ldflags -Wl,-z,relro -Wl,-z,now
;;
?*)
check_64bit ppc ppc64 'sizeof(void *) > 4'
spic=$shared
;;
+ s390)
+ check_64bit s390 s390x 'sizeof(void *) > 4'
+ spic=$shared
+ ;;
sparc)
check_64bit sparc sparc64 'sizeof(void *) > 4'
spic=$shared
add_ldflags -Wl,-z,now # calls to libots crash without this
fi
+check_compile_assert flt_lim "float.h limits.h" "DBL_MAX == (double)DBL_MAX" ||
+ add_cppflags '-I\$(SRC_PATH)/compat/float'
+
esc(){
echo "$*" | sed 's/%/%25/g;s/:/%3a/g'
}
die_license_disabled gpl libcdio
die_license_disabled gpl libx264
+die_license_disabled gpl libx265
die_license_disabled gpl libxavs
die_license_disabled gpl libxvid
die_license_disabled gpl x11grab
$ARCH_EXT_LIST_ARM
check_inline_asm asm_mod_q '"add r0, %Q0, %R0" :: "r"((long long)0)'
- check_inline_asm asm_mod_y '"vmul.i32 d0, d0, %y0" :: "x"(0)'
[ $target_os != win32 ] && enabled_all armv6t2 shared !pic && enable_weak_pic
check_yasm "movbe ecx, [5]" && enable yasm ||
die "yasm/nasm not found or too old. Use --disable-yasm for a crippled build."
+ check_yasm "vpmacsdd xmm0, xmm1, xmm2, xmm3" || disable xop_external
+ check_yasm "vfmadd132ps ymm0, ymm1, ymm2" || disable fma3_external
check_yasm "vfmaddps ymm0, ymm1, ymm2, ymm3" || disable fma4_external
- check_yasm "CPU amdnop" && enable cpunop
+ check_yasm "CPU amdnop" || disable cpunop
fi
case "$cpu" in
check_type netinet/sctp.h "struct sctp_event_subscribe"
check_func getaddrinfo $network_extralibs
check_func getservbyport $network_extralibs
+ check_func inet_aton $network_extralibs
# Prefer arpa/inet.h over winsock2
if check_header arpa/inet.h ; then
check_func closesocket
check_func getrusage
check_struct "sys/time.h sys/resource.h" "struct rusage" ru_maxrss
check_func gettimeofday
-check_func inet_aton $network_extralibs
check_func isatty
check_func localtime_r
+check_func mach_absolute_time
check_func ${malloc_prefix}memalign && enable memalign
check_func mkstemp
check_func mmap
check_func setrlimit
check_func strerror_r
check_func strptime
-check_func strtok_r
check_func sched_getaffinity
check_builtin sync_val_compare_and_swap "" "int *ptr; int oldval, newval; __sync_val_compare_and_swap(ptr, oldval, newval)"
check_builtin machine_rw_barrier mbarrier.h "__machine_rw_barrier()"
check_header dxva.h
check_header dxva2api.h
check_header io.h
+check_header mach/mach_time.h
check_header malloc.h
check_header poll.h
check_header sys/mman.h
fi
fi
-for thread in $THREADS_LIST; do
- if enabled $thread; then
- test -n "$thread_type" &&
- die "ERROR: Only one thread type must be selected." ||
- thread_type="$thread"
- fi
-done
-
disabled zlib || check_lib zlib.h zlibVersion -lz || disable zlib
disabled bzlib || check_lib2 bzlib.h BZ2_bzlibVersion -lbz2 || disable bzlib
enabled libopencore_amrnb && require libopencore_amrnb opencore-amrnb/interf_dec.h Decoder_Interface_init -lopencore-amrnb
enabled libopencore_amrwb && require libopencore_amrwb opencore-amrwb/dec_if.h D_IF_init -lopencore-amrwb
enabled libopencv && require_pkg_config opencv opencv/cv.h cvCreateImageHeader
-enabled libopenjpeg && require libopenjpeg openjpeg.h opj_version -lopenjpeg
+enabled libopenjpeg && require_pkg_config libopenjpeg1 openjpeg.h opj_version
enabled libopus && require_pkg_config opus opus_multistream.h opus_multistream_decoder_create
enabled libpulse && require_pkg_config libpulse-simple pulse/simple.h pa_simple_new
enabled librtmp && require_pkg_config librtmp librtmp/rtmp.h RTMP_Socket
enabled libx264 && require libx264 x264.h x264_encoder_encode -lx264 &&
{ check_cpp_condition x264.h "X264_BUILD >= 118" ||
die "ERROR: libx264 version must be >= 0.118."; }
+enabled libx265 && require_pkg_config x265 x265.h x265_encoder_encode &&
+ { check_cpp_condition x265.h "X265_BUILD >= 9" ||
+ die "ERROR: libx265 version must be >= 9."; }
enabled libxavs && require libxavs xavs.h xavs_encoder_encode -lxavs
enabled libxvid && require libxvid xvid.h xvid_global -lxvidcore
enabled openssl && { check_lib openssl/ssl.h SSL_library_init -lssl -lcrypto ||
disable vdpau
enabled vdpau && enabled xlib &&
- check_lib2 "vdpau/vdpau.h vdpau/vdpau_x11.h" vdp_device_create_x11 -lvdpau &&
+ check_func_headers "vdpau/vdpau.h vdpau/vdpau_x11.h" vdp_device_create_x11 -lvdpau &&
+ prepend avconv_libs $($ldflags_filter "-lvdpau") &&
enable vdpau_x11
enabled debug && add_cflags -g"$debuglevel" && add_asflags -g"$debuglevel"
fi
fi
+case $as_type in
+ clang)
+ add_asflags -Qunused-arguments
+ ;;
+esac
+
+case $ld_type in
+ clang)
+ check_ldflags -Qunused-arguments
+ ;;
+esac
+
case $target_os in
osf1)
enabled ccc && add_ldflags '-Wl,-expect_unresolved,*'
! enabled_any memalign posix_memalign aligned_malloc &&
enabled_any $need_memalign && enable memalign_hack
+for thread in $THREADS_LIST; do
+ if enabled $thread; then
+ test -n "$thread_type" &&
+ die "ERROR: Only one thread type must be selected." ||
+ thread_type="$thread"
+ fi
+done
+
echo "install prefix $prefix"
echo "source path $source_path"
echo "C compiler $cc"
echo "SSE enabled ${sse-no}"
echo "SSSE3 enabled ${ssse3-no}"
echo "AVX enabled ${avx-no}"
+ echo "XOP enabled ${xop-no}"
+ echo "FMA3 enabled ${fma3-no}"
echo "FMA4 enabled ${fma4-no}"
echo "i686 features enabled ${i686-no}"
echo "CMOV is fast ${fast_cmov-no}"
TARGET_EXEC=$target_exec $target_exec_args
TARGET_PATH=$target_path
TARGET_SAMPLES=${target_samples:-\$(SAMPLES)}
-LIBS-avplay=$sdl_libs
CFLAGS-avplay=$sdl_cflags
ZLIB=$($ldflags_filter -lz)
LIB_INSTALL_EXTRA_CMD=$LIB_INSTALL_EXTRA_CMD
map 'get_version $v' $LIBRARY_LIST
+print_program_libs(){
+ eval "program_libs=\$${1}_libs"
+ eval echo "LIBS-${1}=${program_libs}" >> config.mak
+}
+
+map 'print_program_libs $v' $PROGRAM_LIST
+
cat > $TMPH <<EOF
/* Automatically generated by configure - do not modify! */
#ifndef LIBAV_CONFIG_H