2007-02-17 21:42:39 +00:00
#!/bin/sh
2002-05-18 23:13:26 +00:00
#
2011-03-17 17:02:14 +01:00
# FFmpeg configure script
2006-11-16 23:11:36 +00:00
#
2008-10-02 15:44:59 +00:00
# Copyright (c) 2000-2002 Fabrice Bellard
# Copyright (c) 2005-2008 Diego Biurrun
# Copyright (c) 2005-2008 Mans Rullgard
2002-05-18 23:13:26 +00:00
#
2003-10-18 18:47:06 +00:00
2008-10-02 15:44:24 +00:00
# Prevent locale nonsense from breaking basic text processing.
2008-10-12 15:56:22 +00:00
LC_ALL = C
export LC_ALL
2008-10-02 15:44:24 +00:00
2006-07-04 22:33:03 +00:00
# make sure we are running under a compatible shell
2006-11-14 22:48:20 +00:00
# try to make this part work with most shells
try_exec(){
2006-12-07 19:23:32 +00:00
echo "Trying shell $1 "
2008-05-15 11:37:29 +00:00
type " $1 " > /dev/null 2>& 1 && exec " $@ "
2006-11-14 22:48:20 +00:00
}
2006-08-03 22:27:38 +00:00
unset foo
2008-05-15 11:37:29 +00:00
( : ${ foo %%bar } ) 2> /dev/null
2006-12-07 19:23:32 +00:00
E1 = " $? "
2008-05-15 11:37:29 +00:00
( : ${ foo ? } ) 2> /dev/null
2006-12-07 19:23:32 +00:00
E2 = " $? "
if test " $E1 " != 0 || test " $E2 " = 0; then
echo "Broken shell detected. Trying alternatives."
2006-11-14 22:48:20 +00:00
export FF_CONF_EXEC
if test "0 $FF_CONF_EXEC " -lt 1; then
FF_CONF_EXEC = 1
try_exec bash " $0 " " $@ "
fi
if test "0 $FF_CONF_EXEC " -lt 2; then
FF_CONF_EXEC = 2
try_exec ksh " $0 " " $@ "
fi
if test "0 $FF_CONF_EXEC " -lt 3; then
FF_CONF_EXEC = 3
try_exec /usr/xpg4/bin/sh " $0 " " $@ "
2006-07-04 22:33:03 +00:00
fi
echo "No compatible shell script interpreter found."
2006-12-12 20:40:39 +00:00
echo "This configure script requires a POSIX-compatible shell"
2006-11-14 22:48:20 +00:00
echo "such as bash or ksh."
2011-03-17 17:02:14 +01:00
echo "THIS IS NOT A BUG IN FFMPEG, DO NOT REPORT IT AS SUCH."
2006-12-11 10:57:52 +00:00
echo "Instead, install a working POSIX-compatible shell."
2011-03-17 17:02:14 +01:00
echo "Disabling this configure test will create a broken FFmpeg."
2006-11-14 22:48:20 +00:00
if test " $BASH_VERSION " = '2.04.0(1)-release' ; then
echo "This bash version ( $BASH_VERSION ) is broken on your platform."
echo "Upgrade to a later version if available."
fi
2006-07-04 22:33:03 +00:00
exit 1
fi
2012-09-07 12:50:43 +01:00
test -d /usr/xpg4/bin && PATH = /usr/xpg4/bin:$PATH
2006-05-30 19:46:06 +00:00
show_help(){
2012-08-19 21:35:30 +02:00
cat <<EOF
2009-10-31 15:59:08 +00:00
Usage: configure [options]
Options: [defaults in brackets after descriptions]
2012-03-09 00:24:48 +01:00
Help options:
2009-10-31 15:59:08 +00:00
--help print this message
2016-11-06 18:33:05 +01:00
--quiet Suppress showing informative output
2012-03-09 00:24:48 +01:00
--list-decoders show all available decoders
--list-encoders show all available encoders
--list-hwaccels show all available hardware accelerators
--list-demuxers show all available demuxers
--list-muxers show all available muxers
--list-parsers show all available parsers
--list-protocols show all available protocols
--list-bsfs show all available bitstream filters
--list-indevs show all available input devices
--list-outdevs show all available output devices
--list-filters show all available filters
Standard options:
2017-05-03 12:51:48 +02:00
--logfile=FILE log tests and output to FILE [ffbuild/config.log]
2009-10-31 15:59:08 +00:00
--disable-logging do not log configure debug information
2012-11-11 21:37:50 +01:00
--fatal-warnings fail if any configure warning is generated
2016-10-25 22:47:00 +02:00
--prefix=PREFIX install in PREFIX [$prefix_default]
2009-10-31 15:59:08 +00:00
--bindir=DIR install binaries in DIR [PREFIX/bin]
2011-08-15 22:36:13 +02:00
--datadir=DIR install data files in DIR [PREFIX/share/ffmpeg]
2013-09-01 13:41:33 +02:00
--docdir=DIR install documentation in DIR [PREFIX/share/doc/ffmpeg]
2009-10-31 15:59:08 +00:00
--libdir=DIR install libs in DIR [PREFIX/lib]
2014-12-15 02:49:12 +01:00
--shlibdir=DIR install shared libs in DIR [LIBDIR]
2009-10-31 15:59:08 +00:00
--incdir=DIR install includes in DIR [PREFIX/include]
--mandir=DIR install man page in DIR [PREFIX/share/man]
2015-05-29 16:08:36 +02:00
--pkgconfigdir=DIR install pkg-config files in DIR [LIBDIR/pkgconfig]
2013-11-10 09:02:51 +01:00
--enable-rpath use rpath to allow installing libraries in paths
not part of the dynamic linker search path
2017-03-31 11:01:33 +02:00
use rpath when linking programs (USE WITH CARE)
2016-02-19 16:34:30 +01:00
--install-name-dir=DIR Darwin directory name for installed targets
2009-10-31 15:59:08 +00:00
2012-03-09 00:24:48 +01:00
Licensing options:
2009-10-31 15:59:08 +00:00
--enable-gpl allow use of GPL code, the resulting libs
and binaries will be under GPL [no]
--enable-version3 upgrade (L)GPL to version 3 [no]
--enable-nonfree allow use of nonfree code, the resulting libs
and binaries will be unredistributable [no]
2012-03-09 00:24:48 +01:00
Configuration options:
--disable-static do not build static libraries [no]
--enable-shared build shared libraries [no]
--enable-small optimize for size instead of speed
2017-03-31 11:01:33 +02:00
--disable-runtime-cpudetect disable detecting CPU capabilities at runtime (smaller binary)
2012-03-09 00:24:48 +01:00
--enable-gray enable full grayscale support (slower color)
--disable-swscale-alpha disable alpha channel support in swscale
2012-11-10 14:47:52 +01:00
--disable-all disable building components, libraries and programs
2012-03-09 00:24:48 +01:00
2012-11-10 18:10:59 +01:00
Program options:
--disable-programs do not build command line programs
2012-11-16 13:07:10 +01:00
--disable-ffmpeg disable ffmpeg build
--disable-ffplay disable ffplay build
--disable-ffprobe disable ffprobe build
--disable-ffserver disable ffserver build
2012-08-09 23:37:28 +02:00
Documentation options:
2009-10-31 15:59:08 +00:00
--disable-doc do not build documentation
2012-08-09 23:37:28 +02:00
--disable-htmlpages do not build HTML documentation pages
--disable-manpages do not build man documentation pages
--disable-podpages do not build POD documentation pages
--disable-txtpages do not build text documentation pages
Component options:
2010-01-26 23:13:01 +00:00
--disable-avdevice disable libavdevice build
--disable-avcodec disable libavcodec build
--disable-avformat disable libavformat build
2011-09-19 06:13:30 +02:00
--disable-swresample disable libswresample build
2010-01-26 23:13:01 +00:00
--disable-swscale disable libswscale build
2011-05-12 13:21:49 +01:00
--disable-postproc disable libpostproc build
2012-07-15 17:03:06 +02:00
--disable-avfilter disable libavfilter build
2012-05-28 19:43:57 +02:00
--enable-avresample enable libavresample build [no]
2015-03-02 14:56:05 +01:00
--disable-pthreads disable pthreads [autodetect]
--disable-w32threads disable Win32 threads [autodetect]
--disable-os2threads disable OS/2 threads [autodetect]
2009-10-31 15:59:08 +00:00
--disable-network disable network support [no]
2010-01-20 00:39:47 +00:00
--disable-dct disable DCT code
2012-07-27 13:01:04 +02:00
--disable-dwt disable DWT code
2013-03-02 16:57:26 -08:00
--disable-error-resilience disable error resilience code
2012-07-27 13:01:04 +02:00
--disable-lsp disable LSP code
2012-10-18 19:48:27 +02:00
--disable-lzo disable LZO decoder code
2009-10-31 15:59:08 +00:00
--disable-mdct disable MDCT code
--disable-rdft disable RDFT code
2012-03-09 00:24:48 +01:00
--disable-fft disable FFT code
2014-08-28 19:32:45 -07:00
--disable-faan disable floating point AAN (I)DCT code
2014-08-02 18:54:43 +02:00
--disable-pixelutils disable pixel utils in libavutil
2013-02-05 15:32:24 +01:00
2012-03-09 00:24:48 +01:00
Individual component options:
2010-03-12 13:03:40 +00:00
--disable-everything disable all components listed below
2009-10-31 15:59:08 +00:00
--disable-encoder=NAME disable encoder NAME
--enable-encoder=NAME enable encoder NAME
--disable-encoders disable all encoders
--disable-decoder=NAME disable decoder NAME
--enable-decoder=NAME enable decoder NAME
--disable-decoders disable all decoders
--disable-hwaccel=NAME disable hwaccel NAME
--enable-hwaccel=NAME enable hwaccel NAME
--disable-hwaccels disable all hwaccels
--disable-muxer=NAME disable muxer NAME
--enable-muxer=NAME enable muxer NAME
--disable-muxers disable all muxers
--disable-demuxer=NAME disable demuxer NAME
--enable-demuxer=NAME enable demuxer NAME
--disable-demuxers disable all demuxers
--enable-parser=NAME enable parser NAME
--disable-parser=NAME disable parser NAME
--disable-parsers disable all parsers
--enable-bsf=NAME enable bitstream filter NAME
--disable-bsf=NAME disable bitstream filter NAME
--disable-bsfs disable all bitstream filters
--enable-protocol=NAME enable protocol NAME
--disable-protocol=NAME disable protocol NAME
--disable-protocols disable all protocols
2012-03-09 00:24:48 +01:00
--enable-indev=NAME enable input device NAME
2009-10-31 15:59:08 +00:00
--disable-indev=NAME disable input device NAME
--disable-indevs disable input devices
2012-03-09 00:24:48 +01:00
--enable-outdev=NAME enable output device NAME
--disable-outdev=NAME disable output device NAME
2009-10-31 15:59:08 +00:00
--disable-outdevs disable output devices
--disable-devices disable all devices
--enable-filter=NAME enable filter NAME
--disable-filter=NAME disable filter NAME
--disable-filters disable all filters
External library support:
2016-05-03 06:38:22 +02:00
2016-06-25 11:01:50 +02:00
Using any of the following switches will allow FFmpeg to link to the
2016-05-03 06:38:22 +02:00
corresponding external library. All the components depending on that library
will become enabled, if all their other dependencies are met and they are not
explicitly disabled. E.g. --enable-libwavpack will enable linking to
libwavpack and allow the libwavpack encoder to be built, unless it is
specifically disabled with --disable-encoder=libwavpack.
Note that only the system libraries are auto-detected. All the other external
libraries must be explicitly enabled.
Also note that the following help text describes the purpose of the libraries
2016-06-25 11:01:50 +02:00
themselves, not all their features will necessarily be usable by FFmpeg.
2016-05-03 06:38:22 +02:00
2013-05-04 21:18:13 +02:00
--enable-avisynth enable reading of AviSynth script files [no]
2013-05-10 09:55:15 +02:00
--disable-bzlib disable bzlib [autodetect]
2015-10-03 17:24:06 -05:00
--enable-chromaprint enable audio fingerprinting with chromaprint [no]
2014-12-08 00:33:21 +01:00
--enable-frei0r enable frei0r video filtering [no]
2015-11-22 02:16:36 +11:00
--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]
2014-12-08 00:33:21 +01:00
--enable-gnutls enable gnutls, needed for https support
if openssl is not used [no]
2013-05-10 09:55:15 +02:00
--disable-iconv disable iconv [autodetect]
2015-09-28 15:18:56 +02:00
--enable-jni enable JNI support [no]
2014-12-08 00:33:21 +01:00
--enable-ladspa enable LADSPA audio filtering [no]
--enable-libass enable libass subtitles rendering,
needed for subtitles and ass filter [no]
2012-03-03 04:25:48 +01:00
--enable-libbluray enable BluRay reading using libbluray [no]
2014-04-29 18:53:16 +02:00
--enable-libbs2b enable bs2b DSP library [no]
2014-12-08 00:33:21 +01:00
--enable-libcaca enable textual display using libcaca [no]
2011-11-25 18:17:07 +01:00
--enable-libcelt enable CELT decoding via libcelt [no]
2014-12-08 00:33:21 +01:00
--enable-libcdio enable audio CD grabbing with libcdio [no]
2009-10-31 15:59:08 +00:00
--enable-libdc1394 enable IIDC-1394 grabbing using libdc1394
and libraw1394 [no]
2013-08-15 15:40:32 -04:00
--enable-libfdk-aac enable AAC de/encoding via libfdk-aac [no]
2011-08-21 02:29:33 +02:00
--enable-libflite enable flite (voice synthesis) support via libflite [no]
2016-06-21 22:03:18 +02:00
--enable-libfontconfig enable libfontconfig, useful for drawtext filter [no]
2014-12-08 00:33:21 +01:00
--enable-libfreetype enable libfreetype, needed for drawtext filter [no]
--enable-libfribidi enable libfribidi, improves drawtext filter [no]
2013-06-28 10:36:00 +02:00
--enable-libgme enable Game Music Emu via libgme [no]
2012-07-16 18:19:13 +02:00
--enable-libgsm enable GSM de/encoding via libgsm [no]
2012-07-05 14:02:53 +02:00
--enable-libiec61883 enable iec61883 via libiec61883 [no]
2012-06-16 00:42:13 +03:00
--enable-libilbc enable iLBC de/encoding via libilbc [no]
2015-07-14 08:53:35 +03:00
--enable-libkvazaar enable HEVC encoding via libkvazaar [no]
2011-10-04 20:47:16 +02:00
--enable-libmodplug enable ModPlug via libmodplug [no]
2009-10-31 15:59:08 +00:00
--enable-libmp3lame enable MP3 encoding via libmp3lame [no]
2012-06-18 00:05:52 +03:00
--enable-libopencore-amrnb enable AMR-NB de/encoding via libopencore-amrnb [no]
--enable-libopencore-amrwb enable AMR-WB decoding via libopencore-amrwb [no]
--enable-libopencv enable video filtering via libopencv [no]
2015-01-08 00:03:09 +02:00
--enable-libopenh264 enable H.264 encoding via OpenH264 [no]
2011-11-17 16:57:09 -07:00
--enable-libopenjpeg enable JPEG 2000 de/encoding via OpenJPEG [no]
2016-07-14 18:30:27 +01:00
--enable-libopenmpt enable decoding tracked files via libopenmpt [no]
2014-05-14 19:07:00 +02:00
--enable-libopus enable Opus de/encoding via libopus [no]
2011-11-18 11:08:31 +01:00
--enable-libpulse enable Pulseaudio input via libpulse [no]
2017-05-08 05:02:19 +01:00
--enable-librsvg enable SVG rasterization via librsvg [no]
2015-09-18 20:22:05 +00:00
--enable-librubberband enable rubberband needed for rubberband filter [no]
2010-03-28 13:39:36 +00:00
--enable-librtmp enable RTMP[E] support via librtmp [no]
2012-07-29 18:20:00 +00:00
--enable-libshine enable fixed-point MP3 encoding via libshine [no]
2014-07-13 00:54:23 +02:00
--enable-libsmbclient enable Samba protocol via libsmbclient [no]
2015-06-30 14:49:07 +02:00
--enable-libsnappy enable Snappy compression, needed for hap encoding [no]
2012-12-11 21:43:42 +01:00
--enable-libsoxr enable Include libsoxr resampling [no]
2012-07-16 18:19:13 +02:00
--enable-libspeex enable Speex de/encoding via libspeex [no]
2013-09-18 14:08:11 +02:00
--enable-libssh enable SFTP protocol via libssh [no]
2015-09-09 13:43:35 +00:00
--enable-libtesseract enable Tesseract, needed for ocr filter [no]
2009-10-31 15:59:08 +00:00
--enable-libtheora enable Theora encoding via libtheora [no]
2012-08-01 14:33:34 +00:00
--enable-libtwolame enable MP2 encoding via libtwolame [no]
2011-10-30 03:21:55 +01:00
--enable-libv4l2 enable libv4l2/v4l-utils [no]
2013-04-19 01:49:27 +02:00
--enable-libvidstab enable video stabilization using vid.stab [no]
2017-07-15 22:12:33 +05:30
--enable-libvmaf enable vmaf filter via libvmaf [no]
2009-12-29 16:48:09 +02:00
--enable-libvo-amrwbenc enable AMR-WB encoding via libvo-amrwbenc [no]
2012-05-05 10:45:30 +02:00
--enable-libvorbis enable Vorbis en/decoding via libvorbis,
2009-10-31 15:59:08 +00:00
native implementation exists [no]
2012-12-30 19:40:20 +01:00
--enable-libvpx enable VP8 and VP9 de/encoding via libvpx [no]
2013-05-25 19:22:59 +02:00
--enable-libwavpack enable wavpack encoding via libwavpack [no]
2013-11-22 11:05:13 -05:00
--enable-libwebp enable WebP encoding via libwebp [no]
2009-10-31 15:59:08 +00:00
--enable-libx264 enable H.264 encoding via x264 [no]
2013-10-02 14:46:26 +00:00
--enable-libx265 enable HEVC encoding via x265 [no]
2010-07-27 07:18:36 +00:00
--enable-libxavs enable AVS encoding via xavs [no]
2015-03-02 14:56:05 +01:00
--enable-libxcb enable X11 grabbing using XCB [autodetect]
--enable-libxcb-shm enable X11 grabbing shm communication [autodetect]
--enable-libxcb-xfixes enable X11 grabbing mouse rendering [autodetect]
--enable-libxcb-shape enable X11 grabbing shape rendering [autodetect]
2009-10-31 15:59:08 +00:00
--enable-libxvid enable Xvid encoding via xvidcore,
native MPEG-4/Xvid encoder exists [no]
2015-09-21 15:34:15 +02:00
--enable-libzimg enable z.lib, needed for zscale filter [no]
2013-04-21 15:00:11 +02:00
--enable-libzmq enable message passing via libzmq [no]
2013-09-01 23:05:50 +02:00
--enable-libzvbi enable teletext support via libzvbi [no]
2014-08-22 23:39:57 -03:00
--disable-lzma disable lzma [autodetect]
2015-11-24 18:17:38 -08:00
--enable-decklink enable Blackmagic DeckLink I/O support [no]
2017-08-18 09:34:06 -04:00
--enable-libndi_newtek enable Newteck NDI I/O support [no]
2016-01-21 09:29:39 +01:00
--enable-mediacodec enable Android MediaCodec support [no]
2017-06-03 01:39:04 +02:00
--enable-libmysofa enable libmysofa, needed for sofalizer filter [no]
2011-06-25 08:06:00 +02:00
--enable-openal enable OpenAL 1.1 capture support [no]
2013-04-01 17:46:11 +08:00
--enable-opencl enable OpenCL code
2013-11-24 20:13:27 +01:00
--enable-opengl enable OpenGL rendering [no]
2014-12-08 00:33:21 +01:00
--enable-openssl enable openssl, needed for https support
if gnutls is not used [no]
2015-10-04 14:48:49 +02:00
--disable-schannel disable SChannel SSP, needed for TLS support on
Windows if openssl and gnutls are not used [autodetect]
2016-02-24 23:31:02 +00:00
--disable-sdl2 disable sdl2 [autodetect]
2015-05-28 14:46:16 -05:00
--disable-securetransport disable Secure Transport, needed for TLS support
on OSX if openssl and gnutls are not used [autodetect]
2014-02-19 03:59:32 +01:00
--disable-xlib disable xlib [autodetect]
2013-05-10 09:55:15 +02:00
--disable-zlib disable zlib [autodetect]
2009-10-31 15:59:08 +00:00
2016-05-03 07:55:38 +02:00
The following libraries provide various hardware acceleration features:
2016-06-25 11:23:19 +02:00
--disable-audiotoolbox disable Apple AudioToolbox code [autodetect]
2016-10-10 12:58:26 +02:00
--disable-cuda disable dynamically linked Nvidia CUDA code [autodetect]
2017-05-11 22:51:31 +02:00
--enable-cuda-sdk enable CUDA features that require the CUDA SDK [no]
2016-10-10 12:58:26 +02:00
--disable-cuvid disable Nvidia CUVID support [autodetect]
2016-06-25 11:23:19 +02:00
--disable-d3d11va disable Microsoft Direct3D 11 video acceleration code [autodetect]
--disable-dxva2 disable Microsoft DirectX 9 video acceleration code [autodetect]
--enable-libmfx enable Intel MediaSDK (AKA Quick Sync Video) code via libmfx [no]
--enable-libnpp enable Nvidia Performance Primitives-based code [no]
--enable-mmal enable Broadcom Multi-Media Abstraction Layer (Raspberry Pi) via MMAL [no]
2016-08-27 14:39:35 +02:00
--disable-nvenc disable Nvidia video encoding code [autodetect]
2016-06-25 11:23:19 +02:00
--enable-omx enable OpenMAX IL code [no]
--enable-omx-rpi enable OpenMAX IL code for Raspberry Pi [no]
--disable-vaapi disable Video Acceleration API (mainly Unix/Intel) code [autodetect]
--disable-vda disable Apple Video Decode Acceleration code [autodetect]
--disable-vdpau disable Nvidia Video Decode and Presentation API for Unix code [autodetect]
--disable-videotoolbox disable VideoToolbox code [autodetect]
2016-05-03 07:55:38 +02:00
2014-03-11 18:52:44 +01:00
Toolchain options:
--arch=ARCH select architecture [$arch]
--cpu=CPU select the minimum required CPU (affects
instruction selection, may crash on older CPUs)
2009-10-31 15:59:08 +00:00
--cross-prefix=PREFIX use PREFIX for compilation tools [$cross_prefix]
2014-03-12 21:05:00 +01:00
--progs-suffix=SUFFIX program name suffix []
2009-10-31 15:59:08 +00:00
--enable-cross-compile assume a cross-compiler is used
--sysroot=PATH root of cross-build tree
--sysinclude=PATH location of cross-build system headers
--target-os=OS compiler targets OS [$target_os]
--target-exec=CMD command to run executables on target
--target-path=DIR path to view of build directory on target
2013-05-20 01:55:32 +03:00
--target-samples=DIR path to samples directory on target
2013-10-05 13:48:22 +02:00
--tempprefix=PATH force fixed dir/prefix instead of mktemp for checks
2012-09-16 22:06:53 +01:00
--toolchain=NAME set tool defaults according to NAME
2012-01-15 13:53:33 +01:00
--nm=NM use nm tool NM [$nm_default]
2010-05-02 18:59:15 +00:00
--ar=AR use archive tool AR [$ar_default]
2009-10-31 15:59:08 +00:00
--as=AS use assembler AS [$as_default]
2016-04-25 07:39:08 -07:00
--ln_s=LN_S use symbolic link tool LN_S [$ln_s_default]
2016-02-24 11:40:12 +01:00
--strip=STRIP use strip tool STRIP [$strip_default]
2013-12-05 17:50:14 -03:00
--windres=WINDRES use windows resource compiler WINDRES [$windres_default]
2016-10-08 14:18:33 +00:00
--x86asmexe=EXE use nasm-compatible assembler EXE [$x86asmexe_default]
2009-10-31 15:59:08 +00:00
--cc=CC use C compiler CC [$cc_default]
2011-08-31 04:11:25 +05:30
--cxx=CXX use C compiler CXX [$cxx_default]
2015-11-23 17:08:49 -05:00
--objcc=OCC use ObjC compiler OCC [$cc_default]
2012-07-27 13:01:04 +02:00
--dep-cc=DEPCC use dependency generator DEPCC [$cc_default]
2017-05-11 22:53:41 +02:00
--nvcc=NVCC use Nvidia CUDA compiler NVCC [$nvcc_default]
2012-01-15 13:53:33 +01:00
--ld=LD use linker LD [$ld_default]
2014-06-18 16:45:45 +02:00
--pkg-config=PKGCONFIG use pkg-config tool PKGCONFIG [$pkg_config_default]
2014-01-20 11:17:45 +01:00
--pkg-config-flags=FLAGS pass additional flags to pkgconf []
2014-04-22 21:54:08 +02:00
--ranlib=RANLIB use ranlib RANLIB [$ranlib_default]
2014-07-07 15:24:48 -07:00
--doxygen=DOXYGEN use DOXYGEN to generate API doc [$doxygen_default]
2009-10-31 15:59:08 +00:00
--host-cc=HOSTCC use host C compiler HOSTCC
--host-cflags=HCFLAGS use HCFLAGS when compiling for host
2013-02-03 15:13:17 +01:00
--host-cppflags=HCPPFLAGS use HCPPFLAGS when compiling for host
2012-08-28 13:02:35 +01:00
--host-ld=HOSTLD use host linker HOSTLD
2009-10-31 15:59:08 +00:00
--host-ldflags=HLDFLAGS use HLDFLAGS when linking for host
--host-libs=HLIBS use libs HLIBS when linking for host
2012-07-27 13:01:04 +02:00
--host-os=OS compiler host OS [$target_os]
2009-10-31 15:59:08 +00:00
--extra-cflags=ECFLAGS add ECFLAGS to CFLAGS [$CFLAGS]
2011-08-31 04:11:25 +05:30
--extra-cxxflags=ECFLAGS add ECFLAGS to CXXFLAGS [$CXXFLAGS]
2015-11-23 17:08:49 -05:00
--extra-objcflags=FLAGS add FLAGS to OBJCFLAGS [$CFLAGS]
2009-10-31 15:59:08 +00:00
--extra-ldflags=ELDFLAGS add ELDFLAGS to LDFLAGS [$LDFLAGS]
2014-07-16 17:00:11 +02:00
--extra-ldexeflags=ELDFLAGS add ELDFLAGS to LDEXEFLAGS [$LDEXEFLAGS]
2015-06-27 12:27:59 -04:00
--extra-ldlibflags=ELDFLAGS add ELDFLAGS to LDLIBFLAGS [$LDLIBFLAGS]
2009-10-31 15:59:08 +00:00
--extra-libs=ELIBS add ELIBS [$ELIBS]
--extra-version=STRING version string suffix []
2012-07-27 13:01:04 +02:00
--optflags=OPTFLAGS override optimization-related compiler flags
2017-05-11 22:53:41 +02:00
--nvccflags=NVCCFLAGS override nvcc flags [$nvccflags_default]
2009-10-31 15:59:08 +00:00
--build-suffix=SUFFIX library name suffix []
2012-03-09 00:24:48 +01:00
--enable-pic build position-independent code
2012-07-27 13:01:04 +02:00
--enable-thumb compile for Thumb instruction set
2014-03-11 18:52:44 +01:00
--enable-lto use link-time optimization
2015-05-06 13:37:31 +02:00
--env="ENV=override" override the environment variables
2014-03-11 18:52:44 +01:00
Advanced options (experts only):
--malloc-prefix=PREFIX prefix malloc and related names with PREFIX
2015-09-03 11:55:48 +02:00
--custom-allocator=NAME use a supported custom allocator
2012-03-09 00:24:48 +01:00
--disable-symver disable symbol versioning
--enable-hardcoded-tables use hardcoded tables instead of runtime generation
--disable-safe-bitstream-reader
disable buffer boundary checking in bitreaders
(faster, but may crash)
2014-06-11 17:51:49 +01:00
--sws-max-filter-size=N the max filter size swscale uses [$sws_max_filter_size_default]
2012-03-09 00:24:48 +01:00
Optimization options (experts only):
2014-06-18 16:21:00 +02:00
--disable-asm disable all assembly optimizations
2009-10-31 15:59:08 +00:00
--disable-altivec disable AltiVec optimizations
2015-05-10 02:47:31 +02:00
--disable-vsx disable VSX optimizations
--disable-power8 disable POWER8 optimizations
2009-10-31 15:59:08 +00:00
--disable-amd3dnow disable 3DNow! optimizations
--disable-amd3dnowext disable 3DNow! extended optimizations
--disable-mmx disable MMX optimizations
2012-07-08 18:42:12 +02:00
--disable-mmxext disable MMXEXT optimizations
2009-10-31 15:59:08 +00:00
--disable-sse disable SSE optimizations
2012-08-28 13:56:46 +02:00
--disable-sse2 disable SSE2 optimizations
--disable-sse3 disable SSE3 optimizations
2009-10-31 15:59:08 +00:00
--disable-ssse3 disable SSSE3 optimizations
2012-08-28 13:56:46 +02:00
--disable-sse4 disable SSE4 optimizations
--disable-sse42 disable SSE4.2 optimizations
2011-02-16 02:39:42 +00:00
--disable-avx disable AVX optimizations
2014-02-06 01:33:59 -03:00
--disable-xop disable XOP optimizations
2014-02-22 02:47:01 -03:00
--disable-fma3 disable FMA3 optimizations
2012-06-18 23:39:14 -04:00
--disable-fma4 disable FMA4 optimizations
2013-10-20 10:28:38 -05:00
--disable-avx2 disable AVX2 optimizations
2015-10-26 02:08:58 -05:00
--disable-aesni disable AESNI optimizations
2009-10-31 15:59:08 +00:00
--disable-armv5te disable armv5te optimizations
--disable-armv6 disable armv6 optimizations
--disable-armv6t2 disable armv6t2 optimizations
2012-12-04 23:29:34 +00:00
--disable-vfp disable VFP optimizations
2011-12-12 21:21:24 +01:00
--disable-neon disable NEON optimizations
2014-06-18 16:21:00 +02:00
--disable-inline-asm disable use of inline assembly
2016-10-08 14:18:33 +00:00
--disable-x86asm disable use of standalone x86 assembly
2015-12-03 13:22:16 +00:00
--disable-mipsdsp disable MIPS DSP ASE R1 optimizations
2012-06-04 18:02:56 +02:00
--disable-mipsdspr2 disable MIPS DSP ASE R2 optimizations
2015-04-09 19:46:24 +05:30
--disable-msa disable MSA optimizations
2012-06-04 18:02:56 +02:00
--disable-mipsfpu disable floating point MIPS optimizations
2015-07-03 18:11:27 +08:00
--disable-mmi disable Loongson SIMD optimizations
2012-07-02 01:58:30 +02:00
--disable-fast-unaligned consider unaligned accesses slow
2009-10-31 15:59:08 +00:00
2011-03-17 17:02:14 +01:00
Developer options (useful when working on FFmpeg itself):
2009-10-31 15:59:08 +00:00
--disable-debug disable debugging symbols
--enable-debug=LEVEL set the debug level [$debuglevel]
--disable-optimizations disable compiler optimizations
--enable-extra-warnings enable more compiler warnings
2011-04-01 00:24:12 +02:00
--disable-stripping disable stripping of executables and shared libraries
2012-04-08 00:59:22 +02:00
--assert-level=level 0(default), 1 or 2, amount of assertion testing,
2012-04-07 09:20:54 +02:00
2 causes a slowdown at runtime.
2012-07-02 19:31:35 +02:00
--enable-memory-poisoning fill heap uninitialized allocated space with arbitrary data
2012-01-20 20:42:31 +01:00
--valgrind=VALGRIND run "make fate" tests through valgrind to detect memory
leaks and errors, using the specified valgrind binary.
Cannot be combined with --target-exec
2012-10-09 05:43:30 +02:00
--enable-ftrapv Trap arithmetic overflows
2011-02-26 11:50:35 +00:00
--samples=PATH location of test samples for FATE, if not set use
\$FATE_SAMPLES at make invocation time.
2013-12-20 13:51:50 +02:00
--enable-neon-clobber-test check NEON registers for clobbering (should be
used only for debugging purposes)
2012-02-02 11:48:13 -08:00
--enable-xmm-clobber-test check XMM registers for clobbering (Win64-only;
should be used only for debugging purposes)
2012-05-09 04:29:53 +01:00
--enable-random randomly enable/disable components
--disable-random
--enable-random=LIST randomly enable/disable specific components or
--disable-random=LIST component groups. LIST is a comma-separated list
of NAME[:PROB] entries where NAME is a component
(group) and PROB the probability associated with
NAME (default 0.5).
--random-seed=VALUE seed value for --enable/disable-random
2015-04-20 14:44:32 +01:00
--disable-valgrind-backtrace do not print a backtrace under Valgrind
(only applies to --disable-optimizations builds)
2017-04-21 23:58:32 +02:00
--enable-osfuzz Enable building fuzzer tool
--libfuzzer=PATH path to libfuzzer
2016-12-28 00:19:49 +02:00
--ignore-tests=TESTS comma-separated list (without "fate-" prefix
in the name) of tests whose result is ignored
2009-10-31 15:59:08 +00:00
NOTE: Object files are built at the place where configure is launched.
EOF
2008-10-09 20:10:22 +00:00
exit 0
2006-05-30 19:46:06 +00:00
}
2010-06-15 18:06:28 +00:00
quotes = '""'
2015-09-20 21:50:17 -04:00
if test -t 1 && which tput >/dev/null 2>& 1; then
2015-09-07 19:11:16 -07:00
ncolors = $( tput colors)
if test -n " $ncolors " && test $ncolors -ge 8; then
bold_color = $( tput bold)
warn_color = $( tput setaf 3)
2015-09-09 20:47:22 -04:00
error_color = $( tput setaf 1)
2015-09-07 19:11:16 -07:00
reset_color = $( tput sgr0)
fi
2015-09-14 16:34:50 -07:00
# 72 used instead of 80 since that's the default of pr
ncols = $( tput cols)
2015-09-07 19:11:16 -07:00
fi
2015-09-14 16:34:50 -07:00
: ${ ncols :=72 }
2010-06-15 18:06:28 +00:00
2006-06-16 19:26:31 +00:00
log(){
2008-05-15 11:37:29 +00:00
echo " $@ " >> $logfile
2006-06-16 19:26:31 +00:00
}
2006-07-04 18:24:37 +00:00
log_file(){
2006-06-17 14:39:11 +00:00
log BEGIN $1
2008-05-15 11:37:29 +00:00
pr -n -t $1 >> $logfile
2006-06-17 14:39:11 +00:00
log END $1
}
2010-06-24 20:49:32 +00:00
warn(){
log "WARNING: $* "
WARNINGS = " ${ WARNINGS } WARNING: $* \n"
}
2006-06-22 18:57:40 +00:00
die(){
2015-09-09 20:47:22 -04:00
log " $@ "
echo " $error_color$bold_color$@$reset_color "
2006-06-22 18:57:40 +00:00
cat <<EOF
2009-04-02 08:02:32 +00:00
2006-06-22 18:57:40 +00:00
If you think configure made a mistake, make sure you are using the latest
2011-01-17 11:44:19 -09:00
version from Git. If the latest version fails, report the problem to the
2011-03-25 18:47:22 +01:00
ffmpeg-user@ffmpeg.org mailing list or IRC #ffmpeg on irc.freenode.net.
2006-06-22 18:57:40 +00:00
EOF
2008-03-25 15:10:26 +00:00
if disabled logging; then
2006-06-22 18:57:40 +00:00
cat <<EOF
2008-03-25 15:10:26 +00:00
Rerun configure with logging enabled (do not use --disable-logging), and
include the log this produces with your report.
2006-06-22 18:57:40 +00:00
EOF
else
2012-08-19 21:35:30 +02:00
cat <<EOF
2008-03-25 15:10:26 +00:00
Include the log file "$logfile" produced by configure as this will help
2014-05-26 11:54:35 -08:00
solve the problem.
2006-06-22 18:57:40 +00:00
EOF
fi
2006-06-16 19:26:31 +00:00
exit 1
}
2008-02-11 23:17:06 +00:00
# Avoid locale weirdness, besides we really just want to translate ASCII.
2006-11-14 00:16:43 +00:00
toupper(){
2008-02-11 23:17:06 +00:00
echo " $@ " | tr abcdefghijklmnopqrstuvwxyz ABCDEFGHIJKLMNOPQRSTUVWXYZ
2006-11-14 00:16:43 +00:00
}
2007-02-18 01:39:07 +00:00
tolower(){
2008-02-11 23:17:06 +00:00
echo " $@ " | tr ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyz
2007-02-18 01:39:07 +00:00
}
2009-01-25 22:23:03 +00:00
c_escape(){
echo " $* " | sed 's/["\\]/\\\0/g'
}
2009-06-15 22:12:21 +00:00
sh_quote(){
v = $( echo " $1 " | sed "s/'/'\\\\''/g" )
2010-07-27 16:59:42 +00:00
test "x $v " = "x ${ v #*[!A-Za-z0-9_/.+-] } " || v = "' $v '"
2009-06-15 22:12:21 +00:00
echo " $v "
}
2011-02-13 13:06:53 +00:00
cleanws(){
2015-07-13 16:22:40 +08:00
echo " $@ " | sed 's/^ *//;s/[[:space:]][[:space:]]*/ /g;s/ *$//'
2011-02-13 13:06:53 +00:00
}
2009-08-06 15:45:22 +00:00
filter(){
pat = $1
shift
for v; do
2016-11-10 00:07:06 +01:00
eval "case $v in $pat ) printf '%s ' $v ;; esac"
2009-08-06 15:45:22 +00:00
done
}
2011-01-25 14:44:07 +00:00
filter_out(){
pat = $1
shift
for v; do
2016-11-10 00:07:06 +01:00
eval "case $v in $pat ) ;; *) printf '%s ' $v ;; esac"
2011-01-25 14:44:07 +00:00
done
}
2010-03-11 00:39:02 +00:00
map(){
m = $1
shift
2010-03-16 21:22:54 +00:00
for v; do eval $m ; done
2010-03-11 00:39:02 +00:00
}
2012-08-27 03:07:11 +02:00
add_suffix(){
suffix = $1
shift
for v; do echo ${ v }${ suffix } ; done
}
2006-11-12 15:19:58 +00:00
set_all(){
value = $1
shift
for var in $* ; do
eval $var = $value
done
}
2008-10-24 23:18:08 +00:00
set_weak(){
value = $1
shift
for var; do
eval : \$ { $var := $value }
done
}
2013-03-04 22:58:34 +01:00
sanitize_var_name(){
echo $@ | sed 's/[^A-Za-z0-9_]/_/g'
}
2011-03-06 13:48:30 +00:00
set_safe(){
var = $1
shift
2013-03-04 22:58:34 +01:00
eval $( sanitize_var_name " $var " ) = '$*'
2011-03-06 13:48:30 +00:00
}
get_safe(){
2013-03-04 22:58:34 +01:00
eval echo \$ $( sanitize_var_name " $1 " )
2011-03-06 13:48:30 +00:00
}
2007-02-11 15:49:37 +00:00
pushvar(){
2013-04-03 15:52:45 +03:00
for pvar in $* ; do
eval level = \$ { ${ pvar } _level:= 0}
eval ${ pvar } _${ level } = "\$ $pvar "
eval ${ pvar } _level = $(( $level + 1 ))
2007-02-11 15:49:37 +00:00
done
}
popvar(){
2013-04-03 15:52:45 +03:00
for pvar in $* ; do
eval level = \$ { ${ pvar } _level:-0}
2007-02-11 15:49:37 +00:00
test $level = 0 && continue
eval level = $(( $level - 1 ))
2013-04-03 15:52:45 +03:00
eval $pvar = "\${ ${ pvar } _ ${ level } }"
eval ${ pvar } _level = $level
eval unset ${ pvar } _${ level }
2007-02-11 15:49:37 +00:00
done
}
2016-11-30 23:50:17 +01:00
request(){
for var in $* ; do
eval ${ var } _requested = yes
eval $var =
done
}
2006-11-12 15:19:58 +00:00
enable(){
set_all yes $*
}
disable(){
set_all no $*
}
2008-10-24 23:18:08 +00:00
enable_weak(){
set_weak yes $*
}
disable_weak(){
set_weak no $*
}
2009-02-28 19:56:19 +00:00
enable_safe(){
2010-01-11 13:36:58 +00:00
for var; do
enable $( echo " $var " | sed 's/[^A-Za-z0-9_]/_/g' )
done
2009-02-28 19:56:19 +00:00
}
disable_safe(){
2010-01-11 13:36:58 +00:00
for var; do
disable $( echo " $var " | sed 's/[^A-Za-z0-9_]/_/g' )
done
2009-02-28 19:56:19 +00:00
}
2008-10-24 23:18:04 +00:00
do_enable_deep(){
for var; do
enabled $var && continue
2016-01-21 20:37:49 +01:00
eval sel = "\$ ${ var } _select"
2008-10-24 23:18:12 +00:00
eval sgs = "\$ ${ var } _suggest"
pushvar var sgs
2008-10-24 23:18:04 +00:00
enable_deep $sel
2008-10-24 23:18:12 +00:00
popvar sgs
enable_deep_weak $sgs
2008-10-24 23:18:04 +00:00
popvar var
done
}
enable_deep(){
do_enable_deep $*
enable $*
}
2008-10-24 23:18:08 +00:00
enable_deep_weak(){
2013-04-03 15:55:14 +03:00
for var; do
disabled $var && continue
pushvar var
do_enable_deep $var
popvar var
enable_weak $var
done
2008-10-24 23:18:08 +00:00
}
2016-11-30 23:50:17 +01:00
requested(){
test " ${ 1 #! } " = " $1 " && op = '=' || op = !=
eval test "x\$ ${ 1 #! } _requested" $op "xyes"
}
2006-06-16 19:26:31 +00:00
enabled(){
2015-09-13 02:26:04 -04:00
test " ${ 1 #! } " = " $1 " && op = '=' || op = !=
2008-07-12 20:55:04 +00:00
eval test "x\$ ${ 1 #! } " $op "xyes"
2006-11-14 00:16:43 +00:00
}
2007-01-28 16:04:55 +00:00
disabled(){
2015-09-13 02:26:04 -04:00
test " ${ 1 #! } " = " $1 " && op = '=' || op = !=
2008-07-12 20:55:04 +00:00
eval test "x\$ ${ 1 #! } " $op "xno"
2007-01-28 16:04:55 +00:00
}
2006-11-14 00:16:43 +00:00
enabled_all(){
for opt; do
enabled $opt || return 1
done
}
2007-01-28 16:16:49 +00:00
disabled_all(){
for opt; do
disabled $opt || return 1
done
}
2006-11-14 00:16:43 +00:00
enabled_any(){
for opt; do
enabled $opt && return 0
done
}
2007-01-28 16:16:49 +00:00
disabled_any(){
for opt; do
disabled $opt && return 0
done
2008-10-24 21:44:39 +00:00
return 1
2007-01-28 16:16:49 +00:00
}
2008-06-02 23:51:36 +00:00
set_default(){
for opt; do
2008-11-23 12:36:31 +00:00
eval : \$ { $opt := \$ ${ opt } _default}
2008-06-02 23:51:36 +00:00
done
}
2007-08-20 21:35:51 +00:00
is_in(){
value = $1
shift
for var in $* ; do
[ $var = $value ] && return 0
done
return 1
}
2012-12-09 17:34:14 +00:00
do_check_deps(){
2007-01-21 21:01:34 +00:00
for cfg; do
2008-07-12 20:55:04 +00:00
cfg = " ${ cfg #! } "
2007-02-11 15:49:37 +00:00
enabled ${ cfg } _checking && die "Circular dependency for $cfg ."
disabled ${ cfg } _checking && continue
enable ${ cfg } _checking
2012-12-09 17:34:14 +00:00
append allopts $cfg
2007-02-11 15:49:37 +00:00
2007-01-21 21:01:34 +00:00
eval dep_all = "\$ ${ cfg } _deps"
2016-02-17 23:34:54 +01:00
eval dep_any = "\$ ${ cfg } _deps_any"
2008-10-24 21:44:45 +00:00
eval dep_sel = "\$ ${ cfg } _select"
2008-10-24 23:18:12 +00:00
eval dep_sgs = "\$ ${ cfg } _suggest"
2010-01-14 18:25:38 +00:00
eval dep_ifa = "\$ ${ cfg } _if"
eval dep_ifn = "\$ ${ cfg } _if_any"
2007-02-11 15:49:37 +00:00
2010-01-14 18:25:38 +00:00
pushvar cfg dep_all dep_any dep_sel dep_sgs dep_ifa dep_ifn
2012-12-09 17:34:14 +00:00
do_check_deps $dep_all $dep_any $dep_sel $dep_sgs $dep_ifa $dep_ifn
2010-01-14 18:25:38 +00:00
popvar cfg dep_all dep_any dep_sel dep_sgs dep_ifa dep_ifn
2007-02-11 15:49:37 +00:00
2010-01-14 18:25:38 +00:00
[ -n " $dep_ifa " ] && { enabled_all $dep_ifa && enable_weak $cfg ; }
[ -n " $dep_ifn " ] && { enabled_any $dep_ifn && enable_weak $cfg ; }
2016-11-30 23:50:17 +01:00
enabled_all $dep_all || { disable $cfg && requested $cfg && die "ERROR: $cfg requested, but not all dependencies are satisfied: $dep_all " ; }
enabled_any $dep_any || { disable $cfg && requested $cfg && die "ERROR: $cfg requested, but not any dependency is satisfied: $dep_any " ; }
disabled_any $dep_sel && { disable $cfg && requested $cfg && die "ERROR: $cfg requested, but some selected dependency is unsatisfied: $dep_sel " ; }
2007-02-11 15:49:37 +00:00
2007-09-18 19:07:52 +00:00
if enabled $cfg ; then
2008-10-24 23:18:04 +00:00
enable_deep $dep_sel
2008-10-24 23:18:12 +00:00
enable_deep_weak $dep_sgs
2007-09-18 19:07:52 +00:00
fi
2007-02-11 15:49:37 +00:00
disable ${ cfg } _checking
2007-01-21 21:01:34 +00:00
done
}
2012-12-09 17:34:14 +00:00
check_deps(){
unset allopts
do_check_deps " $@ "
for cfg in $allopts ; do
enabled $cfg || continue
eval dep_extralibs = "\$ ${ cfg } _extralibs"
test -n " $dep_extralibs " && add_extralibs $dep_extralibs
done
}
2006-11-14 00:16:43 +00:00
print_config(){
pfx = $1
2010-09-03 21:27:12 +00:00
files = $2
shift 2
2012-10-27 16:43:12 +01:00
map 'eval echo "$v \${$v:-no}"' " $@ " |
awk "BEGIN { split(\" $files \", files) }
{
c = \" $pfx \" toupper(\$1);
v = \$2;
sub(/yes/, 1, v);
sub(/no/, 0, v);
for (f in files) {
file = files[f];
if (file ~ /\\.h\$/) {
printf(\"#define %s %d\\n\", c, v) >>file;
} else if (file ~ /\\.asm\$/) {
printf(\"%%define %s %d\\n\", c, v) >>file;
} else if (file ~ /\\.mak\$/) {
2012-10-30 11:57:30 +00:00
n = -v ? \"\" : \"!\";
2012-10-27 16:43:12 +01:00
printf(\"%s%s=yes\\n\", n, c) >>file;
2013-03-19 20:54:26 +01:00
} else if (file ~ /\\.texi\$/) {
pre = -v ? \"\" : \"@c \";
yesno = \$2;
c2 = tolower(c);
gsub(/_/, \"-\", c2);
printf(\"%s@set %s %s\\n\", pre, c2, yesno) >>file;
2012-10-27 16:43:12 +01:00
}
}
}"
2006-06-16 19:26:31 +00:00
}
2010-07-08 18:44:03 +00:00
print_enabled(){
suf = $1
shift
for v; do
2016-04-04 20:16:54 +02:00
enabled $v && printf "%s\n" ${ v % $suf }
2010-07-08 18:44:03 +00:00
done
}
2006-06-16 19:26:31 +00:00
append(){
var = $1
shift
eval " $var =\"\$ $var $* \""
}
2010-06-25 15:45:04 +00:00
prepend(){
var = $1
shift
eval " $var =\" $* \$ $var \""
}
2014-05-01 13:18:57 +02:00
unique(){
var = $1
uniq_list = ""
for tok in $( eval echo \$ $var ) ; do
uniq_list = " $( filter_out $tok $uniq_list ) $tok "
done
eval " $var =\" ${ uniq_list } \""
}
2009-07-12 13:29:32 +00:00
add_cppflags(){
2012-07-20 12:02:29 +01:00
append CPPFLAGS " $@ "
2009-07-12 13:29:32 +00:00
}
2006-06-16 19:26:31 +00:00
add_cflags(){
2012-07-20 12:02:18 +01:00
append CFLAGS $( $cflags_filter " $@ " )
2006-06-16 19:26:31 +00:00
}
2016-12-04 11:06:47 +01:00
add_cflags_headers(){
append CFLAGS_HEADERS $( $cflags_filter " $@ " )
}
2011-08-31 04:11:25 +05:30
add_cxxflags(){
2012-07-22 05:01:09 +02:00
append CXXFLAGS $( $cflags_filter " $@ " )
2011-08-31 04:11:25 +05:30
}
2009-07-12 13:29:53 +00:00
add_asflags(){
2012-07-20 12:02:18 +01:00
append ASFLAGS $( $asflags_filter " $@ " )
2009-07-12 13:29:53 +00:00
}
2015-11-23 17:08:49 -05:00
add_objcflags(){
append OBJCFLAGS $( $objcflags_filter " $@ " )
}
2006-06-16 19:26:31 +00:00
add_ldflags(){
2012-07-20 03:06:49 +01:00
append LDFLAGS $( $ldflags_filter " $@ " )
2006-06-16 19:26:31 +00:00
}
2014-07-16 17:00:11 +02:00
add_ldexeflags(){
append LDEXEFLAGS $( $ldflags_filter " $@ " )
}
2015-06-27 12:27:59 -04:00
add_ldlibflags(){
append LDLIBFLAGS $( $ldflags_filter " $@ " )
}
2013-11-25 08:46:14 +00:00
add_stripflags(){
2013-11-28 21:29:13 +01:00
append ASMSTRIPFLAGS " $@ "
2013-11-25 08:46:14 +00:00
}
2006-06-16 19:26:31 +00:00
add_extralibs(){
2012-07-20 03:06:49 +01:00
prepend extralibs $( $ldflags_filter " $@ " )
2006-06-16 19:26:31 +00:00
}
2013-02-03 15:13:17 +01:00
add_host_cppflags(){
append host_cppflags " $@ "
}
2012-07-20 13:48:13 +01:00
add_host_cflags(){
append host_cflags $( $host_cflags_filter " $@ " )
}
add_host_ldflags(){
append host_ldflags $( $host_ldflags_filter " $@ " )
2006-06-16 19:26:31 +00:00
}
2012-10-14 17:56:00 +01:00
add_compat(){
append compat_objs $1
shift
map 'add_cppflags -D$v' " $@ "
}
2006-07-31 07:54:48 +00:00
check_cmd(){
2006-08-03 22:27:19 +00:00
log " $@ "
2008-05-15 11:37:29 +00:00
" $@ " >> $logfile 2>& 1
2006-07-31 07:54:48 +00:00
}
2014-04-06 23:17:08 +02:00
check_stat(){
log check_stat " $@ "
stat " $1 " >> $logfile 2>& 1
}
2012-07-20 22:22:18 +01:00
cc_o(){
eval printf '%s\\n' $CC_O
}
2012-07-20 22:22:41 +01:00
cc_e(){
eval printf '%s\\n' $CC_E
}
2006-06-01 19:28:41 +00:00
check_cc(){
2006-06-16 19:26:31 +00:00
log check_cc " $@ "
2008-05-15 11:37:29 +00:00
cat > $TMPC
2006-07-04 18:24:37 +00:00
log_file $TMPC
2012-07-20 23:43:27 +01:00
check_cmd $cc $CPPFLAGS $CFLAGS " $@ " $CC_C $( cc_o $TMPO ) $TMPC
2006-06-16 19:26:31 +00:00
}
2011-08-31 04:11:25 +05:30
check_cxx(){
log check_cxx " $@ "
cat > $TMPCPP
log_file $TMPCPP
2012-07-30 17:44:56 +02:00
check_cmd $cxx $CPPFLAGS $CFLAGS $CXXFLAGS " $@ " $CXX_C -o $TMPO $TMPCPP
2011-08-31 04:11:25 +05:30
}
2015-11-23 17:08:49 -05:00
check_objcc(){
log check_objcc " $@ "
2014-04-05 13:30:27 +02:00
cat > $TMPM
log_file $TMPM
2015-12-05 11:49:44 +01:00
check_cmd $objcc -Werror= missing-prototypes $CPPFLAGS $CFLAGS $OBJCFLAGS " $@ " $OBJCC_C $( cc_o $TMPO ) $TMPM
2014-04-05 13:30:27 +02:00
}
2006-06-16 19:26:31 +00:00
check_cpp(){
log check_cpp " $@ "
2008-05-15 11:37:29 +00:00
cat > $TMPC
2006-07-04 18:24:37 +00:00
log_file $TMPC
2012-07-20 22:22:41 +01:00
check_cmd $cc $CPPFLAGS $CFLAGS " $@ " $( cc_e $TMPO ) $TMPC
2006-06-01 19:28:41 +00:00
}
2012-08-27 22:19:06 +01:00
as_o(){
eval printf '%s\\n' $AS_O
}
2009-03-05 21:20:04 +00:00
check_as(){
log check_as " $@ "
2012-12-01 13:19:05 +00:00
cat > $TMPS
log_file $TMPS
check_cmd $as $CPPFLAGS $ASFLAGS " $@ " $AS_C $( as_o $TMPO ) $TMPS
2009-03-05 21:20:04 +00:00
}
2012-08-07 23:46:52 +02:00
check_inline_asm(){
log check_inline_asm " $@ "
2007-09-23 21:52:09 +00:00
name = " $1 "
2010-01-18 23:12:53 +00:00
code = " $2 "
2007-09-23 21:52:09 +00:00
shift 2
2009-09-30 21:38:11 +00:00
disable $name
2012-12-01 13:19:05 +00:00
check_cc " $@ " <<EOF && enable $name
2010-01-18 23:12:53 +00:00
void foo(void){ __asm__ volatile($code); }
2007-09-23 21:52:09 +00:00
EOF
}
2016-03-07 19:49:10 +05:30
check_inline_asm_flags(){
log check_inline_asm_flags " $@ "
name = " $1 "
code = " $2 "
flags = ''
shift 2
while [ " $1 " != "" ] ; do
append flags $1
shift
done ;
disable $name
cat > $TMPC <<EOF
void foo(void){ __asm__ volatile($code); }
EOF
log_file $TMPC
check_cmd $cc $CPPFLAGS $CFLAGS $flags " $@ " $CC_C $( cc_o $TMPO ) $TMPC &&
enable $name && add_cflags $flags && add_asflags $flags && add_ldflags $flags
}
2012-12-01 15:06:56 +00:00
check_insn(){
log check_insn " $@ "
check_inline_asm ${ 1 } _inline "\" $2 \""
echo " $2 " | check_as && enable ${ 1 } _external || disable ${ 1 } _external
}
2016-10-08 14:18:33 +00:00
check_x86asm(){
log check_x86asm " $@ "
2008-08-11 23:53:31 +00:00
echo " $1 " > $TMPS
log_file $TMPS
shift 1
2016-10-08 14:18:33 +00:00
check_cmd $x86asmexe $X86ASMFLAGS -Werror " $@ " -o $TMPO $TMPS
2008-08-11 23:53:31 +00:00
}
2012-08-27 22:04:25 +01:00
ld_o(){
eval printf '%s\\n' $LD_O
}
2006-06-01 19:28:41 +00:00
check_ld(){
2006-06-16 19:26:31 +00:00
log check_ld " $@ "
2011-08-31 04:11:25 +05:30
type = $1
shift 1
2013-01-13 21:45:15 +01:00
flags = $( filter_out '-l*|*.so' $@ )
libs = $( filter '-l*|*.so' $@ )
2012-07-22 05:01:09 +02:00
check_$type $( $cflags_filter $flags ) || return
2012-07-20 03:06:49 +01:00
flags = $( $ldflags_filter $flags )
libs = $( $ldflags_filter $libs )
2016-10-05 15:10:23 +02:00
check_cmd $ld $LDFLAGS $LDEXEFLAGS $flags $( ld_o $TMPE ) $TMPO $libs $extralibs
2006-06-01 19:28:41 +00:00
}
2013-12-23 01:03:48 +01:00
print_include(){
hdr = $1
test " ${ hdr %.h } " = " ${ hdr } " &&
echo "#include $hdr " ||
echo "#include < $hdr >"
}
2012-07-04 23:06:25 +01:00
check_code(){
log check_code " $@ "
check = $1
headers = $2
code = $3
shift 3
{
for hdr in $headers ; do
2013-12-23 01:03:48 +01:00
print_include $hdr
2012-07-04 23:06:25 +01:00
done
echo "int main(void) { $code ; return 0; }"
} | check_$check " $@ "
}
2009-07-12 13:29:32 +00:00
check_cppflags(){
log check_cppflags " $@ "
2016-08-08 20:27:43 +02:00
check_cpp " $@ " <<EOF && append CPPFLAGS "$@"
2009-07-12 13:29:32 +00:00
int x;
EOF
}
2013-10-31 19:48:59 +01:00
test_cflags(){
log test_cflags " $@ "
2012-07-20 12:02:18 +01:00
set -- $( $cflags_filter " $@ " )
2013-10-31 19:48:59 +01:00
check_cc " $@ " <<EOF
2006-06-01 19:28:41 +00:00
int x;
EOF
}
2013-10-31 19:48:59 +01:00
check_cflags(){
log check_cflags " $@ "
test_cflags " $@ " && add_cflags " $@ "
}
2011-08-31 04:11:25 +05:30
check_cxxflags(){
log check_cxxflags " $@ "
2012-07-22 05:01:09 +02:00
set -- $( $cflags_filter " $@ " )
2011-08-31 04:11:25 +05:30
check_cxx " $@ " <<EOF && append CXXFLAGS "$@"
int x;
EOF
}
2015-11-23 17:08:49 -05:00
test_objcflags(){
2016-06-06 19:06:30 +02:00
log test_objcflags " $@ "
set -- $( $objcflags_filter " $@ " )
2015-11-23 17:08:49 -05:00
check_objcc " $@ " <<EOF
int x;
EOF
}
check_objcflags(){
2016-06-06 19:06:30 +02:00
log check_objcflags " $@ "
2015-11-23 17:08:49 -05:00
test_objcflags " $@ " && add_objcflags " $@ "
}
2010-01-16 04:48:58 +00:00
test_ldflags(){
log test_ldflags " $@ "
2011-08-31 04:11:25 +05:30
check_ld "cc" " $@ " <<EOF
2008-03-30 22:23:52 +00:00
int main(void){ return 0; }
2006-06-01 19:28:41 +00:00
EOF
}
2010-01-16 04:48:58 +00:00
check_ldflags(){
log check_ldflags " $@ "
test_ldflags " $@ " && add_ldflags " $@ "
}
2013-11-25 08:46:14 +00:00
test_stripflags(){
log test_stripflags " $@ "
# call check_cc to get a fresh TMPO
check_cc <<EOF
int main(void) { return 0; }
EOF
2013-11-28 21:29:13 +01:00
check_cmd $strip $ASMSTRIPFLAGS " $@ " $TMPO
2013-11-25 08:46:14 +00:00
}
check_stripflags(){
log check_stripflags " $@ "
test_stripflags " $@ " && add_stripflags " $@ "
}
2006-06-01 19:28:41 +00:00
check_header(){
2006-06-16 19:26:31 +00:00
log check_header " $@ "
2006-06-01 19:28:41 +00:00
header = $1
shift
2009-03-01 17:57:14 +00:00
disable_safe $header
check_cpp " $@ " <<EOF && enable_safe $header
2006-06-01 19:28:41 +00:00
#include <$header>
int x;
EOF
}
2015-12-05 11:49:44 +01:00
check_header_objcc(){
log check_header_objcc " $@ "
2014-04-06 23:17:08 +02:00
rm -f -- " $TMPO "
2014-04-05 02:03:15 +02:00
header = $1
shift
2014-04-05 13:29:28 +02:00
disable_safe $header
2014-04-05 02:03:15 +02:00
{
echo "#include < $header >"
echo "int main(void) { return 0; }"
2015-12-05 11:49:44 +01:00
} | check_objcc && check_stat " $TMPO " && enable_safe $headers
2014-04-05 02:03:15 +02:00
}
2006-06-01 19:28:41 +00:00
check_func(){
2006-06-16 19:26:31 +00:00
log check_func " $@ "
2006-06-01 19:28:41 +00:00
func = $1
shift
2007-02-14 22:18:13 +00:00
disable $func
2011-08-31 04:11:25 +05:30
check_ld "cc" " $@ " <<EOF && enable $func
2006-06-01 19:28:41 +00:00
extern int $func();
2008-03-30 22:23:52 +00:00
int main(void){ $func(); }
2006-06-01 19:28:41 +00:00
EOF
}
2015-11-30 13:36:58 +01:00
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
}
2010-02-09 22:55:13 +00:00
check_mathfunc(){
2010-02-10 22:14:25 +00:00
log check_mathfunc " $@ "
2010-02-09 22:55:13 +00:00
func = $1
2012-10-26 14:42:47 +01:00
narg = $2
shift 2
test $narg = 2 && args = "f, g" || args = "f"
2010-02-09 22:55:13 +00:00
disable $func
2011-08-31 04:11:25 +05:30
check_ld "cc" " $@ " <<EOF && enable $func
2010-02-09 22:55:13 +00:00
#include <math.h>
2012-10-26 14:42:47 +01:00
float foo(float f, float g) { return $func($args); }
2012-10-24 13:15:42 +02:00
int main(void){ return (int) foo; }
EOF
}
2008-09-20 16:17:27 +00:00
check_func_headers(){
log check_func_headers " $@ "
2007-02-19 23:00:18 +00:00
headers = $1
2011-03-07 02:49:55 +00:00
funcs = $2
2007-02-19 23:00:18 +00:00
shift 2
2011-03-07 02:49:55 +00:00
{
for hdr in $headers ; do
2013-12-23 01:03:48 +01:00
print_include $hdr
2011-03-07 02:49:55 +00:00
done
2016-10-25 19:09:46 +02:00
echo "#include <stdint.h>"
2011-03-07 02:49:55 +00:00
for func in $funcs ; do
echo "long check_ $func (void) { return (long) $func ; }"
done
2016-10-25 19:09:46 +02:00
echo "int main(void) { int ret = 0;"
# LTO could optimize out the test functions without this
for func in $funcs ; do
echo " ret |= ((intptr_t)check_ $func ) & 0xFFFF;"
done
echo "return ret; }"
2011-08-31 04:11:25 +05:30
} | check_ld "cc" " $@ " && enable $funcs && enable_safe $headers
}
check_class_headers_cpp(){
log check_class_headers_cpp " $@ "
headers = $1
classes = $2
shift 2
{
for hdr in $headers ; do
echo "#include < $hdr >"
done
echo "int main(void) { "
i = 1
for class in $classes ; do
echo " $class obj $i ;"
i = $( expr $i + 1)
done
echo "return 0; }"
} | check_ld "cxx" " $@ " && enable $funcs && enable_safe $headers
2007-02-19 23:00:18 +00:00
}
2008-10-12 09:07:14 +00:00
check_cpp_condition(){
log check_cpp_condition " $@ "
header = $1
condition = $2
2010-01-17 19:05:53 +00:00
shift 2
2012-07-20 12:02:29 +01:00
check_cpp " $@ " <<EOF
2008-10-12 09:07:14 +00:00
#include <$header>
#if !($condition)
#error "unsatisfied condition: $condition"
#endif
EOF
}
2016-12-28 23:41:29 +01:00
test_cflags_cc(){
log test_cflags_cc " $@ "
2016-11-23 21:54:53 -08:00
flags = $1
2016-12-28 23:41:29 +01:00
header = $2
condition = $3
shift 3
2016-11-23 21:54:53 -08:00
set -- $( $cflags_filter " $flags " )
2016-12-28 23:41:29 +01:00
check_cc " $@ " <<EOF
#include <$header>
2016-11-23 21:54:53 -08:00
#if !($condition)
#error "unsatisfied condition: $condition"
#endif
EOF
}
2006-06-16 19:26:31 +00:00
check_lib(){
log check_lib " $@ "
2016-12-08 10:16:34 +01:00
name = " $1 "
headers = " $2 "
funcs = " $3 "
shift 3
disable $name
check_func_headers " $headers " " $funcs " " $@ " &&
enable $name && add_extralibs " $@ "
2007-02-19 23:00:18 +00:00
}
2011-08-31 04:11:25 +05:30
check_lib_cpp(){
log check_lib_cpp " $@ "
headers = " $1 "
classes = " $2 "
shift 2
check_class_headers_cpp " $headers " " $classes " " $@ " && add_extralibs " $@ "
}
2011-03-06 13:48:30 +00:00
check_pkg_config(){
log check_pkg_config " $@ "
2016-11-16 18:10:35 +01:00
pkg_version = " $1 "
2014-01-09 22:22:16 +01:00
pkg = " ${ 1 %% * } "
2011-03-06 13:48:30 +00:00
headers = " $2 "
funcs = " $3 "
shift 3
2016-11-16 18:10:35 +01:00
check_cmd $pkg_config --exists --print-errors $pkg_version || return
2014-01-20 11:17:45 +01:00
pkg_cflags = $( $pkg_config --cflags $pkg_config_flags $pkg )
pkg_libs = $( $pkg_config --libs $pkg_config_flags $pkg )
2011-03-06 13:48:30 +00:00
check_func_headers " $headers " " $funcs " $pkg_cflags $pkg_libs " $@ " &&
2016-12-08 15:44:45 +01:00
set_safe " ${ pkg } _cflags" $pkg_cflags &&
set_safe " ${ pkg } _extralibs" $pkg_libs
2011-03-06 13:48:30 +00:00
}
2006-06-01 19:28:41 +00:00
check_exec(){
2011-08-31 04:11:25 +05:30
check_ld "cc" " $@ " && { enabled cross_compile || $TMPE >> $logfile 2>& 1; }
2006-06-16 19:26:31 +00:00
}
2007-04-13 20:16:13 +00:00
check_exec_crash(){
2016-11-08 20:04:18 +01:00
log check_exec_crash " $@ "
2009-03-09 23:59:31 +00:00
code = $( cat)
2007-04-13 20:16:13 +00:00
# exit() is not async signal safe. _Exit (C99) and _exit (POSIX)
# are safe but may not be available everywhere. Thus we use
# raise(SIGTERM) instead. The check is run in a subshell so we
# can redirect the "Terminated" message from the shell. SIGBUS
# is not defined by standard C so it is used conditionally.
2008-05-15 11:37:29 +00:00
( check_exec " $@ " ) >> $logfile 2>& 1 <<EOF
2007-04-13 20:16:13 +00:00
#include <signal.h>
static void sighandler(int sig){
raise(SIGTERM);
}
2012-09-13 20:17:54 +01:00
int foo(void){
2011-10-22 00:10:29 +02:00
$code
}
2013-05-25 06:01:29 -04:00
int (*func_ptr)(void) = foo;
2007-11-20 11:18:52 +00:00
int main(void){
2007-04-13 20:16:13 +00:00
signal(SIGILL, sighandler);
signal(SIGFPE, sighandler);
signal(SIGSEGV, sighandler);
#ifdef SIGBUS
signal(SIGBUS, sighandler);
#endif
2012-02-09 17:49:22 +01:00
return func_ptr();
2007-04-13 20:16:13 +00:00
}
EOF
}
2008-01-01 22:54:35 +00:00
check_type(){
log check_type " $@ "
headers = $1
type = $2
shift 2
2010-01-11 14:22:29 +00:00
disable_safe " $type "
2012-07-04 23:06:25 +01:00
check_code cc " $headers " " $type v" " $@ " && enable_safe " $type "
2008-01-01 22:54:35 +00:00
}
2010-01-17 19:10:03 +00:00
check_struct(){
2013-03-04 22:56:41 +01:00
log check_struct " $@ "
2010-01-17 19:10:03 +00:00
headers = $1
struct = $2
member = $3
shift 3
disable_safe " ${ struct } _ ${ member } "
2012-07-04 23:06:25 +01:00
check_code cc " $headers " "const void *p = &(( $struct *)0)-> $member " " $@ " &&
enable_safe " ${ struct } _ ${ member } "
2010-01-17 19:10:03 +00:00
}
2013-03-04 22:59:41 +01:00
check_builtin(){
log check_builtin " $@ "
name = $1
headers = $2
builtin = $3
shift 3
disable " $name "
2013-03-05 12:37:15 +01:00
check_code ld " $headers " " $builtin " "cc" " $@ " && enable " $name "
2013-03-04 22:59:41 +01:00
}
2013-11-14 12:19:04 +01:00
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 "
}
2006-06-16 19:26:31 +00:00
require(){
2016-11-08 20:04:18 +01:00
log require " $@ "
2016-11-16 18:10:35 +01:00
name_version = " $1 "
2016-12-08 10:16:34 +01:00
name = " ${ 1 %% * } "
2007-02-19 23:00:18 +00:00
headers = " $2 "
func = " $3 "
shift 3
2016-12-08 10:16:34 +01:00
check_lib $name " $headers " $func " $@ " || die "ERROR: $name_version not found"
2007-02-19 23:00:18 +00:00
}
2011-08-31 04:11:25 +05:30
require_cpp(){
name = " $1 "
headers = " $2 "
classes = " $3 "
shift 3
check_lib_cpp " $headers " " $classes " " $@ " || die "ERROR: $name not found"
}
2014-12-02 13:29:47 +01:00
use_pkg_config(){
2017-03-31 14:36:38 -03:00
log use_pkg_config " $@ "
2011-03-06 13:48:30 +00:00
pkg = " $1 "
2014-12-02 13:29:47 +01:00
check_pkg_config " $@ " || return 1
2015-06-02 18:54:57 +02:00
add_cflags $( get_safe " ${ pkg } _cflags" )
2016-12-08 15:44:45 +01:00
add_extralibs $( get_safe " ${ pkg } _extralibs" )
2011-03-06 13:48:30 +00:00
}
2014-12-02 13:29:47 +01:00
require_pkg_config(){
2014-12-02 13:54:46 +01:00
use_pkg_config " $@ " || die "ERROR: $pkg not found using pkg-config $pkg_config_fail_message "
2014-12-02 13:29:47 +01:00
}
2013-02-28 16:16:10 +01:00
hostcc_e(){
eval printf '%s\\n' $HOSTCC_E
}
2012-08-27 22:19:42 +01:00
hostcc_o(){
eval printf '%s\\n' $HOSTCC_O
}
2009-10-28 20:19:15 +00:00
check_host_cc(){
log check_host_cc " $@ "
cat > $TMPC
log_file $TMPC
2012-08-27 22:19:42 +01:00
check_cmd $host_cc $host_cflags " $@ " $HOSTCC_C $( hostcc_o $TMPO ) $TMPC
2009-10-28 20:19:15 +00:00
}
2013-02-28 16:16:10 +01:00
check_host_cpp(){
log check_host_cpp " $@ "
cat > $TMPC
log_file $TMPC
2014-09-11 13:55:48 +02:00
check_cmd $host_cc $host_cppflags $host_cflags " $@ " $( hostcc_e $TMPO ) $TMPC
2013-02-28 16:16:10 +01:00
}
2013-02-03 15:13:17 +01:00
check_host_cppflags(){
log check_host_cppflags " $@ "
2016-08-08 20:27:43 +02:00
check_host_cpp " $@ " <<EOF && append host_cppflags "$@"
2013-02-03 15:13:17 +01:00
int x;
EOF
}
2009-10-28 20:19:15 +00:00
check_host_cflags(){
log check_host_cflags " $@ "
2012-07-20 13:48:13 +01:00
set -- $( $host_cflags_filter " $@ " )
2009-10-28 20:19:15 +00:00
check_host_cc " $@ " <<EOF && append host_cflags "$@"
int x;
EOF
}
2013-02-28 16:16:10 +01:00
check_host_cpp_condition(){
log check_host_cpp_condition " $@ "
header = $1
condition = $2
shift 2
check_host_cpp " $@ " <<EOF
#include <$header>
#if !($condition)
#error "unsatisfied condition: $condition"
#endif
EOF
}
2010-01-19 04:40:08 +00:00
cp_if_changed(){
2016-11-06 18:33:05 +01:00
cmp -s " $1 " " $2 " && { test " $quiet " != "yes" && echo " $2 is unchanged" ; } && return
2011-06-28 18:45:13 +01:00
mkdir -p " $( dirname $2 ) "
2016-11-29 15:09:35 +01:00
cp -f " $1 " " $2 "
2010-01-19 04:40:08 +00:00
}
2008-08-01 20:30:21 +00:00
# CONFIG_LIST contains configurable options, while HAVE_LIST is for
# system-dependent things.
2015-10-05 03:41:41 +02:00
AVCODEC_COMPONENTS = "
2007-08-20 21:35:51 +00:00
bsfs
decoders
encoders
2009-04-02 08:48:06 +00:00
hwaccels
2007-08-20 21:35:51 +00:00
parsers
2015-10-05 03:41:41 +02:00
"
AVDEVICE_COMPONENTS = "
indevs
outdevs
"
AVFILTER_COMPONENTS = "
filters
"
AVFORMAT_COMPONENTS = "
demuxers
muxers
2007-08-20 21:35:51 +00:00
protocols
"
2015-10-05 03:41:41 +02:00
AVRESAMPLE_COMPONENTS = ""
AVUTIL_COMPONENTS = ""
COMPONENT_LIST = "
$AVCODEC_COMPONENTS
$AVDEVICE_COMPONENTS
$AVFILTER_COMPONENTS
$AVFORMAT_COMPONENTS
$AVRESAMPLE_COMPONENTS
$AVUTIL_COMPONENTS
"
2013-11-02 17:05:28 +01:00
EXAMPLE_LIST = "
2015-08-15 17:59:17 +02:00
avio_dir_cmd_example
2016-09-30 19:31:30 +02:00
avio_reading_example
2016-10-19 21:05:22 +02:00
decode_audio_example
2016-10-19 21:05:22 +02:00
decode_video_example
2013-11-28 13:55:34 +01:00
demuxing_decoding_example
2016-10-19 21:05:22 +02:00
encode_audio_example
2016-10-19 21:05:22 +02:00
encode_video_example
2014-07-16 16:42:42 +02:00
extract_mvs_example
2014-02-13 08:50:16 +01:00
filter_audio_example
2013-11-28 13:55:34 +01:00
filtering_audio_example
filtering_video_example
2016-09-30 19:35:28 +02:00
http_multiclient_example
2017-07-20 00:58:56 -04:00
hw_decode_example
2013-11-28 13:55:34 +01:00
metadata_example
2013-11-26 01:31:00 +01:00
muxing_example
2015-02-12 00:07:29 +01:00
qsvdec_example
2014-01-19 13:45:48 +01:00
remuxing_example
2013-11-28 13:55:34 +01:00
resampling_audio_example
scaling_video_example
2013-10-08 13:10:46 +02:00
transcode_aac_example
2014-03-09 02:20:41 +02:00
transcoding_example
2013-11-02 17:05:28 +01:00
"
2016-11-30 23:50:17 +01:00
EXTERNAL_AUTODETECT_LIBRARY_LIST = "
bzlib
iconv
libxcb
libxcb_shm
libxcb_shape
libxcb_xfixes
lzma
schannel
sdl
sdl2
securetransport
xlib
zlib
"
2013-11-02 17:05:28 +01:00
2016-07-25 15:07:58 +02:00
EXTERNAL_LIBRARY_GPL_LIST = "
2017-04-01 01:09:19 +02:00
avisynth
2017-03-15 21:09:06 +01:00
frei0r
2016-07-25 15:07:58 +02:00
libcdio
2017-03-15 21:09:06 +01:00
librubberband
libvidstab
2016-07-25 15:07:58 +02:00
libx264
libx265
libxavs
libxvid
"
EXTERNAL_LIBRARY_NONFREE_LIST = "
2017-04-12 22:49:06 +02:00
decklink
2017-08-18 09:34:06 -04:00
libndi_newtek
2016-07-25 15:07:58 +02:00
libfdk_aac
openssl
"
EXTERNAL_LIBRARY_VERSION3_LIST = "
2017-03-15 21:09:06 +01:00
gmp
2016-07-25 15:07:58 +02:00
libopencore_amrnb
libopencore_amrwb
libvo_amrwbenc
"
2017-03-15 21:09:06 +01:00
EXTERNAL_LIBRARY_GPLV3_LIST = "
libsmbclient
"
2012-10-27 20:02:33 +01:00
EXTERNAL_LIBRARY_LIST = "
2016-11-30 23:50:17 +01:00
$EXTERNAL_AUTODETECT_LIBRARY_LIST
2016-07-25 15:07:58 +02:00
$EXTERNAL_LIBRARY_GPL_LIST
$EXTERNAL_LIBRARY_NONFREE_LIST
$EXTERNAL_LIBRARY_VERSION3_LIST
2017-03-15 21:09:06 +01:00
$EXTERNAL_LIBRARY_GPLV3_LIST
2015-10-03 17:24:06 -05:00
chromaprint
2011-03-09 22:09:00 -08:00
crystalhd
2015-11-22 02:16:36 +11:00
gcrypt
2011-02-05 23:39:20 +01:00
gnutls
2015-09-28 15:18:56 +02:00
jni
2013-09-20 14:01:00 +00:00
ladspa
2011-09-17 15:52:19 +02:00
libass
2012-03-03 04:25:48 +01:00
libbluray
2014-04-29 18:53:16 +02:00
libbs2b
2012-03-13 21:45:46 +00:00
libcaca
2011-04-16 17:45:30 +02:00
libcelt
2007-09-04 22:03:32 +00:00
libdc1394
2011-08-21 02:29:33 +02:00
libflite
2014-04-12 16:02:50 +02:00
libfontconfig
2011-02-21 01:02:29 +01:00
libfreetype
2014-06-21 05:41:45 +01:00
libfribidi
2013-06-28 10:36:00 +02:00
libgme
2006-11-14 00:47:27 +00:00
libgsm
2012-07-05 14:02:53 +02:00
libiec61883
2012-06-16 00:42:13 +03:00
libilbc
2015-07-14 08:53:35 +03:00
libkvazaar
2011-10-04 20:47:16 +02:00
libmodplug
2007-01-07 00:02:15 +00:00
libmp3lame
2017-06-03 01:39:04 +02:00
libmysofa
2010-09-14 13:21:13 +00:00
libopencv
2013-12-12 17:13:55 +02:00
libopenh264
2009-02-06 11:49:31 +00:00
libopenjpeg
2016-07-14 18:30:27 +01:00
libopenmpt
2012-06-24 11:39:05 +02:00
libopus
2011-10-19 11:23:20 -07:00
libpulse
2017-05-08 05:02:19 +01:00
librsvg
2010-03-28 13:39:36 +00:00
librtmp
2012-07-29 18:20:00 +00:00
libshine
2014-07-13 00:54:23 +02:00
libsmbclient
2015-04-25 23:58:57 +01:00
libsnappy
2012-12-11 21:43:42 +01:00
libsoxr
2008-10-24 06:29:05 +00:00
libspeex
2013-09-18 14:08:11 +02:00
libssh
2015-09-09 13:43:35 +00:00
libtesseract
2007-01-25 00:16:28 +00:00
libtheora
2012-08-01 14:33:34 +00:00
libtwolame
2011-10-30 03:21:55 +01:00
libv4l2
2017-07-15 22:12:33 +05:30
libvmaf
2006-11-14 00:47:27 +00:00
libvorbis
2010-05-25 01:19:08 +00:00
libvpx
2013-05-25 19:22:59 +02:00
libwavpack
2013-11-22 11:05:13 -05:00
libwebp
2015-09-21 15:34:15 +02:00
libzimg
2013-04-21 15:00:11 +02:00
libzmq
2013-09-01 23:05:50 +02:00
libzvbi
2016-01-21 09:29:39 +01:00
mediacodec
2013-02-24 17:55:31 +01:00
openal
2013-04-01 17:46:11 +08:00
opencl
2013-11-24 20:13:27 +01:00
opengl
2016-03-02 20:11:40 +08:00
videotoolbox
2012-10-27 20:02:33 +01:00
"
2016-11-30 23:50:17 +01:00
HWACCEL_AUTODETECT_LIBRARY_LIST = "
2016-06-25 11:32:26 +02:00
audiotoolbox
cuda
cuvid
d3d11va
dxva2
nvenc
vaapi
vda
vdpau
videotoolbox_hwaccel
xvmc
"
2017-03-15 21:09:06 +01:00
HWACCEL_LIBRARY_NONFREE_LIST = "
2017-05-11 22:51:31 +02:00
cuda_sdk
2017-03-15 21:09:06 +01:00
libnpp
"
2016-11-30 23:50:17 +01:00
HWACCEL_LIBRARY_LIST = "
$HWACCEL_AUTODETECT_LIBRARY_LIST
2017-03-15 21:09:06 +01:00
$HWACCEL_LIBRARY_NONFREE_LIST
2016-11-30 23:50:17 +01:00
libmfx
mmal
omx
"
2013-02-24 17:55:31 +01:00
DOCUMENT_LIST = "
2013-11-24 18:40:16 -03:00
doc
2013-02-24 17:55:31 +01:00
htmlpages
manpages
podpages
txtpages
"
2013-11-02 17:21:51 +01:00
FEATURE_LIST = "
2014-03-14 18:39:10 +01:00
ftrapv
2013-11-02 17:21:51 +01:00
gray
hardcoded_tables
2012-07-24 21:33:42 +00:00
omx_rpi
2013-11-02 17:21:51 +01:00
runtime_cpudetect
safe_bitstream_reader
shared
small
static
swscale_alpha
"
2012-10-27 20:02:33 +01:00
LIBRARY_LIST = "
avcodec
avdevice
avfilter
avformat
avresample
avutil
2013-02-24 17:55:31 +01:00
postproc
swresample
2012-10-27 20:02:33 +01:00
swscale
"
2013-11-02 17:21:51 +01:00
LICENSE_LIST = "
gpl
nonfree
version3
"
2012-10-27 20:02:33 +01:00
PROGRAM_LIST = "
2013-02-24 17:55:31 +01:00
ffplay
ffprobe
ffserver
ffmpeg
2012-10-27 20:02:33 +01:00
"
2013-11-02 17:21:51 +01:00
SUBSYSTEM_LIST = "
2012-10-27 20:02:33 +01:00
dct
2013-02-24 17:55:31 +01:00
dwt
2013-03-02 16:57:26 -08:00
error_resilience
2014-08-28 19:32:45 -07:00
faan
2013-02-24 17:55:31 +01:00
fast_unaligned
2012-10-27 20:02:33 +01:00
fft
2010-03-02 03:16:27 +00:00
lsp
2012-10-18 19:48:27 +02:00
lzo
2008-10-25 13:51:43 +00:00
mdct
2014-08-02 18:54:43 +02:00
pixelutils
2013-11-02 17:21:51 +01:00
network
rdft
"
2016-12-05 17:09:50 +01:00
# COMPONENT_LIST needs to come last to ensure correct dependency checking
2013-11-02 17:21:51 +01:00
CONFIG_LIST = "
2014-03-14 18:39:10 +01:00
$DOCUMENT_LIST
2013-11-02 17:21:51 +01:00
$EXAMPLE_LIST
$EXTERNAL_LIBRARY_LIST
2016-05-03 08:06:15 +02:00
$HWACCEL_LIBRARY_LIST
2013-11-02 17:21:51 +01:00
$FEATURE_LIST
$LICENSE_LIST
$LIBRARY_LIST
$PROGRAM_LIST
$SUBSYSTEM_LIST
2014-04-17 03:42:17 +02:00
fontconfig
2012-07-02 19:31:35 +02:00
memory_poisoning
2013-12-20 13:51:50 +02:00
neon_clobber_test
2017-04-21 23:58:32 +02:00
ossfuzz
2009-08-20 01:06:18 +00:00
pic
2011-06-14 11:29:48 +01:00
thumb
2015-04-20 14:44:32 +01:00
valgrind_backtrace
2012-02-02 11:48:13 -08:00
xmm_clobber_test
2016-12-05 17:09:50 +01:00
$COMPONENT_LIST
2007-08-20 21:35:51 +00:00
"
2006-11-14 00:16:43 +00:00
2013-11-02 17:21:49 +01:00
THREADS_LIST = "
2007-02-25 21:26:40 +00:00
pthreads
2011-11-02 00:00:21 +09:00
os2threads
2007-02-25 21:26:40 +00:00
w32threads
2013-11-02 17:21:49 +01:00
"
2007-02-25 21:26:40 +00:00
2013-11-02 17:21:49 +01:00
ATOMICS_LIST = "
2013-03-27 19:26:19 +01:00
atomics_gcc
atomics_suncc
2013-04-06 19:04:56 +02:00
atomics_win32
2013-11-02 17:21:49 +01:00
"
2013-03-27 19:26:19 +01:00
2016-11-30 23:50:17 +01:00
AUTODETECT_LIBS = "
$EXTERNAL_AUTODETECT_LIBRARY_LIST
$HWACCEL_AUTODETECT_LIBRARY_LIST
$THREADS_LIST
"
2013-11-02 17:21:49 +01:00
ARCH_LIST = "
2012-11-16 21:02:53 +00:00
aarch64
2007-06-15 20:35:44 +00:00
alpha
2008-12-17 00:54:54 +00:00
arm
2009-08-17 00:15:48 +00:00
avr32
avr32_ap
avr32_uc
2007-06-15 20:35:44 +00:00
bfin
ia64
m68k
mips
2009-05-19 19:40:24 +00:00
mips64
2007-06-15 20:35:44 +00:00
parisc
2008-12-27 11:33:26 +00:00
ppc
2009-05-26 05:00:51 +00:00
ppc64
2007-06-15 20:35:44 +00:00
s390
sh4
sparc
sparc64
2012-10-16 18:21:06 +00:00
tilegx
tilepro
2010-02-11 23:59:49 +00:00
tomi
2007-06-15 20:35:44 +00:00
x86
x86_32
x86_64
2013-11-02 17:21:49 +01:00
"
2007-06-15 20:35:44 +00:00
2013-11-02 17:21:49 +01:00
ARCH_EXT_LIST_ARM = "
2012-12-01 12:26:12 +00:00
armv5te
armv6
armv6t2
2014-04-05 13:46:51 +02:00
armv8
2012-12-01 12:26:12 +00:00
neon
2012-12-04 23:29:34 +00:00
vfp
2012-12-01 12:26:12 +00:00
vfpv3
2014-08-07 18:34:35 +02:00
setend
2013-11-02 17:21:49 +01:00
"
2012-12-01 12:26:12 +00:00
2014-03-14 19:49:02 +01:00
ARCH_EXT_LIST_MIPS = "
mipsfpu
mips32r2
2016-03-07 19:49:10 +05:30
mips32r5
2015-12-03 13:22:23 +00:00
mips64r2
2015-12-03 13:22:24 +00:00
mips32r6
2015-04-09 19:50:13 +05:30
mips64r6
2015-12-03 13:22:16 +00:00
mipsdsp
2014-03-14 19:49:02 +01:00
mipsdspr2
2015-04-09 19:46:24 +05:30
msa
2015-05-08 18:16:14 +08:00
"
ARCH_EXT_LIST_LOONGSON = "
2015-07-03 18:12:07 +08:00
loongson2
loongson3
2015-07-03 18:11:27 +08:00
mmi
2014-03-14 19:49:02 +01:00
"
2013-11-02 17:21:49 +01:00
ARCH_EXT_LIST_X86_SIMD = "
2015-10-26 02:08:58 -05:00
aesni
2009-01-25 19:48:26 +00:00
amd3dnow
2009-02-18 00:03:09 +00:00
amd3dnowext
2012-08-28 13:56:46 +02:00
avx
2013-10-20 10:28:38 -05:00
avx2
2014-02-22 02:47:01 -03:00
fma3
2012-08-28 13:56:46 +02:00
fma4
mmx
mmxext
sse
sse2
sse3
sse4
sse42
ssse3
2014-02-20 23:27:13 +01:00
xop
2013-11-02 17:21:49 +01:00
"
2012-08-28 13:56:46 +02:00
2014-03-06 18:31:45 +01:00
ARCH_EXT_LIST_PPC = "
altivec
dcbzl
ldbrx
2015-05-10 02:47:31 +02:00
power8
2014-03-06 18:31:45 +01:00
ppc4xx
2014-06-18 04:51:35 -04:00
vsx
2014-03-06 18:31:45 +01:00
"
2013-11-02 17:21:53 +01:00
ARCH_EXT_LIST_X86 = "
$ARCH_EXT_LIST_X86_SIMD
cpunop
i686
"
2012-08-28 13:56:46 +02:00
ARCH_EXT_LIST = "
2012-12-01 12:26:12 +00:00
$ARCH_EXT_LIST_ARM
2014-03-06 18:31:45 +01:00
$ARCH_EXT_LIST_PPC
2012-08-28 13:56:46 +02:00
$ARCH_EXT_LIST_X86
2014-03-14 19:49:02 +01:00
$ARCH_EXT_LIST_MIPS
2015-05-08 18:16:14 +08:00
$ARCH_EXT_LIST_LOONGSON
2012-08-28 13:56:46 +02:00
"
2007-06-15 20:35:44 +00:00
2014-03-06 18:31:45 +01:00
ARCH_FEATURES = "
aligned_stack
fast_64bit
fast_clz
fast_cmov
local_aligned_8
local_aligned_16
2014-04-23 23:53:36 -03:00
local_aligned_32
2014-07-21 13:58:55 -07:00
simd_align_16
2016-07-30 20:54:42 +02:00
simd_align_32
2014-03-06 18:31:45 +01:00
"
BUILTIN_LIST = "
atomic_cas_ptr
machine_rw_barrier
MemoryBarrier
mm_empty
rdtsc
2014-03-14 19:08:14 +01:00
sarestart
2016-02-21 22:42:32 +00:00
sem_timedwait
2014-03-06 18:31:45 +01:00
sync_val_compare_and_swap
"
2013-11-02 17:21:49 +01:00
HAVE_LIST_CMDLINE = "
2012-09-05 11:35:13 +02:00
inline_asm
symver
2016-10-08 14:18:33 +00:00
x86asm
2013-11-02 17:21:49 +01:00
"
2012-09-05 11:35:13 +02:00
2013-11-02 17:21:49 +01:00
HAVE_LIST_PUB = "
2010-01-19 04:40:16 +00:00
bigendian
2010-07-10 22:22:00 +00:00
fast_unaligned
2013-11-02 17:21:49 +01:00
"
2010-01-19 04:40:16 +00:00
2014-03-06 18:31:45 +01:00
HEADERS_LIST = "
alsa_asoundlib_h
altivec_h
arpa_inet_h
2014-03-14 19:08:14 +01:00
asm_types_h
2014-03-06 18:31:45 +01:00
cdio_paranoia_h
cdio_paranoia_paranoia_h
2016-11-24 13:39:13 -03:00
cuda_h
2016-12-15 18:00:55 +01:00
d3d11_h
2016-02-21 22:42:32 +00:00
dispatch_dispatch_h
2014-03-06 18:31:45 +01:00
dev_bktr_ioctl_bt848_h
dev_bktr_ioctl_meteor_h
dev_ic_bt8xx_h
dev_video_bktr_ioctl_bt848_h
dev_video_meteor_ioctl_meteor_h
direct_h
2015-06-29 00:13:43 +02:00
dirent_h
2014-03-06 18:31:45 +01:00
dlfcn_h
2017-06-22 14:52:57 +02:00
dxgidebug_h
2014-03-06 18:31:45 +01:00
dxva_h
2014-03-14 19:08:14 +01:00
ES2_gl_h
2014-03-06 18:31:45 +01:00
gsm_h
io_h
mach_mach_time_h
machine_ioctl_bt848_h
machine_ioctl_meteor_h
malloc_h
2016-01-21 23:17:47 +01:00
opencv2_core_core_c_h
2017-06-23 23:49:31 +02:00
openjpeg_2_2_openjpeg_h
2015-11-01 19:11:12 -08:00
openjpeg_2_1_openjpeg_h
openjpeg_2_0_openjpeg_h
2014-03-14 19:08:14 +01:00
openjpeg_1_5_openjpeg_h
OpenGL_gl3_h
2014-03-06 18:31:45 +01:00
poll_h
sndio_h
soundcard_h
2016-11-23 21:54:53 -08:00
stdatomic_h
2014-03-06 18:31:45 +01:00
sys_mman_h
sys_param_h
sys_resource_h
sys_select_h
sys_soundcard_h
sys_time_h
sys_un_h
sys_videoio_h
2014-03-14 19:08:14 +01:00
termios_h
2014-11-05 10:59:44 +01:00
udplite_h
2014-03-06 18:31:45 +01:00
unistd_h
2015-04-20 14:44:32 +01:00
valgrind_valgrind_h
2014-03-06 18:31:45 +01:00
windows_h
winsock2_h
"
2014-05-13 23:03:28 +02:00
INTRINSICS_LIST = "
intrinsics_neon
"
2015-11-30 13:36:58 +01:00
COMPLEX_FUNCS = "
cabs
cexp
"
2012-10-19 18:58:39 +02:00
MATH_FUNCS = "
2012-10-13 22:54:53 +01:00
atanf
atan2f
2013-01-22 04:10:21 -03:00
cbrt
2012-10-19 18:58:39 +02:00
cbrtf
2015-07-20 04:04:46 -03:00
copysign
2012-10-13 22:54:53 +01:00
cosf
2015-07-20 04:04:46 -03:00
erf
2012-10-19 18:58:39 +02:00
exp2
exp2f
2012-10-13 22:54:53 +01:00
expf
2015-11-14 11:57:28 -05:00
hypot
2016-01-13 19:09:25 -05:00
isfinite
2012-10-19 18:58:39 +02:00
isinf
isnan
2012-10-13 22:54:53 +01:00
ldexpf
2012-10-19 18:58:39 +02:00
llrint
llrintf
log2
log2f
2012-10-13 22:54:53 +01:00
log10f
2012-10-19 18:58:39 +02:00
lrint
lrintf
2012-10-13 22:54:53 +01:00
powf
2012-10-19 18:58:39 +02:00
rint
round
roundf
2012-10-13 22:54:53 +01:00
sinf
2012-10-19 18:58:39 +02:00
trunc
truncf
"
2014-03-06 18:31:45 +01:00
SYSTEM_FUNCS = "
2012-11-27 04:55:26 +01:00
access
2012-06-18 14:37:02 +01:00
aligned_malloc
2015-12-06 21:10:21 -05:00
arc4random
2012-03-03 15:56:11 +01:00
clock_gettime
2007-08-08 20:18:41 +00:00
closesocket
2012-11-29 17:02:24 +02:00
CommandLineToArgvW
2014-04-28 23:00:38 +02:00
CoTaskMemFree
2012-10-11 14:30:23 +03:00
CryptGenRandom
2006-11-14 00:47:27 +00:00
dlopen
2010-06-30 10:38:01 +00:00
fcntl
2013-11-14 12:19:04 +01:00
flt_lim
2007-07-09 20:22:14 +00:00
fork
2010-01-11 17:01:56 +00:00
getaddrinfo
2007-08-10 01:13:15 +00:00
gethrtime
2012-07-03 20:14:09 -07:00
getopt
2012-01-01 23:54:40 +00:00
GetProcessAffinityMask
2010-02-22 22:21:58 +00:00
GetProcessMemoryInfo
2007-08-12 00:59:50 +00:00
GetProcessTimes
2007-07-13 16:04:00 +00:00
getrusage
2013-11-02 17:21:49 +01:00
GetSystemTimeAsFileTime
2012-06-20 13:46:52 +01:00
gettimeofday
2012-02-27 10:27:17 +01:00
glob
2013-11-24 20:13:27 +01:00
glXGetProcAddress
2014-10-24 10:33:19 +03:00
gmtime_r
2006-11-14 03:55:26 +00:00
inet_aton
2009-07-24 00:12:55 +00:00
isatty
2012-06-11 18:22:31 -04:00
jack_port_get_latency_range
2011-03-22 03:47:48 +00:00
kbhit
2016-09-01 13:50:38 -03:00
LoadLibrary
2011-02-21 01:02:29 +01:00
localtime_r
2015-08-25 12:48:12 +02:00
lstat
2009-04-09 14:55:05 +00:00
lzo1x_999_compress
2014-01-24 01:15:31 +01:00
mach_absolute_time
2011-01-05 05:16:33 +00:00
MapViewOfFile
2006-11-14 00:47:27 +00:00
memalign
2007-07-11 13:57:22 +00:00
mkstemp
2010-12-22 14:13:04 +00:00
mmap
2012-10-13 02:40:48 +00:00
mprotect
2012-06-21 17:00:25 +01:00
nanosleep
2011-09-04 00:24:06 +02:00
PeekNamedPipe
2009-01-07 23:36:34 +00:00
posix_memalign
2012-05-08 19:02:33 +02:00
pthread_cancel
2011-12-21 01:18:01 +01:00
sched_getaffinity
2012-11-30 16:56:57 +02:00
SetConsoleTextAttribute
2015-06-30 16:31:19 -06:00
SetConsoleCtrlHandler
2009-01-11 22:05:43 +00:00
setmode
2011-09-12 17:40:29 +02:00
setrlimit
2012-06-21 17:00:25 +01:00
Sleep
2010-03-25 22:46:35 +00:00
strerror_r
2014-03-06 18:31:45 +01:00
sysconf
sysctl
usleep
2015-10-01 17:58:40 +02:00
UTGetOSTypeFromString
2014-03-06 18:31:45 +01:00
VirtualAlloc
2014-03-14 19:08:14 +01:00
wglGetProcAddress
2014-03-06 18:31:45 +01:00
"
TOOLCHAIN_FEATURES = "
2014-05-29 14:21:05 +02:00
as_dn_directive
2016-07-18 23:23:50 +03:00
as_fpu_directive
2014-05-30 09:58:43 +02:00
as_func
2015-02-18 00:40:06 +02:00
as_object_arch
2014-03-06 18:31:45 +01:00
asm_mod_q
attribute_may_alias
attribute_packed
2017-01-25 18:40:51 +01:00
blocks_extension
2014-03-06 18:31:45 +01:00
ebp_available
ebx_available
gnu_as
2014-03-14 19:08:14 +01:00
gnu_windres
2014-03-06 18:31:45 +01:00
ibm_asm
2016-01-24 09:28:55 -08:00
inline_asm_direct_symbol_refs
2014-03-06 18:31:45 +01:00
inline_asm_labels
2014-03-18 15:29:14 +11:00
inline_asm_nonlocal_labels
2014-03-06 18:31:45 +01:00
pragma_deprecated
2014-03-14 19:08:14 +01:00
rsync_contimeout
2014-03-06 18:31:45 +01:00
symver_asm_label
symver_gnu_asm
vfp_args
xform_asm
xmm_clobbers
"
TYPES_LIST = "
2014-10-09 13:20:00 -03:00
CONDITION_VARIABLE_Ptr
2014-03-06 18:31:45 +01:00
socklen_t
2010-01-11 17:17:01 +00:00
struct_addrinfo
2012-06-21 14:19:56 +03:00
struct_group_source_req
struct_ip_mreq_source
2010-01-21 15:42:05 +00:00
struct_ipv6_mreq
2016-03-09 14:17:46 +01:00
struct_msghdr_msg_flags
2012-06-25 12:08:44 +03:00
struct_pollfd
2011-09-12 17:40:29 +02:00
struct_rusage_ru_maxrss
2012-08-08 16:01:01 +02:00
struct_sctp_event_subscribe
2010-01-21 15:42:05 +00:00
struct_sockaddr_in6
2010-01-20 17:24:23 +00:00
struct_sockaddr_sa_len
2010-01-11 17:42:15 +00:00
struct_sockaddr_storage
2013-05-25 15:32:14 +02:00
struct_stat_st_mtim_tv_nsec
2011-12-27 06:31:41 +01:00
struct_v4l2_frmivalenum_discrete
2014-03-06 18:31:45 +01:00
"
HAVE_LIST = "
$ARCH_EXT_LIST
$( add_suffix _external $ARCH_EXT_LIST )
$( add_suffix _inline $ARCH_EXT_LIST )
$ARCH_FEATURES
$ATOMICS_LIST
$BUILTIN_LIST
2015-11-30 13:36:58 +01:00
$COMPLEX_FUNCS
2014-03-06 18:31:45 +01:00
$HAVE_LIST_CMDLINE
$HAVE_LIST_PUB
$HEADERS_LIST
2014-05-13 23:03:28 +02:00
$INTRINSICS_LIST
2014-03-06 18:31:45 +01:00
$MATH_FUNCS
$SYSTEM_FUNCS
$THREADS_LIST
$TOOLCHAIN_FEATURES
$TYPES_LIST
2017-04-15 18:42:30 +02:00
alsa
2014-03-06 18:31:45 +01:00
atomics_native
dos_paths
2017-04-15 18:42:30 +02:00
jack
2014-03-06 18:31:45 +01:00
libc_msvcrt
2014-03-14 19:08:14 +01:00
makeinfo
2014-08-31 19:39:35 -07:00
makeinfo_html
2016-04-14 12:21:26 +02:00
MMAL_PARAMETER_VIDEO_MAX_NUM_CALLBACKS
2014-03-14 19:08:14 +01:00
perl
pod2man
2016-02-24 23:31:02 +00:00
sdl2
2014-11-16 12:51:54 +02:00
section_data_rel_ro
2017-04-15 18:42:30 +02:00
sndio
2012-07-11 22:41:25 -03:00
texi2html
2006-11-14 02:27:35 +00:00
threads
2017-07-04 20:03:00 +03:00
uwp
2016-03-23 23:48:13 +00:00
vaapi_drm
2015-02-12 00:07:29 +01:00
vaapi_x11
2013-11-03 19:21:00 +01:00
vdpau_x11
2016-01-24 09:28:55 -08:00
winrt
2007-02-25 21:38:11 +00:00
"
2006-11-14 00:16:43 +00:00
2012-12-19 18:48:21 +01:00
# options emitted with CONFIG_ prefix but not available on the command line
2008-10-24 23:18:21 +00:00
CONFIG_EXTRA = "
2012-07-24 19:16:29 +02:00
aandcttables
2012-07-27 02:06:29 +02:00
ac3dsp
2013-02-17 22:00:36 +01:00
audio_frame_queue
2014-01-16 17:30:19 +01:00
audiodsp
2014-01-14 10:33:47 +01:00
blockdsp
2014-02-13 17:57:05 +01:00
bswapdsp
2014-03-22 18:41:43 +01:00
cabac
2014-07-05 09:09:15 +00:00
dirac_parse
2014-07-05 09:09:15 +00:00
dvprofile
2013-08-21 18:26:40 +02:00
exif
2014-08-28 19:32:45 -07:00
faandct
faanidct
2014-02-03 10:09:45 -08:00
fdctdsp
2015-07-16 16:10:57 +01:00
flacdsp
2015-02-21 11:24:44 +01:00
fmtconvert
2013-03-13 21:59:33 -07:00
frame_thread_encoder
2015-07-16 16:11:04 +01:00
g722dsp
2012-03-08 23:53:57 +01:00
golomb
2009-06-05 11:04:03 +00:00
gplv3
2013-11-05 08:11:47 +01:00
h263dsp
2012-03-08 23:53:57 +01:00
h264chroma
h264dsp
2016-06-28 10:24:05 +02:00
h264parse
2012-03-08 23:53:57 +01:00
h264pred
2011-12-18 14:10:33 +01:00
h264qpel
2017-04-02 15:40:01 -03:00
hevcparse
2013-03-09 15:14:35 -08:00
hpeldsp
2012-03-08 23:53:57 +01:00
huffman
2014-01-07 12:23:13 +01:00
huffyuvdsp
2013-12-23 18:42:11 +01:00
huffyuvencdsp
2014-01-24 11:55:16 +01:00
idctdsp
2014-07-21 05:26:00 -07:00
iirfilter
2017-02-01 03:13:06 +00:00
mdct15
2014-01-14 18:24:02 +01:00
intrax8
2016-02-16 19:59:06 +01:00
iso_media
2015-07-16 16:10:58 +01:00
ividsp
2015-03-27 12:23:59 +01:00
jpegtables
2009-06-05 11:04:03 +00:00
lgplv3
2016-01-24 09:28:55 -08:00
libx262
2014-05-30 16:28:49 +02:00
llauddsp
2014-01-20 20:32:51 +01:00
llviddsp
2017-01-07 23:13:48 -03:00
llvidencdsp
2012-03-08 23:53:57 +01:00
lpc
2015-08-26 11:31:40 +02:00
lzf
2014-02-08 02:59:58 +01:00
me_cmp
2014-06-20 06:05:45 -07:00
mpeg_er
2012-08-14 02:09:15 +02:00
mpegaudio
2012-07-27 02:06:29 +02:00
mpegaudiodsp
2016-12-03 11:25:02 +01:00
mpegaudioheader
2012-08-04 00:05:46 +01:00
mpegvideo
2012-08-13 13:00:24 +02:00
mpegvideoenc
2015-07-16 16:10:59 +01:00
mss34dsp
2014-02-03 14:29:09 -08:00
pixblockdsp
2014-01-08 14:00:10 +01:00
qpeldsp
2015-03-13 08:13:00 +01:00
qsv
2015-03-13 07:55:53 +01:00
qsvdec
2015-03-13 10:20:31 +01:00
qsvenc
2012-08-13 19:16:06 +02:00
rangecoder
2013-08-04 14:33:36 +02:00
riffdec
2013-08-04 14:10:54 +02:00
riffenc
2012-07-27 02:06:29 +02:00
rtpdec
2012-11-29 10:34:54 +01:00
rtpenc_chain
2015-07-16 16:11:00 +01:00
rv34dsp
2012-07-27 02:06:29 +02:00
sinewin
2015-05-24 16:20:26 +02:00
snappy
2016-03-18 15:52:30 +01:00
srtp
2014-07-21 16:25:48 +01:00
startcode
2015-05-20 00:01:37 +01:00
texturedsp
texturedspenc
2013-12-21 16:03:59 +01:00
tpeldsp
2016-03-23 23:49:02 +00:00
vaapi_encode
2016-02-10 13:10:50 +01:00
vc1dsp
2012-12-15 09:46:02 -08:00
videodsp
2012-07-16 12:50:14 +01:00
vp3dsp
2015-07-16 16:11:01 +01:00
vp56dsp
2015-07-16 16:11:02 +01:00
vp8dsp
2016-04-27 10:53:15 -04:00
vt_bt2020
2014-09-03 03:27:27 -07:00
wma_freqs
2015-07-16 16:11:03 +01:00
wmv2dsp
2008-10-24 23:18:21 +00:00
"
2007-02-11 19:50:19 +00:00
CMDLINE_SELECT = "
2007-06-15 20:35:44 +00:00
$ARCH_EXT_LIST
2007-02-11 19:50:19 +00:00
$CONFIG_LIST
2012-09-05 11:35:13 +02:00
$HAVE_LIST_CMDLINE
2007-02-25 21:26:40 +00:00
$THREADS_LIST
2010-01-18 23:12:55 +00:00
asm
2008-03-25 15:16:02 +00:00
cross_compile
2007-02-11 19:50:19 +00:00
debug
extra_warnings
2008-03-25 09:53:49 +00:00
logging
2012-09-20 15:50:14 +01:00
lto
2007-10-24 19:19:02 +00:00
optimizations
2013-11-10 09:02:51 +01:00
rpath
2011-04-01 00:24:12 +02:00
stripping
2007-02-11 19:50:19 +00:00
"
2008-06-02 23:47:33 +00:00
2013-11-02 17:21:49 +01:00
PATHS_LIST = "
2008-05-28 09:37:01 +00:00
bindir
2009-01-25 22:23:03 +00:00
datadir
2013-08-28 10:30:14 +02:00
docdir
2008-06-02 23:47:33 +00:00
incdir
libdir
mandir
2015-05-29 16:08:36 +02:00
pkgconfigdir
2008-06-02 23:47:33 +00:00
prefix
shlibdir
2016-02-19 16:34:30 +01:00
install_name_dir
2013-11-02 17:21:49 +01:00
"
2008-06-02 23:47:33 +00:00
CMDLINE_SET = "
$PATHS_LIST
2010-05-02 18:59:15 +00:00
ar
2008-06-02 23:47:33 +00:00
arch
2009-03-05 21:20:01 +00:00
as
2012-04-07 09:20:54 +02:00
assert_level
2008-03-25 22:51:43 +00:00
build_suffix
cc
2015-11-23 17:08:49 -05:00
objcc
2008-03-25 22:51:43 +00:00
cpu
cross_prefix
2015-09-03 11:55:48 +02:00
custom_allocator
2011-08-31 04:11:25 +05:30
cxx
2009-07-12 13:29:43 +00:00
dep_cc
2014-07-07 15:24:48 -07:00
doxygen
2015-05-06 13:37:31 +02:00
env
2008-09-26 21:37:50 +00:00
extra_version
2013-04-16 13:40:45 +02:00
gas
2008-11-23 12:36:34 +00:00
host_cc
host_cflags
2016-12-06 18:19:09 +01:00
host_extralibs
2012-08-28 13:02:35 +01:00
host_ld
2008-11-23 12:36:34 +00:00
host_ldflags
2009-03-08 22:11:24 +00:00
host_os
2016-12-28 00:19:49 +02:00
ignore_tests
2011-05-18 00:03:19 +02:00
install
2009-07-12 13:29:40 +00:00
ld
2016-04-25 07:39:08 -07:00
ln_s
2008-03-25 22:51:43 +00:00
logfile
2010-01-28 13:06:31 +00:00
malloc_prefix
2008-12-13 15:13:24 +00:00
nm
2011-06-19 18:47:06 +01:00
optflags
2017-05-11 22:53:41 +02:00
nvccflags
2011-03-06 13:48:30 +00:00
pkg_config
2014-01-20 11:17:45 +01:00
pkg_config_flags
2012-01-29 22:56:12 +01:00
progs_suffix
2012-05-09 04:29:53 +01:00
random_seed
2014-04-22 21:54:08 +02:00
ranlib
2010-03-15 19:23:24 +00:00
samples
2011-04-01 00:24:12 +02:00
strip
2014-06-11 17:51:49 +01:00
sws_max_filter_size
2009-02-21 21:07:34 +00:00
sysinclude
sysroot
2008-11-23 12:36:38 +00:00
target_exec
2008-03-25 22:51:43 +00:00
target_os
2008-11-23 12:36:38 +00:00
target_path
2013-05-20 01:55:32 +03:00
target_samples
2013-10-05 13:48:22 +02:00
tempprefix
2012-09-16 22:06:53 +01:00
toolchain
2012-01-20 20:42:31 +01:00
valgrind
2016-10-08 14:18:33 +00:00
x86asmexe
2008-06-02 23:47:33 +00:00
"
2007-02-11 19:50:19 +00:00
2009-07-20 19:00:59 +00:00
CMDLINE_APPEND = "
extra_cflags
2011-08-31 04:11:25 +05:30
extra_cxxflags
2015-11-23 17:08:49 -05:00
extra_objcflags
2013-02-03 15:13:17 +01:00
host_cppflags
2009-07-20 19:00:59 +00:00
"
2007-05-08 08:27:00 +00:00
# code dependency declarations
2007-06-17 11:57:50 +00:00
# architecture extensions
2010-01-18 21:04:57 +00:00
2008-12-17 00:54:54 +00:00
armv5te_deps = "arm"
armv6_deps = "arm"
2008-12-30 03:13:44 +00:00
armv6t2_deps = "arm"
2014-04-05 13:46:51 +02:00
armv8_deps = "aarch64"
2013-12-10 20:13:32 +01:00
neon_deps_any = "aarch64 arm"
2014-05-13 23:03:28 +02:00
intrinsics_neon_deps = "neon"
2013-12-10 20:13:32 +01:00
vfp_deps_any = "aarch64 arm"
2012-12-04 23:29:34 +00:00
vfpv3_deps = "vfp"
2014-08-07 18:34:35 +02:00
setend_deps = "arm"
2010-01-18 21:04:57 +00:00
2012-12-03 01:36:49 +00:00
map 'eval ${v}_inline_deps=inline_asm' $ARCH_EXT_LIST_ARM
2016-07-16 15:18:58 -03:00
loongson2_deps = "mips"
loongson3_deps = "mips"
2012-06-04 18:02:56 +02:00
mipsfpu_deps = "mips"
2015-12-03 13:22:16 +00:00
mipsdsp_deps = "mips"
2012-06-04 18:02:56 +02:00
mipsdspr2_deps = "mips"
2015-04-16 02:59:17 -03:00
mips32r2_deps = "mips"
2016-03-07 19:49:10 +05:30
mips32r5_deps = "mips"
2015-12-03 13:22:24 +00:00
mips32r6_deps = "mips"
2015-12-03 13:22:23 +00:00
mips64r2_deps = "mips"
2015-04-09 19:50:13 +05:30
mips64r6_deps = "mips"
2016-03-07 19:49:10 +05:30
msa_deps = "mipsfpu"
2015-07-03 18:11:27 +08:00
mmi_deps = "mips"
2010-01-18 21:04:57 +00:00
altivec_deps = "ppc"
2015-04-16 02:59:17 -03:00
dcbzl_deps = "ppc"
ldbrx_deps = "ppc"
2010-01-18 21:04:57 +00:00
ppc4xx_deps = "ppc"
2015-05-10 02:47:31 +02:00
vsx_deps = "altivec"
power8_deps = "vsx"
2010-01-18 21:04:57 +00:00
2013-08-27 23:33:57 +02:00
cpunop_deps = "i686"
x86_64_select = "i686"
x86_64_suggest = "fast_cmov"
2012-08-28 13:56:46 +02:00
2010-01-18 21:04:57 +00:00
amd3dnow_deps = "mmx"
amd3dnowext_deps = "amd3dnow"
2014-01-25 16:55:58 +01:00
i686_deps = "x86"
2007-06-17 11:57:50 +00:00
mmx_deps = "x86"
2012-07-08 18:42:12 +02:00
mmxext_deps = "mmx"
2012-08-28 13:56:46 +02:00
sse_deps = "mmxext"
sse2_deps = "sse"
sse3_deps = "sse2"
ssse3_deps = "sse3"
sse4_deps = "ssse3"
sse42_deps = "sse4"
2015-10-26 02:08:58 -05:00
aesni_deps = "sse42"
2012-08-28 13:56:46 +02:00
avx_deps = "sse42"
2014-02-06 01:33:59 -03:00
xop_deps = "avx"
2014-02-22 02:47:01 -03:00
fma3_deps = "avx"
2012-06-18 23:39:14 -04:00
fma4_deps = "avx"
2013-10-20 10:28:38 -05:00
avx2_deps = "avx"
2007-06-17 11:57:50 +00:00
2016-10-08 14:18:33 +00:00
mmx_external_deps = "x86asm"
2012-08-27 03:07:11 +02:00
mmx_inline_deps = "inline_asm"
mmx_suggest = "mmx_external mmx_inline"
2013-11-02 17:21:53 +01:00
for ext in $( filter_out mmx $ARCH_EXT_LIST_X86_SIMD ) ; do
2012-08-27 03:07:11 +02:00
eval dep = \$ ${ ext } _deps
eval ${ ext } _external_deps = '"${dep}_external"'
eval ${ ext } _inline_deps = '"${dep}_inline"'
eval ${ ext } _suggest = '"${ext}_external ${ext}_inline"'
done
2013-12-12 17:45:32 +01:00
aligned_stack_if_any = "aarch64 ppc x86"
fast_64bit_if_any = "aarch64 alpha ia64 mips64 parisc64 ppc64 sparc64 x86_64"
fast_clz_if_any = "aarch64 alpha avr32 mips ppc x86"
fast_unaligned_if_any = "aarch64 ppc x86"
2014-07-21 13:58:55 -07:00
simd_align_16_if_any = "altivec neon sse"
2016-07-30 20:54:42 +02:00
simd_align_32_if_any = "avx"
2009-07-15 18:33:12 +00:00
2013-12-10 09:25:18 +01:00
# system capabilities
2010-06-15 13:26:52 +00:00
symver_if_any = "symver_asm_label symver_gnu_asm"
2015-04-20 14:44:32 +01:00
valgrind_backtrace_deps = "!optimizations valgrind_valgrind_h"
2010-06-15 13:26:52 +00:00
2013-12-18 21:52:28 +01:00
# threading support
2017-03-07 00:23:07 -03:00
atomics_gcc_if = "sync_val_compare_and_swap"
2013-12-18 21:52:28 +01:00
atomics_suncc_if = "atomic_cas_ptr machine_rw_barrier"
atomics_win32_if = "MemoryBarrier"
atomics_native_if_any = " $ATOMICS_LIST "
2013-12-18 22:29:25 +01:00
w32threads_deps = "atomics_native"
2013-12-18 21:52:28 +01:00
threads_if_any = " $THREADS_LIST "
2010-02-11 23:40:37 +00:00
# subsystems
2010-07-16 10:08:26 +00:00
dct_select = "rdft"
2014-07-05 09:09:15 +00:00
dirac_parse_select = "golomb"
2014-02-08 02:59:58 +01:00
error_resilience_select = "me_cmp"
2014-08-28 19:32:45 -07:00
faandct_deps = "faan fdctdsp"
faanidct_deps = "faan idctdsp"
2016-02-10 13:08:13 +01:00
h264dsp_select = "startcode"
2017-04-13 18:15:39 -03:00
hevcparse_select = "golomb"
2013-03-13 21:59:33 -07:00
frame_thread_encoder_deps = "encoders threads"
2016-02-20 00:46:49 -05:00
intrax8_select = "blockdsp idctdsp"
2010-02-11 23:40:37 +00:00
mdct_select = "fft"
2017-02-16 01:17:06 -03:00
mdct15_select = "fft"
2014-02-08 02:59:58 +01:00
me_cmp_select = "fdctdsp idctdsp pixblockdsp"
2014-06-20 06:05:45 -07:00
mpeg_er_select = "error_resilience"
2016-12-03 11:25:02 +01:00
mpegaudio_select = "mpegaudiodsp mpegaudioheader"
2011-05-16 16:52:01 +01:00
mpegaudiodsp_select = "dct"
2015-08-08 11:02:25 +02:00
mpegvideo_select = "blockdsp h264chroma hpeldsp idctdsp me_cmp mpeg_er videodsp"
2014-02-08 02:59:58 +01:00
mpegvideoenc_select = "me_cmp mpegvideo pixblockdsp qpeldsp"
2016-02-10 13:10:50 +01:00
vc1dsp_select = "h264chroma qpeldsp startcode"
2016-01-24 09:28:55 -08:00
rdft_select = "fft"
2010-02-11 23:40:37 +00:00
2012-12-20 22:40:39 +01:00
# decoders / encoders
2017-02-01 03:13:06 +00:00
aac_decoder_select = "mdct15 mdct sinewin"
2015-06-30 11:53:06 +02:00
aac_fixed_decoder_select = "mdct sinewin"
2015-08-25 18:54:39 +02:00
aac_encoder_select = "audio_frame_queue iirfilter lpc mdct sinewin"
2010-11-02 08:32:04 +00:00
aac_latm_decoder_select = "aac_decoder aac_latm_parser"
2015-02-21 11:24:44 +01:00
ac3_decoder_select = "ac3_parser ac3dsp bswapdsp fmtconvert mdct"
2014-06-23 13:23:41 +02:00
ac3_fixed_decoder_select = "ac3_parser ac3dsp bswapdsp mdct"
2014-02-08 02:59:58 +01:00
ac3_encoder_select = "ac3dsp audiodsp mdct me_cmp"
ac3_fixed_encoder_select = "ac3dsp audiodsp mdct me_cmp"
2015-07-16 16:11:04 +01:00
adpcm_g722_decoder_select = "g722dsp"
adpcm_g722_encoder_select = "g722dsp"
2014-01-24 11:55:16 +01:00
aic_decoder_select = "golomb idctdsp"
2009-10-18 19:51:18 +00:00
alac_encoder_select = "lpc"
2014-02-13 17:57:05 +01:00
als_decoder_select = "bswapdsp"
2010-03-02 03:16:27 +00:00
amrnb_decoder_select = "lsp"
2010-12-18 03:03:18 +00:00
amrwb_decoder_select = "lsp"
2014-03-01 05:11:37 +01:00
amv_decoder_select = "sp5x_decoder exif"
2015-03-31 01:02:00 +02:00
amv_encoder_select = "aandcttables jpegtables mpegvideoenc"
2014-06-23 13:23:41 +02:00
ape_decoder_select = "bswapdsp llauddsp"
2014-11-21 12:05:47 +01:00
apng_decoder_select = "zlib"
2017-01-07 23:13:48 -03:00
apng_encoder_select = "llvidencdsp zlib"
2014-01-24 11:55:16 +01:00
asv1_decoder_select = "blockdsp bswapdsp idctdsp"
2014-02-03 14:29:09 -08:00
asv1_encoder_select = "bswapdsp fdctdsp pixblockdsp"
2014-01-24 11:55:16 +01:00
asv2_decoder_select = "blockdsp bswapdsp idctdsp"
2014-02-03 14:29:09 -08:00
asv2_encoder_select = "bswapdsp fdctdsp pixblockdsp"
2011-03-19 23:44:00 +00:00
atrac1_decoder_select = "mdct sinewin"
2010-02-11 23:40:37 +00:00
atrac3_decoder_select = "mdct"
2013-10-10 20:32:14 +02:00
atrac3p_decoder_select = "mdct sinewin"
2015-03-31 01:02:00 +02:00
avrn_decoder_select = "exif jpegtables"
2014-01-14 10:33:47 +01:00
bink_decoder_select = "blockdsp hpeldsp"
2014-09-03 03:27:27 -07:00
binkaudio_dct_decoder_select = "mdct rdft dct sinewin wma_freqs"
binkaudio_rdft_decoder_select = "mdct rdft sinewin wma_freqs"
2014-01-24 11:55:16 +01:00
cavs_decoder_select = "blockdsp golomb h264chroma idctdsp qpeldsp videodsp"
2017-06-07 12:48:00 +02:00
clearvideo_decoder_select = "idctdsp"
2014-02-13 17:57:05 +01:00
cllc_decoder_select = "bswapdsp"
2012-10-23 00:02:41 +03:00
comfortnoise_encoder_select = "lpc"
2014-01-16 17:30:19 +01:00
cook_decoder_select = "audiodsp mdct sinewin"
2012-10-18 19:48:27 +02:00
cscd_decoder_select = "lzo"
2008-10-25 18:36:36 +00:00
cscd_decoder_suggest = "zlib"
2016-01-16 11:54:38 +03:00
dca_decoder_select = "mdct"
2015-05-27 00:30:51 +01:00
dds_decoder_select = "texturedsp"
2015-12-17 14:48:46 +01:00
dirac_decoder_select = "dirac_parse dwt golomb videodsp mpegvideoenc"
2014-01-24 11:55:16 +01:00
dnxhd_decoder_select = "blockdsp idctdsp"
2014-02-03 14:29:09 -08:00
dnxhd_encoder_select = "aandcttables blockdsp fdctdsp idctdsp mpegvideoenc pixblockdsp"
2017-07-01 17:03:46 +03:00
dolby_e_decoder_select = "mdct"
2014-07-05 09:09:15 +00:00
dvvideo_decoder_select = "dvprofile idctdsp"
2014-02-08 02:59:58 +01:00
dvvideo_encoder_select = "dvprofile fdctdsp me_cmp pixblockdsp"
2013-10-01 23:40:19 +02:00
dxa_decoder_select = "zlib"
2015-08-26 11:31:41 +02:00
dxv_decoder_select = "lzf texturedsp"
2009-07-21 09:03:45 +00:00
eac3_decoder_select = "ac3_decoder"
2012-08-19 23:19:38 +02:00
eac3_encoder_select = "ac3_encoder"
2014-01-24 11:55:16 +01:00
eamad_decoder_select = "aandcttables blockdsp bswapdsp idctdsp mpegvideo"
2012-07-24 19:16:29 +02:00
eatgq_decoder_select = "aandcttables"
2016-01-25 12:56:12 -05:00
eatqi_decoder_select = "aandcttables blockdsp bswapdsp idctdsp"
2013-10-01 23:40:19 +02:00
exr_decoder_select = "zlib"
2016-12-07 12:48:31 +01:00
ffv1_decoder_select = "rangecoder"
2014-02-24 06:01:16 -08:00
ffv1_encoder_select = "rangecoder"
2014-02-27 15:02:25 -08:00
ffvhuff_decoder_select = "huffyuv_decoder"
ffvhuff_encoder_select = "huffyuv_encoder"
2014-04-01 21:00:47 +02:00
fic_decoder_select = "golomb"
2016-12-07 12:48:31 +01:00
flac_decoder_select = "flacdsp"
flac_encoder_select = "bswapdsp flacdsp lpc"
2016-01-24 09:28:55 -08:00
flashsv2_decoder_select = "zlib"
flashsv2_encoder_select = "zlib"
2013-10-01 23:40:19 +02:00
flashsv_decoder_select = "zlib"
flashsv_encoder_select = "zlib"
2009-12-28 18:00:07 +00:00
flv_decoder_select = "h263_decoder"
2009-08-05 15:26:54 +00:00
flv_encoder_select = "h263_encoder"
2014-02-13 17:57:05 +01:00
fourxm_decoder_select = "blockdsp bswapdsp"
fraps_decoder_select = "bswapdsp huffman"
2015-03-31 01:02:00 +02:00
g2m_decoder_select = "blockdsp idctdsp jpegtables zlib"
2014-06-27 03:00:21 -03:00
g729_decoder_select = "audiodsp"
2015-08-08 11:02:25 +02:00
h261_decoder_select = "mpegvideo"
2012-08-13 13:00:24 +02:00
h261_encoder_select = "aandcttables mpegvideoenc"
2015-08-08 11:02:25 +02:00
h263_decoder_select = "h263_parser h263dsp mpegvideo qpeldsp"
2013-11-05 08:11:47 +01:00
h263_encoder_select = "aandcttables h263dsp mpegvideoenc"
2009-12-28 18:00:07 +00:00
h263i_decoder_select = "h263_decoder"
2015-04-12 15:42:38 -03:00
h263p_decoder_select = "h263_decoder"
2009-08-05 15:21:36 +00:00
h263p_encoder_select = "h263_encoder"
2016-06-28 10:24:05 +02:00
h264_decoder_select = "cabac golomb h264chroma h264dsp h264parse h264pred h264qpel videodsp"
2013-03-02 16:57:26 -08:00
h264_decoder_suggest = "error_resilience"
2015-04-25 23:58:57 +01:00
hap_decoder_select = "snappy texturedsp"
hap_encoder_deps = "libsnappy"
hap_encoder_select = "texturedspenc"
2017-04-02 15:40:01 -03:00
hevc_decoder_select = "bswapdsp cabac golomb hevcparse videodsp"
2014-06-23 13:23:41 +02:00
huffyuv_decoder_select = "bswapdsp huffyuvdsp llviddsp"
2017-01-07 23:13:48 -03:00
huffyuv_encoder_select = "bswapdsp huffman huffyuvencdsp llvidencdsp"
2014-02-27 15:02:24 -08:00
iac_decoder_select = "imc_decoder"
2014-02-13 17:57:05 +01:00
imc_decoder_select = "bswapdsp fft mdct sinewin"
2013-03-10 08:19:27 -07:00
indeo3_decoder_select = "hpeldsp"
2015-07-16 16:10:58 +01:00
indeo4_decoder_select = "ividsp"
indeo5_decoder_select = "ividsp"
2013-03-10 12:58:02 -07:00
interplay_video_decoder_select = "hpeldsp"
2016-12-07 12:48:31 +01:00
jpegls_decoder_select = "mjpeg_decoder"
2014-01-14 10:33:47 +01:00
jv_decoder_select = "blockdsp"
2017-01-07 19:04:39 -03:00
lagarith_decoder_select = "llviddsp"
2017-01-05 11:44:04 +01:00
ljpeg_encoder_select = "aandcttables idctdsp jpegtables mpegvideoenc"
2017-01-07 19:04:39 -03:00
magicyuv_decoder_select = "llviddsp"
2014-01-24 11:55:16 +01:00
mdec_decoder_select = "blockdsp idctdsp mpegvideo"
2013-08-05 12:55:30 +02:00
metasound_decoder_select = "lsp mdct sinewin"
2014-01-24 11:55:16 +01:00
mimic_decoder_select = "blockdsp bswapdsp hpeldsp idctdsp"
2015-03-31 01:02:00 +02:00
mjpeg_decoder_select = "blockdsp hpeldsp exif idctdsp jpegtables"
2015-03-27 12:23:59 +01:00
mjpeg_encoder_select = "aandcttables jpegtables mpegvideoenc"
2013-11-02 17:21:49 +01:00
mjpegb_decoder_select = "mjpeg_decoder"
2014-01-29 15:17:05 +01:00
mlp_decoder_select = "mlp_parser"
2017-05-08 11:24:48 -03:00
mlp_encoder_select = "lpc"
2014-02-13 17:57:05 +01:00
motionpixels_decoder_select = "bswapdsp"
2012-08-14 02:09:15 +02:00
mp1_decoder_select = "mpegaudio"
mp1float_decoder_select = "mpegaudio"
mp2_decoder_select = "mpegaudio"
mp2float_decoder_select = "mpegaudio"
mp3_decoder_select = "mpegaudio"
mp3adu_decoder_select = "mpegaudio"
mp3adufloat_decoder_select = "mpegaudio"
mp3float_decoder_select = "mpegaudio"
mp3on4_decoder_select = "mpegaudio"
mp3on4float_decoder_select = "mpegaudio"
2014-02-13 17:57:05 +01:00
mpc7_decoder_select = "bswapdsp mpegaudiodsp"
2014-01-17 00:53:40 +01:00
mpc8_decoder_select = "mpegaudiodsp"
2011-09-12 17:40:29 +02:00
mpeg_xvmc_decoder_deps = "X11_extensions_XvMClib_h"
2013-03-26 19:59:36 +01:00
mpeg_xvmc_decoder_select = "mpeg2video_decoder"
2015-08-08 11:02:25 +02:00
mpegvideo_decoder_select = "mpegvideo"
mpeg1video_decoder_select = "mpegvideo"
2014-01-20 11:25:55 +01:00
mpeg1video_encoder_select = "aandcttables mpegvideoenc h263dsp"
2015-08-08 11:02:25 +02:00
mpeg2video_decoder_select = "mpegvideo"
2014-01-20 11:25:55 +01:00
mpeg2video_encoder_select = "aandcttables mpegvideoenc h263dsp"
2011-09-12 17:40:29 +02:00
mpeg4_decoder_select = "h263_decoder mpeg4video_parser"
mpeg4_encoder_select = "h263_encoder"
2015-07-16 16:10:59 +01:00
msa1_decoder_select = "mss34dsp"
2017-04-15 10:57:07 +02:00
mscc_decoder_select = "zlib"
2009-12-28 18:00:07 +00:00
msmpeg4v1_decoder_select = "h263_decoder"
msmpeg4v2_decoder_select = "h263_decoder"
2009-08-05 13:02:04 +00:00
msmpeg4v2_encoder_select = "h263_encoder"
2009-12-28 18:00:07 +00:00
msmpeg4v3_decoder_select = "h263_decoder"
2009-08-05 13:02:04 +00:00
msmpeg4v3_encoder_select = "h263_encoder"
2017-04-09 15:05:31 +02:00
mss2_decoder_select = "mpegvideo qpeldsp vc1_decoder"
2015-07-16 16:10:59 +01:00
mts2_decoder_select = "mss34dsp"
2014-02-27 15:02:23 -08:00
mxpeg_decoder_select = "mjpeg_decoder"
2011-03-19 23:44:00 +00:00
nellymoser_decoder_select = "mdct sinewin"
2013-02-17 22:00:36 +01:00
nellymoser_encoder_select = "audio_frame_queue mdct sinewin"
2014-01-24 11:55:16 +01:00
nuv_decoder_select = "idctdsp lzo"
2013-06-09 20:03:33 +02:00
on2avc_decoder_select = "mdct"
2014-05-15 18:28:45 +02:00
opus_decoder_deps = "swresample"
2017-02-01 03:13:06 +00:00
opus_decoder_select = "mdct15"
2017-02-16 01:15:59 -03:00
opus_encoder_select = "audio_frame_queue mdct15"
2013-10-01 23:40:19 +02:00
png_decoder_select = "zlib"
2017-01-07 23:13:48 -03:00
png_encoder_select = "llvidencdsp zlib"
2014-07-01 14:38:57 +02:00
prores_decoder_select = "blockdsp idctdsp"
2014-02-03 10:09:45 -08:00
prores_encoder_select = "fdctdsp"
2010-03-02 03:16:27 +00:00
qcelp_decoder_select = "lsp"
2011-05-16 16:52:01 +01:00
qdm2_decoder_select = "mdct rdft mpegaudiodsp"
2014-06-27 03:00:22 -03:00
ra_144_decoder_select = "audiodsp"
2016-01-24 09:28:55 -08:00
ra_144_encoder_select = "audio_frame_queue lpc audiodsp"
2012-03-27 01:04:45 +02:00
ralf_decoder_select = "golomb"
2014-07-17 23:27:40 +02:00
rawvideo_decoder_select = "bswapdsp"
2015-10-27 13:58:44 +01:00
rscc_decoder_select = "zlib"
2014-07-17 23:27:40 +02:00
rtjpeg_decoder_select = "me_cmp"
2015-08-08 11:02:25 +02:00
rv10_decoder_select = "h263_decoder"
2009-08-05 10:44:12 +00:00
rv10_encoder_select = "h263_encoder"
2015-08-08 11:02:25 +02:00
rv20_decoder_select = "h263_decoder"
2009-08-05 10:44:12 +00:00
rv20_encoder_select = "h263_encoder"
2015-08-08 11:02:25 +02:00
rv30_decoder_select = "golomb h264pred h264qpel mpegvideo rv34dsp"
rv40_decoder_select = "golomb h264pred h264qpel mpegvideo rv34dsp"
2015-10-03 14:42:02 +02:00
screenpresso_decoder_select = "zlib"
2017-04-13 18:14:04 -03:00
shorten_decoder_select = "bswapdsp"
2010-03-02 03:16:27 +00:00
sipr_decoder_select = "lsp"
2014-09-01 23:30:57 +02:00
snow_decoder_select = "dwt h264qpel hpeldsp me_cmp rangecoder videodsp"
2014-07-17 23:27:40 +02:00
snow_encoder_select = "aandcttables dwt h264qpel hpeldsp me_cmp mpegvideoenc rangecoder"
2014-01-30 12:15:28 +01:00
sonic_decoder_select = "golomb rangecoder"
sonic_encoder_select = "golomb rangecoder"
2014-05-05 09:14:31 +02:00
sonic_ls_encoder_select = "golomb rangecoder"
2014-02-27 15:02:23 -08:00
sp5x_decoder_select = "mjpeg_decoder"
2017-04-16 18:44:57 +02:00
srgc_decoder_select = "zlib"
2013-03-10 13:38:45 -07:00
svq1_decoder_select = "hpeldsp"
2014-02-08 02:59:58 +01:00
svq1_encoder_select = "aandcttables hpeldsp me_cmp mpegvideoenc"
2016-06-28 10:24:05 +02:00
svq3_decoder_select = "golomb h264dsp h264parse h264pred hpeldsp tpeldsp videodsp"
2014-03-06 13:04:03 +01:00
svq3_decoder_suggest = "zlib"
2014-01-16 17:30:19 +01:00
tak_decoder_select = "audiodsp"
2015-03-13 23:43:24 +01:00
tdsc_decoder_select = "zlib mjpeg_decoder"
2009-07-22 21:36:50 +00:00
theora_decoder_select = "vp3_decoder"
2013-11-02 17:21:49 +01:00
thp_decoder_select = "mjpeg_decoder"
2014-08-22 23:39:57 -03:00
tiff_decoder_suggest = "zlib lzma"
2008-10-25 18:36:36 +00:00
tiff_encoder_suggest = "zlib"
2012-09-11 12:19:09 +02:00
truehd_decoder_select = "mlp_parser"
2017-05-08 11:24:48 -03:00
truehd_encoder_select = "lpc"
2014-02-13 17:57:05 +01:00
truemotion2_decoder_select = "bswapdsp"
truespeech_decoder_select = "bswapdsp"
2013-10-01 23:40:19 +02:00
tscc_decoder_select = "zlib"
2011-03-19 23:44:00 +00:00
twinvq_decoder_select = "mdct lsp sinewin"
2015-06-22 21:15:50 +02:00
txd_decoder_select = "texturedsp"
2017-01-07 19:04:39 -03:00
utvideo_decoder_select = "bswapdsp llviddsp"
2017-01-07 23:13:48 -03:00
utvideo_encoder_select = "bswapdsp huffman llvidencdsp"
2017-01-07 19:04:39 -03:00
vble_decoder_select = "llviddsp"
2016-02-24 15:49:51 -03:00
vc1_decoder_select = "blockdsp h263_decoder h264qpel intrax8 mpegvideo vc1dsp"
2015-07-25 12:28:11 -04:00
vc1_qsv_decoder_deps = "libmfx"
2017-03-31 17:39:25 -03:00
vc1_qsv_decoder_select = "qsvdec vc1_qsv_hwaccel vc1_parser"
2016-01-24 09:28:55 -08:00
vc1image_decoder_select = "vc1_decoder"
2010-02-11 23:40:37 +00:00
vorbis_decoder_select = "mdct"
vorbis_encoder_select = "mdct"
2013-03-09 21:26:09 -08:00
vp3_decoder_select = "hpeldsp vp3dsp videodsp"
2015-07-16 16:11:01 +01:00
vp5_decoder_select = "h264chroma hpeldsp videodsp vp3dsp vp56dsp"
vp6_decoder_select = "h264chroma hpeldsp huffman videodsp vp3dsp vp56dsp"
2009-07-20 09:24:59 +00:00
vp6a_decoder_select = "vp6_decoder"
vp6f_decoder_select = "vp6_decoder"
2015-07-16 16:11:02 +01:00
vp7_decoder_select = "h264pred videodsp vp8dsp"
vp8_decoder_select = "h264pred videodsp vp8dsp"
2014-05-17 16:13:05 +02:00
vp9_decoder_select = "videodsp vp9_parser"
2016-01-24 20:30:33 -03:00
webp_decoder_select = "vp8_decoder exif"
2014-06-08 03:10:24 +02:00
wmalossless_decoder_select = "llauddsp"
2014-09-03 03:27:27 -07:00
wmapro_decoder_select = "mdct sinewin wma_freqs"
wmav1_decoder_select = "mdct sinewin wma_freqs"
wmav1_encoder_select = "mdct sinewin wma_freqs"
wmav2_decoder_select = "mdct sinewin wma_freqs"
wmav2_encoder_select = "mdct sinewin wma_freqs"
2011-03-19 23:44:00 +00:00
wmavoice_decoder_select = "lsp rdft dct mdct sinewin"
2009-12-29 11:11:07 +00:00
wmv1_decoder_select = "h263_decoder"
2009-08-06 12:56:25 +00:00
wmv1_encoder_select = "h263_encoder"
2016-02-19 20:51:44 -05:00
wmv2_decoder_select = "blockdsp error_resilience h263_decoder idctdsp intrax8 videodsp wmv2dsp"
2015-07-16 16:11:03 +01:00
wmv2_encoder_select = "h263_encoder wmv2dsp"
2009-07-19 11:07:10 +00:00
wmv3_decoder_select = "vc1_decoder"
2011-08-17 14:24:42 +02:00
wmv3image_decoder_select = "wmv3_decoder"
2016-01-17 18:37:01 +01:00
xma1_decoder_select = "wmapro_decoder"
xma2_decoder_select = "wmapro_decoder"
2013-10-01 23:40:19 +02:00
zerocodec_decoder_select = "zlib"
zlib_decoder_select = "zlib"
zlib_encoder_select = "zlib"
zmbv_decoder_select = "zlib"
zmbv_encoder_select = "zlib"
2007-01-21 21:01:34 +00:00
2016-02-18 21:38:37 -06:00
# platform codecs
audiotoolbox_deps = "AudioToolbox_AudioToolbox_h"
audiotoolbox_extralibs = "-framework CoreFoundation -framework AudioToolbox -framework CoreMedia"
2012-12-20 22:40:39 +01:00
# hardware accelerators
2011-03-09 22:09:00 -08:00
crystalhd_deps = "libcrystalhd_libcrystalhd_if_h"
2016-10-10 12:52:40 +02:00
cuda_deps_any = "dlopen LoadLibrary"
2016-06-04 19:06:52 +02:00
cuvid_deps = "cuda"
2015-09-11 18:23:30 -03:00
d3d11va_deps = "d3d11_h dxva_h ID3D11VideoDecoder ID3D11VideoContext"
2017-06-07 17:11:17 +02:00
dxva2_deps = "dxva2api_h DXVA2_ConfigPictureDecode ole32"
2016-11-12 02:02:29 +01:00
dxva2_extralibs = "-luser32"
2017-05-20 16:28:43 +02:00
vda_framework_deps = "VideoDecodeAcceleration_VDADecoder_h blocks_extension"
2016-03-02 20:11:40 +08:00
vda_framework_extralibs = "-framework VideoDecodeAcceleration"
vda_deps = "vda_framework pthreads"
vda_extralibs = "-framework CoreFoundation -framework QuartzCore"
videotoolbox_hwaccel_deps = "videotoolbox pthreads"
videotoolbox_hwaccel_extralibs = "-framework QuartzCore"
2013-12-14 21:29:15 +02:00
xvmc_deps = "X11_extensions_XvMClib_h"
2010-04-19 12:49:51 +00:00
2013-02-21 12:35:40 +01:00
h263_vaapi_hwaccel_deps = "vaapi"
h263_vaapi_hwaccel_select = "h263_decoder"
2015-07-11 13:23:21 +02:00
h263_videotoolbox_hwaccel_deps = "videotoolbox"
h263_videotoolbox_hwaccel_select = "h263_decoder"
2016-09-20 21:36:00 -07:00
h264_cuvid_hwaccel_deps = "cuda cuvid"
2017-03-25 22:31:22 +01:00
h264_cuvid_hwaccel_select = "h264_cuvid_decoder"
2015-05-11 10:52:47 +02:00
h264_d3d11va_hwaccel_deps = "d3d11va"
h264_d3d11va_hwaccel_select = "h264_decoder"
2017-06-07 17:11:17 +02:00
h264_d3d11va2_hwaccel_deps = "d3d11va"
h264_d3d11va2_hwaccel_select = "h264_decoder"
2013-02-21 12:39:20 +01:00
h264_dxva2_hwaccel_deps = "dxva2"
h264_dxva2_hwaccel_select = "h264_decoder"
2016-03-11 17:21:04 +01:00
h264_mediacodec_hwaccel_deps = "mediacodec"
2016-01-24 09:28:55 -08:00
h264_mmal_hwaccel_deps = "mmal"
2015-02-19 17:32:55 +01:00
h264_qsv_hwaccel_deps = "libmfx"
2013-02-21 12:35:40 +01:00
h264_vaapi_hwaccel_deps = "vaapi"
h264_vaapi_hwaccel_select = "h264_decoder"
h264_vda_hwaccel_deps = "vda"
h264_vda_hwaccel_select = "h264_decoder"
2014-03-24 01:59:02 +01:00
h264_vda_old_hwaccel_deps = "vda"
h264_vda_old_hwaccel_select = "h264_decoder"
2013-02-21 12:35:40 +01:00
h264_vdpau_hwaccel_deps = "vdpau"
h264_vdpau_hwaccel_select = "h264_decoder"
2015-07-11 13:23:21 +02:00
h264_videotoolbox_hwaccel_deps = "videotoolbox"
h264_videotoolbox_hwaccel_select = "h264_decoder"
2016-09-20 21:36:00 -07:00
hevc_cuvid_hwaccel_deps = "cuda cuvid"
2017-03-25 22:31:22 +01:00
hevc_cuvid_hwaccel_select = "hevc_cuvid_decoder"
2015-05-11 10:52:47 +02:00
hevc_d3d11va_hwaccel_deps = "d3d11va DXVA_PicParams_HEVC"
hevc_d3d11va_hwaccel_select = "hevc_decoder"
2016-09-05 17:08:41 +02:00
hevc_mediacodec_hwaccel_deps = "mediacodec"
2017-06-07 17:11:17 +02:00
hevc_d3d11va2_hwaccel_deps = "d3d11va DXVA_PicParams_HEVC"
hevc_d3d11va2_hwaccel_select = "hevc_decoder"
2015-01-25 13:01:11 +01:00
hevc_dxva2_hwaccel_deps = "dxva2 DXVA_PicParams_HEVC"
hevc_dxva2_hwaccel_select = "hevc_decoder"
2015-06-16 18:22:11 +02:00
hevc_qsv_hwaccel_deps = "libmfx"
2015-08-26 14:55:40 +02:00
hevc_vaapi_hwaccel_deps = "vaapi VAPictureParameterBufferHEVC"
hevc_vaapi_hwaccel_select = "hevc_decoder"
2015-06-13 09:42:48 -07:00
hevc_vdpau_hwaccel_deps = "vdpau VdpPictureInfoHEVC"
2015-06-30 04:09:58 -03:00
hevc_vdpau_hwaccel_select = "hevc_decoder"
2016-09-20 21:36:00 -07:00
mjpeg_cuvid_hwaccel_deps = "cuda cuvid"
2017-03-25 22:31:22 +01:00
mjpeg_cuvid_hwaccel_select = "mjpeg_cuvid_decoder"
2013-12-14 21:29:15 +02:00
mpeg_xvmc_hwaccel_deps = "xvmc"
mpeg_xvmc_hwaccel_select = "mpeg2video_decoder"
2016-09-20 21:36:00 -07:00
mpeg1_cuvid_hwaccel_deps = "cuda cuvid"
2017-03-25 22:31:22 +01:00
mpeg1_cuvid_hwaccel_select = "mpeg1_cuvid_decoder"
2013-02-21 12:35:40 +01:00
mpeg1_vdpau_hwaccel_deps = "vdpau"
mpeg1_vdpau_hwaccel_select = "mpeg1video_decoder"
2015-07-11 13:23:21 +02:00
mpeg1_videotoolbox_hwaccel_deps = "videotoolbox"
mpeg1_videotoolbox_hwaccel_select = "mpeg1video_decoder"
2013-12-14 21:29:15 +02:00
mpeg1_xvmc_hwaccel_deps = "xvmc"
mpeg1_xvmc_hwaccel_select = "mpeg1video_decoder"
2016-09-20 21:36:00 -07:00
mpeg2_cuvid_hwaccel_deps = "cuda cuvid"
2017-03-25 22:31:22 +01:00
mpeg2_cuvid_hwaccel_select = "mpeg2_cuvid_decoder"
2015-05-11 10:52:47 +02:00
mpeg2_d3d11va_hwaccel_deps = "d3d11va"
mpeg2_d3d11va_hwaccel_select = "mpeg2video_decoder"
2017-06-07 17:11:17 +02:00
mpeg2_d3d11va2_hwaccel_deps = "d3d11va"
mpeg2_d3d11va2_hwaccel_select = "mpeg2video_decoder"
2013-02-21 12:39:20 +01:00
mpeg2_dxva2_hwaccel_deps = "dxva2"
mpeg2_dxva2_hwaccel_select = "mpeg2video_decoder"
2017-06-05 16:22:58 -04:00
mpeg2_mediacodec_hwaccel_deps = "mediacodec"
2016-01-24 09:28:55 -08:00
mpeg2_mmal_hwaccel_deps = "mmal"
2015-06-16 18:22:11 +02:00
mpeg2_qsv_hwaccel_deps = "libmfx"
2015-07-26 00:51:04 +02:00
mpeg2_qsv_hwaccel_select = "qsvdec_mpeg2"
2013-02-21 12:35:40 +01:00
mpeg2_vaapi_hwaccel_deps = "vaapi"
mpeg2_vaapi_hwaccel_select = "mpeg2video_decoder"
mpeg2_vdpau_hwaccel_deps = "vdpau"
mpeg2_vdpau_hwaccel_select = "mpeg2video_decoder"
2015-07-11 13:23:21 +02:00
mpeg2_videotoolbox_hwaccel_deps = "videotoolbox"
mpeg2_videotoolbox_hwaccel_select = "mpeg2video_decoder"
2013-12-14 21:29:15 +02:00
mpeg2_xvmc_hwaccel_deps = "xvmc"
mpeg2_xvmc_hwaccel_select = "mpeg2video_decoder"
2016-09-20 21:36:00 -07:00
mpeg4_cuvid_hwaccel_deps = "cuda cuvid"
2017-03-25 22:31:22 +01:00
mpeg4_cuvid_hwaccel_select = "mpeg4_cuvid_decoder"
2016-10-04 17:47:44 +02:00
mpeg4_mediacodec_hwaccel_deps = "mediacodec"
2016-01-28 17:24:40 +01:00
mpeg4_mmal_hwaccel_deps = "mmal"
2013-02-21 12:35:40 +01:00
mpeg4_vaapi_hwaccel_deps = "vaapi"
mpeg4_vaapi_hwaccel_select = "mpeg4_decoder"
mpeg4_vdpau_hwaccel_deps = "vdpau"
mpeg4_vdpau_hwaccel_select = "mpeg4_decoder"
2015-07-11 13:23:21 +02:00
mpeg4_videotoolbox_hwaccel_deps = "videotoolbox"
mpeg4_videotoolbox_hwaccel_select = "mpeg4_decoder"
2016-09-20 21:36:00 -07:00
vc1_cuvid_hwaccel_deps = "cuda cuvid"
2017-03-25 22:31:22 +01:00
vc1_cuvid_hwaccel_select = "vc1_cuvid_decoder"
2015-05-11 10:52:47 +02:00
vc1_d3d11va_hwaccel_deps = "d3d11va"
vc1_d3d11va_hwaccel_select = "vc1_decoder"
2017-06-07 17:11:17 +02:00
vc1_d3d11va2_hwaccel_deps = "d3d11va"
vc1_d3d11va2_hwaccel_select = "vc1_decoder"
2013-02-21 12:39:20 +01:00
vc1_dxva2_hwaccel_deps = "dxva2"
vc1_dxva2_hwaccel_select = "vc1_decoder"
2016-01-24 09:28:55 -08:00
vc1_mmal_hwaccel_deps = "mmal"
vc1_qsv_hwaccel_deps = "libmfx"
vc1_qsv_hwaccel_select = "qsvdec_vc1"
2013-02-21 12:35:40 +01:00
vc1_vaapi_hwaccel_deps = "vaapi"
vc1_vaapi_hwaccel_select = "vc1_decoder"
vc1_vdpau_hwaccel_deps = "vdpau"
vc1_vdpau_hwaccel_select = "vc1_decoder"
2016-09-20 21:36:00 -07:00
vp8_cuvid_hwaccel_deps = "cuda cuvid"
2017-03-25 22:31:22 +01:00
vp8_cuvid_hwaccel_select = "vp8_cuvid_decoder"
2016-09-20 21:36:00 -07:00
vp9_cuvid_hwaccel_deps = "cuda cuvid"
2017-03-25 22:31:22 +01:00
vp9_cuvid_hwaccel_select = "vp9_cuvid_decoder"
2016-10-04 16:02:59 +02:00
vp8_mediacodec_hwaccel_deps = "mediacodec"
2016-10-27 20:33:56 +01:00
vp8_qsv_hwaccel_deps = "libmfx"
2015-12-07 13:12:21 -03:00
vp9_d3d11va_hwaccel_deps = "d3d11va DXVA_PicParams_VP9"
2015-12-03 11:09:51 +01:00
vp9_d3d11va_hwaccel_select = "vp9_decoder"
2017-06-07 17:11:17 +02:00
vp9_d3d11va2_hwaccel_deps = "d3d11va DXVA_PicParams_VP9"
vp9_d3d11va2_hwaccel_select = "vp9_decoder"
2015-12-03 11:09:51 +01:00
vp9_dxva2_hwaccel_deps = "dxva2 DXVA_PicParams_VP9"
vp9_dxva2_hwaccel_select = "vp9_decoder"
2016-10-04 16:02:59 +02:00
vp9_mediacodec_hwaccel_deps = "mediacodec"
2016-12-08 19:29:14 +00:00
vp9_vaapi_hwaccel_deps = "vaapi VADecPictureParameterBufferVP9_bit_depth"
2015-12-19 20:31:00 +01:00
vp9_vaapi_hwaccel_select = "vp9_decoder"
2015-05-11 10:52:47 +02:00
wmv3_d3d11va_hwaccel_select = "vc1_d3d11va_hwaccel"
2017-06-07 17:11:17 +02:00
wmv3_d3d11va2_hwaccel_select = "vc1_d3d11va2_hwaccel"
2012-12-20 22:40:39 +01:00
wmv3_dxva2_hwaccel_select = "vc1_dxva2_hwaccel"
wmv3_vaapi_hwaccel_select = "vc1_vaapi_hwaccel"
2013-01-12 17:53:47 +02:00
wmv3_vdpau_hwaccel_select = "vc1_vdpau_hwaccel"
2012-12-20 22:40:39 +01:00
2016-03-21 16:06:32 +01:00
# hardware-accelerated codecs
2012-04-08 01:18:07 +03:00
omx_deps = "dlopen pthreads"
omx_extralibs = '$ldl'
2016-12-02 12:33:50 +01:00
omx_rpi_select = "omx"
2016-03-21 16:06:32 +01:00
qsvdec_select = "qsv"
qsvenc_select = "qsv"
vaapi_encode_deps = "vaapi"
hwupload_cuda_filter_deps = "cuda"
2017-06-01 11:36:13 +02:00
scale_npp_filter_deps = "cuda libnpp"
2017-05-11 22:53:41 +02:00
scale_cuda_filter_deps = "cuda_sdk"
2016-03-21 16:06:32 +01:00
2016-10-10 12:55:59 +02:00
nvenc_deps = "cuda"
2016-08-31 16:39:59 +02:00
nvenc_deps_any = "dlopen LoadLibrary"
2016-05-11 15:11:46 +01:00
nvenc_encoder_deps = "nvenc"
2017-04-08 14:06:48 +02:00
h264_crystalhd_decoder_select = "crystalhd h264_mp4toannexb_bsf h264_parser"
2016-09-20 21:36:00 -07:00
h264_cuvid_decoder_deps = "cuda cuvid"
2017-03-25 22:31:22 +01:00
h264_cuvid_decoder_select = "h264_mp4toannexb_bsf"
2017-04-08 14:06:48 +02:00
h264_mediacodec_decoder_deps = "mediacodec"
h264_mediacodec_decoder_select = "h264_mp4toannexb_bsf h264_parser"
2016-11-16 18:38:52 +01:00
h264_mmal_decoder_deps = "mmal"
2016-06-25 22:24:13 +02:00
h264_nvenc_encoder_deps = "nvenc"
2016-11-16 18:38:52 +01:00
h264_omx_encoder_deps = "omx"
2016-03-21 16:06:32 +01:00
h264_qsv_decoder_deps = "libmfx"
h264_qsv_decoder_select = "h264_mp4toannexb_bsf h264_parser qsvdec h264_qsv_hwaccel"
h264_qsv_encoder_deps = "libmfx"
h264_qsv_encoder_select = "qsvenc"
h264_vaapi_encoder_deps = "VAEncPictureParameterBufferH264"
h264_vaapi_encoder_select = "vaapi_encode golomb"
2017-04-08 14:06:48 +02:00
h264_vda_decoder_deps = "vda"
h264_vda_decoder_select = "h264_decoder"
h264_vdpau_decoder_deps = "vdpau"
h264_vdpau_decoder_select = "h264_decoder"
2016-09-20 21:36:00 -07:00
hevc_cuvid_decoder_deps = "cuda cuvid"
2017-03-25 22:31:22 +01:00
hevc_cuvid_decoder_select = "hevc_mp4toannexb_bsf"
2017-04-08 14:06:48 +02:00
hevc_mediacodec_decoder_deps = "mediacodec"
hevc_mediacodec_decoder_select = "hevc_mp4toannexb_bsf hevc_parser"
2016-06-25 22:24:13 +02:00
hevc_nvenc_encoder_deps = "nvenc"
2016-03-21 16:06:32 +01:00
hevc_qsv_decoder_deps = "libmfx"
2016-05-11 15:11:46 +01:00
hevc_qsv_decoder_select = "hevc_mp4toannexb_bsf hevc_parser qsvdec hevc_qsv_hwaccel"
2016-03-21 16:06:32 +01:00
hevc_qsv_encoder_deps = "libmfx"
2017-04-02 15:40:01 -03:00
hevc_qsv_encoder_select = "hevcparse qsvenc"
2016-03-21 16:06:32 +01:00
hevc_vaapi_encoder_deps = "VAEncPictureParameterBufferHEVC"
hevc_vaapi_encoder_select = "vaapi_encode golomb"
2016-09-20 21:36:00 -07:00
mjpeg_cuvid_decoder_deps = "cuda cuvid"
2016-11-16 18:38:52 +01:00
mjpeg_vaapi_encoder_deps = "VAEncPictureParameterBufferJPEG"
mjpeg_vaapi_encoder_select = "vaapi_encode jpegtables"
2016-09-20 21:36:00 -07:00
mpeg1_cuvid_decoder_deps = "cuda cuvid"
2017-04-08 14:06:48 +02:00
mpeg1_vdpau_decoder_deps = "vdpau"
mpeg1_vdpau_decoder_select = "mpeg1video_decoder"
mpeg2_crystalhd_decoder_select = "crystalhd"
2016-09-20 21:36:00 -07:00
mpeg2_cuvid_decoder_deps = "cuda cuvid"
2016-11-16 18:38:52 +01:00
mpeg2_mmal_decoder_deps = "mmal"
2017-06-05 16:22:58 -04:00
mpeg2_mediacodec_decoder_deps = "mediacodec"
2016-03-21 16:06:32 +01:00
mpeg2_qsv_decoder_deps = "libmfx"
2016-05-11 15:11:46 +01:00
mpeg2_qsv_decoder_select = "qsvdec mpeg2_qsv_hwaccel"
2016-03-21 16:06:32 +01:00
mpeg2_qsv_encoder_deps = "libmfx"
mpeg2_qsv_encoder_select = "qsvenc"
2017-01-09 19:17:37 +00:00
mpeg2_vaapi_encoder_deps = "VAEncPictureParameterBufferMPEG2"
mpeg2_vaapi_encoder_select = "vaapi_encode"
2017-04-08 14:06:48 +02:00
mpeg4_crystalhd_decoder_select = "crystalhd"
2016-09-20 21:36:00 -07:00
mpeg4_cuvid_decoder_deps = "cuda cuvid"
2017-04-08 14:06:48 +02:00
mpeg4_mediacodec_decoder_deps = "mediacodec"
mpeg4_mmal_decoder_deps = "mmal"
2016-11-16 18:38:52 +01:00
mpeg4_omx_encoder_deps = "omx"
2017-04-08 14:06:48 +02:00
mpeg4_vdpau_decoder_deps = "vdpau"
mpeg4_vdpau_decoder_select = "mpeg4_decoder"
mpeg_vdpau_decoder_deps = "vdpau"
mpeg_vdpau_decoder_select = "mpeg2video_decoder"
msmpeg4_crystalhd_decoder_select = "crystalhd"
2016-12-03 15:36:32 +01:00
nvenc_h264_encoder_select = "h264_nvenc_encoder"
nvenc_hevc_encoder_select = "hevc_nvenc_encoder"
2017-04-08 14:06:48 +02:00
vc1_crystalhd_decoder_select = "crystalhd"
2016-09-20 21:36:00 -07:00
vc1_cuvid_decoder_deps = "cuda cuvid"
2017-04-08 14:06:48 +02:00
vc1_mmal_decoder_deps = "mmal"
vc1_vdpau_decoder_deps = "vdpau"
vc1_vdpau_decoder_select = "vc1_decoder"
2016-09-20 21:36:00 -07:00
vp8_cuvid_decoder_deps = "cuda cuvid"
2017-04-08 14:06:48 +02:00
vp8_mediacodec_decoder_deps = "mediacodec"
2017-04-01 11:17:24 +02:00
vp8_qsv_decoder_deps = "libmfx"
vp8_qsv_decoder_select = "qsvdec vp8_qsv_hwaccel vp8_parser"
2016-11-29 20:38:29 +00:00
vp8_vaapi_encoder_deps = "VAEncPictureParameterBufferVP8"
vp8_vaapi_encoder_select = "vaapi_encode"
2016-09-20 21:36:00 -07:00
vp9_cuvid_decoder_deps = "cuda cuvid"
2017-04-08 14:06:48 +02:00
vp9_mediacodec_decoder_deps = "mediacodec"
2016-11-28 23:54:57 +00:00
vp9_vaapi_encoder_deps = "VAEncPictureParameterBufferVP9"
vp9_vaapi_encoder_select = "vaapi_encode"
2017-04-08 14:06:48 +02:00
wmv3_crystalhd_decoder_select = "crystalhd"
wmv3_vdpau_decoder_select = "vc1_vdpau_decoder"
2016-06-04 19:06:52 +02:00
2009-06-09 20:29:52 +00:00
# parsers
2016-06-28 10:24:05 +02:00
h264_parser_select = "golomb h264dsp h264parse"
2017-04-13 18:15:39 -03:00
hevc_parser_select = "hevcparse"
2016-12-03 11:25:02 +01:00
mpegaudio_parser_select = "mpegaudioheader"
2014-06-19 08:15:50 -07:00
mpegvideo_parser_select = "mpegvideo"
2015-08-08 11:02:25 +02:00
mpeg4video_parser_select = "h263dsp mpegvideo qpeldsp"
2016-02-10 15:41:50 +01:00
vc1_parser_select = "vc1dsp"
2009-06-09 20:29:52 +00:00
2015-03-27 12:23:59 +01:00
# bitstream_filters
mjpeg2jpeg_bsf_select = "jpegtables"
2007-05-08 08:27:00 +00:00
# external libraries
2016-02-18 21:38:37 -06:00
aac_at_decoder_deps = "audiotoolbox"
ac3_at_decoder_deps = "audiotoolbox"
2016-04-07 20:43:37 -05:00
ac3_at_decoder_select = "ac3_parser"
2016-02-18 21:38:37 -06:00
adpcm_ima_qt_at_decoder_deps = "audiotoolbox"
alac_at_decoder_deps = "audiotoolbox"
amr_nb_at_decoder_deps = "audiotoolbox"
2016-10-31 14:30:43 +11:00
avisynth_deps_any = "dlopen LoadLibrary"
avisynth_demuxer_deps = "avisynth"
avisynth_demuxer_select = "riffdec"
2016-03-30 20:55:32 -05:00
eac3_at_decoder_deps = "audiotoolbox"
2016-04-07 20:43:37 -05:00
eac3_at_decoder_select = "ac3_parser"
2016-02-18 21:38:37 -06:00
gsm_ms_at_decoder_deps = "audiotoolbox"
ilbc_at_decoder_deps = "audiotoolbox"
mp1_at_decoder_deps = "audiotoolbox"
mp2_at_decoder_deps = "audiotoolbox"
mp3_at_decoder_deps = "audiotoolbox"
2017-04-09 12:03:30 -03:00
mp1_at_decoder_select = "mpegaudioheader"
mp2_at_decoder_select = "mpegaudioheader"
mp3_at_decoder_select = "mpegaudioheader"
2016-02-18 21:38:37 -06:00
pcm_alaw_at_decoder_deps = "audiotoolbox"
pcm_mulaw_at_decoder_deps = "audiotoolbox"
qdmc_at_decoder_deps = "audiotoolbox"
qdm2_at_decoder_deps = "audiotoolbox"
2016-02-23 21:01:24 -06:00
aac_at_encoder_deps = "audiotoolbox"
aac_at_encoder_select = "audio_frame_queue"
alac_at_encoder_deps = "audiotoolbox"
alac_at_encoder_select = "audio_frame_queue"
ilbc_at_encoder_deps = "audiotoolbox"
ilbc_at_encoder_select = "audio_frame_queue"
pcm_alaw_at_encoder_deps = "audiotoolbox"
pcm_alaw_at_encoder_select = "audio_frame_queue"
pcm_mulaw_at_encoder_deps = "audiotoolbox"
pcm_mulaw_at_encoder_select = "audio_frame_queue"
2015-10-03 17:24:06 -05:00
chromaprint_muxer_deps = "chromaprint"
2016-03-02 20:11:40 +08:00
h264_videotoolbox_encoder_deps = "videotoolbox_encoder pthreads"
2011-04-16 17:45:30 +02:00
libcelt_decoder_deps = "libcelt"
2013-08-15 15:40:32 -04:00
libfdk_aac_decoder_deps = "libfdk_aac"
2012-06-28 16:46:24 +03:00
libfdk_aac_encoder_deps = "libfdk_aac"
2013-02-17 22:00:36 +01:00
libfdk_aac_encoder_select = "audio_frame_queue"
2013-06-28 10:36:00 +02:00
libgme_demuxer_deps = "libgme"
2007-01-21 21:45:48 +00:00
libgsm_decoder_deps = "libgsm"
libgsm_encoder_deps = "libgsm"
2007-02-20 18:56:45 +00:00
libgsm_ms_decoder_deps = "libgsm"
libgsm_ms_encoder_deps = "libgsm"
2012-06-16 00:42:13 +03:00
libilbc_decoder_deps = "libilbc"
libilbc_encoder_deps = "libilbc"
2015-07-14 08:53:35 +03:00
libkvazaar_encoder_deps = "libkvazaar"
2011-10-05 00:33:06 +02:00
libmodplug_demuxer_deps = "libmodplug"
2007-06-06 08:51:41 +00:00
libmp3lame_encoder_deps = "libmp3lame"
2016-12-03 11:25:02 +01:00
libmp3lame_encoder_select = "audio_frame_queue mpegaudioheader"
2009-06-05 12:32:40 +00:00
libopencore_amrnb_decoder_deps = "libopencore_amrnb"
libopencore_amrnb_encoder_deps = "libopencore_amrnb"
2013-02-17 22:00:36 +01:00
libopencore_amrnb_encoder_select = "audio_frame_queue"
2009-06-05 12:32:40 +00:00
libopencore_amrwb_decoder_deps = "libopencore_amrwb"
2016-06-24 00:58:17 +03:00
libopenh264_decoder_deps = "libopenh264"
libopenh264_decoder_select = "h264_mp4toannexb_bsf"
2013-12-12 17:13:55 +02:00
libopenh264_encoder_deps = "libopenh264"
2009-02-06 11:49:31 +00:00
libopenjpeg_decoder_deps = "libopenjpeg"
2011-11-17 16:57:09 -07:00
libopenjpeg_encoder_deps = "libopenjpeg"
2016-07-14 18:30:27 +01:00
libopenmpt_demuxer_deps = "libopenmpt"
2012-06-24 11:39:05 +02:00
libopus_decoder_deps = "libopus"
2012-09-28 23:16:09 -06:00
libopus_encoder_deps = "libopus"
2013-02-17 22:00:36 +01:00
libopus_encoder_select = "audio_frame_queue"
2017-05-08 05:02:19 +01:00
librsvg_decoder_deps = "librsvg"
2012-07-29 18:20:00 +00:00
libshine_encoder_deps = "libshine"
libshine_encoder_select = "audio_frame_queue"
2008-10-24 06:29:05 +00:00
libspeex_decoder_deps = "libspeex"
2011-09-11 03:14:14 +02:00
libspeex_encoder_deps = "libspeex"
2013-02-17 22:00:36 +01:00
libspeex_encoder_select = "audio_frame_queue"
2007-01-25 00:16:28 +00:00
libtheora_encoder_deps = "libtheora"
2012-08-01 14:33:34 +00:00
libtwolame_encoder_deps = "libtwolame"
2009-12-29 16:48:09 +02:00
libvo_amrwbenc_encoder_deps = "libvo_amrwbenc"
2012-05-05 10:45:30 +02:00
libvorbis_decoder_deps = "libvorbis"
2007-05-04 00:18:54 +00:00
libvorbis_encoder_deps = "libvorbis"
2013-02-17 22:00:36 +01:00
libvorbis_encoder_select = "audio_frame_queue"
2012-12-30 19:40:20 +01:00
libvpx_vp8_decoder_deps = "libvpx"
libvpx_vp8_encoder_deps = "libvpx"
libvpx_vp9_decoder_deps = "libvpx"
libvpx_vp9_encoder_deps = "libvpx"
2013-05-25 19:22:59 +02:00
libwavpack_encoder_deps = "libwavpack"
2016-12-03 11:56:37 +01:00
libwavpack_encoder_select = "audio_frame_queue"
2013-11-22 11:05:13 -05:00
libwebp_encoder_deps = "libwebp"
2015-05-19 18:04:07 -07:00
libwebp_anim_encoder_deps = "libwebp"
2015-07-10 14:45:14 +02:00
libx262_encoder_deps = "libx262"
2007-06-06 08:51:41 +00:00
libx264_encoder_deps = "libx264"
2016-02-27 23:23:41 +01:00
libx264rgb_encoder_deps = "libx264 x264_csp_bgr"
2014-12-08 10:43:12 +01:00
libx264rgb_encoder_select = "libx264_encoder"
2013-10-02 14:46:26 +00:00
libx265_encoder_deps = "libx265"
2010-07-27 07:18:36 +00:00
libxavs_encoder_deps = "libxavs"
2007-06-06 08:51:41 +00:00
libxvid_encoder_deps = "libxvid"
2013-09-01 23:05:50 +02:00
libzvbi_teletext_decoder_deps = "libzvbi"
2016-03-02 20:11:40 +08:00
videotoolbox_deps = "VideoToolbox_VideoToolbox_h"
videotoolbox_extralibs = "-framework CoreFoundation -framework VideoToolbox -framework CoreMedia -framework CoreVideo"
videotoolbox_encoder_deps = "videotoolbox VTCompressionSessionPrepareToEncodeFrames"
2016-04-27 10:53:15 -04:00
videotoolbox_encoder_suggest = "vda_framework vt_bt2020"
vt_bt2020_deps = "kCVImageBufferColorPrimaries_ITU_R_2020"
2007-01-21 21:01:34 +00:00
2007-05-08 08:27:00 +00:00
# demuxers / muxers
2011-01-21 18:12:17 +00:00
ac3_demuxer_select = "ac3_parser"
2017-01-16 12:03:21 +01:00
aiff_muxer_select = "iso_media"
2013-08-04 14:33:36 +02:00
asf_demuxer_select = "riffdec"
2015-06-28 13:05:45 +02:00
asf_o_demuxer_select = "riffdec"
2013-08-04 14:10:54 +02:00
asf_muxer_select = "riffenc"
2009-07-12 22:31:05 +00:00
asf_stream_muxer_select = "asf_muxer"
2016-02-24 17:53:30 +00:00
avi_demuxer_select = "iso_media riffdec exif"
2013-08-04 14:10:54 +02:00
avi_muxer_select = "riffenc"
2016-02-16 19:59:06 +01:00
caf_demuxer_select = "iso_media riffdec"
2017-01-16 12:03:21 +01:00
caf_muxer_select = "iso_media"
2014-10-06 11:36:17 +03:00
dash_muxer_select = "mp4_muxer"
2011-01-21 18:12:17 +00:00
dirac_demuxer_select = "dirac_parser"
2012-10-05 15:55:50 +00:00
dts_demuxer_select = "dca_parser"
2012-10-05 12:32:20 +00:00
dtshd_demuxer_select = "dca_parser"
2014-07-05 09:09:15 +00:00
dv_demuxer_select = "dvprofile"
dv_muxer_select = "dvprofile"
2013-08-04 14:33:36 +02:00
dxa_demuxer_select = "riffdec"
2009-12-29 13:14:41 +00:00
eac3_demuxer_select = "ac3_parser"
2012-09-17 16:16:16 +02:00
f4v_muxer_select = "mov_muxer"
2016-08-29 16:56:32 +10:00
fifo_muxer_deps = "threads"
2011-01-21 18:12:17 +00:00
flac_demuxer_select = "flac_parser"
2013-08-15 16:06:52 +03:00
hds_muxer_select = "flv_muxer"
2013-08-15 16:09:27 +03:00
hls_muxer_select = "mpegts_muxer"
2014-04-19 00:46:23 +02:00
image2_alias_pix_demuxer_select = "image2_demuxer"
image2_brender_pix_demuxer_select = "image2_demuxer"
2009-07-12 22:31:05 +00:00
ipod_muxer_select = "mov_muxer"
2012-12-01 17:56:00 +01:00
ismv_muxer_select = "mov_muxer"
2009-07-12 22:31:05 +00:00
matroska_audio_muxer_select = "matroska_muxer"
2016-02-16 19:59:06 +01:00
matroska_demuxer_select = "iso_media riffdec"
2012-10-18 19:48:27 +02:00
matroska_demuxer_suggest = "bzlib lzo zlib"
2016-02-16 19:59:06 +01:00
matroska_muxer_select = "iso_media riffenc"
2013-08-04 14:10:54 +02:00
mmf_muxer_select = "riffenc"
2016-02-16 19:59:06 +01:00
mov_demuxer_select = "iso_media riffdec"
2009-06-29 20:00:58 +00:00
mov_demuxer_suggest = "zlib"
2016-02-16 19:59:06 +01:00
mov_muxer_select = "iso_media riffenc rtpenc_chain"
2011-01-21 18:12:17 +00:00
mp3_demuxer_select = "mpegaudio_parser"
2016-12-03 11:25:02 +01:00
mp3_muxer_select = "mpegaudioheader"
2009-07-12 22:31:05 +00:00
mp4_muxer_select = "mov_muxer"
2016-02-16 19:59:06 +01:00
mpegts_demuxer_select = "iso_media"
2013-03-25 12:42:57 +02:00
mpegts_muxer_select = "adts_muxer latm_muxer"
2009-07-12 22:31:05 +00:00
mpegtsraw_demuxer_select = "mpegts_demuxer"
mxf_d10_muxer_select = "mxf_muxer"
2015-02-09 19:19:08 -08:00
mxf_opatom_muxer_select = "mxf_muxer"
2013-08-04 14:10:54 +02:00
nut_muxer_select = "riffenc"
2013-08-04 14:33:36 +02:00
nuv_demuxer_select = "riffdec"
2014-08-17 20:55:37 +02:00
oga_muxer_select = "ogg_muxer"
2014-07-05 09:09:15 +00:00
ogg_demuxer_select = "dirac_parse"
2016-07-20 21:55:12 -03:00
ogv_muxer_select = "ogg_muxer"
2014-08-17 20:55:37 +02:00
opus_muxer_select = "ogg_muxer"
2009-07-12 22:31:05 +00:00
psp_muxer_select = "mov_muxer"
2010-10-19 07:38:53 +00:00
rtp_demuxer_select = "sdp_demuxer"
2016-12-03 12:53:50 +01:00
rtp_muxer_select = "golomb"
2016-03-18 15:52:30 +01:00
rtpdec_select = "asf_demuxer jpegtables mov_demuxer mpegts_demuxer rm_demuxer rtp_protocol srtp"
2010-10-21 12:18:48 +00:00
rtsp_demuxer_select = "http_protocol rtpdec"
2012-11-29 10:34:54 +01:00
rtsp_muxer_select = "rtp_muxer http_protocol rtp_protocol rtpenc_chain"
2010-10-13 09:06:59 +00:00
sap_demuxer_select = "sdp_demuxer"
2012-11-29 10:34:54 +01:00
sap_muxer_select = "rtp_muxer rtp_protocol rtpenc_chain"
2010-10-21 12:18:48 +00:00
sdp_demuxer_select = "rtpdec"
2012-09-18 11:34:16 +03:00
smoothstreaming_muxer_select = "ismv_muxer"
2009-12-29 11:42:16 +00:00
spdif_muxer_select = "aac_parser"
2014-08-17 20:55:37 +02:00
spx_muxer_select = "ogg_muxer"
2015-12-02 18:41:00 -05:00
swf_demuxer_suggest = "zlib"
2012-10-02 13:43:19 +00:00
tak_demuxer_select = "tak_parser"
2009-07-12 22:31:05 +00:00
tg2_muxer_select = "mov_muxer"
tgp_muxer_select = "mov_muxer"
2012-09-03 02:51:00 +02:00
vobsub_demuxer_select = "mpegps_demuxer"
2013-08-05 23:05:30 +02:00
w64_demuxer_select = "wav_demuxer"
2013-08-06 19:21:29 +02:00
w64_muxer_select = "wav_muxer"
2013-08-04 14:33:36 +02:00
wav_demuxer_select = "riffdec"
2013-08-04 14:10:54 +02:00
wav_muxer_select = "riffenc"
2016-02-16 19:59:06 +01:00
webm_muxer_select = "iso_media riffenc"
2016-02-20 00:29:55 +01:00
webm_dash_manifest_demuxer_select = "matroska_demuxer"
2016-02-16 19:51:26 +01:00
wtv_demuxer_select = "mpegts_demuxer riffdec"
2016-02-24 17:46:10 +00:00
wtv_muxer_select = "mpegts_muxer riffenc"
2013-08-04 14:33:36 +02:00
xmv_demuxer_select = "riffdec"
xwma_demuxer_select = "riffdec"
2009-06-29 20:00:58 +00:00
# indevs / outdevs
2016-12-08 11:49:34 +01:00
alsa_indev_deps = "alsa"
alsa_outdev_deps = "alsa"
2017-04-09 14:41:43 -03:00
avfoundation_indev_deps = "pthreads"
2016-11-28 08:55:31 +01:00
avfoundation_indev_extralibs = "-framework Foundation -framework AVFoundation -framework CoreVideo -framework CoreMedia"
2009-06-29 18:49:15 +00:00
bktr_indev_deps_any = "dev_bktr_ioctl_bt848_h machine_ioctl_bt848_h dev_video_bktr_ioctl_bt848_h dev_ic_bt8xx_h"
2012-03-13 21:45:46 +00:00
caca_outdev_deps = "libcaca"
2017-04-15 08:41:46 +02:00
decklink_indev_deps = "decklink threads"
2014-09-22 02:46:03 +02:00
decklink_indev_extralibs = "-lstdc++"
2017-04-15 08:41:46 +02:00
decklink_outdev_deps = "decklink threads"
2016-01-24 09:28:55 -08:00
decklink_outdev_extralibs = "-lstdc++"
2017-08-18 09:34:06 -04:00
libndi_newtek_indev_deps = "libndi_newtek"
libndi_newtek_indev_extralibs = "-lndi"
libndi_newtek_outdev_deps = "libndi_newtek"
libndi_newtek_outdev_extralibs = "-lndi"
2011-05-21 14:24:50 +02:00
dshow_indev_deps = "IBaseFilter"
2015-04-22 18:38:38 +02:00
dshow_indev_extralibs = "-lpsapi -lole32 -lstrmiids -luuid -loleaut32 -lshlwapi"
2013-08-06 02:36:17 +02:00
dv1394_indev_deps = "dv1394"
dv1394_indev_select = "dv_demuxer"
2011-03-07 18:54:52 +01:00
fbdev_indev_deps = "linux_fb_h"
2013-10-16 17:18:55 +02:00
fbdev_outdev_deps = "linux_fb_h"
2014-04-02 14:53:10 -04:00
gdigrab_indev_deps = "CreateDIBSection"
gdigrab_indev_extralibs = "-lgdi32"
gdigrab_indev_select = "bmp_decoder"
2012-07-05 14:02:53 +02:00
iec61883_indev_deps = "libiec61883"
2016-12-08 11:49:34 +01:00
jack_indev_deps = "jack"
2016-02-21 22:42:32 +00:00
jack_indev_deps_any = "sem_timedwait dispatch_dispatch_h"
2011-06-11 15:40:08 +02:00
lavfi_indev_deps = "avfilter"
2011-09-13 17:23:06 +02:00
libcdio_indev_deps = "libcdio"
2009-06-29 18:49:15 +00:00
libdc1394_indev_deps = "libdc1394"
2011-10-30 03:21:55 +01:00
libv4l2_indev_deps = "libv4l2"
2011-06-25 08:06:00 +02:00
openal_indev_deps = "openal"
2013-11-24 20:13:27 +01:00
opengl_outdev_deps = "opengl"
2009-06-29 18:49:15 +00:00
oss_indev_deps_any = "soundcard_h sys_soundcard_h"
oss_outdev_deps_any = "soundcard_h sys_soundcard_h"
2011-10-19 11:23:20 -07:00
pulse_indev_deps = "libpulse"
2013-10-04 11:49:07 +02:00
pulse_outdev_deps = "libpulse"
2014-03-24 10:55:35 +01:00
qtkit_indev_extralibs = "-framework QTKit -framework Foundation -framework QuartzCore"
qtkit_indev_select = "qtkit"
2016-02-24 23:31:02 +00:00
sdl2_outdev_deps = "sdl2"
2016-12-08 11:49:34 +01:00
sndio_indev_deps = "sndio"
sndio_outdev_deps = "sndio"
2009-06-29 18:49:15 +00:00
v4l_indev_deps = "linux_videodev_h"
v4l2_indev_deps_any = "linux_videodev2_h sys_videoio_h"
2013-05-19 23:36:10 +02:00
v4l2_outdev_deps_any = "linux_videodev2_h sys_videoio_h"
2016-12-08 10:16:34 +01:00
vfwcap_indev_deps = "vfw32 vfwcap_defines"
2016-07-27 11:31:49 +02:00
xcbgrab_indev_deps = "libxcb"
2016-01-24 09:28:55 -08:00
xv_outdev_deps = "X11_extensions_Xvlib_h XvGetPortAttribute"
xv_outdev_extralibs = "-lXv -lX11 -lXext"
2007-01-21 21:01:34 +00:00
2007-05-08 08:27:00 +00:00
# protocols
2015-09-30 13:41:53 +10:00
async_protocol_deps = "threads"
2012-03-03 04:25:48 +01:00
bluray_protocol_deps = "libbluray"
2012-07-19 14:13:58 +02:00
ffrtmpcrypt_protocol_deps = "!librtmp_protocol"
2015-05-31 23:46:56 +03:00
ffrtmpcrypt_protocol_deps_any = "gcrypt gmp openssl"
2012-07-19 14:13:58 +02:00
ffrtmpcrypt_protocol_select = "tcp_protocol"
2012-07-16 11:56:20 +02:00
ffrtmphttp_protocol_deps = "!librtmp_protocol"
ffrtmphttp_protocol_select = "http_protocol"
2013-05-15 16:08:11 +02:00
ftp_protocol_select = "tcp_protocol"
2012-12-07 15:03:40 +01:00
gopher_protocol_select = "network"
2010-03-09 12:09:55 +00:00
http_protocol_select = "tcp_protocol"
2013-11-02 17:21:49 +01:00
httpproxy_protocol_select = "tcp_protocol"
2011-02-06 00:20:26 +02:00
https_protocol_select = "tls_protocol"
2014-07-28 11:55:38 +02:00
icecast_protocol_select = "http_protocol"
2012-02-13 19:37:25 +01:00
librtmp_protocol_deps = "librtmp"
librtmpe_protocol_deps = "librtmp"
librtmps_protocol_deps = "librtmp"
librtmpt_protocol_deps = "librtmp"
librtmpte_protocol_deps = "librtmp"
2014-07-13 00:54:23 +02:00
libsmbclient_protocol_deps = "libsmbclient gplv3"
2013-09-18 14:08:11 +02:00
libssh_protocol_deps = "libssh"
2010-08-22 12:03:27 +00:00
mmsh_protocol_select = "http_protocol"
2012-12-07 15:03:40 +01:00
mmst_protocol_select = "network"
2012-02-13 19:37:25 +01:00
rtmp_protocol_deps = "!librtmp_protocol"
2010-05-14 18:51:46 +00:00
rtmp_protocol_select = "tcp_protocol"
2012-07-19 14:13:58 +02:00
rtmpe_protocol_select = "ffrtmpcrypt_protocol"
2012-07-17 12:02:42 +02:00
rtmps_protocol_deps = "!librtmp_protocol"
rtmps_protocol_select = "tls_protocol"
2012-07-16 11:56:20 +02:00
rtmpt_protocol_select = "ffrtmphttp_protocol"
2012-07-20 16:36:47 +02:00
rtmpte_protocol_select = "ffrtmpcrypt_protocol ffrtmphttp_protocol"
2012-07-23 16:38:45 +03:00
rtmpts_protocol_select = "ffrtmphttp_protocol https_protocol"
2010-05-14 18:51:46 +00:00
rtp_protocol_select = "udp_protocol"
2016-03-09 14:17:46 +01:00
sctp_protocol_deps = "struct_sctp_event_subscribe struct_msghdr_msg_flags"
2012-12-07 15:03:40 +01:00
sctp_protocol_select = "network"
2016-03-18 15:52:30 +01:00
srtp_protocol_select = "rtp_protocol srtp"
2012-12-07 15:03:40 +01:00
tcp_protocol_select = "network"
2015-10-04 14:48:49 +02:00
tls_gnutls_protocol_deps = "gnutls !tls_schannel_protocol !tls_securetransport_protocol"
2015-06-01 16:42:37 -03:00
tls_gnutls_protocol_select = "tcp_protocol"
2015-10-04 14:48:49 +02:00
tls_openssl_protocol_deps = "openssl !tls_schannel_protocol !tls_securetransport_protocol !tls_gnutls_protocol"
2015-06-01 16:42:37 -03:00
tls_openssl_protocol_select = "tcp_protocol"
2015-10-04 14:48:49 +02:00
tls_schannel_protocol_deps = "schannel"
tls_schannel_protocol_select = "tcp_protocol"
2015-06-02 22:41:53 +02:00
tls_securetransport_protocol_deps = "securetransport"
2015-06-01 16:42:37 -03:00
tls_securetransport_protocol_select = "tcp_protocol"
2016-02-17 23:34:54 +01:00
tls_protocol_deps_any = "tls_schannel_protocol tls_securetransport_protocol tls_gnutls_protocol tls_openssl_protocol"
2012-12-07 15:03:40 +01:00
udp_protocol_select = "network"
2014-11-05 10:59:44 +01:00
udplite_protocol_select = "network"
2013-07-30 01:34:56 +02:00
unix_protocol_deps = "sys_un_h"
unix_protocol_select = "network"
2007-04-26 23:44:56 +00:00
2010-09-14 13:21:13 +00:00
# filters
2016-01-16 15:09:25 +01:00
afftfilt_filter_deps = "avcodec"
afftfilt_filter_select = "fft"
2017-01-26 17:03:08 +01:00
afir_filter_deps = "avcodec"
afir_filter_select = "fft"
2011-08-18 14:26:15 +02:00
amovie_filter_deps = "avcodec avformat"
2012-01-21 20:26:31 +01:00
aresample_filter_deps = "swresample"
2011-09-17 15:52:19 +02:00
ass_filter_deps = "libass"
2013-10-02 01:27:22 +02:00
atempo_filter_deps = "avcodec"
atempo_filter_select = "rdft"
2013-04-21 15:00:11 +02:00
azmq_filter_deps = "libzmq"
2010-09-26 21:36:05 +00:00
blackframe_filter_deps = "gpl"
2011-07-09 18:13:10 +02:00
boxblur_filter_deps = "gpl"
2014-04-29 18:53:16 +02:00
bs2b_filter_deps = "libbs2b"
2012-03-10 04:04:19 +01:00
colormatrix_filter_deps = "gpl"
2015-05-02 21:28:31 +02:00
cover_rect_filter_deps = "avcodec avformat gpl"
2010-10-12 09:22:32 +00:00
cropdetect_filter_deps = "gpl"
2016-07-02 12:12:36 +02:00
deinterlace_qsv_filter_deps = "libmfx"
2017-02-19 17:23:07 +00:00
deinterlace_vaapi_filter_deps = "vaapi"
2011-08-10 18:58:49 +02:00
delogo_filter_deps = "gpl"
2014-08-02 18:57:32 +02:00
deshake_filter_select = "pixelutils"
2011-02-21 01:02:29 +01:00
drawtext_filter_deps = "libfreetype"
2017-05-06 23:52:38 -03:00
elbg_filter_deps = "avcodec"
2015-01-19 03:56:48 +05:30
eq_filter_deps = "gpl"
2015-03-09 09:05:35 +05:30
fftfilt_filter_deps = "avcodec"
fftfilt_filter_select = "rdft"
2015-05-02 21:28:31 +02:00
find_rect_filter_deps = "avcodec avformat gpl"
2016-02-17 01:02:22 +07:00
firequalizer_filter_deps = "avcodec"
firequalizer_filter_select = "rdft"
2016-01-24 09:28:55 -08:00
flite_filter_deps = "libflite"
2016-04-30 13:35:24 +02:00
framerate_filter_select = "pixelutils"
2011-10-15 00:14:37 +02:00
frei0r_filter_deps = "frei0r dlopen"
frei0r_src_filter_deps = "frei0r dlopen"
2014-12-23 22:24:37 +05:30
fspp_filter_deps = "gpl"
2012-05-14 19:03:19 +02:00
geq_filter_deps = "gpl"
2012-10-20 07:45:51 +02:00
histeq_filter_deps = "gpl"
2010-12-04 13:03:42 +00:00
hqdn3d_filter_deps = "gpl"
2013-03-12 11:35:21 +01:00
interlace_filter_deps = "gpl"
2012-10-18 09:50:53 +02:00
kerndeint_filter_deps = "gpl"
2013-09-20 14:01:00 +00:00
ladspa_filter_deps = "ladspa dlopen"
2013-05-28 13:40:39 +02:00
mcdeint_filter_deps = "avcodec gpl"
2011-05-05 01:05:07 +02:00
movie_filter_deps = "avcodec avformat"
2014-08-02 18:58:39 +02:00
mpdecimate_filter_deps = "gpl"
mpdecimate_filter_select = "pixelutils"
2011-08-08 14:41:22 +02:00
mptestsrc_filter_deps = "gpl"
2011-05-28 22:00:26 +02:00
negate_filter_deps = "lut_filter"
2016-01-23 17:15:53 +01:00
nnedi_filter_deps = "gpl"
2015-09-09 13:43:35 +00:00
ocr_filter_deps = "libtesseract"
2010-12-23 17:24:19 +00:00
ocv_filter_deps = "libopencv"
2013-05-10 21:27:15 +02:00
owdenoise_filter_deps = "gpl"
2012-01-18 12:00:16 +01:00
pan_filter_deps = "swresample"
2016-01-24 09:28:55 -08:00
perspective_filter_deps = "gpl"
2013-08-31 18:46:17 +00:00
phase_filter_deps = "gpl"
2016-01-24 09:28:55 -08:00
pp7_filter_deps = "gpl"
2012-11-22 18:19:12 +01:00
pp_filter_deps = "gpl postproc"
2013-07-08 12:42:53 +00:00
pullup_filter_deps = "gpl"
2012-03-10 14:01:28 +01:00
removelogo_filter_deps = "avcodec avformat swscale"
2015-01-28 15:13:27 +00:00
repeatfields_filter_deps = "gpl"
2013-11-02 17:21:49 +01:00
resample_filter_deps = "avresample"
2015-09-18 20:22:05 +00:00
rubberband_filter_deps = "librubberband"
2013-06-03 13:34:04 +02:00
sab_filter_deps = "gpl swscale"
2015-08-15 18:38:06 +02:00
scale2ref_filter_deps = "swscale"
2016-01-24 09:28:55 -08:00
scale_filter_deps = "swscale"
2016-03-26 12:39:58 +01:00
scale_qsv_filter_deps = "libmfx"
2014-08-02 18:59:02 +02:00
select_filter_select = "pixelutils"
2015-10-30 23:35:02 +07:00
showcqt_filter_deps = "avcodec avformat swscale"
2015-05-29 21:07:58 +02:00
showcqt_filter_select = "fft"
2015-08-04 14:41:35 +02:00
showfreqs_filter_deps = "avcodec"
showfreqs_filter_select = "fft"
2013-10-02 01:27:22 +02:00
showspectrum_filter_deps = "avcodec"
2016-01-12 22:36:34 +01:00
showspectrum_filter_select = "fft"
showspectrumpic_filter_deps = "avcodec"
showspectrumpic_filter_select = "fft"
2017-01-02 02:08:57 +01:00
signature_filter_deps = "gpl avcodec avformat"
2016-01-24 09:28:55 -08:00
smartblur_filter_deps = "gpl swscale"
2017-06-03 01:39:04 +02:00
sofalizer_filter_deps = "libmysofa avcodec"
2015-12-13 23:05:09 +01:00
sofalizer_filter_select = "fft"
2016-01-10 14:48:12 +01:00
spectrumsynth_filter_deps = "avcodec"
spectrumsynth_filter_select = "fft"
2013-10-02 01:27:22 +02:00
spp_filter_deps = "gpl avcodec"
2014-07-17 23:27:40 +02:00
spp_filter_select = "fft idctdsp fdctdsp me_cmp pixblockdsp"
2013-03-01 17:35:52 +00:00
stereo3d_filter_deps = "gpl"
2012-11-29 03:28:37 +01:00
subtitles_filter_deps = "avformat avcodec libass"
2012-03-18 10:59:01 +01:00
super2xsai_filter_deps = "gpl"
2012-09-28 05:25:22 +02:00
pixfmts_super2xsai_test_deps = "super2xsai_filter"
2016-01-24 09:28:55 -08:00
tinterlace_filter_deps = "gpl"
2012-09-28 05:25:22 +02:00
tinterlace_merge_test_deps = "tinterlace_filter"
tinterlace_pad_test_deps = "tinterlace_filter"
2014-12-07 18:56:46 +05:30
uspp_filter_deps = "gpl avcodec"
2016-08-24 22:13:03 +02:00
vaguedenoiser_filter_deps = "gpl"
2016-01-24 09:28:55 -08:00
vidstabdetect_filter_deps = "libvidstab"
vidstabtransform_filter_deps = "libvidstab"
2017-07-17 00:15:19 +10:00
libvmaf_filter_deps = "libvmaf"
2013-04-21 15:00:11 +02:00
zmq_filter_deps = "libzmq"
2013-09-16 15:31:15 +00:00
zoompan_filter_deps = "swscale"
2015-09-21 15:34:15 +02:00
zscale_filter_deps = "libzimg"
2016-03-21 00:03:16 +00:00
scale_vaapi_filter_deps = "vaapi VAProcPipelineParameterBuffer"
2010-09-14 13:21:13 +00:00
2013-11-02 17:05:28 +01:00
# examples
2016-09-30 19:32:13 +02:00
avio_dir_cmd_deps = "avformat avutil"
avio_reading_deps = "avformat avcodec avutil"
2016-10-19 21:05:22 +02:00
decode_audio_example_deps = "avcodec avutil"
2016-10-19 21:05:22 +02:00
decode_video_example_deps = "avcodec avutil"
2013-11-28 13:55:34 +01:00
demuxing_decoding_example_deps = "avcodec avformat avutil"
2016-10-19 21:05:22 +02:00
encode_audio_example_deps = "avcodec avutil"
2016-10-19 21:05:22 +02:00
encode_video_example_deps = "avcodec avutil"
2014-07-16 16:42:42 +02:00
extract_mvs_example_deps = "avcodec avformat avutil"
2014-02-13 08:50:16 +01:00
filter_audio_example_deps = "avfilter avutil"
2013-11-28 13:55:34 +01:00
filtering_audio_example_deps = "avfilter avcodec avformat avutil"
filtering_video_example_deps = "avfilter avcodec avformat avutil"
2016-10-29 14:45:22 -03:00
http_multiclient_example_deps = "avformat avutil fork"
2017-07-20 00:58:56 -04:00
hw_decode_example_deps = "avcodec avformat avutil"
2013-11-28 13:55:34 +01:00
metadata_example_deps = "avformat avutil"
2013-11-26 01:31:00 +01:00
muxing_example_deps = "avcodec avformat avutil swscale"
2016-10-12 13:14:17 +02:00
qsvdec_example_deps = "avcodec avutil libmfx h264_qsv_decoder"
2014-01-26 18:30:37 +01:00
remuxing_example_deps = "avcodec avformat avutil"
2013-11-28 13:55:34 +01:00
resampling_audio_example_deps = "avutil swresample"
scaling_video_example_deps = "avutil swscale"
2013-11-27 11:15:48 +01:00
transcode_aac_example_deps = "avcodec avformat swresample"
2014-03-09 02:20:41 +02:00
transcoding_example_deps = "avfilter avcodec avformat avutil"
2013-11-02 17:05:28 +01:00
2014-05-01 13:18:57 +02:00
# libraries, in linking order
2012-11-11 13:37:40 +01:00
avcodec_deps = "avutil"
2016-11-12 17:43:55 +01:00
avcodec_select = "null_bsf"
2014-05-01 13:18:57 +02:00
avdevice_deps = "avformat avcodec avutil"
2012-11-11 13:37:40 +01:00
avfilter_deps = "avutil"
2014-05-01 13:18:57 +02:00
avformat_deps = "avcodec avutil"
2012-11-11 13:37:40 +01:00
avresample_deps = "avutil"
2012-12-24 06:08:07 +01:00
postproc_deps = "avutil gpl"
2014-05-13 22:30:07 +02:00
swresample_deps = "avutil"
2012-11-11 13:37:40 +01:00
swscale_deps = "avutil"
2008-02-26 21:32:56 +00:00
2007-05-08 08:27:00 +00:00
# programs
2013-10-08 14:48:52 +00:00
ffmpeg_deps = "avcodec avfilter avformat swresample"
2013-05-08 12:17:46 +02:00
ffmpeg_select = "aformat_filter anull_filter atrim_filter format_filter
null_filter
2016-07-15 06:50:47 +02:00
trim_filter"
2016-02-23 20:43:41 +00:00
ffplay_deps = "avcodec avformat swscale swresample sdl2"
2017-04-17 10:22:52 +02:00
ffplay_extralibs = '$sdl2_extralibs'
2014-04-18 23:15:54 +02:00
ffplay_select = "rdft crop_filter transpose_filter hflip_filter vflip_filter rotate_filter"
2011-01-04 14:00:10 +00:00
ffprobe_deps = "avcodec avformat"
2013-08-06 19:03:33 +02:00
ffserver_deps = "avformat fork sarestart"
ffserver_select = "ffm_muxer rtp_protocol rtsp_demuxer"
2007-02-11 14:22:28 +00:00
2012-08-09 23:37:28 +02:00
# documentation
podpages_deps = "perl"
manpages_deps = "perl pod2man"
2014-08-31 19:39:35 -07:00
htmlpages_deps = "perl"
htmlpages_deps_any = "makeinfo_html texi2html"
2013-05-28 21:52:33 +02:00
txtpages_deps = "perl makeinfo"
2013-11-24 18:40:16 -03:00
doc_deps_any = "manpages htmlpages podpages txtpages"
2007-05-08 08:27:00 +00:00
2001-07-22 14:18:56 +00:00
# default parameters
2007-02-06 22:09:46 +00:00
2017-05-03 12:51:48 +02:00
logfile = "ffbuild/config.log"
2007-02-06 22:09:46 +00:00
# installation paths
2008-06-02 23:51:36 +00:00
prefix_default = "/usr/local"
bindir_default = '${prefix}/bin'
2011-08-15 22:36:13 +02:00
datadir_default = '${prefix}/share/ffmpeg'
2013-09-01 13:41:33 +02:00
docdir_default = '${prefix}/share/doc/ffmpeg'
2008-06-02 23:51:36 +00:00
incdir_default = '${prefix}/include'
libdir_default = '${prefix}/lib'
mandir_default = '${prefix}/share/man'
2007-02-06 22:09:46 +00:00
# toolchain
2010-05-02 18:59:15 +00:00
ar_default = "ar"
2008-10-21 00:57:20 +00:00
cc_default = "gcc"
2011-08-31 04:11:25 +05:30
cxx_default = "g++"
2008-11-23 12:36:34 +00:00
host_cc_default = "gcc"
2014-07-07 15:24:48 -07:00
doxygen_default = "doxygen"
2011-05-18 00:03:19 +02:00
install = "install"
2016-04-25 07:39:08 -07:00
ln_s_default = "ln -s -f"
2012-09-16 21:47:16 +01:00
nm_default = "nm -g"
2011-03-06 13:48:30 +00:00
pkg_config_default = pkg-config
2015-06-25 11:01:12 -04:00
ranlib_default = "ranlib"
2011-04-01 00:24:12 +02:00
strip_default = "strip"
2016-05-27 11:38:38 +02:00
version_script = '--version-script'
2016-10-13 18:33:15 +00:00
x86asmexe_default = "nasm"
2013-12-05 17:50:14 -03:00
windres_default = "windres"
2017-05-11 22:53:41 +02:00
nvcc_default = "nvcc"
nvccflags_default = "-gencode arch=compute_30,code=sm_30 -O2"
2007-02-06 22:09:46 +00:00
# OS
2010-02-11 23:57:52 +00:00
target_os_default = $( tolower $( uname -s))
host_os = $target_os_default
2007-02-06 22:09:46 +00:00
2014-03-13 08:34:45 +01:00
# machine
if test " $target_os_default " = aix; then
arch_default = $( uname -p)
2014-06-16 16:46:10 +02:00
strip_default = "strip -X32_64"
2014-03-13 08:34:45 +01:00
else
arch_default = $( uname -m)
fi
cpu = "generic"
2014-07-22 03:06:43 +02:00
intrinsics = "none"
2014-03-13 08:34:45 +01:00
2007-02-06 22:09:46 +00:00
# configurable options
2016-02-17 23:34:54 +01:00
enable $PROGRAM_LIST
2012-08-09 23:37:28 +02:00
enable $DOCUMENT_LIST
2016-02-17 23:34:54 +01:00
enable $EXAMPLE_LIST
enable $( filter_out avresample $LIBRARY_LIST )
2011-12-14 23:58:10 +01:00
enable stripping
2011-09-12 17:40:29 +02:00
enable asm
enable debug
enable doc
2014-08-28 19:32:45 -07:00
enable faan faandct faanidct
2007-10-24 19:17:15 +00:00
enable optimizations
2012-09-21 18:01:33 +02:00
enable runtime_cpudetect
2011-12-16 21:42:04 +00:00
enable safe_bitstream_reader
2008-03-25 15:04:42 +00:00
enable static
2009-03-20 14:12:47 +00:00
enable swscale_alpha
2015-04-20 14:44:32 +01:00
enable valgrind_backtrace
2007-02-06 22:09:46 +00:00
2014-06-11 17:51:49 +01:00
sws_max_filter_size_default = 256
set_default sws_max_filter_size
2007-02-06 22:09:46 +00:00
# build settings
2008-04-10 19:44:29 +00:00
SHFLAGS = '-shared -Wl,-soname,$$(@F)'
2003-01-11 20:34:38 +00:00
LIBPREF = "lib"
LIBSUF = ".a"
2007-10-19 18:03:05 +00:00
FULLNAME = '$(NAME)$(BUILDSUF)'
LIBNAME = '$(LIBPREF)$(FULLNAME)$(LIBSUF)'
2003-01-11 20:34:38 +00:00
SLIBPREF = "lib"
SLIBSUF = ".so"
2007-10-19 18:03:05 +00:00
SLIBNAME = '$(SLIBPREF)$(FULLNAME)$(SLIBSUF)'
2006-05-16 18:06:28 +00:00
SLIBNAME_WITH_VERSION = '$(SLIBNAME).$(LIBVERSION)'
SLIBNAME_WITH_MAJOR = '$(SLIBNAME).$(LIBMAJOR)'
2010-03-06 17:44:18 +00:00
LIB_INSTALL_EXTRA_CMD = '$$(RANLIB) "$(LIBDIR)/$(LIBNAME)"'
2011-07-07 15:25:30 +01:00
SLIB_INSTALL_NAME = '$(SLIBNAME_WITH_VERSION)'
SLIB_INSTALL_LINKS = '$(SLIBNAME_WITH_MAJOR) $(SLIBNAME)'
2016-05-27 11:38:38 +02:00
VERSION_SCRIPT_POSTPROCESS_CMD = "cat"
2002-03-08 09:09:57 +00:00
2012-07-20 12:20:23 +01:00
asflags_filter = echo
cflags_filter = echo
2012-07-20 03:06:49 +01:00
ldflags_filter = echo
2012-07-20 23:43:27 +01:00
AS_C = '-c'
2011-06-25 11:57:32 +01:00
AS_O = '-o $@'
2012-07-20 23:43:27 +01:00
CC_C = '-c'
2012-07-20 22:22:41 +01:00
CC_E = '-E -o $@'
2009-07-12 13:29:46 +00:00
CC_O = '-o $@'
2012-07-30 17:44:56 +02:00
CXX_C = '-c'
2011-08-31 04:11:25 +05:30
CXX_O = '-o $@'
2015-11-23 17:08:49 -05:00
OBJCC_C = '-c'
OBJCC_E = '-E -o $@'
OBJCC_O = '-o $@'
2016-10-13 00:45:09 +00:00
X86ASM_O = '-o $@'
2012-07-20 13:43:07 +01:00
LD_O = '-o $@'
2012-08-28 16:06:56 +01:00
LD_LIB = '-l%'
LD_PATH = '-L'
2012-07-20 23:43:27 +01:00
HOSTCC_C = '-c'
2013-02-28 16:16:10 +01:00
HOSTCC_E = '-E -o $@'
2012-07-20 13:43:07 +01:00
HOSTCC_O = '-o $@'
2012-08-28 13:02:35 +01:00
HOSTLD_O = '-o $@'
2017-05-11 22:53:41 +02:00
NVCC_C = '-c'
NVCC_O = '-o $@'
2009-07-12 13:29:46 +00:00
2016-12-06 18:19:09 +01:00
host_extralibs = '-lm'
2012-07-20 13:48:13 +01:00
host_cflags_filter = echo
host_ldflags_filter = echo
2008-11-23 12:36:34 +00:00
2010-01-30 15:48:55 +00:00
target_path = '$(CURDIR)'
2008-11-23 12:36:38 +00:00
2010-07-01 11:11:23 +00:00
# since the object filename is not given with the -MM flag, the compiler
# is only able to print the basename, and we must add the path ourselves
2015-10-08 12:30:51 +02:00
DEPCMD = '$(DEP$(1)) $(DEP$(1)FLAGS) $($(1)DEP_FLAGS) $< 2>/dev/null | sed -e "/^\#.*/d" -e "s,^[[:space:]]*$(@F),$(@D)/$(@F)," > $(@:.o=.d)'
2012-07-20 13:43:07 +01:00
DEPFLAGS = '-MM'
2008-03-12 23:30:35 +00:00
2017-02-10 19:31:34 +00:00
mkdir -p ffbuild
2002-05-18 23:13:26 +00:00
# find source path
2009-07-17 13:10:26 +00:00
if test -f configure; then
2011-06-06 22:38:38 +01:00
source_path = .
2005-05-13 20:57:27 +00:00
else
2011-06-06 12:56:26 +01:00
source_path = $( cd $( dirname " $0 " ) ; pwd )
2015-08-25 23:22:49 -04:00
case " $source_path " in
*[[ :blank:]] *) die "Out of tree builds are impossible with whitespace in source path." ;;
esac
2009-03-15 21:32:36 +00:00
test -e " $source_path /config.h" &&
die "Out of tree builds are impossible with config.h in source dir."
2001-07-22 14:18:56 +00:00
fi
2009-03-30 21:12:44 +00:00
for v in " $@ " ; do
2009-06-15 22:12:21 +00:00
r = ${ v #*= }
l = ${ v % " $r " }
r = $( sh_quote " $r " )
2011-03-17 17:01:10 +01:00
FFMPEG_CONFIGURATION = " ${ FFMPEG_CONFIGURATION # } ${ l }${ r } "
2009-03-30 21:12:44 +00:00
done
2004-10-11 19:50:50 +00:00
2008-02-17 00:00:06 +00:00
find_things(){
thing = $1
pattern = $2
file = $source_path /$3
2008-03-03 21:48:24 +00:00
sed -n "s/^[^#]* $pattern .*([^,]*, *\([^,]*\)\(,.*\)*).*/\1_ $thing /p" " $file "
2008-02-17 00:00:06 +00:00
}
ENCODER_LIST = $( find_things encoder ENC libavcodec/allcodecs.c)
DECODER_LIST = $( find_things decoder DEC libavcodec/allcodecs.c)
2009-04-02 08:48:06 +00:00
HWACCEL_LIST = $( find_things hwaccel HWACCEL libavcodec/allcodecs.c)
2008-02-17 00:00:06 +00:00
PARSER_LIST = $( find_things parser PARSER libavcodec/allcodecs.c)
MUXER_LIST = $( find_things muxer _MUX libavformat/allformats.c)
DEMUXER_LIST = $( find_things demuxer DEMUX libavformat/allformats.c)
2009-06-29 18:49:15 +00:00
OUTDEV_LIST = $( find_things outdev OUTDEV libavdevice/alldevices.c)
INDEV_LIST = $( find_things indev _IN libavdevice/alldevices.c)
2008-03-03 20:53:15 +00:00
FILTER_LIST = $( find_things filter FILTER libavfilter/allfilters.c)
2005-05-02 09:47:46 +00:00
2016-02-19 10:39:29 +01:00
find_things_extern(){
thing = $1
pattern = $2
file = $source_path /$3
sed -n "s/^[^#]*extern.* $pattern *ff_\([^ ]*\)_ $thing ;/\1_ $thing /p" " $file "
}
2013-11-23 11:43:13 +01:00
BSF_LIST = $( find_things_extern bsf AVBitStreamFilter libavcodec/bitstream_filters.c)
2016-02-19 10:39:29 +01:00
PROTOCOL_LIST = $( find_things_extern protocol URLProtocol libavformat/protocols.c)
2011-09-12 17:52:44 +02:00
ALL_COMPONENTS = "
$BSF_LIST
$DECODER_LIST
$DEMUXER_LIST
$ENCODER_LIST
$FILTER_LIST
$HWACCEL_LIST
$INDEV_LIST
$MUXER_LIST
$OUTDEV_LIST
$PARSER_LIST
$PROTOCOL_LIST
"
2016-02-17 23:34:54 +01:00
for n in $COMPONENT_LIST ; do
v = $( toupper ${ n %s } ) _LIST
eval enable \$ $v
eval ${ n } _if_any = "\$ $v "
done
2012-10-19 02:22:12 -03:00
enable $ARCH_EXT_LIST
2006-11-12 15:19:58 +00:00
2007-02-11 19:50:19 +00:00
die_unknown(){
echo "Unknown option \" $1 \"."
echo "See $0 --help for available options."
exit 1
}
2015-09-14 16:34:50 -07:00
print_in_columns() {
cols = $( expr $ncols / 24)
cat | tr ' ' '\n' | sort | pr -r "- $cols " -w $ncols -t
2013-02-21 16:43:47 +01:00
}
2007-07-27 14:13:34 +00:00
show_list() {
2007-11-04 02:15:53 +00:00
suffix = _$1
shift
2015-09-14 16:34:50 -07:00
echo $* | sed s/$suffix //g | print_in_columns
2007-07-27 14:13:34 +00:00
exit 0
}
2012-05-09 04:29:53 +01:00
rand_list(){
IFS = ', '
set -- $*
unset IFS
for thing; do
comp = ${ thing %:* }
prob = ${ thing # $comp }
prob = ${ prob #: }
is_in ${ comp } $COMPONENT_LIST && eval comp = \$ $( toupper ${ comp %s } ) _LIST
echo "prob ${ prob :- 0 .5 } "
printf '%s\n' $comp
done
}
do_random(){
action = $1
shift
random_seed = $( awk "BEGIN { srand( $random_seed ); print srand() }" )
$action $( rand_list " $@ " | awk "BEGIN { srand( $random_seed ) } \$1 == \"prob\" { prob = \$2; next } rand() < prob { print }" )
}
2001-07-22 14:18:56 +00:00
for opt do
2007-11-23 11:09:28 +00:00
optval = " ${ opt #*= } "
case " $opt " in
2012-12-02 23:32:41 +01:00
--extra-ldflags= *)
add_ldflags $optval
2012-11-29 18:03:50 +00:00
;;
2014-07-16 17:00:11 +02:00
--extra-ldexeflags= *)
add_ldexeflags $optval
;;
2015-06-27 12:27:59 -04:00
--extra-ldlibflags= *)
add_ldlibflags $optval
;;
2012-12-02 23:32:41 +01:00
--extra-libs= *)
add_extralibs $optval
2012-11-29 18:03:50 +00:00
;;
2012-12-02 23:32:41 +01:00
--disable-devices)
disable $INDEV_LIST $OUTDEV_LIST
2012-11-29 18:03:50 +00:00
;;
2012-12-02 23:32:41 +01:00
--enable-debug= *)
debuglevel = " $optval "
2012-11-29 18:03:50 +00:00
;;
--disable-programs)
disable $PROGRAM_LIST
;;
--disable-everything)
2016-02-17 23:34:54 +01:00
map 'eval unset \${$(toupper ${v%s})_LIST}' $COMPONENT_LIST
2012-11-29 18:03:50 +00:00
;;
2012-11-10 14:47:52 +01:00
--disable-all)
2016-02-17 23:34:54 +01:00
map 'eval unset \${$(toupper ${v%s})_LIST}' $COMPONENT_LIST
2012-11-10 14:47:52 +01:00
disable $LIBRARY_LIST $PROGRAM_LIST doc
2015-10-18 14:27:51 +02:00
enable avutil
2012-11-10 14:47:52 +01:00
;;
2012-11-29 18:03:50 +00:00
--enable-random| --disable-random)
action = ${ opt %%-random }
do_random ${ action #-- } $COMPONENT_LIST
;;
--enable-random= *| --disable-random= *)
action = ${ opt %%-random=* }
do_random ${ action #-- } $optval
;;
--enable-*= *| --disable-*= *)
eval $( echo " ${ opt %%=* } " | sed 's/--/action=/;s/-/ thing=/' )
is_in " ${ thing } s" $COMPONENT_LIST || die_unknown " $opt "
eval list = \$ $( toupper $thing ) _LIST
name = $( echo " ${ optval } " | sed "s/,/_ ${ thing } |/g" ) _${ thing }
2012-12-02 13:47:07 +01:00
list = $( filter " $name " $list )
[ " $list " = "" ] && warn "Option $opt did not match anything"
$action $list
2012-11-29 18:03:50 +00:00
;;
2016-10-08 14:18:33 +00:00
--enable-yasm| --disable-yasm)
warn "The ${ opt } option is only provided for compatibility and will be\n" \
"removed in the future. Use --enable-x86asm / --disable-x86asm instead."
test $opt = --enable-yasm && x86asm = yes || x86asm = no
;;
--yasmexe= *)
warn "The --yasmexe option is only provided for compatibility and will be\n" \
"removed in the future. Use --x86asmexe instead."
x86asmexe = " $optval "
;;
2012-11-29 18:03:50 +00:00
--enable-?*| --disable-?*)
eval $( echo " $opt " | sed 's/--/action=/;s/-/ option=/;s/-/_/g' )
if is_in $option $COMPONENT_LIST ; then
2016-02-17 23:34:54 +01:00
test $action = disable && action = unset
2012-11-29 18:03:50 +00:00
eval $action \$ $( toupper ${ option %s } ) _LIST
elif is_in $option $CMDLINE_SELECT ; then
$action $option
else
die_unknown $opt
fi
;;
--list-*)
NAME = " ${ opt #--list- } "
is_in $NAME $COMPONENT_LIST || die_unknown $opt
NAME = ${ NAME %s }
eval show_list $NAME \$ $( toupper $NAME ) _LIST
;;
--help| -h) show_help
;;
2016-11-06 18:33:05 +01:00
--quiet| -q) quiet = yes
;;
2012-12-02 13:47:07 +01:00
--fatal-warnings) enable fatal_warnings
;;
2017-04-21 23:58:32 +02:00
--libfuzzer= *)
libfuzzer_path = " $optval "
;;
2012-11-29 18:03:50 +00:00
*)
optname = " ${ opt %%=* } "
optname = " ${ optname #-- } "
optname = $( echo " $optname " | sed 's/-/_/g' )
if is_in $optname $CMDLINE_SET ; then
eval $optname = '$optval'
elif is_in $optname $CMDLINE_APPEND ; then
append $optname " $optval "
else
die_unknown $opt
fi
;;
2007-11-23 11:09:28 +00:00
esac
2001-07-22 14:18:56 +00:00
done
2015-06-02 22:55:52 +03:00
for e in $env ; do
2015-05-06 13:37:31 +02:00
eval "export $e "
done
2001-07-22 14:18:56 +00:00
2016-11-30 23:50:17 +01:00
# Mark specifically enabled, but normally autodetected libraries as requested.
for lib in $AUTODETECT_LIBS ; do
enabled $lib && request $lib
done
2016-11-30 23:49:35 +01:00
# Enable platform codecs by default.
enable_weak audiotoolbox
# Enable hwaccels by default.
enable_weak d3d11va dxva2 vaapi vda vdpau videotoolbox_hwaccel xvmc
enable_weak xlib
enable_weak cuda cuvid nvenc vda_framework videotoolbox videotoolbox_encoder
2008-05-15 23:34:43 +00:00
disabled logging && logfile = /dev/null
2013-03-27 18:21:10 +01:00
die_license_disabled() {
enabled $1 || { enabled $v && die " $v is $1 and --enable- $1 is not specified." ; }
}
2017-03-31 14:39:10 -03:00
die_license_disabled_gpl() {
enabled $1 || { enabled $v && die " $v is incompatible with the gpl and --enable- $1 is not specified." ; }
}
map "die_license_disabled gpl" $EXTERNAL_LIBRARY_GPL_LIST $EXTERNAL_LIBRARY_GPLV3_LIST
map "die_license_disabled version3" $EXTERNAL_LIBRARY_VERSION3_LIST $EXTERNAL_LIBRARY_GPLV3_LIST
enabled gpl && map "die_license_disabled_gpl nonfree" $EXTERNAL_LIBRARY_NONFREE_LIST
map "die_license_disabled nonfree" $HWACCEL_LIBRARY_NONFREE_LIST
2013-03-27 18:21:10 +01:00
enabled version3 && { enabled gpl && enable gplv3 || enable lgplv3; }
2015-10-05 03:41:41 +02:00
# Disable all the library-specific components if the library itself
# is disabled, see AVCODEC_LIST and following _LIST variables.
disable_components(){
2016-02-17 23:34:54 +01:00
disabled ${ 1 } && disable $(
2015-10-05 03:41:41 +02:00
eval components = "\$ $( toupper ${ 1 } ) _COMPONENTS"
map 'eval echo \${$(toupper ${v%s})_LIST}' $components
)
}
map 'disable_components $v' $LIBRARY_LIST
2011-03-17 17:01:10 +01:00
echo "# $0 $FFMPEG_CONFIGURATION " > $logfile
2008-05-15 23:34:43 +00:00
set >> $logfile
2013-05-05 16:21:57 +02:00
test -n " $valgrind " && toolchain = "valgrind-memcheck"
2017-04-21 23:58:32 +02:00
enabled ossfuzz && {
add_cflags -fsanitize= address,undefined -fsanitize-coverage= trace-pc-guard,trace-cmp -fno-omit-frame-pointer
add_ldflags -fsanitize= address,undefined -fsanitize-coverage= trace-pc-guard,trace-cmp
}
2012-09-16 22:06:53 +01:00
case " $toolchain " in
2016-02-06 17:31:14 +01:00
*-asan)
cc_default = " ${ toolchain %-asan } "
2013-03-28 03:30:53 +01:00
add_cflags -fsanitize= address
add_ldflags -fsanitize= address
2012-10-14 07:54:22 +02:00
;;
2016-03-06 22:48:20 +01:00
*-msan)
cc_default = " ${ toolchain %-msan } "
add_cflags -fsanitize= memory -fsanitize-memory-track-origins
add_ldflags -fsanitize= memory
;;
2016-02-06 17:31:14 +01:00
*-tsan)
cc_default = " ${ toolchain %-tsan } "
2016-12-02 14:04:53 -08:00
add_cflags -fsanitize= thread -fPIE
2013-03-28 03:30:53 +01:00
add_ldflags -fsanitize= thread -pie
2016-02-06 17:31:14 +01:00
case " $toolchain " in
gcc-tsan)
add_cflags -fPIC
add_ldflags -fPIC
;;
esac
2012-10-14 07:54:22 +02:00
;;
2016-02-06 17:31:14 +01:00
*-usan)
cc_default = " ${ toolchain %-usan } "
2014-02-19 20:20:39 +01:00
add_cflags -fsanitize= undefined
add_ldflags -fsanitize= undefined
;;
2016-02-06 17:31:14 +01:00
valgrind-*)
2013-05-14 22:15:18 +02:00
target_exec_default = "valgrind"
2016-02-06 17:31:14 +01:00
case " $toolchain " in
valgrind-massif)
2016-02-16 17:44:33 +00:00
target_exec_args = "--tool=massif --alloc-fn=av_malloc --alloc-fn=av_mallocz --alloc-fn=av_calloc --alloc-fn=av_fast_padded_malloc --alloc-fn=av_fast_malloc --alloc-fn=av_realloc_f --alloc-fn=av_fast_realloc --alloc-fn=av_realloc"
2016-02-06 17:31:14 +01:00
;;
valgrind-memcheck)
2016-02-16 17:44:33 +00:00
target_exec_args = "--error-exitcode=1 --malloc-fill=0x2a --track-origins=yes --leak-check=full --gen-suppressions=all --suppressions= $source_path /tests/fate-valgrind.supp"
2016-02-06 17:31:14 +01:00
;;
esac
2013-05-04 10:25:41 +02:00
;;
2012-09-16 22:06:53 +01:00
msvc)
2013-11-04 15:46:34 +02:00
# Check whether the current MSVC version needs the C99 converter.
# From MSVC 2013 (compiler major version 18) onwards, it does actually
2013-11-21 12:07:29 +01:00
# support enough of C99 to build ffmpeg. Default to the new
2013-11-04 15:46:34 +02:00
# behaviour if the regexp was unable to match anything, since this
# successfully parses the version number of existing supported
# versions that require the converter (MSVC 2010 and 2012).
cl_major_ver = $( cl 2>& 1 | sed -n 's/.*Version \([[:digit:]]\{1,\}\)\..*/\1/p' )
if [ -z " $cl_major_ver " ] || [ $cl_major_ver -ge 18 ] ; then
2013-11-14 11:58:37 +02:00
cc_default = "cl"
2017-04-13 02:38:02 -07:00
cxx_default = "cl"
2013-11-04 15:46:34 +02:00
else
cc_default = "c99wrap cl"
2017-04-13 02:38:02 -07:00
cxx_default = "c99wrap cl"
2013-11-04 15:46:34 +02:00
fi
2015-07-24 09:38:04 +02:00
ld_default = " $source_path /compat/windows/mslink"
2012-09-16 22:06:53 +01:00
nm_default = "dumpbin -symbols"
2012-09-18 00:10:29 +01:00
ar_default = "lib"
2015-07-24 23:23:29 +03:00
case " $arch " in
arm*)
as_default = "armasm"
;;
esac
2012-10-13 15:57:56 +03:00
target_os_default = "win32"
2013-11-14 11:58:37 +02:00
# Use a relative path for TMPDIR. This makes sure all the
# ffconf temp files are written with a relative path, avoiding
# issues with msys/win32 path conversion for MSVC parameters
# such as -Fo<file> or -out:<file>.
TMPDIR = .
2012-09-16 22:06:53 +01:00
;;
2013-05-25 06:07:42 -04:00
icl)
2013-11-14 11:58:37 +02:00
cc_default = "icl"
ld_default = "xilink"
2013-05-25 06:07:42 -04:00
nm_default = "dumpbin -symbols"
ar_default = "xilib"
target_os_default = "win32"
2013-11-14 11:58:37 +02:00
TMPDIR = .
2013-05-25 06:07:42 -04:00
;;
2013-03-23 08:17:24 +01:00
gcov)
add_cflags -fprofile-arcs -ftest-coverage
add_ldflags -fprofile-arcs -ftest-coverage
;;
2016-03-06 22:52:04 +01:00
llvm-cov)
add_cflags -fprofile-arcs -ftest-coverage
add_ldflags --coverage
;;
2013-10-28 13:22:52 +01:00
hardened)
2014-07-30 05:09:47 -07:00
add_cppflags -U_FORTIFY_SOURCE -D_FORTIFY_SOURCE= 2
add_cflags -fno-strict-overflow -fstack-protector-all
add_ldflags -Wl,-z,relro -Wl,-z,now
2016-10-04 12:21:41 +02:00
add_cflags -fPIE
add_ldexeflags -fPIE -pie
2013-10-28 13:22:52 +01:00
;;
2012-09-16 22:06:53 +01:00
?*)
die "Unknown toolchain $toolchain "
;;
esac
2015-02-26 21:54:55 +01:00
test -n " $cross_prefix " && enable cross_compile
if enabled cross_compile; then
test -n " $arch " && test -n " $target_os " ||
2016-12-02 13:11:43 +01:00
die "Must specify target arch (--arch) and OS (--target-os) when cross-compiling"
2015-02-26 21:54:55 +01:00
fi
2014-04-07 00:47:42 +02:00
ar_default = " ${ cross_prefix }${ ar_default } "
cc_default = " ${ cross_prefix }${ cc_default } "
2015-02-26 19:36:28 +01:00
cxx_default = " ${ cross_prefix }${ cxx_default } "
2014-04-07 00:47:42 +02:00
nm_default = " ${ cross_prefix }${ nm_default } "
pkg_config_default = " ${ cross_prefix }${ pkg_config_default } "
2015-06-25 11:01:12 -04:00
if ${ cross_prefix }${ ranlib_default } 2>& 1 | grep -q "\-D " ; then
ranlib_default = " ${ cross_prefix }${ ranlib_default } -D"
else
ranlib_default = " ${ cross_prefix }${ ranlib_default } "
fi
2015-02-26 19:36:28 +01:00
strip_default = " ${ cross_prefix }${ strip_default } "
windres_default = " ${ cross_prefix }${ windres_default } "
2014-04-07 00:47:42 +02:00
sysinclude_default = " ${ sysroot } /usr/include"
2014-07-07 15:24:48 -07:00
set_default arch cc cxx doxygen pkg_config ranlib strip sysinclude \
2016-10-08 14:18:33 +00:00
target_exec target_os x86asmexe nvcc
2008-11-23 12:36:34 +00:00
enabled cross_compile || host_cc_default = $cc
set_default host_cc
2008-10-21 00:57:20 +00:00
2014-12-02 13:54:46 +01:00
pkg_config_fail_message = ""
2011-05-05 16:45:12 +01:00
if ! $pkg_config --version >/dev/null 2>& 1; then
warn " $pkg_config not found, library detection may fail."
pkg_config = false
2014-12-02 13:54:46 +01:00
elif is_in -static $cc $LDFLAGS && ! is_in --static $pkg_config $pkg_config_flags ; then
pkg_config_fail_message = "
Note: When building a static binary, add --pkg-config-flags=\"--static\"."
2011-05-05 16:45:12 +01:00
fi
2014-07-07 15:24:48 -07:00
if test $doxygen != $doxygen_default && \
! $doxygen --version >/dev/null 2>& 1; then
warn "Specified doxygen \" $doxygen \" not found, API documentation will fail to build."
fi
2009-03-08 22:11:24 +00:00
exesuf() {
case $1 in
2015-09-12 15:23:52 +02:00
mingw32*| mingw64*| win32| win64| cygwin*| *-dos| freedos| opendos| os/2*| symbian) echo .exe ;;
2009-03-08 22:11:24 +00:00
esac
}
EXESUF = $( exesuf $target_os )
HOSTEXESUF = $( exesuf $host_os )
2009-02-05 00:03:54 +00:00
2008-05-13 17:25:04 +00:00
# set temporary file name
2008-12-29 12:55:24 +00:00
: ${ TMPDIR := $TEMPDIR }
2008-12-29 12:55:28 +00:00
: ${ TMPDIR := $TMP }
2008-12-29 12:55:24 +00:00
: ${ TMPDIR :=/tmp }
2008-05-13 17:25:04 +00:00
2013-10-05 13:48:22 +02:00
if [ -n " $tempprefix " ] ; then
mktemp(){
2017-05-20 21:29:58 -03:00
tmpname = " $tempprefix . ${ HOSTNAME } . ${ UID } "
echo " $tmpname "
mkdir " $tmpname "
2013-10-05 13:48:22 +02:00
}
elif ! check_cmd mktemp -u XXXXXX; then
2009-03-03 08:53:55 +00:00
# simple replacement for missing mktemp
# NOT SAFE FOR GENERAL USE
mktemp(){
2014-09-21 11:38:25 +02:00
tmpname = " ${ 2 %%XXX* } . ${ HOSTNAME } . ${ UID } . $$ "
echo " $tmpname "
mkdir " $tmpname "
2009-03-03 08:53:55 +00:00
}
fi
2017-05-20 16:44:58 +02:00
FFTMPDIR = $( mktemp -d " ${ TMPDIR } /ffconf.XXXXXXXX" 2> /dev/null) ||
2014-09-21 11:38:25 +02:00
die "Unable to create temporary directory in $TMPDIR ."
2009-03-03 08:53:55 +00:00
tmpfile(){
2017-05-20 16:44:58 +02:00
tmp = " ${ FFTMPDIR } /test" $2
2014-09-21 11:38:25 +02:00
( set -C; exec > $tmp ) 2> /dev/null ||
2017-05-20 16:44:58 +02:00
die "Unable to create temporary file in $FFTMPDIR ."
2009-03-03 08:53:55 +00:00
eval $1 = $tmp
}
2017-05-20 16:44:58 +02:00
trap 'rm -rf -- "$FFTMPDIR"' EXIT
2014-09-21 11:48:21 +02:00
trap 'exit 2' INT
2009-03-03 08:53:55 +00:00
2010-09-03 21:27:19 +00:00
tmpfile TMPASM .asm
2011-09-12 17:40:29 +02:00
tmpfile TMPC .c
2011-12-14 23:58:10 +01:00
tmpfile TMPCPP .cpp
2011-09-12 17:40:29 +02:00
tmpfile TMPE $EXESUF
tmpfile TMPH .h
2014-04-05 13:30:27 +02:00
tmpfile TMPM .m
2011-09-12 17:40:29 +02:00
tmpfile TMPO .o
tmpfile TMPS .S
tmpfile TMPSH .sh
tmpfile TMPV .ver
2009-03-03 08:53:55 +00:00
unset -f mktemp
2008-05-13 17:25:04 +00:00
2010-10-06 15:54:35 +01:00
chmod +x $TMPE
2009-02-04 21:28:54 +00:00
# make sure we can execute files in $TMPDIR
cat > $TMPSH 2>> $logfile <<EOF
#! /bin/sh
EOF
chmod +x $TMPSH >> $logfile 2>& 1
if ! $TMPSH >> $logfile 2>& 1; then
cat <<EOF
Unable to create and execute files in $TMPDIR. Set the TMPDIR environment
variable to another directory and make sure that it is not mounted noexec.
EOF
die "Sanity test failed."
fi
2014-08-10 14:40:09 +03:00
armasm_flags(){
for flag; do
case $flag in
# Filter out MSVC cl.exe options from cflags that shouldn't
# be passed to gas-preprocessor
-M[ TD] *) ;;
*) echo $flag ;;
esac
done
}
2012-10-23 00:05:44 +01:00
ccc_flags(){
for flag; do
case $flag in
-std= c99) echo -c99 ;;
-mcpu= *) echo -arch ${ flag #*= } ;;
-mieee) echo -ieee ;;
-O*| -fast) echo $flag ;;
-fno-math-errno) echo -assume nomath_errno ;;
-g) echo -g3 ;;
-Wall) echo -msg_enable level2 ;;
-Wno-pointer-sign) echo -msg_disable ptrmismatch1 ;;
-Wl,*) echo $flag ;;
-f*| -W*) ;;
*) echo $flag ;;
esac
done
}
2013-09-12 20:17:15 +02:00
cparser_flags(){
for flag; do
case $flag in
-Wno-switch) echo -Wno-switch-enum ;;
-Wno-format-zero-length) ;;
-Wdisabled-optimization) ;;
-Wno-pointer-sign) echo -Wno-other ;;
*) echo $flag ;;
esac
done
}
2013-05-30 20:11:20 +00:00
msvc_common_flags(){
2012-06-22 12:24:59 +03:00
for flag; do
case $flag in
2013-05-30 20:11:20 +00:00
# In addition to specifying certain flags under the compiler
# specific filters, they must be specified here as well or else the
# generic catch all at the bottom will print the original flag.
-Wall) ;;
2016-12-14 20:35:18 +01:00
-Wextra) ;;
2013-05-30 20:11:20 +00:00
-std= c99) ;;
# Common flags
2013-06-24 21:10:11 +00:00
-fomit-frame-pointer) ;;
2012-06-22 12:24:59 +03:00
-g) echo -Z7 ;;
-fno-math-errno) ;;
-fno-common) ;;
-fno-signed-zeros) ;;
2012-10-30 22:57:37 +01:00
-fPIC) ;;
2013-05-28 23:39:21 +03:00
-mthumb) ;;
-march= *) ;;
2012-06-22 12:24:59 +03:00
-lz) echo zlib.lib ;;
2016-01-27 22:41:43 +01:00
-lx264) echo libx264.lib ;;
2017-04-13 02:38:02 -07:00
-lstdc++) ;;
2012-06-22 12:24:59 +03:00
-l*) echo ${ flag #-l } .lib ;;
2015-07-24 13:16:43 +02:00
-LARGEADDRESSAWARE) echo $flag ;;
2015-01-02 23:29:27 +02:00
-L*) echo -libpath:${ flag #-L } ;;
2012-06-22 12:24:59 +03:00
*) echo $flag ;;
esac
done
}
2013-05-30 20:11:20 +00:00
msvc_flags(){
msvc_common_flags " $@ "
for flag; do
case $flag in
2016-12-14 20:35:18 +01:00
-Wall) echo -W3 -wd4018 -wd4146 -wd4244 -wd4305 \
-wd4554 ;;
-Wextra) echo -W4 -wd4244 -wd4127 -wd4018 -wd4389 \
2013-05-30 20:11:20 +00:00
-wd4146 -wd4057 -wd4204 -wd4706 -wd4305 \
-wd4152 -wd4324 -we4013 -wd4100 -wd4214 \
2015-03-16 15:31:57 +01:00
-wd4307 \
2016-11-22 08:18:38 +01:00
-wd4273 -wd4554 -wd4701 -wd4703 ;;
2013-05-30 20:11:20 +00:00
esac
done
}
icl_flags(){
msvc_common_flags " $@ "
for flag; do
case $flag in
# Despite what Intel's documentation says -Wall, which is supported
# on Windows, does enable remarks so disable them here.
-Wall) echo $flag -Qdiag-disable:remark ;;
-std= c99) echo -Qstd= c99 ;;
2014-06-29 03:28:39 +10:00
-flto) echo -ipo ;;
2013-05-30 20:11:20 +00:00
esac
done
}
2014-05-04 17:16:26 +02:00
icc_flags(){
for flag; do
case $flag in
-flto) echo -ipo ;;
*) echo $flag ;;
esac
done
}
2012-07-18 20:27:09 +01:00
pgi_flags(){
for flag; do
case $flag in
2012-10-05 03:42:12 +01:00
-flto) echo -Mipa= fast,libopt,libinline,vestigial ;;
2012-07-18 20:27:09 +01:00
-fomit-frame-pointer) echo -Mnoframe ;;
-g) echo -gopt ;;
*) echo $flag ;;
esac
done
}
suncc_flags(){
for flag; do
case $flag in
-march= *| -mcpu= *)
case " ${ flag #*= } " in
native) echo -xtarget= native ;;
v9| niagara) echo -xarch= sparc ;;
ultrasparc) echo -xarch= sparcvis ;;
ultrasparc3| niagara2) echo -xarch= sparcvis2 ;;
i586| pentium) echo -xchip= pentium ;;
i686| pentiumpro| pentium2) echo -xtarget= pentium_pro ;;
pentium3*| c3-2) echo -xtarget= pentium3 ;;
pentium-m) echo -xarch= sse2 -xchip= pentium3 ;;
pentium4*) echo -xtarget= pentium4 ;;
prescott| nocona) echo -xarch= sse3 -xchip= pentium4 ;;
*-sse3) echo -xarch= sse3 ;;
core2) echo -xarch= ssse3 -xchip= core2 ;;
2014-04-27 22:01:34 -03:00
bonnell) echo -xarch= ssse3 ;;
corei7| nehalem) echo -xtarget= nehalem ;;
westmere) echo -xtarget= westmere ;;
silvermont) echo -xarch= sse4_2 ;;
corei7-avx| sandybridge) echo -xtarget= sandybridge ;;
2016-07-17 19:14:12 -03:00
core-avx*| ivybridge| haswell| broadwell| skylake*| knl)
2014-04-27 22:01:34 -03:00
echo -xarch= avx ;;
2013-06-24 10:40:15 +02:00
amdfam10| barcelona) echo -xtarget= barcelona ;;
2014-04-27 22:01:34 -03:00
btver1) echo -xarch= amdsse4a ;;
2016-07-17 19:14:12 -03:00
btver2| bdver*| znver*) echo -xarch= avx ;;
2013-06-20 13:42:21 +02:00
athlon-4| athlon-[ mx] p) echo -xarch= ssea ;;
2012-07-18 20:27:09 +01:00
k8| opteron| athlon64| athlon-fx)
2013-06-20 13:42:21 +02:00
echo -xarch= sse2a ;;
athlon*) echo -xarch= pentium_proa ;;
2012-07-18 20:27:09 +01:00
esac
;;
-std= c99) echo -xc99 ;;
-fomit-frame-pointer) echo -xregs= frameptr ;;
-fPIC) echo -KPIC -xcode= pic32 ;;
-W*,*) echo $flag ;;
2013-01-14 12:51:59 -05:00
-f*-*| -W*| -mimpure-text) ;;
-shared) echo -G ;;
2012-07-18 20:27:09 +01:00
*) echo $flag ;;
esac
done
}
tms470_flags(){
for flag; do
case $flag in
-march= *| -mcpu= *)
case " ${ flag #*= } " in
armv7-a| cortex-a*) echo -mv= 7a8 ;;
armv7-r| cortex-r*) echo -mv= 7r4 ;;
armv7-m| cortex-m*) echo -mv= 7m3 ;;
armv6*| arm11*) echo -mv= 6 ;;
armv5*e| arm[ 79] *e*| arm9[ 24] 6*| arm96*| arm102[ 26])
echo -mv= 5e ;;
armv4*| arm7*| arm9[ 24] *) echo -mv= 4 ;;
esac
;;
-mfpu= neon) echo --float_support= vfpv3 --neon ;;
-mfpu= vfp) echo --float_support= vfpv2 ;;
-mfpu= vfpv3) echo --float_support= vfpv3 ;;
2012-10-13 01:34:42 +01:00
-mfpu= vfpv3-d16) echo --float_support= vfpv3d16 ;;
2012-07-18 20:27:09 +01:00
-msoft-float) echo --float_support= vfplib ;;
-O[ 0-3] | -mf= *) echo $flag ;;
-g) echo -g -mn ;;
-pds= *) echo $flag ;;
2012-07-20 01:27:53 +01:00
-D*| -I*) echo $flag ;;
--gcc| --abi= *) echo $flag ;;
-me) echo $flag ;;
2012-07-18 20:27:09 +01:00
esac
done
}
2012-07-20 13:43:07 +01:00
probe_cc(){
pfx = $1
_cc = $2
2015-08-26 09:36:25 -04:00
first = $3
2012-07-20 13:43:07 +01:00
2012-08-28 16:06:56 +01:00
unset _type _ident _cc_c _cc_e _cc_o _flags _cflags
unset _ld_o _ldflags _ld_lib _ld_path
2012-07-20 22:22:41 +01:00
unset _depflags _DEPCMD _DEPFLAGS
2012-07-20 13:43:07 +01:00
_flags_filter = echo
2013-11-08 23:55:06 +01:00
if $_cc --version 2>& 1 | grep -q '^GNU assembler' ; then
true # no-op to avoid reading stdin in following checks
elif $_cc -v 2>& 1 | grep -q '^gcc.*LLVM' ; then
2012-07-20 13:43:07 +01:00
_type = llvm_gcc
2015-08-03 12:20:59 +02:00
gcc_extra_ver = $( expr " $( $_cc --version 2>/dev/null | head -n1) " : '.*\((.*)\)' )
_ident = "llvm-gcc $( $_cc -dumpversion 2>/dev/null) $gcc_extra_ver "
2012-07-20 13:43:07 +01:00
_depflags = '-MMD -MF $(@:.o=.d) -MT $@'
_cflags_speed = '-O3'
_cflags_size = '-Os'
elif $_cc -v 2>& 1 | grep -qi ^gcc; then
_type = gcc
gcc_version = $( $_cc --version | head -n1)
gcc_basever = $( $_cc -dumpversion)
gcc_pkg_ver = $( expr " $gcc_version " : '[^ ]* \(([^)]*)\)' )
gcc_ext_ver = $( expr " $gcc_version " : ".* $gcc_pkg_ver $gcc_basever \\(.*\\)" )
_ident = $( cleanws "gcc $gcc_basever $gcc_pkg_ver $gcc_ext_ver " )
2015-08-24 15:38:18 -04:00
case $gcc_basever in
2015-12-29 19:01:39 -08:00
2) ;;
2.*) ;;
2015-10-11 09:37:42 -04:00
*) _depflags = '-MMD -MF $(@:.o=.d) -MT $@' ;;
2015-08-24 15:38:18 -04:00
esac
2015-08-26 09:36:25 -04:00
if [ " $first " = true ] ; then
case $gcc_basever in
4.2*)
warn "gcc 4.2 is outdated and may miscompile FFmpeg. Please use a newer compiler." ;;
esac
fi
2012-07-20 13:43:07 +01:00
_cflags_speed = '-O3'
_cflags_size = '-Os'
2013-02-25 17:05:22 +01:00
elif $_cc --version 2>/dev/null | grep -q ^icc; then
2012-07-20 13:43:07 +01:00
_type = icc
_ident = $( $_cc --version | head -n1)
_depflags = '-MMD'
_cflags_speed = '-O3'
_cflags_size = '-Os'
_cflags_noopt = '-O1'
2014-05-04 17:16:26 +02:00
_flags_filter = icc_flags
2012-07-20 13:43:07 +01:00
elif $_cc -v 2>& 1 | grep -q xlc; then
_type = xlc
_ident = $( $_cc -qversion 2>/dev/null | head -n1)
_cflags_speed = '-O5'
_cflags_size = '-O5 -qcompact'
elif $_cc -V 2>/dev/null | grep -q Compaq; then
_type = ccc
_ident = $( $_cc -V | head -n1 | cut -d' ' -f1-3)
_DEPFLAGS = '-M'
_cflags_speed = '-fast'
_cflags_size = '-O1'
2012-10-23 00:05:44 +01:00
_flags_filter = ccc_flags
2014-04-18 23:40:59 +03:00
elif $_cc --vsn 2>/dev/null | grep -Eq "ARM (C/C\+\+ )?Compiler" ; then
2012-07-20 13:43:07 +01:00
test -d " $sysroot " || die "No valid sysroot specified."
_type = armcc
2014-07-28 11:51:29 +03:00
_ident = $( $_cc --vsn | grep -i build | head -n1 | sed 's/.*: //' )
2012-07-20 13:43:07 +01:00
armcc_conf = " $PWD /armcc.conf"
$_cc --arm_linux_configure \
--arm_linux_config_file= " $armcc_conf " \
--configure_sysroot= " $sysroot " \
--configure_cpp_headers= " $sysinclude " >>$logfile 2>& 1 ||
die "Error creating armcc configuration file."
$_cc --vsn | grep -q RVCT && armcc_opt = rvct || armcc_opt = armcc
_flags = "--arm_linux_config_file= $armcc_conf --translate_gcc"
as_default = " ${ cross_prefix } gcc"
_depflags = '-MMD'
_cflags_speed = '-O3'
_cflags_size = '-Os'
2012-09-15 15:36:22 +01:00
elif $_cc -version 2>/dev/null | grep -Eq 'TMS470|TI ARM' ; then
2012-07-20 13:43:07 +01:00
_type = tms470
_ident = $( $_cc -version | head -n1 | tr -s ' ' )
_flags = '--gcc --abi=eabi -me'
2012-07-20 22:22:41 +01:00
_cc_e = '-ppl -fe=$@'
2012-07-20 13:43:07 +01:00
_cc_o = '-fe=$@'
_depflags = '-ppa -ppd=$(@:.o=.d)'
_cflags_speed = '-O3 -mf=5'
_cflags_size = '-O3 -mf=2'
_flags_filter = tms470_flags
elif $_cc -v 2>& 1 | grep -q clang; then
_type = clang
2015-08-03 12:20:59 +02:00
_ident = $( $_cc --version 2>/dev/null | head -n1)
2014-01-25 17:34:19 +01:00
_depflags = '-MMD -MF $(@:.o=.d) -MT $@'
2012-07-20 13:43:07 +01:00
_cflags_speed = '-O3'
2017-03-10 04:02:13 +00:00
_cflags_size = '-Oz'
2012-07-20 13:43:07 +01:00
elif $_cc -V 2>& 1 | grep -q Sun; then
_type = suncc
_ident = $( $_cc -V 2>& 1 | head -n1 | cut -d' ' -f 2-)
_DEPCMD = '$(DEP$(1)) $(DEP$(1)FLAGS) $($(1)DEP_FLAGS) $< | sed -e "1s,^.*: ,$@: ," -e "\$$!s,\$$, \\\," -e "1!s,^.*: , ," > $(@:.o=.d)'
2012-08-09 17:14:32 +02:00
_DEPFLAGS = '-xM1 -xc99'
2012-07-20 13:43:07 +01:00
_ldflags = '-std=c99'
_cflags_speed = '-O5'
_cflags_size = '-O5 -xspace'
_flags_filter = suncc_flags
elif $_cc -v 2>& 1 | grep -q 'PathScale\|Path64' ; then
_type = pathscale
_ident = $( $_cc -v 2>& 1 | head -n1 | tr -d :)
_depflags = '-MMD -MF $(@:.o=.d) -MT $@'
_cflags_speed = '-O2'
_cflags_size = '-Os'
_flags_filter = 'filter_out -Wdisabled-optimization'
elif $_cc -v 2>& 1 | grep -q Open64; then
_type = open64
_ident = $( $_cc -v 2>& 1 | head -n1 | tr -d :)
_depflags = '-MMD -MF $(@:.o=.d) -MT $@'
_cflags_speed = '-O2'
_cflags_size = '-Os'
_flags_filter = 'filter_out -Wdisabled-optimization|-Wtype-limits|-fno-signed-zeros'
elif $_cc -V 2>& 1 | grep -q Portland; then
_type = pgi
_ident = "PGI $( $_cc -V 2>& 1 | awk '/^pgcc/ { print $2; exit }' ) "
2012-10-05 01:30:28 +01:00
opt_common = '-alias=ansi -Mdse -Mlre -Mpre'
2012-07-20 13:43:07 +01:00
_cflags_speed = "-O3 -Mautoinline -Munroll=c:4 $opt_common "
_cflags_size = "-O2 -Munroll=c:1 $opt_common "
2013-04-18 02:20:04 +02:00
_cflags_noopt = "-O"
2012-07-20 13:43:07 +01:00
_flags_filter = pgi_flags
2014-08-09 22:25:44 +03:00
elif $_cc 2>& 1 | grep -q 'Microsoft.*ARM.*Assembler' ; then
_type = armasm
_ident = $( $_cc | head -n1)
# 4509: "This form of conditional instruction is deprecated"
_flags = "-nologo -ignore 4509"
2014-08-10 14:40:09 +03:00
_flags_filter = armasm_flags
2013-05-25 06:07:42 -04:00
elif $_cc 2>& 1 | grep -q Intel; then
_type = icl
2014-06-05 22:59:47 +03:00
_ident = $( $_cc 2>& 1 | head -n1)
2013-05-25 06:07:42 -04:00
_depflags = '-QMMD -QMF$(@:.o=.d) -QMT$@'
2013-06-20 13:42:21 +02:00
# Not only is O3 broken on 13.x+ but it is slower on all previous
# versions (tested) as well.
2013-05-25 06:07:42 -04:00
_cflags_speed = "-O2"
_cflags_size = "-O1 -Oi" # -O1 without -Oi miscompiles stuff
if $_cc 2>& 1 | grep -q Linker; then
2013-11-14 11:58:37 +02:00
_ld_o = '-out:$@'
2013-05-25 06:07:42 -04:00
else
_ld_o = '-Fe$@'
fi
2013-11-14 11:58:37 +02:00
_cc_o = '-Fo$@'
2013-05-25 06:07:42 -04:00
_cc_e = '-P'
2013-05-30 20:11:20 +00:00
_flags_filter = icl_flags
2013-05-25 06:07:42 -04:00
_ld_lib = 'lib%.a'
_ld_path = '-libpath:'
2013-06-20 13:42:21 +02:00
# -Qdiag-error to make icl error when seeing certain unknown arguments
2013-05-30 20:11:21 +00:00
_flags = '-nologo -Qdiag-error:4044,10157'
2014-05-11 15:07:13 +10:00
# -Qvec- -Qsimd- to prevent miscompilation, -GS, fp:precise for consistency
2013-06-20 13:42:21 +02:00
# with MSVC which enables it by default.
2017-03-15 12:44:35 +01:00
_cflags = '-Qms0 -Qvec- -Qsimd- -GS -fp:precise'
2014-11-21 05:55:48 +11:00
disable stripping
2016-07-22 10:19:52 +03:00
elif $_cc -? 2>/dev/null | grep -q 'LLVM.*Linker' ; then
# lld can emulate multiple different linkers; in ms link.exe mode,
# the -? parameter gives the help output which contains an identifyable
# string, while it gives an error in other modes.
_type = lld-link
# The link.exe mode doesn't have a switch for getting the version,
# but we can force it back to gnu mode and get the version from there.
2016-11-03 14:14:12 +02:00
_ident = $( $_cc -flavor gnu --version 2>/dev/null)
2016-07-22 10:19:52 +03:00
_ld_o = '-out:$@'
_flags_filter = msvc_flags
_ld_lib = 'lib%.a'
_ld_path = '-libpath:'
2015-07-24 00:44:58 +02:00
elif $_cc -nologo- 2>& 1 | grep -q Microsoft; then
2014-11-20 18:34:37 +11:00
_type = msvc
2015-05-03 01:20:24 +02:00
_ident = $( $_cc 2>& 1 | head -n1)
2014-11-20 18:34:37 +11:00
_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"
2017-04-26 16:39:37 +02:00
_cflags_noopt = "-O1"
2015-07-24 00:44:58 +02:00
if $_cc -nologo- 2>& 1 | grep -q Linker; then
2014-11-20 18:34:37 +11:00
_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'
disable stripping
2013-09-12 20:17:15 +02:00
elif $_cc --version 2>/dev/null | grep -q ^cparser; then
_type = cparser
_ident = $( $_cc --version | head -n1)
_depflags = '-MMD'
_cflags_speed = '-O4'
_cflags_size = '-O2'
_flags_filter = cparser_flags
2009-08-10 17:25:46 +00:00
fi
2012-07-20 13:43:07 +01:00
eval ${ pfx } _type = \$ _type
eval ${ pfx } _ident = \$ _ident
}
set_ccvars(){
2012-07-20 23:43:27 +01:00
eval ${ 1 } _C = \$ { _cc_c-\$ { ${ 1 } _C}}
2012-07-20 22:22:41 +01:00
eval ${ 1 } _E = \$ { _cc_e-\$ { ${ 1 } _E}}
2012-07-20 13:43:07 +01:00
eval ${ 1 } _O = \$ { _cc_o-\$ { ${ 1 } _O}}
if [ -n " $_depflags " ] ; then
eval ${ 1 } _DEPFLAGS = \$ _depflags
else
eval ${ 1 } DEP = \$ { _DEPCMD:-\$ DEPCMD}
eval ${ 1 } DEP_FLAGS = \$ { _DEPFLAGS:-\$ DEPFLAGS}
eval DEP${ 1 } FLAGS = \$ _flags
fi
}
2015-08-26 09:36:25 -04:00
probe_cc cc " $cc " "true"
2012-07-20 13:43:07 +01:00
cflags_filter = $_flags_filter
cflags_speed = $_cflags_speed
cflags_size = $_cflags_size
cflags_noopt = $_cflags_noopt
add_cflags $_flags $_cflags
cc_ldflags = $_ldflags
set_ccvars CC
2017-04-13 02:38:02 -07:00
set_ccvars CXX
2012-07-20 13:43:07 +01:00
probe_cc hostcc " $host_cc "
host_cflags_filter = $_flags_filter
2017-01-19 11:36:52 +01:00
host_cflags_speed = $_cflags_speed
2012-07-20 13:43:07 +01:00
add_host_cflags $_flags $_cflags
set_ccvars HOSTCC
2009-02-21 21:07:32 +00:00
2010-06-24 20:49:39 +00:00
test -n " $cc_type " && enable $cc_type ||
warn "Unknown C compiler $cc , unable to select optimal CFLAGS"
2009-02-21 21:07:32 +00:00
2009-07-12 13:29:55 +00:00
: ${ as_default := $cc }
2015-11-23 17:08:49 -05:00
: ${ objcc_default := $cc }
2009-07-12 13:29:43 +00:00
: ${ dep_cc_default := $cc }
2009-07-12 13:29:40 +00:00
: ${ ld_default := $cc }
2012-08-28 13:02:35 +01:00
: ${ host_ld_default := $host_cc }
2016-04-25 07:39:08 -07:00
set_default ar as objcc dep_cc ld ln_s host_ld windres
2009-03-09 22:39:49 +00:00
2012-07-20 13:43:07 +01:00
probe_cc as " $as "
asflags_filter = $_flags_filter
add_asflags $_flags $_cflags
set_ccvars AS
2015-11-23 17:08:49 -05:00
probe_cc objcc " $objcc "
objcflags_filter = $_flags_filter
add_objcflags $_flags $_cflags
set_ccvars OBJC
2012-07-20 13:43:07 +01:00
probe_cc ld " $ld "
ldflags_filter = $_flags_filter
add_ldflags $_flags $_ldflags
test " $cc_type " != " $ld_type " && add_ldflags $cc_ldflags
2012-08-28 12:50:09 +01:00
LD_O = ${ _ld_o - $LD_O }
2012-08-28 16:06:56 +01:00
LD_LIB = ${ _ld_lib - $LD_LIB }
LD_PATH = ${ _ld_path - $LD_PATH }
2012-07-20 13:43:07 +01:00
2012-08-28 13:02:35 +01:00
probe_cc hostld " $host_ld "
host_ldflags_filter = $_flags_filter
add_host_ldflags $_flags $_ldflags
HOSTLD_O = ${ _ld_o - $HOSTLD_O }
2012-07-20 13:43:07 +01:00
if [ -z " $CC_DEPFLAGS " ] && [ " $dep_cc " != " $cc " ] ; then
probe_cc depcc " $dep_cc "
CCDEP = ${ _DEPCMD :- $DEPCMD }
CCDEP_FLAGS = ${ _DEPFLAGS := $DEPFLAGS }
DEPCCFLAGS = $_flags
fi
2009-08-08 18:27:27 +00:00
2012-09-17 23:56:32 +01:00
if $ar 2>& 1 | grep -q Microsoft; then
arflags = "-nologo"
ar_o = '-out:$@'
elif $ar 2>& 1 | grep -q 'Texas Instruments' ; then
arflags = "rq"
ar_o = '$@'
2013-07-29 18:23:08 +02:00
elif $ar 2>& 1 | grep -q 'Usage: ar.*-X.*any' ; then
arflags = '-Xany -r -c'
ar_o = '$@'
2015-01-26 23:50:29 +01:00
elif $ar 2>& 1 | grep -q "\[D\] " ; then
arflags = "rcD"
ar_o = '$@'
2012-09-17 23:56:32 +01:00
else
2015-01-26 23:02:01 +01:00
arflags = "rc"
2012-09-17 23:56:32 +01:00
ar_o = '$@'
fi
2009-07-12 13:29:51 +00:00
add_cflags $extra_cflags
2011-08-31 04:11:25 +05:30
add_cxxflags $extra_cxxflags
2015-11-23 17:08:49 -05:00
add_objcflags $extra_objcflags
2009-07-12 13:29:53 +00:00
add_asflags $extra_cflags
2009-07-12 13:29:51 +00:00
2009-02-21 21:07:37 +00:00
if test -n " $sysroot " ; then
case " $cc_type " in
2011-02-27 23:34:38 +00:00
gcc| llvm_gcc| clang)
2009-07-12 13:29:35 +00:00
add_cppflags --sysroot= " $sysroot "
2009-02-21 21:07:37 +00:00
add_ldflags --sysroot= " $sysroot "
2014-03-23 17:57:32 +01:00
# On Darwin --sysroot may be ignored, -isysroot always affects headers and linking
add_cppflags -isysroot " $sysroot "
add_ldflags -isysroot " $sysroot "
2009-02-21 21:07:37 +00:00
;;
2009-07-19 10:52:35 +00:00
tms470)
add_cppflags -I" $sysinclude "
add_ldflags --sysroot= " $sysroot "
;;
2009-02-21 21:07:37 +00:00
esac
fi
2009-08-06 15:45:19 +00:00
if test " $cpu " = host; then
2013-06-20 13:42:21 +02:00
enabled cross_compile &&
die "--cpu=host makes no sense when cross-compiling."
2009-08-06 15:45:19 +00:00
case " $cc_type " in
2010-09-02 21:41:07 +00:00
gcc| llvm_gcc)
2009-08-06 15:45:19 +00:00
check_native(){
$cc $1 = native -v -c -o $TMPO $TMPC >$TMPE 2>& 1 || return
2011-07-10 16:17:55 +01:00
sed -n "/cc1.* $1 =/{
2010-01-22 03:14:19 +00:00
s/.* $1 =\\([^ ]*\\).*/\\1/
p
q
}" $TMPE
2009-08-06 15:45:19 +00:00
}
cpu = $( check_native -march || check_native -mcpu)
;;
2015-12-14 18:11:00 +03:00
clang)
check_native(){
$cc $1 = native -v -c -o $TMPO $TMPC >$TMPE 2>& 1 || return
sed -n "/cc1.*-target-cpu /{
s/.*-target-cpu \\([^ ]*\\).*/\\1/
p
q
}" $TMPE
}
cpu = $( check_native -march)
;;
2009-08-06 15:45:19 +00:00
esac
2013-06-20 13:42:21 +02:00
test " ${ cpu :- host } " = host &&
die "--cpu=host not supported with compiler $cc "
2009-08-06 15:45:19 +00:00
fi
2010-01-18 21:05:01 +00:00
# Deal with common $arch aliases
case " $arch " in
2012-11-16 21:02:53 +00:00
aarch64| arm64)
arch = "aarch64"
;;
2013-07-25 10:52:15 +02:00
arm*| iPad*| iPhone*)
2010-01-18 21:05:01 +00:00
arch = "arm"
;;
2012-10-23 23:34:35 +01:00
mips*| IP*)
2016-01-18 17:03:28 +01:00
case " $arch " in
*el)
add_cppflags -EL
add_ldflags -EL
;;
*eb)
add_cppflags -EB
add_ldflags -EB
;;
esac
2010-01-18 21:05:01 +00:00
arch = "mips"
;;
2012-10-24 00:21:15 +01:00
parisc*| hppa*)
2010-01-18 21:05:01 +00:00
arch = "parisc"
;;
2012-10-23 23:39:40 +01:00
"Power Macintosh" | ppc*| powerpc*)
2010-01-18 21:05:01 +00:00
arch = "ppc"
;;
s390| s390x)
arch = "s390"
;;
sh4| sh)
arch = "sh4"
;;
2016-08-14 18:23:40 +00:00
sun4*| sparc*)
2010-01-18 21:05:01 +00:00
arch = "sparc"
;;
2012-10-16 18:21:06 +00:00
tilegx| tile-gx)
arch = "tilegx"
;;
2014-05-26 18:07:55 +02:00
i[ 3-6] 86*| i86pc| BePC| x86pc| x86_64| x86_32| amd64)
2010-01-18 21:05:01 +00:00
arch = "x86"
;;
esac
2010-06-24 20:49:39 +00:00
is_in $arch $ARCH_LIST || warn "unknown architecture $arch "
2010-01-18 21:05:05 +00:00
enable $arch
2010-01-18 21:05:01 +00:00
2009-07-17 08:21:41 +00:00
# Add processor-specific flags
2012-12-03 19:21:42 +00:00
if enabled aarch64; then
2012-11-18 15:22:04 +00:00
case $cpu in
armv*)
cpuflags = "-march= $cpu "
;;
*)
cpuflags = "-mcpu= $cpu "
;;
esac
elif enabled alpha; then
cpuflags = "-mcpu= $cpu "
elif enabled arm; then
2012-11-30 21:14:25 +00:00
check_arm_arch() {
check_cpp_condition stddef.h \
"defined __ARM_ARCH_ ${ 1 } __ || defined __TARGET_ARCH_ ${ 2 :- $1 } " \
$cpuflags
}
probe_arm_arch() {
2016-04-04 20:16:54 +02:00
if check_arm_arch 4; then echo armv4
elif check_arm_arch 4T; then echo armv4t
elif check_arm_arch 5; then echo armv5
elif check_arm_arch 5E; then echo armv5e
elif check_arm_arch 5T; then echo armv5t
elif check_arm_arch 5TE; then echo armv5te
elif check_arm_arch 5TEJ; then echo armv5te
elif check_arm_arch 6; then echo armv6
elif check_arm_arch 6J; then echo armv6j
elif check_arm_arch 6K; then echo armv6k
elif check_arm_arch 6Z; then echo armv6z
elif check_arm_arch 6ZK; then echo armv6zk
elif check_arm_arch 6T2; then echo armv6t2
elif check_arm_arch 7; then echo armv7
elif check_arm_arch 7A 7_A; then echo armv7-a
elif check_arm_arch 7S; then echo armv7-a
elif check_arm_arch 7R 7_R; then echo armv7-r
elif check_arm_arch 7M 7_M; then echo armv7-m
elif check_arm_arch 7EM 7E_M; then echo armv7-m
elif check_arm_arch 8A 8_A; then echo armv8-a
2012-11-30 21:14:25 +00:00
fi
}
[ " $cpu " = generic ] && cpu = $( probe_arm_arch)
2012-11-18 15:22:04 +00:00
case $cpu in
armv*)
cpuflags = "-march= $cpu "
subarch = $( echo $cpu | sed 's/[^a-z0-9]//g' )
;;
*)
cpuflags = "-mcpu= $cpu "
case $cpu in
cortex-a*) subarch = armv7a ;;
cortex-r*) subarch = armv7r ;;
cortex-m*) enable thumb; subarch = armv7m ;;
arm11*) subarch = armv6 ;;
arm[ 79] *e*| arm9[ 24] 6*| arm96*| arm102[ 26]) subarch = armv5te ;;
armv4*| arm7*| arm9[ 24] *) subarch = armv4 ;;
2012-11-30 21:14:25 +00:00
*) subarch = $( probe_arm_arch) ;;
2012-11-18 15:22:04 +00:00
esac
;;
esac
2012-12-03 21:47:17 +00:00
case " $subarch " in
armv5t*) enable fast_clz ;;
2014-05-20 10:14:05 +08:00
armv[ 6-8] *)
enable fast_clz
disabled fast_unaligned || enable fast_unaligned
;;
2012-12-03 21:47:17 +00:00
esac
2012-11-18 15:22:04 +00:00
elif enabled avr32; then
case $cpu in
ap7[ 02] 0[ 0-2])
subarch = "avr32_ap"
cpuflags = "-mpart= $cpu "
;;
ap)
subarch = "avr32_ap"
cpuflags = "-march= $cpu "
;;
uc3[ ab] *)
subarch = "avr32_uc"
cpuflags = "-mcpu= $cpu "
;;
uc)
subarch = "avr32_uc"
cpuflags = "-march= $cpu "
;;
esac
elif enabled bfin; then
cpuflags = "-mcpu= $cpu "
elif enabled mips; then
cpuflags = "-march= $cpu "
2016-03-07 19:49:10 +05:30
if [ " $cpu " != "generic" ] ; then
disable mips32r2
disable mips32r5
disable mips64r2
disable mips32r6
disable mips64r6
disable loongson2
disable loongson3
case $cpu in
24kc| 24kf*| 24kec| 34kc| 1004kc| 24kef*| 34kf*| 1004kf*| 74kc| 74kf)
enable mips32r2
disable msa
;;
2016-08-05 13:42:44 +05:30
p5600| i6400| p6600)
2016-03-07 19:49:10 +05:30
disable mipsdsp
disable mipsdspr2
;;
loongson*)
enable loongson2
enable loongson3
enable local_aligned_8 local_aligned_16 local_aligned_32
enable simd_align_16
enable fast_64bit
enable fast_clz
enable fast_cmov
enable fast_unaligned
disable aligned_stack
2016-10-10 16:07:20 +08:00
disable mipsfpu
disable mipsdsp
disable mipsdspr2
2016-03-07 19:49:10 +05:30
case $cpu in
loongson3*)
cpuflags = "-march=loongson3a -mhard-float -fno-expensive-optimizations"
;;
loongson2e)
cpuflags = "-march=loongson2e -mhard-float -fno-expensive-optimizations"
;;
loongson2f)
cpuflags = "-march=loongson2f -mhard-float -fno-expensive-optimizations"
;;
esac
;;
*)
# Unknown CPU. Disable everything.
warn "unknown CPU. Disabling all MIPS optimizations."
disable mipsfpu
disable mipsdsp
disable mipsdspr2
disable msa
disable mmi
;;
esac
case $cpu in
24kc)
disable mipsfpu
disable mipsdsp
disable mipsdspr2
;;
24kf*)
disable mipsdsp
disable mipsdspr2
;;
24kec| 34kc| 1004kc)
disable mipsfpu
disable mipsdspr2
;;
24kef*| 34kf*| 1004kf*)
disable mipsdspr2
;;
74kc)
disable mipsfpu
;;
p5600)
enable mips32r5
check_cflags "-mtune=p5600" && check_cflags "-msched-weight -mload-store-pairs -funroll-loops"
;;
i6400)
enable mips64r6
check_cflags "-mtune=i6400 -mabi=64" && check_cflags "-msched-weight -mload-store-pairs -funroll-loops" && check_ldflags "-mabi=64"
;;
2016-08-05 13:42:44 +05:30
p6600)
enable mips64r6
check_cflags "-mtune=p6600 -mabi=64" && check_cflags "-msched-weight -mload-store-pairs -funroll-loops" && check_ldflags "-mabi=64"
;;
2016-03-07 19:49:10 +05:30
esac
else
# We do not disable anything. Is up to the user to disable the unwanted features.
warn 'generic cpu selected'
fi
2012-11-23 14:03:31 +01:00
2010-01-18 21:32:57 +00:00
elif enabled ppc; then
2010-01-18 21:05:05 +00:00
2014-03-14 17:20:59 +01:00
disable ldbrx
2010-01-30 18:07:05 +00:00
case $( tolower $cpu ) in
601| ppc601| powerpc601)
2010-01-18 21:05:08 +00:00
cpuflags = "-mcpu=601"
2010-01-30 18:50:28 +00:00
disable altivec
2010-01-18 21:05:08 +00:00
;;
2010-01-30 18:07:05 +00:00
603*| ppc603*| powerpc603*)
2010-01-18 21:05:08 +00:00
cpuflags = "-mcpu=603"
2010-01-30 18:50:28 +00:00
disable altivec
2010-01-18 21:05:08 +00:00
;;
2010-01-30 18:07:05 +00:00
604*| ppc604*| powerpc604*)
2010-01-18 21:05:08 +00:00
cpuflags = "-mcpu=604"
2010-01-30 18:50:28 +00:00
disable altivec
2010-01-18 21:05:08 +00:00
;;
2010-01-30 18:07:05 +00:00
g3| 75*| ppc75*| powerpc75*)
2012-11-14 00:07:13 +00:00
cpuflags = "-mcpu=750"
2010-01-30 18:50:28 +00:00
disable altivec
2010-01-18 21:05:08 +00:00
;;
2010-01-30 18:07:05 +00:00
g4| 745*| ppc745*| powerpc745*)
2012-11-14 00:07:13 +00:00
cpuflags = "-mcpu=7450"
2015-05-10 02:47:31 +02:00
disable vsx
2010-01-18 21:05:08 +00:00
;;
2010-01-30 18:07:05 +00:00
74*| ppc74*| powerpc74*)
2012-11-14 00:07:13 +00:00
cpuflags = "-mcpu=7400"
2015-05-10 02:47:31 +02:00
disable vsx
2010-01-18 21:05:08 +00:00
;;
2012-04-27 14:47:58 +01:00
g5| 970| ppc970| powerpc970)
2012-11-14 00:07:13 +00:00
cpuflags = "-mcpu=970"
2015-05-10 02:47:31 +02:00
disable vsx
2010-01-18 21:05:08 +00:00
;;
2015-05-10 02:47:31 +02:00
power[ 3-6] *)
2012-11-14 00:07:13 +00:00
cpuflags = "-mcpu= $cpu "
2015-05-10 02:47:31 +02:00
disable vsx
;;
power[ 7-8] *)
cpuflags = "-mcpu= $cpu "
2012-04-27 14:47:58 +01:00
;;
2010-01-30 18:07:05 +00:00
cell)
2010-01-18 21:05:08 +00:00
cpuflags = "-mcpu=cell"
enable ldbrx
2015-05-10 02:47:31 +02:00
disable vsx
2010-01-18 21:05:08 +00:00
;;
2012-08-07 12:52:16 -04:00
e500mc)
cpuflags = "-mcpu=e500mc"
disable altivec
;;
2010-01-30 18:07:07 +00:00
e500v2)
cpuflags = "-mcpu=8548 -mhard-float -mfloat-gprs=double"
disable altivec
2014-02-06 12:51:39 +00:00
disable dcbzl
2010-01-30 18:07:07 +00:00
;;
e500)
cpuflags = "-mcpu=8540 -mhard-float"
disable altivec
2014-02-06 12:51:39 +00:00
disable dcbzl
2010-01-30 18:07:07 +00:00
;;
2010-01-18 21:05:08 +00:00
esac
2010-01-18 21:05:05 +00:00
2012-11-18 15:22:04 +00:00
elif enabled sparc; then
case $cpu in
cypress| f93[ 04] | tsc701| sparcl*| supersparc| hypersparc| niagara| v[ 789])
cpuflags = "-mcpu= $cpu "
;;
ultrasparc*| niagara[ 234])
cpuflags = "-mcpu= $cpu "
;;
esac
2010-01-18 21:05:05 +00:00
elif enabled x86; then
2010-01-18 21:05:08 +00:00
case $cpu in
i[ 345] 86| pentium)
cpuflags = "-march= $cpu "
2014-09-12 22:29:29 +02:00
disable i686
2010-01-18 21:05:08 +00:00
disable mmx
;;
2013-04-26 16:49:02 +02:00
# targets that do NOT support nopl and conditional mov (cmov)
2010-01-18 21:05:08 +00:00
pentium-mmx| k6| k6-[ 23] | winchip-c6| winchip2| c3)
cpuflags = "-march= $cpu "
2013-04-26 16:49:02 +02:00
disable i686
2010-01-18 21:05:08 +00:00
;;
2013-04-26 16:49:02 +02:00
# targets that do support nopl and conditional mov (cmov)
2014-04-27 22:01:34 -03:00
i686| pentiumpro| pentium[ 23] | pentium-m| athlon| athlon-tbird| athlon-4| athlon-[ mx] p| athlon64*| k8*| opteron*| athlon-fx\
2016-07-17 19:14:12 -03:00
| core*| atom| bonnell| nehalem| westmere| silvermont| sandybridge| ivybridge| haswell| broadwell| skylake*| knl\
| amdfam10| barcelona| b[ dt] ver*| znver*)
2010-01-18 21:05:08 +00:00
cpuflags = "-march= $cpu "
2013-04-26 16:49:02 +02:00
enable i686
2010-01-18 21:05:08 +00:00
enable fast_cmov
;;
# targets that do support conditional mov but on which it's slow
pentium4| pentium4m| prescott| nocona)
cpuflags = "-march= $cpu "
2013-04-26 16:49:02 +02:00
enable i686
2010-01-18 21:05:08 +00:00
disable fast_cmov
;;
esac
2010-01-18 21:05:05 +00:00
fi
2012-12-03 19:21:42 +00:00
if [ " $cpu " != generic ] ; then
add_cflags $cpuflags
add_asflags $cpuflags
2015-09-25 08:56:25 +02:00
test " $cc_type " = " $ld_type " && add_ldflags $cpuflags
2012-12-03 19:21:42 +00:00
fi
2009-07-17 08:21:41 +00:00
2009-02-04 21:28:54 +00:00
# compiler sanity check
check_exec <<EOF
int main(void){ return 0; }
EOF
if test " $? " != 0; then
echo " $cc is unable to create an executable file."
if test -z " $cross_prefix " && ! enabled cross_compile ; then
echo "If $cc is a cross-compiler, use the --enable-cross-compile option."
echo "Only do this if you know what cross compiling means."
fi
die "C compiler test failed."
fi
2011-05-11 17:52:51 +02:00
add_cppflags -D_ISOC99_SOURCE
2011-08-31 04:11:25 +05:30
add_cxxflags -D__STDC_CONSTANT_MACROS
2017-03-25 17:36:39 +01:00
check_cxxflags -std= c++11 || check_cxxflags -std= c++0x
2016-11-23 21:54:53 -08:00
# some compilers silently accept -std=c11, so we also need to check that the
# version macro is defined properly
2016-12-28 23:41:29 +01:00
if test_cflags_cc -std= c11 ctype.h "__STDC_VERSION__ >= 201112L" ; then
2016-11-23 21:54:53 -08:00
add_cflags -std= c11
else
check_cflags -std= c99
fi
2009-07-12 13:29:32 +00:00
check_cc -D_FILE_OFFSET_BITS= 64 <<EOF && add_cppflags -D_FILE_OFFSET_BITS=64
2009-03-03 12:52:12 +00:00
#include <stdlib.h>
EOF
2009-07-12 13:29:32 +00:00
check_cc -D_LARGEFILE_SOURCE <<EOF && add_cppflags -D_LARGEFILE_SOURCE
2009-03-03 12:52:12 +00:00
#include <stdlib.h>
EOF
2008-08-14 23:38:09 +00:00
2014-01-21 19:54:14 +01:00
add_host_cppflags -D_ISOC99_SOURCE
2009-10-28 20:19:15 +00:00
check_host_cflags -std= c99
2011-05-16 16:16:14 +02:00
check_host_cflags -Wall
2017-01-19 11:36:52 +01:00
check_host_cflags $host_cflags_speed
2009-10-28 20:19:15 +00:00
2012-10-23 23:33:44 +01:00
check_64bit(){
arch32 = $1
arch64 = $2
expr = $3
check_code cc "" "int test[2*( $expr ) - 1]" &&
subarch = $arch64 || subarch = $arch32
}
2008-05-13 16:32:51 +00:00
case " $arch " in
2013-01-10 12:22:53 +00:00
aarch64| alpha| ia64)
2009-08-20 01:06:18 +00:00
spic = $shared
2009-02-21 16:03:25 +00:00
;;
2012-10-23 23:34:35 +01:00
mips)
check_64bit mips mips64 '_MIPS_SIM > 1'
2009-08-20 01:06:18 +00:00
spic = $shared
2009-02-21 16:03:25 +00:00
;;
2012-10-24 00:21:15 +01:00
parisc)
check_64bit parisc parisc64 'sizeof(void *) > 4'
spic = $shared
;;
2012-10-23 23:39:40 +01:00
ppc)
check_64bit ppc ppc64 'sizeof(void *) > 4'
2012-12-03 22:53:30 +01:00
spic = $shared
2012-10-23 23:39:40 +01:00
;;
2014-03-02 02:11:05 -05:00
s390)
check_64bit s390 s390x 'sizeof(void *) > 4'
spic = $shared
;;
2012-10-24 18:34:21 +01:00
sparc)
check_64bit sparc sparc64 'sizeof(void *) > 4'
spic = $shared
;;
2010-01-18 21:05:01 +00:00
x86)
2012-10-23 23:33:44 +01:00
check_64bit x86_32 x86_64 'sizeof(void *) > 4'
2014-11-12 09:53:01 +01:00
# Treat x32 as x64 for now. Note it also needs spic=$shared
test " $subarch " = "x86_32" && check_cpp_condition stddef.h 'defined(__x86_64__)' &&
subarch = x86_64
2009-10-01 21:38:25 +00:00
if test " $subarch " = "x86_64" ; then
2010-01-18 21:05:01 +00:00
spic = $shared
2009-10-01 21:38:25 +00:00
fi
2008-05-13 16:32:51 +00:00
;;
2011-08-29 21:48:31 +02:00
ppc)
check_cc <<EOF && subarch="ppc64"
int test[(int)sizeof(char*) - 7];
EOF
;;
2008-05-13 16:32:51 +00:00
esac
2010-01-18 21:05:05 +00:00
enable $subarch
2013-05-09 15:39:25 +03:00
enabled spic && enable_weak pic
2008-05-13 16:32:51 +00:00
2017-03-01 18:42:21 +00:00
enabled x86_64 && objformat = elf64 || objformat = "elf32"
2007-02-17 18:32:04 +00:00
# OS specific
2008-03-25 15:17:47 +00:00
case $target_os in
2013-06-30 13:47:10 +02:00
aix)
2013-07-25 11:37:20 -04:00
SHFLAGS = -shared
2013-07-04 21:53:08 +02:00
add_cppflags '-I\$(SRC_PATH)/compat/aix'
2013-07-25 11:37:20 -04:00
enabled shared && add_ldflags -Wl,-brtl
2013-06-30 13:47:10 +02:00
;;
2014-06-13 15:14:10 +02:00
android)
disable symver
2014-11-16 12:51:54 +02:00
enable section_data_rel_ro
2014-06-13 15:14:10 +02:00
SLIB_INSTALL_NAME = '$(SLIBNAME)'
SLIB_INSTALL_LINKS =
2015-10-29 14:01:07 +01:00
SHFLAGS = '-shared -Wl,-soname,$(SLIBNAME)'
2014-06-13 15:14:10 +02:00
;;
2010-06-10 16:51:14 +00:00
haiku)
2010-06-10 16:58:04 +00:00
prefix_default = "/boot/common"
2010-06-10 17:20:05 +00:00
network_extralibs = "-lnetwork"
2016-12-06 18:19:09 +01:00
host_extralibs =
2010-06-10 16:51:14 +00:00
;;
2007-11-23 11:09:28 +00:00
sunos)
2008-04-10 19:44:29 +00:00
SHFLAGS = '-shared -Wl,-h,$$(@F)'
2009-10-26 10:18:35 +00:00
enabled x86 && SHFLAGS = "-mimpure-text $SHFLAGS "
2007-11-23 11:09:28 +00:00
network_extralibs = "-lsocket -lnsl"
2015-03-10 13:36:49 +01:00
add_cppflags -D__EXTENSIONS__
2011-09-17 00:36:37 -04:00
# When using suncc to build, the Solaris linker will mark
# an executable with each instruction set encountered by
# the Solaris assembler. As our libraries contain their own
# guards for processor-specific code, instead suppress
# generation of the HWCAPS ELF section on Solaris x86 only.
2013-06-20 13:42:21 +02:00
enabled_all suncc x86 &&
echo "hwcap_1 = OVERRIDE;" > mapfile &&
add_ldflags -Wl,-M,mapfile
2012-09-16 21:47:16 +01:00
nm_default = 'nm -P -g'
2016-05-27 11:38:38 +02:00
version_script = '-M'
VERSION_SCRIPT_POSTPROCESS_CMD = 'perl $(SRC_PATH)/compat/solaris/make_sunver.pl - $(OBJS)'
2007-02-17 18:32:04 +00:00
;;
2007-11-23 11:09:28 +00:00
netbsd)
2011-01-23 20:48:51 +00:00
disable symver
2009-06-29 20:45:49 +00:00
oss_indev_extralibs = "-lossaudio"
oss_outdev_extralibs = "-lossaudio"
2012-09-12 19:37:29 +02:00
enabled gcc || check_ldflags -Wl,-zmuldefs
2007-11-23 11:09:28 +00:00
;;
2012-06-13 19:56:29 -04:00
openbsd| bitrig)
2011-01-23 20:48:51 +00:00
disable symver
2007-11-23 11:09:28 +00:00
SHFLAGS = '-shared'
2013-02-03 15:02:31 +01:00
SLIB_INSTALL_NAME = '$(SLIBNAME).$(LIBMAJOR).$(LIBMINOR)'
2012-08-26 16:23:06 -04:00
SLIB_INSTALL_LINKS =
2009-06-29 20:45:49 +00:00
oss_indev_extralibs = "-lossaudio"
oss_outdev_extralibs = "-lossaudio"
2007-11-23 11:09:28 +00:00
;;
2011-01-23 20:48:51 +00:00
dragonfly)
disable symver
;;
freebsd)
2007-11-23 11:09:28 +00:00
;;
bsd/os)
2010-07-05 17:31:18 +00:00
add_extralibs -lpoll -lgnugetopt
2011-04-01 00:24:12 +02:00
strip = "strip -d"
2007-11-23 11:09:28 +00:00
;;
darwin)
2010-07-01 23:21:33 +00:00
enabled ppc && add_asflags -force_cpusubtype_ALL
2016-02-19 16:34:30 +01:00
install_name_dir_default = '$(SHLIBDIR)'
SHFLAGS = '-dynamiclib -Wl,-single_module -Wl,-install_name,$(INSTALL_NAME_DIR)/$(SLIBNAME_WITH_MAJOR),-current_version,$(LIBVERSION),-compatibility_version,$(LIBMAJOR)'
2011-03-16 01:01:17 +00:00
enabled x86_32 && append SHFLAGS -Wl,-read_only_relocs,suppress
2011-04-01 00:24:12 +02:00
strip = " ${ strip } -x"
2010-07-05 17:31:18 +00:00
add_ldflags -Wl,-dynamic,-search_paths_first
2007-11-23 11:09:28 +00:00
SLIBSUF = ".dylib"
SLIBNAME_WITH_VERSION = '$(SLIBPREF)$(FULLNAME).$(LIBVERSION)$(SLIBSUF)'
SLIBNAME_WITH_MAJOR = '$(SLIBPREF)$(FULLNAME).$(LIBMAJOR)$(SLIBSUF)'
2008-08-11 23:53:31 +00:00
objformat = "macho"
2017-03-01 18:42:21 +00:00
enabled x86_64 && objformat = "macho64" || objformat = "macho32"
2015-02-08 00:11:13 +01:00
enabled_any pic shared x86_64 ||
2009-08-10 08:18:05 +00:00
{ check_cflags -mdynamic-no-pic && add_asflags -mdynamic-no-pic; }
2016-03-26 15:27:23 +00:00
check_header dispatch/dispatch.h &&
add_cppflags '-I\$(SRC_PATH)/compat/dispatch_semaphore'
2016-09-09 18:12:34 -05:00
version_script = '-exported_symbols_list'
VERSION_SCRIPT_POSTPROCESS_CMD = 'tr " " "\n" | sed -n /global:/,/local:/p | grep ";" | tr ";" "\n" | sed -E "s/(.+)/_\1/g" | sed -E "s/(.+[^*])$$$$/\1*/"'
2007-11-23 11:09:28 +00:00
;;
2015-11-21 18:51:11 +01:00
msys*)
2016-04-04 20:16:54 +02:00
die "Native MSYS builds are discouraged, please use the MINGW environment."
2015-11-21 18:51:11 +01:00
;;
2015-09-12 15:23:52 +02:00
mingw32*| mingw64*)
2009-07-28 08:50:58 +00:00
if test $target_os = "mingw32ce" ; then
2009-07-27 16:14:57 +00:00
disable network
else
target_os = mingw32
fi
2008-05-13 16:37:32 +00:00
LIBTARGET = i386
2009-01-11 22:32:45 +00:00
if enabled x86_64; then
2012-08-01 17:01:37 +02:00
LIBTARGET = "i386:x86-64"
2009-07-13 19:08:27 +00:00
elif enabled arm; then
2011-03-22 15:07:15 +02:00
LIBTARGET = arm-wince
2008-05-13 16:37:32 +00:00
fi
2013-12-05 17:50:14 -03:00
enabled shared && ! enabled small && check_cmd $windres --version && enable gnu_windres
2014-10-05 11:10:37 +11:00
enabled x86_32 && check_ldflags -Wl,--large-address-aware
2008-06-08 21:34:19 +00:00
shlibdir_default = " $bindir_default "
2007-11-23 11:09:28 +00:00
SLIBPREF = ""
SLIBSUF = ".dll"
SLIBNAME_WITH_VERSION = '$(SLIBPREF)$(FULLNAME)-$(LIBVERSION)$(SLIBSUF)'
SLIBNAME_WITH_MAJOR = '$(SLIBPREF)$(FULLNAME)-$(LIBMAJOR)$(SLIBSUF)'
2012-08-01 17:01:37 +02:00
dlltool = " ${ cross_prefix } dlltool"
2012-08-05 10:23:50 +02:00
if check_cmd lib.exe -list; then
2017-02-06 19:45:54 +01:00
SLIB_EXTRA_CMD = -'sed -e "s/ @[^ ]*//" $$(@:$(SLIBSUF)=.orig.def) > $$(@:$(SLIBSUF)=.def); lib.exe -nologo -machine:$(LIBTARGET) -def:$$(@:$(SLIBSUF)=.def) -out:$(SUBDIR)$(SLIBNAME:$(SLIBSUF)=.lib)'
2012-08-01 17:01:37 +02:00
if enabled x86_64; then
LIBTARGET = x64
fi
elif check_cmd $dlltool --version; then
2012-12-03 15:28:35 +01:00
SLIB_EXTRA_CMD = -'sed -e "s/ @[^ ]*//" $$(@:$(SLIBSUF)=.orig.def) > $$(@:$(SLIBSUF)=.def); $(DLLTOOL) -m $(LIBTARGET) -d $$(@:$(SLIBSUF)=.def) -l $(SUBDIR)$(SLIBNAME:$(SLIBSUF)=.lib) -D $(SLIBNAME_WITH_MAJOR)'
2012-08-01 17:01:37 +02:00
fi
2011-07-07 15:25:30 +01:00
SLIB_INSTALL_NAME = '$(SLIBNAME_WITH_MAJOR)'
SLIB_INSTALL_LINKS =
SLIB_INSTALL_EXTRA_SHLIB = '$(SLIBNAME:$(SLIBSUF)=.lib)'
SLIB_INSTALL_EXTRA_LIB = 'lib$(SLIBNAME:$(SLIBSUF)=.dll.a) $(SLIBNAME_WITH_MAJOR:$(SLIBSUF)=.def)'
2015-09-21 00:41:38 -04:00
SHFLAGS = '-shared -Wl,--output-def,$$(@:$(SLIBSUF)=.orig.def) -Wl,--out-implib,$(SUBDIR)lib$(SLIBNAME:$(SLIBSUF)=.dll.a) -Wl,--enable-runtime-pseudo-reloc -Wl,--disable-auto-image-base'
2017-03-01 18:42:21 +00:00
enabled x86_64 && objformat = "win64" || objformat = "win32"
2012-09-04 15:20:45 +01:00
ranlib = :
2008-10-10 16:59:37 +00:00
enable dos_paths
2015-09-26 02:15:24 -04:00
check_ldflags -Wl,--nxcompat,--dynamicbase
2015-09-21 00:41:36 -04:00
# Lets work around some stupidity in binutils.
# ld will strip relocations from executables even though we need them
# for dynamicbase (ASLR). Using -pie does retain the reloc section
# however ld then forgets what the entry point should be (oops) so we
# have to manually (re)set it.
if enabled x86_32; then
2016-03-29 01:30:50 -04:00
disabled debug && add_ldexeflags -Wl,--pic-executable,-e,_mainCRTStartup
2015-09-21 00:41:36 -04:00
elif enabled x86_64; then
2016-03-29 01:30:50 -04:00
disabled debug && add_ldexeflags -Wl,--pic-executable,-e,mainCRTStartup
2015-09-26 02:43:23 -04:00
check_ldflags -Wl,--high-entropy-va # binutils 2.25
# Set image base >4GB for extra entropy with HEASLR
add_ldexeflags -Wl,--image-base,0x140000000
append SHFLAGS -Wl,--image-base,0x180000000
2015-09-21 00:41:36 -04:00
fi
2007-11-23 11:09:28 +00:00
;;
2012-10-13 15:57:56 +03:00
win32| win64)
2013-11-19 17:53:00 +00:00
disable symver
2012-10-18 11:53:19 +03:00
if enabled shared; then
# Link to the import library instead of the normal static library
# for shared libs.
LD_LIB = '%.lib'
2013-09-10 12:28:19 +02:00
# Cannot build both shared and static libs with MSVC or icl.
2012-10-18 11:53:19 +03:00
disable static
fi
2014-10-05 11:10:37 +11:00
enabled x86_32 && check_ldflags -LARGEADDRESSAWARE
2012-10-18 11:53:19 +03:00
shlibdir_default = " $bindir_default "
SLIBPREF = ""
SLIBSUF = ".dll"
SLIBNAME_WITH_VERSION = '$(SLIBPREF)$(FULLNAME)-$(LIBVERSION)$(SLIBSUF)'
SLIBNAME_WITH_MAJOR = '$(SLIBPREF)$(FULLNAME)-$(LIBMAJOR)$(SLIBSUF)'
2013-11-21 10:36:06 +00:00
SLIB_CREATE_DEF_CMD = '$(SRC_PATH)/compat/windows/makedef $(SUBDIR)lib$(NAME).ver $(OBJS) > $$(@:$(SLIBSUF)=.def)'
2012-10-18 11:53:19 +03:00
SLIB_INSTALL_NAME = '$(SLIBNAME_WITH_MAJOR)'
SLIB_INSTALL_LINKS =
SLIB_INSTALL_EXTRA_SHLIB = '$(SLIBNAME:$(SLIBSUF)=.lib)'
SLIB_INSTALL_EXTRA_LIB = '$(SLIBNAME_WITH_MAJOR:$(SLIBSUF)=.def)'
SHFLAGS = '-dll -def:$$(@:$(SLIBSUF)=.def) -implib:$(SUBDIR)$(SLIBNAME:$(SLIBSUF)=.lib)'
2017-03-01 18:42:21 +00:00
enabled x86_64 && objformat = "win64" || objformat = "win32"
2012-10-13 15:57:56 +03:00
ranlib = :
enable dos_paths
;;
2007-11-23 11:09:28 +00:00
cygwin*)
2008-03-25 15:17:47 +00:00
target_os = cygwin
2008-06-08 21:34:19 +00:00
shlibdir_default = " $bindir_default "
2007-11-23 11:09:28 +00:00
SLIBPREF = "cyg"
SLIBSUF = ".dll"
SLIBNAME_WITH_VERSION = '$(SLIBPREF)$(FULLNAME)-$(LIBVERSION)$(SLIBSUF)'
SLIBNAME_WITH_MAJOR = '$(SLIBPREF)$(FULLNAME)-$(LIBMAJOR)$(SLIBSUF)'
2012-08-07 00:32:48 +01:00
SLIB_INSTALL_NAME = '$(SLIBNAME_WITH_MAJOR)'
SLIB_INSTALL_LINKS =
SLIB_INSTALL_EXTRA_LIB = 'lib$(FULLNAME).dll.a'
SHFLAGS = '-shared -Wl,--out-implib,$(SUBDIR)lib$(FULLNAME).dll.a'
2017-03-01 18:42:21 +00:00
enabled x86_64 && objformat = "win64" || objformat = "win32"
2008-10-10 16:59:37 +00:00
enable dos_paths
2013-12-05 17:50:14 -03:00
enabled shared && ! enabled small && check_cmd $windres --version && enable gnu_windres
2016-09-30 12:17:16 +02:00
add_cppflags -D_POSIX_C_SOURCE= 200112 -D_XOPEN_SOURCE= 600
2007-11-23 11:09:28 +00:00
;;
2007-12-24 12:49:27 +00:00
*-dos| freedos| opendos)
network_extralibs = "-lsocket"
2009-01-11 02:19:33 +00:00
objformat = "coff"
2008-10-10 16:59:37 +00:00
enable dos_paths
2011-05-15 14:32:15 +02:00
add_cppflags -U__STRICT_ANSI__
2007-12-24 12:49:27 +00:00
;;
2007-11-23 11:09:28 +00:00
linux)
enable dv1394
2014-11-16 12:51:54 +02:00
enable section_data_rel_ro
2007-11-23 11:09:28 +00:00
;;
irix*)
2008-03-25 15:17:47 +00:00
target_os = irix
2007-11-23 11:09:28 +00:00
ranlib = "echo ignoring ranlib"
;;
2007-12-05 23:15:24 +00:00
os/2*)
2011-04-01 00:24:12 +02:00
strip = "lxlite -CS"
2011-05-20 17:26:52 +02:00
objformat = "aout"
2011-05-26 14:21:04 +02:00
add_cppflags -D_GNU_SOURCE
2017-01-20 22:19:56 -08:00
add_ldflags -Zomf -Zbin-files -Zargs-wild -Zhigh-mem -Zmap
2008-04-07 21:16:31 +00:00
SHFLAGS = '$(SUBDIR)$(NAME).def -Zdll -Zomf'
2008-03-20 19:26:24 +00:00
LIBSUF = "_s.a"
2007-12-05 23:15:24 +00:00
SLIBPREF = ""
SLIBSUF = ".dll"
2016-04-14 01:45:01 +04:00
SLIBNAME_WITH_VERSION = '$(SLIBPREF)$(FULLNAME)-$(LIBVERSION)$(SLIBSUF)'
SLIBNAME_WITH_MAJOR = '$(SLIBPREF)$(shell echo $(FULLNAME) | cut -c1-6)$(LIBMAJOR)$(SLIBSUF)'
SLIB_CREATE_DEF_CMD = 'echo LIBRARY $(SLIBNAME_WITH_MAJOR:$(SLIBSUF)=) INITINSTANCE TERMINSTANCE > $(SUBDIR)$(FULLNAME).def; \
echo CODE PRELOAD MOVEABLE DISCARDABLE >> $(SUBDIR)$(FULLNAME).def; \
echo DATA PRELOAD MOVEABLE MULTIPLE NONSHARED >> $(SUBDIR)$(FULLNAME).def; \
echo EXPORTS >> $(SUBDIR)$(FULLNAME).def; \
emxexp $(OBJS) >> $(SUBDIR)$(FULLNAME).def'
SLIB_EXTRA_CMD = 'emximp -o $(SUBDIR)$(LIBPREF)$(FULLNAME)_dll.a $(SUBDIR)$(FULLNAME).def; \
emximp -o $(SUBDIR)$(LIBPREF)$(FULLNAME)_dll.lib $(SUBDIR)$(FULLNAME).def;'
SLIB_INSTALL_NAME = '$(SLIBNAME_WITH_MAJOR)'
SLIB_INSTALL_LINKS =
SLIB_INSTALL_EXTRA_LIB = '$(LIBPREF)$(FULLNAME)_dll.a $(LIBPREF)$(FULLNAME)_dll.lib'
2008-10-10 16:59:37 +00:00
enable dos_paths
2011-11-02 00:00:21 +09:00
enable_weak os2threads
2007-12-05 23:15:24 +00:00
;;
2009-05-14 11:45:41 +00:00
gnu/kfreebsd)
2012-10-13 18:21:34 +01:00
add_cppflags -D_BSD_SOURCE
2009-05-14 11:45:41 +00:00
;;
2009-05-25 05:39:58 +00:00
gnu)
;;
2011-01-30 01:05:39 +00:00
qnx)
add_cppflags -D_QNX_SOURCE
network_extralibs = "-lsocket"
;;
2011-01-25 10:48:38 +02:00
symbian)
SLIBSUF = ".dll"
enable dos_paths
2011-07-15 10:53:12 +03:00
add_cflags --include= $sysinclude /gcce/gcce.h -fvisibility= default
add_cppflags -D__GCCE__ -D__SYMBIAN32__ -DSYMBIAN_OE_POSIX_SIGNALS
add_ldflags -Wl,--target1-abs,--no-undefined \
-Wl,-Ttext,0x80000,-Tdata,0x1000000 -shared \
-Wl,--entry= _E32Startup -Wl,-u,_E32Startup
add_extralibs -l:eexe.lib -l:usrt2_2.lib -l:dfpaeabi.dso \
-l:drtaeabi.dso -l:scppnwdl.dso -lsupc++ -lgcc \
-l:libc.dso -l:libm.dso -l:euser.dso -l:libcrt0.lib
2011-01-25 10:48:38 +02:00
;;
2012-10-11 12:33:38 +01:00
osf1)
add_cppflags -D_OSF_SOURCE -D_POSIX_PII -D_REENTRANT
;;
2012-10-12 21:42:27 +00:00
minix)
;;
2010-02-09 22:55:08 +00:00
none)
;;
2007-11-23 11:09:28 +00:00
*)
2009-01-26 14:32:01 +00:00
die "Unknown OS ' $target_os '."
2007-02-17 18:32:04 +00:00
;;
esac
2016-01-25 01:42:23 +01:00
# test if creating links works
link_dest = $( mktemp -u $TMPDIR /dest_XXXXXXXX)
link_name = $( mktemp -u $TMPDIR /name_XXXXXXXX)
mkdir " $link_dest "
$ln_s " $link_dest " " $link_name "
touch " $link_dest /test_file"
2016-01-26 22:54:01 +01:00
if [ " $source_path " != "." ] && ([ ! -d src ] || [ -L src ]) && [ -e " $link_name /test_file" ] ; then
2016-01-25 01:42:23 +01:00
# create link to source path
[ -e src ] && rm src
$ln_s " $source_path " src
source_link = src
else
# creating directory links doesn't work
# fall back to using the full source path
source_link = " $source_path "
fi
# cleanup
rm -r " $link_dest "
rm -r " $link_name "
2012-09-04 13:57:37 +01:00
# determine libc flavour
2013-02-28 16:16:10 +01:00
probe_libc(){
pfx = $1
2013-12-13 23:19:55 +01:00
pfx_no_ = ${ pfx %_ }
2013-02-28 16:16:10 +01:00
# uclibc defines __GLIBC__, so it needs to be checked before glibc.
if check_${ pfx } cpp_condition features.h "defined __UCLIBC__" ; then
eval ${ pfx } libc_type = uclibc
add_${ pfx } cppflags -D_POSIX_C_SOURCE= 200112 -D_XOPEN_SOURCE= 600
elif check_${ pfx } cpp_condition features.h "defined __GLIBC__" ; then
eval ${ pfx } libc_type = glibc
add_${ pfx } cppflags -D_POSIX_C_SOURCE= 200112 -D_XOPEN_SOURCE= 600
# MinGW headers can be installed on Cygwin, so check for newlib first.
elif check_${ pfx } cpp_condition newlib.h "defined _NEWLIB_VERSION" ; then
eval ${ pfx } libc_type = newlib
2016-12-09 15:45:05 +01:00
add_${ pfx } cppflags -U__STRICT_ANSI__ -D_XOPEN_SOURCE= 600
2013-02-28 16:16:10 +01:00
# MinGW64 is backwards compatible with MinGW32, so check for it first.
elif check_${ pfx } cpp_condition _mingw.h "defined __MINGW64_VERSION_MAJOR" ; then
eval ${ pfx } libc_type = mingw64
2013-12-10 01:56:49 +01:00
if check_${ pfx } cpp_condition _mingw.h "__MINGW64_VERSION_MAJOR < 3" ; then
add_compat msvcrt/snprintf.o
add_cflags "-include $source_path /compat/msvcrt/snprintf.h"
fi
2013-12-09 00:50:39 +01:00
add_${ pfx } cppflags -U__STRICT_ANSI__ -D__USE_MINGW_ANSI_STDIO= 1
2013-12-13 23:19:55 +01:00
eval test \$ ${ pfx_no_ } cc_type = "gcc" &&
add_${ pfx } cppflags -D__printf__= __gnu_printf__
2013-12-12 00:34:43 +01:00
elif check_${ pfx } cpp_condition _mingw.h "defined __MINGW_VERSION" ||
check_${ pfx } cpp_condition _mingw.h "defined __MINGW32_VERSION" ; then
2013-02-28 16:16:10 +01:00
eval ${ pfx } libc_type = mingw32
check_${ pfx } cpp_condition _mingw.h "__MINGW32_MAJOR_VERSION > 3 || \
(__MINGW32_MAJOR_VERSION == 3 && __MINGW32_MINOR_VERSION >= 15)" ||
die "ERROR: MinGW32 runtime version must be >= 3.15."
2013-12-12 00:39:43 +01:00
add_${ pfx } cppflags -U__STRICT_ANSI__ -D__USE_MINGW_ANSI_STDIO= 1
2016-08-19 15:38:28 -03:00
check_${ pfx } cpp_condition _mingw.h "defined(_WIN32_WINNT) && _WIN32_WINNT >= 0x0502" ||
add_${ pfx } cppflags -D_WIN32_WINNT= 0x0502
2017-05-31 12:53:32 +03:00
check_${ pfx } cpp_condition _mingw.h "__MSVCRT_VERSION__ < 0x0700" &&
2016-08-04 17:01:03 +02:00
add_${ pfx } cppflags -D__MSVCRT_VERSION__= 0x0700
2013-12-13 23:19:55 +01:00
eval test \$ ${ pfx_no_ } cc_type = "gcc" &&
add_${ pfx } cppflags -D__printf__= __gnu_printf__
2013-02-28 16:16:10 +01:00
elif check_${ pfx } cpp_condition crtversion.h "defined _VC_CRT_MAJOR_VERSION" ; then
eval ${ pfx } libc_type = msvcrt
2015-06-05 15:07:06 +02:00
if check_${ pfx } cpp_condition crtversion.h "_VC_CRT_MAJOR_VERSION < 14" ; then
if [ " $pfx " = host_ ] ; then
add_host_cppflags -Dsnprintf= _snprintf
else
add_compat strtod.o strtod = avpriv_strtod
add_compat msvcrt/snprintf.o snprintf = avpriv_snprintf \
_snprintf = avpriv_snprintf \
vsnprintf = avpriv_vsnprintf
fi
fi
2016-07-21 00:04:35 +03:00
add_${ pfx } cppflags -D_USE_MATH_DEFINES -D_CRT_SECURE_NO_WARNINGS -D_CRT_NONSTDC_NO_WARNINGS
2013-02-28 16:16:10 +01:00
# The MSVC 2010 headers (Win 7.0 SDK) set _WIN32_WINNT to
# 0x601 by default unless something else is set by the user.
# This can easily lead to us detecting functions only present
# in such new versions and producing binaries requiring windows 7.0.
# Therefore explicitly set the default to XP unless the user has
# set something else on the command line.
2015-07-24 23:12:43 +03:00
# Don't do this if WINAPI_FAMILY is set and is set to a non-desktop
# family. For these cases, configure is free to use any functions
# found in the SDK headers by default. (Alternatively, we could force
# _WIN32_WINNT to 0x0602 in that case.)
2013-02-28 16:16:10 +01:00
check_${ pfx } cpp_condition stdlib.h "defined(_WIN32_WINNT)" ||
2015-07-24 23:12:43 +03:00
{ check_${ pfx } cpp <<EOF && add_${pfx}cppflags -D_WIN32_WINNT=0x0502; }
#ifdef WINAPI_FAMILY
#include <winapifamily.h>
#if !WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP)
#error not desktop
#endif
#endif
EOF
2016-07-20 23:39:20 +03:00
if [ " $pfx " = "" ] ; then
check_func strtoll || add_cflags -Dstrtoll= _strtoi64
2017-03-15 12:39:34 +01:00
check_func strtoull || add_cflags -Dstrtoull= _strtoui64
2016-07-20 23:39:20 +03:00
fi
2013-02-28 16:16:10 +01:00
elif check_${ pfx } cpp_condition stddef.h "defined __KLIBC__" ; then
eval ${ pfx } libc_type = klibc
elif check_${ pfx } cpp_condition sys/cdefs.h "defined __BIONIC__" ; then
eval ${ pfx } libc_type = bionic
2013-12-12 12:14:30 +01:00
elif check_${ pfx } cpp_condition sys/brand.h "defined LABELED_BRAND_NAME" ; then
2013-02-28 16:16:10 +01:00
eval ${ pfx } libc_type = solaris
add_${ pfx } cppflags -D__EXTENSIONS__ -D_XOPEN_SOURCE= 600
2013-12-08 16:13:07 -03:00
fi
2014-09-24 05:04:24 +02:00
check_${ pfx } cc <<EOF
#include <time.h>
void *v = localtime_r;
EOF
test " $? " != 0 && check_${ pfx } cc -D_POSIX_C_SOURCE= 200112 -D_XOPEN_SOURCE= 600 <<EOF && add_${pfx}cppflags -D_POSIX_C_SOURCE=200112 -D_XOPEN_SOURCE=600
#include <time.h>
void *v = localtime_r;
EOF
2013-02-28 16:16:10 +01:00
}
2012-09-04 13:57:37 +01:00
2013-02-28 16:16:10 +01:00
probe_libc
2013-12-04 12:21:30 -05:00
test -n " $libc_type " && enable libc_$libc_type
2013-02-28 16:16:10 +01:00
probe_libc host_
test -n " $host_libc_type " && enable host_libc_$host_libc_type
2012-09-04 13:57:37 +01:00
2013-12-01 23:06:02 -05:00
case $libc_type in
bionic)
add_compat strtod.o strtod = avpriv_strtod
;;
esac
2012-10-13 02:28:41 +01:00
# hacks for compiler/libc/os combinations
2013-12-04 12:21:30 -05:00
if enabled_all tms470 libc_glibc; then
2012-10-13 03:16:13 +01:00
CPPFLAGS = "-I ${ source_path } /compat/tms470 ${ CPPFLAGS } "
2012-10-13 02:28:41 +01:00
add_cppflags -D__USER_LABEL_PREFIX__=
add_cppflags -D__builtin_memset= memset
add_cppflags -D__gnuc_va_list= va_list -D_VA_LIST_DEFINED
add_cflags -pds= 48 # incompatible redefinition of macro
fi
2013-12-04 12:21:30 -05:00
if enabled_all ccc libc_glibc; then
2012-10-23 00:05:44 +01:00
add_ldflags -Wl,-z,now # calls to libots crash without this
fi
2013-11-14 12:19:04 +01:00
check_compile_assert flt_lim "float.h limits.h" "DBL_MAX == (double)DBL_MAX" ||
add_cppflags '-I\$(SRC_PATH)/compat/float'
2012-04-12 21:32:33 +01:00
esc(){
echo " $* " | sed 's/%/%25/g;s/:/%3a/g'
}
2017-05-03 12:51:48 +02:00
echo "config: $arch : $subarch : $cpu : $target_os : $( esc $cc_ident ) : $( esc $FFMPEG_CONFIGURATION ) " > ffbuild/config.fate
2010-08-26 22:22:27 +00:00
2013-05-09 15:39:25 +03:00
check_cpp_condition stdlib.h "defined(__PIC__) || defined(__pic__) || defined(PIC)" && enable_weak pic
2010-03-30 16:28:00 +00:00
2014-12-21 03:46:53 +01:00
set_default libdir
: ${ shlibdir_default := " $libdir " }
2015-05-29 16:08:36 +02:00
: ${ pkgconfigdir_default := " $libdir /pkgconfig" }
2014-12-21 03:46:53 +01:00
2008-06-02 23:51:36 +00:00
set_default $PATHS_LIST
2012-09-16 21:47:16 +01:00
set_default nm
2008-06-02 23:51:36 +00:00
2006-01-30 00:22:41 +00:00
# we need to build at least one lib type
2007-08-01 20:23:29 +00:00
if ! enabled_any static shared; then
2006-01-30 00:22:41 +00:00
cat <<EOF
At least one library type must be built.
Specify --enable-static to build the static libraries or --enable-shared to
build the shared libraries as well. To only build the shared libraries specify
--disable-static in addition to --enable-shared.
EOF
2016-04-04 20:16:54 +02:00
exit 1
2006-01-30 00:22:41 +00:00
fi
2017-05-04 13:56:40 +02:00
disabled optimizations || enabled ossfuzz || check_cflags -fomit-frame-pointer
2003-10-18 18:47:06 +00:00
2013-05-09 15:39:25 +03:00
enable_weak_pic() {
disabled pic && return
2009-10-11 14:32:18 +00:00
enable pic
2009-08-23 13:46:07 +00:00
add_cppflags -DPIC
2013-06-05 14:51:28 +03:00
case " $target_os " in
mingw*| cygwin*)
;;
*)
add_cflags -fPIC
;;
esac
2009-08-23 13:46:07 +00:00
add_asflags -fPIC
2009-10-11 14:32:18 +00:00
}
2013-05-09 15:39:25 +03:00
enabled pic && enable_weak_pic
2009-08-23 13:46:07 +00:00
2008-03-18 02:01:20 +00:00
check_cc <<EOF || die "Symbol mangling check failed."
int ff_extern;
EOF
2012-09-16 21:47:16 +01:00
sym = $( $nm $TMPO | awk '/ff_extern/{ print substr($0, match($0, /[^ \t]*ff_extern/)) }' )
2008-03-18 02:01:20 +00:00
extern_prefix = ${ sym %%ff_extern* }
2012-09-04 18:23:25 +02:00
check_cc <<EOF && enable_weak inline_asm
2009-03-05 21:20:04 +00:00
void foo(void) { __asm__ volatile ("" ::); }
EOF
2008-02-27 22:06:48 +00:00
2009-07-22 20:41:41 +00:00
_restrict =
for restrict_keyword in restrict __restrict__ __restrict; do
check_cc <<EOF && _restrict=$restrict_keyword && break
void foo(char * $restrict_keyword p);
EOF
done
2013-03-27 18:23:01 +01:00
check_cc <<EOF && enable pragma_deprecated
2013-08-02 22:03:09 +02:00
void foo(void) { _Pragma("GCC diagnostic ignored \"-Wdeprecated-declarations\"") }
2013-03-27 18:23:01 +01:00
EOF
2009-07-22 20:41:41 +00:00
check_cc <<EOF && enable attribute_packed
struct { int x; } __attribute__((packed)) x;
EOF
2010-01-29 03:26:12 +00:00
check_cc <<EOF && enable attribute_may_alias
union { int x; } __attribute__((may_alias)) x;
EOF
2009-07-22 20:41:41 +00:00
check_cc <<EOF || die "endian test failed"
unsigned int endian = 'B' << 24 | 'I' << 16 | 'G' << 8 | 'E';
EOF
2010-01-19 15:52:43 +00:00
od -t x1 $TMPO | grep -q '42 *49 *47 *45' && enable bigendian
2009-07-22 20:41:41 +00:00
2015-06-13 13:09:21 +02:00
if ! enabled ppc64 || enabled bigendian; then
disable vsx
fi
2014-06-18 04:51:35 -04:00
2014-08-05 12:08:09 +02:00
check_gas() {
log "check_gas using ' $as ' as AS"
# :vararg is used on aarch64, arm and ppc altivec
check_as <<EOF || return 1
.macro m n, y:vararg=0
\n: .int \y
2014-05-29 14:21:05 +02:00
.endm
m x
2014-05-29 17:04:57 +02:00
EOF
2014-08-05 12:08:09 +02:00
# .altmacro is only used in arm asm
! enabled arm || check_as <<EOF || return 1
2014-05-29 17:04:57 +02:00
.altmacro
2014-05-30 09:58:43 +02:00
EOF
2014-08-05 12:08:09 +02:00
enable gnu_as
return 0
}
2014-08-06 05:55:33 -07:00
if enabled_any arm aarch64 || enabled_all ppc altivec && enabled asm; then
2014-08-09 08:06:12 -07:00
nogas = :
2014-08-06 05:38:43 -07:00
enabled_any arm aarch64 && nogas = die
2014-08-05 19:31:08 +02:00
enabled_all ppc altivec && [ $target_os_default != aix ] && nogas = warn
2014-08-09 08:06:12 -07:00
as_noop = -v
case $as_type in
arm*) gaspp_as_type = armasm; as_noop = -h ;;
gcc) gaspp_as_type = gas ;;
*) gaspp_as_type = $as_type ;;
esac
[ $target_os = "darwin" ] && gaspp_as_type = "apple- $gaspp_as_type "
2014-08-10 19:16:42 +02:00
test " ${ as #*gas-preprocessor.pl } " != " $as " ||
check_cmd gas-preprocessor.pl -arch $arch -as-type $gaspp_as_type -- ${ as := $cc } $as_noop &&
gas = " ${ gas :=gas-preprocessor.pl } -arch $arch -as-type $gaspp_as_type -- ${ as := $cc } "
2014-08-05 12:08:09 +02:00
if ! check_gas ; then
as = ${ gas := $as }
check_gas || \
2014-08-10 16:05:41 +03:00
$nogas "GNU assembler not found, install/update gas-preprocessor"
2014-08-05 12:08:09 +02:00
fi
2014-05-30 09:58:43 +02:00
check_as <<EOF && enable as_func
.func test
.endfunc
2014-05-29 14:21:05 +02:00
EOF
fi
2013-07-09 20:51:00 +03:00
check_inline_asm inline_asm_labels '"1:\n"'
2014-03-18 15:29:14 +11:00
check_inline_asm inline_asm_nonlocal_labels '"Label:\n"'
2013-12-10 20:13:32 +01:00
if enabled aarch64; then
2014-04-05 13:46:51 +02:00
enabled armv8 && check_insn armv8 'prfm pldl1strm, [x0]'
2013-12-10 20:13:32 +01:00
# internal assembler in clang 3.3 does not support this instruction
enabled neon && check_insn neon 'ext v0.8B, v0.8B, v1.8B, #1'
enabled vfp && check_insn vfp 'fmadd d0, d0, d1, d2'
map 'enabled_any ${v}_external ${v}_inline || disable $v' $ARCH_EXT_LIST_ARM
elif enabled alpha; then
2010-01-18 21:05:01 +00:00
check_cflags -mieee
elif enabled arm; then
2009-07-23 23:30:50 +00:00
2015-07-24 23:29:17 +03:00
enabled msvc && check_cpp_condition stddef.h "defined _M_ARMT" && enable thumb
2015-07-27 13:20:12 +02:00
2012-12-04 05:35:11 +01:00
check_cpp_condition stddef.h "defined __thumb__" && check_cc <<EOF && enable_weak thumb
float func(float a, float b){ return a+b; }
EOF
2011-06-14 11:29:48 +01:00
enabled thumb && check_cflags -mthumb || check_cflags -marm
2009-10-02 08:41:52 +00:00
2011-01-16 18:42:36 +00:00
if check_cpp_condition stddef.h "defined __ARM_PCS_VFP" ; then
enable vfp_args
2015-07-24 23:25:10 +03:00
elif check_cpp_condition stddef.h "defined _M_ARM_FP && _M_ARM_FP >= 30" ; then
enable vfp_args
2015-08-14 09:47:21 +03:00
elif ! check_cpp_condition stddef.h "defined __ARM_PCS || defined __SOFTFP__" && [ $target_os != darwin ] ; then
2011-01-16 18:42:36 +00:00
case " ${ cross_prefix :- $cc } " in
*hardfloat*) enable vfp_args; fpabi = vfp ;;
2011-08-31 04:11:25 +05:30
*) check_ld "cc" <<EOF && enable vfp_args && fpabi=vfp || fpabi=soft ;;
2009-07-22 16:05:24 +00:00
__asm__ (".eabi_attribute 28, 1");
int main(void) { return 0; }
EOF
2011-01-16 18:42:36 +00:00
esac
warn "Compiler does not indicate floating-point ABI, guessing $fpabi ."
fi
2009-07-22 16:05:24 +00:00
2012-12-01 15:19:10 +00:00
enabled armv5te && check_insn armv5te 'qadd r0, r0, r0'
enabled armv6 && check_insn armv6 'sadd16 r0, r0, r0'
enabled armv6t2 && check_insn armv6t2 'movt r0, #0'
enabled neon && check_insn neon 'vadd.i16 q0, q0, q0'
2012-12-04 23:29:34 +00:00
enabled vfp && check_insn vfp 'fadds s0, s0, s0'
2012-12-01 15:19:10 +00:00
enabled vfpv3 && check_insn vfpv3 'vmov.f32 s0, #1.0'
2014-08-07 18:34:35 +02:00
enabled setend && check_insn setend 'setend be'
2012-12-01 15:19:10 +00:00
2014-07-16 19:43:12 +03:00
[ $target_os = linux ] || [ $target_os = android ] ||
2012-12-05 02:11:22 +00:00
map 'enabled_any ${v}_external ${v}_inline || disable $v' \
$ARCH_EXT_LIST_ARM
2009-07-23 23:30:50 +00:00
2012-08-07 23:46:52 +02:00
check_inline_asm asm_mod_q '"add r0, %Q0, %R0" :: "r"((long long)0)'
2011-10-02 23:38:32 +01:00
2014-05-29 14:21:05 +02:00
check_as <<EOF && enable as_dn_directive
ra .dn d0.i16
.unreq ra
2016-07-18 23:23:50 +03:00
EOF
check_as <<EOF && enable as_fpu_directive
.fpu neon
2015-03-05 23:38:00 +02:00
EOF
# llvm's integrated assembler supports .object_arch from llvm 3.5
2017-03-01 18:42:21 +00:00
[ " $objformat " = elf32 ] || [ " $objformat " = elf64 ] &&
check_as <<EOF && enable as_object_arch
2015-03-05 23:38:00 +02:00
.object_arch armv4
2014-05-29 14:21:05 +02:00
EOF
2013-05-28 15:08:57 +03:00
[ $target_os != win32 ] && enabled_all armv6t2 shared !pic && enable_weak_pic
2009-10-11 14:32:18 +00:00
2009-07-22 16:05:24 +00:00
elif enabled mips; then
2009-07-23 23:30:50 +00:00
2015-07-03 18:12:07 +08:00
enabled loongson2 && check_inline_asm loongson2 '"dmult.g $8, $9, $10"'
enabled loongson3 && check_inline_asm loongson3 '"gsldxc1 $f0, 0($2, $3)"'
2015-07-03 18:11:27 +08:00
enabled mmi && check_inline_asm mmi '"punpcklhw $f0, $f0, $f0"'
2015-03-05 17:40:14 +00:00
# Enable minimum ISA based on selected options
2016-02-24 16:38:20 +00:00
if enabled mips64; then
2016-03-07 19:49:10 +05:30
enabled mips64r6 && check_inline_asm_flags mips64r6 '"dlsa $0, $0, $0, 1"' '-mips64r6'
enabled mips64r2 && check_inline_asm_flags mips64r2 '"dext $0, $0, 0, 1"' '-mips64r2'
disabled mips64r6 && disabled mips64r2 && check_inline_asm_flags mips64r1 '"daddi $0, $0, 0"' '-mips64'
2016-02-24 16:38:20 +00:00
else
2016-03-07 19:49:10 +05:30
enabled mips32r6 && check_inline_asm_flags mips32r6 '"aui $0, $0, 0"' '-mips32r6'
enabled mips32r5 && check_inline_asm_flags mips32r5 '"eretnc"' '-mips32r5'
enabled mips32r2 && check_inline_asm_flags mips32r2 '"ext $0, $0, 0, 1"' '-mips32r2'
disabled mips32r6 && disabled mips32r5 && disabled mips32r2 && check_inline_asm_flags mips32r1 '"addi $0, $0, 0"' '-mips32'
2015-03-05 17:40:14 +00:00
fi
2016-03-07 19:49:10 +05:30
enabled mipsfpu && check_inline_asm_flags mipsfpu '"cvt.d.l $f0, $f2"' '-mhard-float'
2016-03-11 13:46:42 +05:30
enabled mipsfpu && ( enabled mips32r5 || enabled mips32r6 || enabled mips64r6) && check_inline_asm_flags mipsfpu '"cvt.d.l $f0, $f1"' '-mfp64'
enabled mipsfpu && enabled msa && check_inline_asm_flags msa '"addvi.b $w0, $w1, 1"' '-mmsa' && check_header msa.h || disable msa
2016-03-07 19:49:10 +05:30
enabled mipsdsp && check_inline_asm_flags mipsdsp '"addu.qb $t0, $t1, $t2"' '-mdsp'
enabled mipsdspr2 && check_inline_asm_flags mipsdspr2 '"absq_s.qb $t0, $t1"' '-mdspr2'
2009-07-23 23:30:50 +00:00
2017-06-01 14:07:19 +05:30
if enabled bigendian && enabled msa; then
disable msa
fi
2012-11-14 15:56:46 +00:00
elif enabled parisc; then
if enabled gcc; then
case $( $cc -dumpversion) in
2014-11-05 01:35:48 +01:00
4.[ 3-9] .*) check_cflags -fno-optimize-sibling-calls ;;
2012-11-14 15:56:46 +00:00
esac
fi
2009-07-22 16:05:24 +00:00
elif enabled ppc; then
2009-07-23 23:30:50 +00:00
2014-04-23 23:53:36 -03:00
enable local_aligned_8 local_aligned_16 local_aligned_32
2010-02-17 20:36:15 +00:00
2012-08-07 23:46:52 +02:00
check_inline_asm dcbzl '"dcbzl 0, %0" :: "r"(0)'
check_inline_asm ibm_asm '"add 0, 0, 0"'
check_inline_asm ppc4xx '"maclhw r10, r11, r12"'
check_inline_asm xform_asm '"lwzx %1, %y0" :: "Z"(*(int*)0), "r"(0)'
2009-07-22 16:05:24 +00:00
# AltiVec flags: The FSF version of GCC differs from the Apple version
if enabled altivec; then
check_cflags -maltivec -mabi= altivec &&
{ check_header altivec.h && inc_altivec_h = "#include <altivec.h>" ; } ||
check_cflags -faltivec
# check if our compiler supports Motorola AltiVec C API
check_cc <<EOF || disable altivec
$inc_altivec_h
int main(void) {
2012-08-16 00:10:33 +01:00
vector signed int v1 = (vector signed int) { 0 };
vector signed int v2 = (vector signed int) { 1 };
v1 = vec_add(v1, v2);
2009-07-22 16:05:24 +00:00
return 0;
}
EOF
2012-08-16 00:10:33 +01:00
enabled altivec || warn "Altivec disabled, possibly missing --cpu flag"
2009-07-22 16:05:24 +00:00
fi
2009-07-23 23:30:50 +00:00
2014-06-18 04:51:35 -04:00
if enabled vsx; then
2015-05-10 02:47:31 +02:00
check_cflags -mvsx &&
check_builtin vec_vsx_ld "altivec.h" "__builtin_vec_vsx_ld" || disable vsx
2014-06-18 04:51:35 -04:00
fi
2015-05-10 02:47:31 +02:00
if enabled power8; then
check_cpp_condition "altivec.h" "defined(_ARCH_PWR8)" || disable power8
fi
2009-07-22 16:05:24 +00:00
elif enabled x86; then
2009-07-23 23:30:50 +00:00
2013-03-04 23:02:02 +01:00
check_builtin rdtsc intrin.h "__rdtsc()"
check_builtin mm_empty mmintrin.h "_mm_empty()"
2012-07-09 01:24:37 +02:00
2014-04-23 23:53:36 -03:00
enable local_aligned_8 local_aligned_16 local_aligned_32
2010-02-17 20:36:15 +00:00
2007-03-29 14:20:30 +00:00
# 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
# base pointer is cleared in the inline assembly code.
2007-04-13 20:16:13 +00:00
check_exec_crash <<EOF && enable ebp_available
2012-08-19 21:35:30 +02:00
volatile int i=0;
__asm__ volatile ("xorl %%ebp, %%ebp" ::: "%ebp");
return i;
2007-03-29 14:20:30 +00:00
EOF
2009-09-30 12:39:18 +00:00
# check whether EBX is available on x86
2012-08-07 23:46:52 +02:00
check_inline_asm ebx_available '""::"b"(0)' &&
check_inline_asm ebx_available '"":::"%ebx"'
2007-05-12 03:20:41 +00:00
2010-10-06 01:26:13 +00:00
# check whether xmm clobbers are supported
2012-08-07 23:46:52 +02:00
check_inline_asm xmm_clobbers '"":::"%xmm0"'
2010-10-06 01:26:13 +00:00
2014-03-20 13:14:33 +01:00
check_inline_asm inline_asm_direct_symbol_refs '"movl ' $extern_prefix 'test, %eax"' ||
check_inline_asm inline_asm_direct_symbol_refs '"movl ' $extern_prefix 'test(%rip), %eax"'
2014-03-18 15:53:26 +11:00
2014-06-28 11:05:52 -04:00
# check whether binutils is new enough to compile SSSE3/MMXEXT
2012-08-27 03:07:11 +02:00
enabled ssse3 && check_inline_asm ssse3_inline '"pabsw %xmm0, %xmm0"'
enabled mmxext && check_inline_asm mmxext_inline '"pmaxub %mm0, %mm1"'
2008-03-08 18:33:07 +00:00
2017-06-20 19:14:32 -03:00
probe_x86asm(){
x86asmexe_probe = $1
if check_cmd $x86asmexe_probe -v; then
x86asmexe = $x86asmexe_probe
x86asm_type = nasm
2016-10-08 14:18:33 +00:00
x86asm_debug = "-g -F dwarf"
2017-06-20 19:14:32 -03:00
elif check_cmd $x86asmexe_probe --version; then
x86asmexe = $x86asmexe_probe
x86asm_type = yasm
x86asm_debug = "-g dwarf2"
2010-09-26 21:01:24 +00:00
fi
2017-05-22 12:48:15 +00:00
check_x86asm "movbe ecx, [5]" && enable x86asm
2017-06-20 19:14:32 -03:00
}
2010-09-26 21:01:24 +00:00
2017-06-20 19:14:32 -03:00
if ! disabled_any asm mmx x86asm; then
2017-05-22 12:48:15 +00:00
disable x86asm
2016-10-13 18:33:15 +00:00
for program in $x86asmexe nasm yasm; do
2017-05-22 12:48:15 +00:00
probe_x86asm $program && break
2017-06-20 19:14:32 -03:00
done
2017-05-22 12:48:15 +00:00
disabled x86asm && die "nasm/yasm not found or too old. Use --disable-x86asm for a crippled build."
2017-06-23 11:32:52 -03:00
test $x86asm_type = 'nasm' && X86ASM_DEPFLAGS = '-MD $(@:.o=.d)'
test $x86asm_type = 'yasm' && X86ASMDEP = '$(DEPX86ASM) $(X86ASMFLAGS) -M $(X86ASM_O) $< > $(@:.o=.d)'
2017-03-01 18:42:21 +00:00
X86ASMFLAGS = "-f $objformat "
2016-10-08 14:18:33 +00:00
enabled pic && append X86ASMFLAGS "-DPIC"
test -n " $extern_prefix " && append X86ASMFLAGS "-DPREFIX"
2010-09-26 21:01:24 +00:00
case " $objformat " in
2016-10-08 14:18:33 +00:00
elf*) enabled debug && append X86ASMFLAGS $x86asm_debug ;;
2010-09-26 21:01:24 +00:00
esac
2016-10-08 14:18:33 +00:00
check_x86asm "vextracti128 xmm0, ymm0, 0" || disable avx2_external
check_x86asm "vpmacsdd xmm0, xmm1, xmm2, xmm3" || disable xop_external
check_x86asm "vfmaddps ymm0, ymm1, ymm2, ymm3" || disable fma4_external
check_x86asm "CPU amdnop" || disable cpunop
2010-06-24 20:49:37 +00:00
fi
2009-07-23 23:30:50 +00:00
2010-01-14 19:58:09 +00:00
case " $cpu " in
athlon*| opteron*| k8*| pentium| pentium-mmx| prescott| nocona| atom| geode)
disable fast_clz
;;
esac
2007-03-29 14:20:30 +00:00
fi
2014-07-22 15:09:43 +03:00
check_code cc arm_neon.h "int16x8_t test = vdupq_n_s16(0)" && enable intrinsics_neon
2014-05-13 23:03:28 +02:00
2011-03-06 13:57:34 +00:00
check_ldflags -Wl,--as-needed
2014-09-21 09:58:10 +01:00
check_ldflags -Wl,-z,noexecstack
2011-03-06 13:57:34 +00:00
2016-09-01 11:18:00 +02:00
if check_func dlopen && check_func dlsym; then
2007-09-24 15:52:06 +00:00
ldl =
2016-09-01 11:18:00 +02:00
elif check_func dlopen -ldl && check_func dlsym -ldl; then
2007-09-24 15:52:06 +00:00
ldl = -ldl
fi
2016-10-31 14:30:43 +11:00
avisynth_demuxer_extralibs = '$ldl'
2016-10-10 12:52:40 +02:00
cuda_extralibs = '$ldl'
2016-01-10 04:08:12 +01:00
decklink_outdev_extralibs = " $decklink_outdev_extralibs $ldl "
decklink_indev_extralibs = " $decklink_indev_extralibs $ldl "
2017-08-18 09:34:06 -04:00
libndi_newtek_outdev_extralibs = " $libndi_newtek_outdev_extralibs $ldl "
libndi_newtek_indev_extralibs = " $libndi_newtek_indev_extralibs $ldl "
2014-11-27 13:35:48 +01:00
frei0r_filter_extralibs = '$ldl'
frei0r_src_filter_extralibs = '$ldl'
ladspa_filter_extralibs = '$ldl'
2016-08-31 16:39:59 +02:00
nvenc_extralibs = '$ldl'
2016-03-19 16:28:40 +01:00
coreimage_filter_extralibs = "-framework QuartzCore -framework AppKit -framework OpenGL"
coreimagesrc_filter_extralibs = "-framework QuartzCore -framework AppKit -framework OpenGL"
2014-11-27 13:35:48 +01:00
2012-12-07 15:03:40 +01:00
if ! disabled network; then
2014-03-06 14:52:03 +01:00
check_func getaddrinfo $network_extralibs
check_func inet_aton $network_extralibs
2011-01-25 09:28:01 +00:00
check_type netdb.h "struct addrinfo"
2012-06-21 14:19:56 +03:00
check_type netinet/in.h "struct group_source_req" -D_BSD_SOURCE
check_type netinet/in.h "struct ip_mreq_source" -D_BSD_SOURCE
2011-01-25 09:28:01 +00:00
check_type netinet/in.h "struct ipv6_mreq" -D_DARWIN_C_SOURCE
2012-06-25 12:08:44 +03:00
check_type poll.h "struct pollfd"
2012-08-08 16:01:01 +02:00
check_type netinet/sctp.h "struct sctp_event_subscribe"
2016-03-09 14:17:46 +01:00
check_struct "sys/socket.h" "struct msghdr" msg_flags
2014-03-06 14:52:03 +01:00
check_struct "sys/types.h sys/socket.h" "struct sockaddr" sa_len
check_type netinet/in.h "struct sockaddr_in6"
check_type "sys/types.h sys/socket.h" "struct sockaddr_storage"
check_type "sys/types.h sys/socket.h" socklen_t
2011-01-25 09:28:01 +00:00
# Prefer arpa/inet.h over winsock2
if check_header arpa/inet.h ; then
check_func closesocket
elif check_header winsock2.h ; then
2012-07-16 16:51:33 +02:00
check_func_headers winsock2.h closesocket -lws2 &&
network_extralibs = "-lws2" ||
{ check_func_headers winsock2.h closesocket -lws2_32 &&
2013-12-31 10:11:24 +02:00
network_extralibs = "-lws2_32" ; } || disable winsock2_h network
2012-07-16 01:11:18 +03:00
check_func_headers ws2tcpip.h getaddrinfo $network_extralibs
2014-03-06 14:52:03 +01:00
2011-01-25 09:28:01 +00:00
check_type ws2tcpip.h socklen_t
check_type ws2tcpip.h "struct addrinfo"
2012-06-21 14:19:56 +03:00
check_type ws2tcpip.h "struct group_source_req"
check_type ws2tcpip.h "struct ip_mreq_source"
2011-01-25 09:28:01 +00:00
check_type ws2tcpip.h "struct ipv6_mreq"
2012-06-25 12:08:44 +03:00
check_type winsock2.h "struct pollfd"
2014-03-06 14:52:03 +01:00
check_struct winsock2.h "struct sockaddr" sa_len
2011-01-25 09:28:01 +00:00
check_type ws2tcpip.h "struct sockaddr_in6"
check_type ws2tcpip.h "struct sockaddr_storage"
else
disable network
fi
fi
2014-03-06 14:52:03 +01:00
check_builtin atomic_cas_ptr atomic.h "void **ptr; void *oldval, *newval; atomic_cas_ptr(ptr, oldval, newval)"
check_builtin machine_rw_barrier mbarrier.h "__machine_rw_barrier()"
check_builtin MemoryBarrier windows.h "MemoryBarrier()"
2014-03-14 18:30:03 +01:00
check_builtin sarestart signal.h "SA_RESTART"
2016-02-21 22:42:32 +00:00
check_builtin sem_timedwait semaphore.h "sem_t *s; sem_init(s,0,0); sem_timedwait(s,0); sem_destroy(s)" -lpthread
2014-03-06 14:52:03 +01:00
check_builtin sync_val_compare_and_swap "" "int *ptr; int oldval, newval; __sync_val_compare_and_swap(ptr, oldval, newval)"
2015-06-06 01:55:06 -03:00
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)"
2016-02-27 23:23:41 +01:00
check_builtin x264_csp_bgr "stdint.h x264.h" "X264_CSP_BGR"
2014-03-06 14:52:03 +01:00
2015-09-03 11:55:48 +02:00
case " $custom_allocator " in
jemalloc)
# jemalloc by default does not use a prefix
require libjemalloc jemalloc/jemalloc.h malloc -ljemalloc
;;
tcmalloc)
require_pkg_config libtcmalloc gperftools/tcmalloc.h tc_malloc
malloc_prefix = tc_
;;
esac
2014-03-06 14:52:03 +01:00
check_func_headers malloc.h _aligned_malloc && enable aligned_malloc
check_func ${ malloc_prefix } memalign && enable memalign
check_func ${ malloc_prefix } posix_memalign && enable posix_memalign
2009-02-23 01:56:08 +00:00
2012-11-27 04:55:26 +01:00
check_func access
2016-08-13 02:22:16 +02:00
check_func_headers stdlib.h arc4random
2017-03-20 11:04:50 +01:00
check_func_headers time.h clock_gettime ||
2017-04-26 16:57:11 +02:00
{ check_lib clock_gettime time.h clock_gettime -lrt && LIBRT = "-lrt" ; }
2010-06-30 10:38:01 +00:00
check_func fcntl
2007-11-23 11:09:28 +00:00
check_func fork
check_func gethrtime
2012-07-03 20:14:09 -07:00
check_func getopt
2007-11-23 11:09:28 +00:00
check_func getrusage
2012-06-20 13:46:52 +01:00
check_func gettimeofday
2009-07-24 00:12:55 +00:00
check_func isatty
2014-01-24 01:15:31 +01:00
check_func mach_absolute_time
2007-11-23 11:09:28 +00:00
check_func mkstemp
2010-12-22 14:13:04 +00:00
check_func mmap
2012-10-13 02:40:48 +00:00
check_func mprotect
2014-03-06 14:52:03 +01:00
# Solaris has nanosleep in -lrt, OpenSolaris no longer needs that
2017-03-20 11:04:50 +01:00
check_func_headers time.h nanosleep ||
2017-04-26 16:57:11 +02:00
{ check_lib nanosleep time.h nanosleep -lrt && LIBRT = "-lrt" ; }
2014-03-06 14:52:03 +01:00
check_func sched_getaffinity
2010-02-09 22:55:11 +00:00
check_func setrlimit
2013-05-25 15:32:14 +02:00
check_struct "sys/stat.h" "struct stat" st_mtim.tv_nsec -D_BSD_SOURCE
2010-03-25 22:46:35 +00:00
check_func strerror_r
2011-12-24 00:27:12 +01:00
check_func sysconf
2011-12-22 21:10:07 +01:00
check_func sysctl
2012-06-21 17:00:25 +01:00
check_func usleep
2014-03-06 14:52:03 +01:00
2011-03-22 03:47:48 +00:00
check_func_headers conio.h kbhit
2009-01-11 22:05:43 +00:00
check_func_headers io.h setmode
2009-04-09 14:55:05 +00:00
check_func_headers lzo/lzo1x.h lzo1x_999_compress
2014-03-06 14:52:03 +01:00
check_func_headers stdlib.h getenv
2015-08-25 12:48:12 +02:00
check_func_headers sys/stat.h lstat
2014-03-06 14:52:03 +01:00
2012-01-01 23:54:40 +00:00
check_func_headers windows.h GetProcessAffinityMask
2008-09-20 16:17:27 +00:00
check_func_headers windows.h GetProcessTimes
2012-06-20 13:46:52 +01:00
check_func_headers windows.h GetSystemTimeAsFileTime
2016-09-01 13:50:38 -03:00
check_func_headers windows.h LoadLibrary
2011-01-05 05:16:33 +00:00
check_func_headers windows.h MapViewOfFile
2014-03-14 18:30:03 +01:00
check_func_headers windows.h PeekNamedPipe
2012-11-30 16:56:57 +02:00
check_func_headers windows.h SetConsoleTextAttribute
2015-06-30 16:31:19 -06:00
check_func_headers windows.h SetConsoleCtrlHandler
2012-06-21 17:00:25 +01:00
check_func_headers windows.h Sleep
2009-03-19 21:52:01 +00:00
check_func_headers windows.h VirtualAlloc
2014-10-09 13:20:00 -03:00
check_struct windows.h "CONDITION_VARIABLE" Ptr
2012-02-27 10:27:17 +01:00
check_func_headers glob.h glob
2014-02-19 03:59:32 +01:00
enabled xlib &&
check_func_headers "X11/Xlib.h X11/extensions/Xvlib.h" XvGetPortAttribute -lXv -lX11 -lXext
2007-09-24 15:52:06 +00:00
2016-02-18 21:38:37 -06:00
check_header AudioToolbox/AudioToolbox.h
2016-12-15 18:00:55 +01:00
check_header d3d11.h
2012-09-13 14:26:10 +03:00
check_header direct.h
2015-06-29 00:13:43 +02:00
check_header dirent.h
2007-09-24 15:52:06 +00:00
check_header dlfcn.h
2017-06-22 14:52:57 +02:00
check_header dxgidebug.h
2012-06-24 11:17:13 +01:00
check_header dxva.h
2011-09-13 10:11:16 +02:00
check_header dxva2api.h -D_WIN32_WINNT= 0x0600
2012-06-25 00:42:27 +03:00
check_header io.h
2011-03-09 22:09:00 -08:00
check_header libcrystalhd/libcrystalhd_if.h
2014-01-24 01:15:31 +01:00
check_header mach/mach_time.h
2007-09-24 15:52:06 +00:00
check_header malloc.h
2014-11-05 10:59:44 +01:00
check_header net/udplite.h
2008-08-14 14:03:32 +00:00
check_header poll.h
2008-03-19 10:11:16 +00:00
check_header sys/mman.h
2011-12-24 00:23:55 +01:00
check_header sys/param.h
2008-05-08 00:44:42 +00:00
check_header sys/resource.h
2008-08-14 14:03:32 +00:00
check_header sys/select.h
2012-06-24 22:20:21 +03:00
check_header sys/time.h
2013-07-30 01:34:56 +02:00
check_header sys/un.h
2011-03-30 20:58:13 +02:00
check_header termios.h
2012-06-21 16:34:10 +01:00
check_header unistd.h
2015-04-20 14:44:32 +01:00
check_header valgrind/valgrind.h
2013-02-21 12:31:15 +01:00
check_header VideoDecodeAcceleration/VDADecoder.h
2015-07-11 13:23:21 +02:00
check_header VideoToolbox/VideoToolbox.h
2016-03-02 20:11:40 +08:00
check_func_headers VideoToolbox/VTCompressionSession.h VTCompressionSessionPrepareToEncodeFrames -framework VideoToolbox
2016-04-27 10:53:15 -04:00
enabled videotoolbox && check_func_headers CoreVideo/CVImageBuffer.h kCVImageBufferColorPrimaries_ITU_R_2020 -framework CoreVideo
2012-06-21 17:00:25 +01:00
check_header windows.h
2008-12-15 22:24:12 +00:00
check_header X11/extensions/XvMClib.h
2011-12-15 20:21:54 +00:00
check_header asm/types.h
2001-09-13 07:16:59 +00:00
2016-11-23 21:54:53 -08:00
# it seems there are versions of clang in some distros that try to use the
# gcc headers, which explodes for stdatomic
# so we also check that atomics actually work here
2016-12-27 21:54:55 -03:00
check_builtin stdatomic_h stdatomic.h "atomic_int foo, bar = ATOMIC_VAR_INIT(-1); atomic_store(&foo, 0)"
2016-11-23 21:54:53 -08:00
2017-06-07 17:11:17 +02:00
check_lib ole32 "windows.h" CoTaskMemFree -lole32
2016-12-08 10:16:34 +01:00
check_lib shell32 "windows.h shellapi.h" CommandLineToArgvW -lshell32
check_lib wincrypt "windows.h wincrypt.h" CryptGenRandom -ladvapi32
check_lib psapi "windows.h psapi.h" GetProcessMemoryInfo -lpsapi
2014-03-06 14:52:03 +01:00
2017-04-26 16:57:11 +02:00
check_lib coreservices "CoreServices/CoreServices.h" UTGetOSTypeFromString "-framework CoreServices"
2014-03-06 14:52:03 +01:00
check_struct "sys/time.h sys/resource.h" "struct rusage" ru_maxrss
2015-07-26 13:35:47 +02:00
check_type "windows.h dxva.h" "DXVA_PicParams_HEVC" -DWINAPI_FAMILY= WINAPI_FAMILY_DESKTOP_APP -D_CRT_BUILD_DESKTOP_APP= 0
2015-12-03 11:09:51 +01:00
check_type "windows.h dxva.h" "DXVA_PicParams_VP9" -DWINAPI_FAMILY= WINAPI_FAMILY_DESKTOP_APP -D_CRT_BUILD_DESKTOP_APP= 0
2015-05-26 00:14:58 +02:00
check_type "windows.h d3d11.h" "ID3D11VideoDecoder"
2015-09-11 18:23:30 -03:00
check_type "windows.h d3d11.h" "ID3D11VideoContext"
2015-07-25 20:30:31 +03:00
check_type "d3d9.h dxva2api.h" DXVA2_ConfigPictureDecode -D_WIN32_WINNT= 0x0602
2015-01-25 13:01:11 +01:00
2016-10-02 08:51:32 +02:00
check_type "va/va.h va/va_dec_hevc.h" "VAPictureParameterBufferHEVC"
2016-12-08 19:29:14 +00:00
check_struct "va/va.h" "VADecPictureParameterBufferVP9" bit_depth
2016-03-21 00:03:16 +00:00
check_type "va/va.h va/va_vpp.h" "VAProcPipelineParameterBuffer"
2016-03-23 23:49:35 +00:00
check_type "va/va.h va/va_enc_h264.h" "VAEncPictureParameterBufferH264"
2016-03-23 23:50:04 +00:00
check_type "va/va.h va/va_enc_hevc.h" "VAEncPictureParameterBufferHEVC"
2016-03-23 23:50:47 +00:00
check_type "va/va.h va/va_enc_jpeg.h" "VAEncPictureParameterBufferJPEG"
2017-01-09 19:17:37 +00:00
check_type "va/va.h va/va_enc_mpeg2.h" "VAEncPictureParameterBufferMPEG2"
2016-11-29 20:38:29 +00:00
check_type "va/va.h va/va_enc_vp8.h" "VAEncPictureParameterBufferVP8"
2016-11-28 23:54:57 +00:00
check_type "va/va.h va/va_enc_vp9.h" "VAEncPictureParameterBufferVP9"
2015-08-26 14:55:40 +02:00
2015-06-13 09:42:48 -07:00
check_type "vdpau/vdpau.h" "VdpPictureInfoHEVC"
2015-09-29 18:11:03 +08:00
check_cpp_condition windows.h "!WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP)" && enable winrt || disable winrt
2011-11-01 20:41:43 +01:00
if ! disabled w32threads && ! enabled pthreads; then
2013-12-23 04:24:52 +01:00
check_func_headers "windows.h process.h" _beginthreadex &&
enable w32threads || disable w32threads
2015-09-29 18:11:03 +08:00
if ! enabled w32threads && enabled winrt; then
check_func_headers "windows.h" CreateThread &&
enable w32threads || disable w32threads
fi
2011-11-01 20:41:43 +01:00
fi
2006-06-16 19:26:31 +00:00
# check for some common methods of building with pthread support
# do this before the optional library checks as some of them require pthreads
2011-11-02 00:00:21 +09:00
if ! disabled pthreads && ! enabled w32threads && ! enabled os2threads; then
2017-04-26 16:57:11 +02:00
if check_lib pthreads pthread.h pthread_join -pthread &&
check_lib pthreads pthread.h pthread_create -pthread; then
2006-11-18 16:16:58 +00:00
add_cflags -pthread
2017-04-26 16:57:11 +02:00
elif check_lib pthreads pthread.h pthread_join -pthreads &&
check_lib pthreads pthread.h pthread_create -pthreads; then
2006-11-18 16:16:58 +00:00
add_cflags -pthreads
2017-04-26 16:57:11 +02:00
elif check_lib pthreads pthread.h pthread_join -ldl -pthread &&
check_lib pthreads pthread.h pthread_create -ldl -pthread; then
2014-05-26 15:21:03 +02:00
add_cflags -ldl -pthread
2017-04-26 16:57:11 +02:00
elif check_lib pthreads pthread.h pthread_join -lpthreadGC2 &&
check_lib pthreads pthread.h pthread_create -lpthreadGC2; then
2013-12-12 17:05:34 +01:00
:
2017-04-26 16:57:11 +02:00
elif check_lib pthreads pthread.h pthread_join -lpthread &&
check_lib pthreads pthread.h pthread_create -lpthread; then
2013-12-12 17:05:34 +01:00
:
2017-04-26 16:57:11 +02:00
elif check_func pthread_join && check_func pthread_create; then
2016-12-08 10:16:34 +01:00
enable pthreads
2006-11-18 16:16:58 +00:00
fi
2013-12-30 00:47:12 +01:00
check_code cc "pthread.h" "static pthread_mutex_t atomic_lock = PTHREAD_MUTEX_INITIALIZER" || disable pthreads
2002-07-20 20:05:50 +00:00
fi
2007-01-07 00:22:32 +00:00
2012-05-08 19:02:33 +02:00
if enabled pthreads; then
check_func pthread_cancel
fi
2016-03-26 15:27:23 +00:00
enabled pthreads &&
check_builtin sem_timedwait semaphore.h "sem_t *s; sem_init(s,0,0); sem_timedwait(s,0); sem_destroy(s)"
2017-04-26 16:57:11 +02:00
disabled zlib || check_lib zlib zlib.h zlibVersion -lz
disabled bzlib || check_lib bzlib bzlib.h BZ2_bzlibVersion -lbz2
disabled lzma || check_lib lzma lzma.h lzma_version_number -llzma
2013-12-11 14:21:48 +01:00
2016-12-08 10:16:34 +01:00
check_lib libm math.h sin -lm && LIBM = "-lm"
2017-04-26 16:57:11 +02:00
disabled crystalhd || check_lib crystalhd "stdint.h libcrystalhd/libcrystalhd_if.h" DtsCrystalHDVersion -lcrystalhd
2007-09-29 20:25:06 +00:00
2012-10-26 14:42:47 +01:00
atan2f_args = 2
2015-07-20 04:04:46 -03:00
copysign_args = 2
2015-11-14 11:57:28 -05:00
hypot_args = 2
2012-10-26 14:42:47 +01:00
ldexpf_args = 2
powf_args = 2
2007-06-18 21:42:38 +00:00
2012-10-19 18:58:39 +02:00
for func in $MATH_FUNCS ; do
2016-11-23 09:27:28 +01:00
eval check_mathfunc $func \$ { ${ func } _args:-1} $LIBM
2012-10-24 13:15:42 +02:00
done
2015-11-30 13:36:58 +01:00
for func in $COMPLEX_FUNCS ; do
eval check_complexfunc $func \$ { ${ func } _args:-1}
done
2006-06-16 19:26:31 +00:00
# these are off by default, so fail if requested and not available
2015-12-05 11:49:44 +01:00
enabled avfoundation_indev && { check_header_objcc AVFoundation/AVFoundation.h || disable avfoundation_indev; }
2017-04-26 16:57:11 +02:00
enabled avfoundation_indev && { check_lib avfoundation_indev CoreGraphics/CoreGraphics.h CGGetActiveDisplayList -framework CoreGraphics ||
check_lib avfoundation_indev ApplicationServices/ApplicationServices.h CGGetActiveDisplayList -framework ApplicationServices; }
2017-05-11 22:51:31 +02:00
enabled cuda_sdk && require cuda_sdk cuda.h cuCtxCreate -lcuda
2016-10-10 12:58:26 +02:00
enabled cuvid && { enabled cuda ||
2016-06-04 19:06:52 +02:00
die "ERROR: CUVID requires CUDA" ; }
2015-10-03 17:24:06 -05:00
enabled chromaprint && require chromaprint chromaprint.h chromaprint_get_version -lchromaprint
2016-03-19 16:28:40 +01:00
enabled coreimage_filter && { check_header_objcc QuartzCore/CoreImage.h || disable coreimage_filter; }
enabled coreimagesrc_filter && { check_header_objcc QuartzCore/CoreImage.h || disable coreimagesrc_filter; }
2016-06-11 13:41:29 +02:00
enabled decklink && { { check_header DeckLinkAPI.h || die "ERROR: DeckLinkAPI.h header not found" ; } &&
{ check_cpp_condition DeckLinkAPIVersion.h "BLACKMAGIC_DECKLINK_API_VERSION >= 0x0a060100" || die "ERROR: Decklink API version must be >= 10.6.1." ; } }
2017-08-18 09:34:06 -04:00
enabled libndi_newtek && { check_header Processing.NDI.Lib.h || die "ERROR: Processing.NDI.Lib.h header not found" ; }
2013-06-20 13:42:21 +02:00
enabled frei0r && { check_header frei0r.h || die "ERROR: frei0r.h header not found" ; }
2017-03-20 12:18:45 +01:00
enabled gmp && require gmp gmp.h mpz_export -lgmp
2013-06-20 13:42:21 +02:00
enabled gnutls && require_pkg_config gnutls gnutls/gnutls.h gnutls_global_init
2017-05-12 11:34:24 -07:00
enabled jni && { [ $target_os = "android" ] && check_header jni.h && enabled pthreads || die "ERROR: jni not found" ; }
2013-09-20 14:01:00 +00:00
enabled ladspa && { check_header ladspa.h || die "ERROR: ladspa.h header not found" ; }
2013-06-24 10:40:15 +02:00
enabled libiec61883 && require libiec61883 libiec61883/iec61883.h iec61883_cmp_connect -lraw1394 -lavc1394 -lrom1394 -liec61883
enabled libass && require_pkg_config libass ass/ass.h ass_library_init
2014-02-23 16:39:18 -08:00
enabled libbluray && require_pkg_config libbluray libbluray/bluray.h bd_open
2014-04-29 18:53:16 +02:00
enabled libbs2b && require_pkg_config libbs2b bs2b.h bs2b_open
2013-06-24 10:40:15 +02:00
enabled libcelt && require libcelt celt/celt.h celt_decode -lcelt0 &&
2017-04-26 16:57:11 +02:00
{ check_lib libcelt celt/celt.h celt_decoder_create_custom -lcelt0 ||
2013-06-24 10:40:15 +02:00
die "ERROR: libcelt must be installed and version must be >= 0.11.0." ; }
enabled libcaca && require_pkg_config caca caca.h caca_create_canvas
2016-11-29 12:44:23 +01:00
enabled libdc1394 && require_pkg_config libdc1394-2 dc1394/dc1394.h dc1394_new
2015-06-02 19:14:40 +02:00
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" ; } }
2017-04-17 10:22:52 +02:00
flite_extralibs = "-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 && require libflite "flite/flite.h" flite_init $flite_extralibs
2014-04-17 03:42:17 +02:00
enabled fontconfig && enable libfontconfig
2014-04-12 16:02:50 +02:00
enabled libfontconfig && require_pkg_config fontconfig "fontconfig/fontconfig.h" FcInit
2017-04-17 10:00:06 +02:00
enabled libfreetype && require_pkg_config freetype2 "ft2build.h FT_FREETYPE_H" FT_Init_FreeType
2014-06-21 05:41:45 +01:00
enabled libfribidi && require_pkg_config fribidi fribidi.h fribidi_version_info
2017-06-23 01:53:37 +01:00
enabled libgme && { use_pkg_config libgme gme/gme.h gme_new_emu ||
require libgme gme/gme.h gme_new_emu -lgme -lstdc++; }
2013-06-20 13:42:21 +02:00
enabled libgsm && { for gsm_hdr in "gsm.h" "gsm/gsm.h" ; do
2016-12-08 10:16:34 +01:00
check_lib libgsm " ${ gsm_hdr } " gsm_create -lgsm && break;
2013-06-20 13:42:21 +02:00
done || die "ERROR: libgsm not found" ; }
enabled libilbc && require libilbc ilbc.h WebRtcIlbcfix_InitDecode -lilbc
2016-01-15 13:47:10 +02:00
enabled libkvazaar && require_pkg_config "kvazaar >= 0.8.1" kvazaar.h kvz_api_get
2017-05-05 18:16:03 -07:00
# While it may appear that require is being used as a pkg-config
# fallback for libmfx, it is actually being used to detect a different
# installation route altogether. If libmfx is installed via the Intel
# Media SDK or Intel Media Server Studio, these don't come with
# pkg-config support. Instead, users should make sure that the build
# can find the libraries and headers through other means.
enabled libmfx && { use_pkg_config libmfx "mfx/mfxvideo.h" MFXInit ||
{ require libmfx "mfx/mfxvideo.h" MFXInit -llibmfx && warn "using libmfx without pkg-config" ; } }
2014-09-01 08:58:50 +02:00
enabled libmodplug && require_pkg_config libmodplug libmodplug/modplug.h ModPlug_Load
2013-06-20 13:42:21 +02:00
enabled libmp3lame && require "libmp3lame >= 3.98.3" lame/lame.h lame_set_VBR_quality -lmp3lame
2017-06-03 01:39:04 +02:00
enabled libmysofa && require libmysofa "mysofa.h" mysofa_load -lmysofa
2016-01-17 15:02:17 +01:00
enabled libnpp && require libnpp npp.h nppGetLibVersion -lnppi -lnppc
2013-06-20 13:42:21 +02:00
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
2016-01-21 23:17:47 +01:00
enabled libopencv && { check_header opencv2/core/core_c.h &&
2016-02-07 23:25:53 +01:00
{ use_pkg_config opencv opencv2/core/core_c.h cvCreateImageHeader ||
require opencv opencv2/core/core_c.h cvCreateImageHeader -lopencv_core -lopencv_imgproc; } ||
2016-01-21 23:17:47 +01:00
require_pkg_config opencv opencv/cxcore.h cvCreateImageHeader; }
2013-12-12 17:13:55 +02:00
enabled libopenh264 && require_pkg_config openh264 wels/codec_api.h WelsGetCodecVersion
2017-06-23 23:49:31 +02:00
enabled libopenjpeg && { { check_lib libopenjpeg openjpeg-2.2/openjpeg.h opj_version -lopenjp2 -DOPJ_STATIC && add_cppflags -DOPJ_STATIC; } ||
check_lib libopenjpeg openjpeg-2.2/openjpeg.h opj_version -lopenjp2 ||
{ check_lib libopenjpeg openjpeg-2.1/openjpeg.h opj_version -lopenjp2 -DOPJ_STATIC && add_cppflags -DOPJ_STATIC; } ||
2017-04-26 16:57:11 +02:00
check_lib libopenjpeg openjpeg-2.1/openjpeg.h opj_version -lopenjp2 ||
{ check_lib libopenjpeg openjpeg-2.0/openjpeg.h opj_version -lopenjp2 -DOPJ_STATIC && add_cppflags -DOPJ_STATIC; } ||
{ check_lib libopenjpeg openjpeg-1.5/openjpeg.h opj_version -lopenjpeg -DOPJ_STATIC && add_cppflags -DOPJ_STATIC; } ||
{ check_lib libopenjpeg openjpeg.h opj_version -lopenjpeg -DOPJ_STATIC && add_cppflags -DOPJ_STATIC; } ||
2013-06-24 10:40:15 +02:00
die "ERROR: libopenjpeg not found" ; }
2016-07-14 18:30:27 +01:00
enabled libopenmpt && require_pkg_config "libopenmpt >= 0.2.6557" libopenmpt/libopenmpt.h openmpt_module_create
2017-05-04 00:26:13 -03:00
enabled libopus && {
enabled libopus_decoder && {
require_pkg_config opus opus_multistream.h opus_multistream_decoder_create
}
enabled libopus_encoder && {
require_pkg_config opus opus_multistream.h opus_multistream_surround_encoder_create
}
}
2014-07-26 03:38:27 +02:00
enabled libpulse && require_pkg_config libpulse pulse/pulseaudio.h pa_context_new
2017-05-08 05:02:19 +01:00
enabled librsvg && require_pkg_config librsvg-2.0 librsvg-2.0/librsvg/rsvg.h rsvg_handle_render_cairo
2013-06-20 13:42:21 +02:00
enabled librtmp && require_pkg_config librtmp librtmp/rtmp.h RTMP_Socket
2015-10-01 22:30:18 +02:00
enabled librubberband && require_pkg_config "rubberband >= 1.8.1" rubberband/rubberband-c.h rubberband_new
2013-07-21 15:40:08 -05:00
enabled libshine && require_pkg_config shine shine/layer3.h shine_encode_buffer
2014-12-08 16:08:20 +01:00
enabled libsmbclient && { use_pkg_config smbclient libsmbclient.h smbc_init ||
2014-12-02 13:29:47 +01:00
require smbclient libsmbclient.h smbc_init -lsmbclient; }
2016-11-23 08:54:01 +01:00
enabled libsnappy && require libsnappy snappy-c.h snappy_compress -lsnappy
2015-09-07 20:58:10 +01:00
enabled libsoxr && require libsoxr soxr.h soxr_create -lsoxr && LIBSOXR = "-lsoxr"
2013-09-18 14:08:11 +02:00
enabled libssh && require_pkg_config libssh libssh/sftp.h sftp_init
2014-07-24 23:50:38 +02:00
enabled libspeex && require_pkg_config speex speex/speex.h speex_decoder_init -lspeex
2015-09-09 13:43:35 +00:00
enabled libtesseract && require_pkg_config tesseract tesseract/capi.h TessBaseAPICreate
2013-06-20 13:42:21 +02:00
enabled libtheora && require libtheora theora/theoraenc.h th_info_init -ltheoraenc -ltheoradec -logg
2013-06-24 10:40:15 +02:00
enabled libtwolame && require libtwolame twolame.h twolame_init -ltwolame &&
2017-04-26 16:57:11 +02:00
{ check_lib libtwolame twolame.h twolame_encode_buffer_float32_interleaved -ltwolame ||
2013-06-24 10:40:15 +02:00
die "ERROR: libtwolame must be installed and version must be >= 0.3.10" ; }
enabled libv4l2 && require_pkg_config libv4l2 libv4l2.h v4l2_ioctl
2014-01-09 22:22:16 +01:00
enabled libvidstab && require_pkg_config "vidstab >= 0.98" vid.stab/libvidstab.h vsMotionDetectInit
2017-07-15 22:12:33 +05:30
enabled libvmaf && { check_lib libvmaf "libvmaf.h" "compute_vmaf" -lvmaf -lstdc++ -lpthread -lm ||
die "ERROR: libvmaf must be installed" ; }
2013-06-20 13:42:21 +02:00
enabled libvo_amrwbenc && require libvo_amrwbenc vo-amrwbenc/enc_if.h E_IF_init -lvo-amrwbenc
2017-07-04 19:01:22 +01:00
enabled libvorbis && require_pkg_config vorbis vorbis/codec.h vorbis_info_init &&
require_pkg_config vorbisenc vorbis/vorbisenc.h vorbis_encode_init
2015-06-21 21:48:44 +02:00
2013-06-20 13:42:21 +02:00
enabled libvpx && {
2015-06-11 16:56:31 +02:00
enabled libvpx_vp8_decoder && {
2015-06-21 21:48:44 +02:00
use_pkg_config "vpx >= 0.9.1" "vpx/vpx_decoder.h vpx/vp8dx.h" vpx_codec_vp8_dx ||
2017-04-26 16:57:11 +02:00
check_lib libvpx_vp8_decoder "vpx/vpx_decoder.h vpx/vp8dx.h" vpx_codec_dec_init_ver -lvpx ||
2015-06-21 21:48:44 +02:00
die "ERROR: libvpx decoder version must be >=0.9.1" ;
2015-06-11 16:56:31 +02:00
}
enabled libvpx_vp8_encoder && {
2015-06-21 21:48:44 +02:00
use_pkg_config "vpx >= 0.9.7" "vpx/vpx_encoder.h vpx/vp8cx.h" vpx_codec_vp8_cx ||
2017-04-26 16:57:11 +02:00
check_lib libvpx_vp8_encoder "vpx/vpx_encoder.h vpx/vp8cx.h" "vpx_codec_enc_init_ver VP8E_SET_MAX_INTRA_BITRATE_PCT" -lvpx ||
2015-06-21 21:48:44 +02:00
die "ERROR: libvpx encoder version must be >=0.9.7" ;
2015-06-11 16:56:31 +02:00
}
enabled libvpx_vp9_decoder && {
2015-06-21 21:48:44 +02:00
use_pkg_config "vpx >= 1.3.0" "vpx/vpx_decoder.h vpx/vp8dx.h" vpx_codec_vp9_dx ||
2017-04-26 16:57:11 +02:00
check_lib libvpx_vp9_decoder "vpx/vpx_decoder.h vpx/vp8dx.h" "vpx_codec_vp9_dx" -lvpx
2015-06-11 16:56:31 +02:00
}
enabled libvpx_vp9_encoder && {
2015-06-21 21:48:44 +02:00
use_pkg_config "vpx >= 1.3.0" "vpx/vpx_encoder.h vpx/vp8cx.h" vpx_codec_vp9_cx ||
2017-04-26 16:57:11 +02:00
check_lib libvpx_vp9_encoder "vpx/vpx_encoder.h vpx/vp8cx.h" "vpx_codec_vp9_cx VP9E_SET_AQ_MODE" -lvpx
2015-06-11 16:56:31 +02:00
}
if disabled_all libvpx_vp8_decoder libvpx_vp9_decoder libvpx_vp8_encoder libvpx_vp9_encoder; then
die "libvpx enabled but no supported decoders found"
fi
}
2015-06-21 21:48:44 +02:00
2013-06-20 13:42:21 +02:00
enabled libwavpack && require libwavpack wavpack/wavpack.h WavpackOpenFileOutput -lwavpack
2015-05-19 18:04:07 -07:00
enabled libwebp && {
2015-05-23 02:14:26 -03:00
enabled libwebp_encoder && require_pkg_config "libwebp >= 0.2.0" webp/encode.h WebPGetEncoderVersion
enabled libwebp_anim_encoder && { use_pkg_config "libwebpmux >= 0.4.0" webp/mux.h WebPAnimEncoderOptionsInit || disable libwebp_anim_encoder; } }
2014-12-02 13:29:47 +01:00
enabled libx264 && { use_pkg_config x264 "stdint.h x264.h" x264_encoder_encode ||
2017-03-20 14:10:34 +00:00
{ require libx264 "stdint.h x264.h" x264_encoder_encode -lx264 &&
2014-10-17 16:35:58 +02:00
warn "using libx264 without pkg-config" ; } } &&
2013-06-20 13:42:21 +02:00
{ check_cpp_condition x264.h "X264_BUILD >= 118" ||
2015-07-17 21:21:03 +02:00
die "ERROR: libx264 must be installed and version must be >= 0.118." ; } &&
2015-07-10 14:45:14 +02:00
{ check_cpp_condition x264.h "X264_MPEG2" &&
enable libx262; }
2015-06-26 14:05:00 +01:00
enabled libx265 && require_pkg_config x265 x265.h x265_api_get &&
2016-01-26 19:10:02 -05:00
{ check_cpp_condition x265.h "X265_BUILD >= 68" ||
die "ERROR: libx265 version must be >= 68." ; }
2017-03-20 14:10:34 +00:00
enabled libxavs && require libxavs "stdint.h xavs.h" xavs_encoder_encode -lxavs
2013-06-20 13:42:21 +02:00
enabled libxvid && require libxvid xvid.h xvid_global -lxvidcore
2016-11-23 16:43:59 +01:00
enabled libzimg && require_pkg_config "zimg >= 2.3.0" zimg.h zimg_get_api_version
2013-06-24 10:40:15 +02:00
enabled libzmq && require_pkg_config libzmq zmq.h zmq_ctx_new
2016-01-14 03:34:57 +01:00
enabled libzvbi && require libzvbi libzvbi.h vbi_decoder_new -lzvbi &&
{ check_cpp_condition libzvbi.h "VBI_VERSION_MAJOR > 0 || VBI_VERSION_MINOR > 2 || VBI_VERSION_MINOR == 2 && VBI_VERSION_MICRO >= 28" ||
enabled gpl || die "ERROR: libzvbi requires version 0.2.28 or --enable-gpl." ; }
2016-01-21 09:29:39 +01:00
enabled mediacodec && { enabled jni || die "ERROR: mediacodec requires --enable-jni" ; }
2016-12-08 10:16:34 +01:00
enabled mmal && { check_lib mmal interface/mmal/mmal.h mmal_port_connect -lmmal_core -lmmal_util -lmmal_vc_client -lbcm_host ||
2016-12-04 13:40:13 +01:00
{ ! enabled cross_compile &&
add_cflags -isystem/opt/vc/include/ -isystem/opt/vc/include/interface/vmcs_host/linux -isystem/opt/vc/include/interface/vcos/pthreads -fgnu89-inline &&
add_ldflags -L/opt/vc/lib/ &&
2016-12-08 10:16:34 +01:00
check_lib mmal interface/mmal/mmal.h mmal_port_connect -lmmal_core -lmmal_util -lmmal_vc_client -lbcm_host; } ||
2016-12-04 13:40:13 +01:00
die "ERROR: mmal not found" &&
check_func_headers interface/mmal/mmal.h "MMAL_PARAMETER_VIDEO_MAX_NUM_CALLBACKS" ; }
2017-04-17 10:22:52 +02:00
enabled openal && { { for al_extralibs in " ${ OPENAL_LIBS } " "-lopenal" "-lOpenAL32" ; do
2017-04-26 16:57:11 +02:00
check_lib openal 'AL/al.h' alGetError " ${ al_extralibs } " && break; done } ||
2013-06-24 10:40:15 +02:00
die "ERROR: openal not found" ; } &&
{ check_cpp_condition "AL/al.h" "defined(AL_VERSION_1_1)" ||
die "ERROR: openal must be installed and version must be 1.1 or compatible" ; }
2017-04-26 16:57:11 +02:00
enabled opencl && { check_lib opencl OpenCL/cl.h clEnqueueNDRangeKernel -Wl,-framework,OpenCL ||
check_lib opencl CL/cl.h clEnqueueNDRangeKernel -lOpenCL ||
2013-06-24 10:40:15 +02:00
die "ERROR: opencl not found" ; } &&
{ check_cpp_condition "OpenCL/cl.h" "defined(CL_VERSION_1_2)" ||
check_cpp_condition "CL/cl.h" "defined(CL_VERSION_1_2)" ||
die "ERROR: opencl must be installed and version must be 1.2 or compatible" ; }
2017-04-26 16:57:11 +02:00
enabled opengl && { check_lib opengl GL/glx.h glXGetProcAddress "-lGL" ||
check_lib opengl windows.h wglGetProcAddress "-lopengl32 -lgdi32" ||
check_lib opengl OpenGL/gl3.h glGetError "-Wl,-framework,OpenGL" ||
check_lib opengl ES2/gl.h glGetError "-isysroot= ${ sysroot } -Wl,-framework,OpenGLES" ||
2013-11-24 20:13:27 +01:00
die "ERROR: opengl not found."
}
2016-12-02 12:33:50 +01:00
enabled omx_rpi && { check_header OMX_Core.h ||
{ ! enabled cross_compile && add_cflags -isystem/opt/vc/include/IL && check_header OMX_Core.h ; } ||
2012-07-24 21:33:42 +00:00
die "ERROR: OpenMAX IL headers not found" ; }
2016-12-02 12:33:50 +01:00
enabled omx && { check_header OMX_Core.h || die "ERROR: OpenMAX IL headers not found" ; }
2016-10-10 06:49:54 +11:00
enabled openssl && { use_pkg_config openssl openssl/ssl.h OPENSSL_init_ssl ||
use_pkg_config openssl openssl/ssl.h SSL_library_init ||
2016-12-08 10:16:34 +01:00
check_lib openssl openssl/ssl.h SSL_library_init -lssl -lcrypto ||
check_lib openssl openssl/ssl.h SSL_library_init -lssl32 -leay32 ||
check_lib openssl openssl/ssl.h SSL_library_init -lssl -lcrypto -lws2_32 -lgdi32 ||
2013-06-20 13:42:21 +02:00
die "ERROR: openssl not found" ; }
2015-12-05 11:49:44 +01:00
enabled qtkit_indev && { check_header_objcc QTKit/QTKit.h || disable qtkit_indev; }
2006-08-29 07:34:58 +00:00
2015-12-29 22:47:05 +00:00
if enabled gcrypt; then
GCRYPT_CONFIG = " ${ cross_prefix } libgcrypt-config"
if " ${ GCRYPT_CONFIG } " --version > /dev/null 2>& 1; then
2016-01-08 23:40:50 +00:00
gcrypt_cflags = $( " ${ GCRYPT_CONFIG } " --cflags)
2017-04-17 10:22:52 +02:00
gcrypt_extralibs = $( " ${ GCRYPT_CONFIG } " --libs)
check_func_headers gcrypt.h gcry_mpi_new $gcrypt_cflags $gcrypt_extralibs ||
2016-01-08 23:40:50 +00:00
die "ERROR: gcrypt not found"
2017-04-17 10:22:52 +02:00
add_cflags $gcrypt_cflags && add_extralibs $gcrypt_extralibs
2015-12-29 22:47:05 +00:00
else
2017-03-20 12:18:45 +01:00
require gcrypt gcrypt.h gcry_mpi_new -lgcrypt
2015-12-29 22:47:05 +00:00
fi
fi
2016-09-25 12:55:16 +01:00
disabled sdl && disable sdl2
2016-09-22 19:20:24 +01:00
if ! disabled sdl2; then
2016-02-24 23:31:02 +00:00
SDL2_CONFIG = " ${ cross_prefix } sdl2-config"
if check_pkg_config sdl2 SDL_events.h SDL_PollEvent; then
check_cpp_condition SDL.h "(SDL_MAJOR_VERSION<<16 | SDL_MINOR_VERSION<<8 | SDL_PATCHLEVEL) >= 0x020001" $sdl2_cflags &&
check_cpp_condition SDL.h "(SDL_MAJOR_VERSION<<16 | SDL_MINOR_VERSION<<8 | SDL_PATCHLEVEL) < 0x020100" $sdl2_cflags &&
2017-04-17 10:22:52 +02:00
check_func SDL_Init $sdl2_extralibs $sdl2_cflags && enable sdl2
2016-02-24 23:31:02 +00:00
else
if " ${ SDL2_CONFIG } " --version > /dev/null 2>& 1; then
sdl2_cflags = $( " ${ SDL2_CONFIG } " --cflags)
2017-04-17 10:22:52 +02:00
sdl2_extralibs = $( " ${ SDL2_CONFIG } " --libs)
2016-02-24 23:31:02 +00:00
check_cpp_condition SDL.h "(SDL_MAJOR_VERSION<<16 | SDL_MINOR_VERSION<<8 | SDL_PATCHLEVEL) >= 0x020001" $sdl2_cflags &&
check_cpp_condition SDL.h "(SDL_MAJOR_VERSION<<16 | SDL_MINOR_VERSION<<8 | SDL_PATCHLEVEL) < 0x020100" $sdl2_cflags &&
2017-04-17 10:22:52 +02:00
check_func SDL_Init $sdl2_extralibs $sdl2_cflags && enable sdl2
2016-02-24 23:31:02 +00:00
fi
fi
if test $target_os = "mingw32" ; then
2017-04-17 10:22:52 +02:00
sdl2_extralibs = " $sdl2_extralibs -mconsole"
2016-02-24 23:31:02 +00:00
fi
fi
2017-04-17 10:22:52 +02:00
enabled sdl2 && enable sdl && add_cflags $sdl2_cflags && add_extralibs $sdl2_extralibs
2016-02-24 23:31:02 +00:00
2017-05-05 17:59:21 -07:00
if enabled decklink; then
case $target_os in
mingw32*| mingw64*| win32| win64)
decklink_outdev_extralibs = " $decklink_outdev_extralibs -lole32 -loleaut32"
decklink_indev_extralibs = " $decklink_indev_extralibs -lole32 -loleaut32"
;;
esac
fi
2015-05-28 14:46:16 -05:00
disabled securetransport || { check_func SecIdentityCreate "-Wl,-framework,CoreFoundation -Wl,-framework,Security" &&
2017-04-26 16:57:11 +02:00
check_lib securetransport "Security/SecureTransport.h Security/Security.h" "SSLCreateContext SecItemImport" "-Wl,-framework,CoreFoundation -Wl,-framework,Security" ; }
2015-05-28 14:46:16 -05:00
2016-03-08 14:45:16 +02:00
disabled schannel || { check_func_headers "windows.h security.h" InitializeSecurityContext -DSECURITY_WIN32 -lsecur32 &&
2016-03-16 15:23:28 +01:00
check_cpp_condition winerror.h "defined(SEC_I_CONTEXT_EXPIRED)" && enable schannel && add_extralibs -lsecur32; }
2015-10-04 14:48:49 +02:00
2011-12-20 00:28:47 +01:00
makeinfo --version > /dev/null 2>& 1 && enable makeinfo || disable makeinfo
2015-06-13 20:24:27 +02:00
enabled makeinfo \
&& [ 0$( makeinfo --version | grep "texinfo" | sed 's/.*texinfo[^0-9]*\([0-9]*\)\..*/\1/' ) -ge 5 ] \
2014-08-31 19:39:35 -07:00
&& enable makeinfo_html || disable makeinfo_html
disabled makeinfo_html && texi2html --help 2> /dev/null | grep -q 'init-file' && enable texi2html || disable texi2html
2013-11-21 16:57:56 -08:00
perl -v > /dev/null 2>& 1 && enable perl || disable perl
2013-11-26 11:37:54 -08:00
pod2man --help > /dev/null 2>& 1 && enable pod2man || disable pod2man
2012-11-07 11:27:06 +01:00
rsync --help 2> /dev/null | grep -q 'contimeout' && enable rsync_contimeout || disable rsync_contimeout
2004-07-05 18:06:16 +00:00
2011-03-07 18:54:52 +01:00
check_header linux/fb.h
2007-09-05 18:52:14 +00:00
check_header linux/videodev.h
check_header linux/videodev2.h
2013-01-17 02:11:12 +01:00
check_code cc linux/videodev2.h "struct v4l2_frmsizeenum vfse; vfse.discrete.width = 0;" && enable_safe struct_v4l2_frmivalenum_discrete
2011-12-27 06:31:41 +01:00
2008-09-21 22:47:52 +00:00
check_header sys/videoio.h
2014-10-20 00:09:55 -04:00
check_code cc sys/videoio.h "struct v4l2_frmsizeenum vfse; vfse.discrete.width = 0;" && enable_safe struct_v4l2_frmivalenum_discrete
2006-02-08 15:55:41 +00:00
2016-12-08 10:16:34 +01:00
check_lib user32 "windows.h winuser.h" GetShellWindow -luser32
check_lib vfw32 "windows.h vfw.h" capCreateCaptureWindow -lvfw32
2010-07-11 22:17:17 +00:00
# check that WM_CAP_DRIVER_CONNECT is defined to the proper value
# w32api 3.12 had it defined wrong
check_cpp_condition vfw.h "WM_CAP_DRIVER_CONNECT > WM_USER" && enable vfwcap_defines
2008-03-08 22:10:28 +00:00
2011-05-21 14:24:50 +02:00
check_type "dshow.h" IBaseFilter
2006-12-24 03:53:15 +00:00
# check for ioctl_meteor.h, ioctl_bt848.h and alternatives
2007-09-17 19:33:55 +00:00
{ check_header dev/bktr/ioctl_meteor.h &&
check_header dev/bktr/ioctl_bt848.h; } ||
{ check_header machine/ioctl_meteor.h &&
check_header machine/ioctl_bt848.h; } ||
{ check_header dev/video/meteor/ioctl_meteor.h &&
check_header dev/video/bktr/ioctl_bt848.h; } ||
check_header dev/ic/bt8xx.h
2006-12-24 03:53:15 +00:00
2011-04-24 13:23:51 +02:00
if check_struct sys/soundcard.h audio_buf_info bytes; then
enable_safe sys/soundcard.h
else
check_cc -D__BSD_VISIBLE -D__XSI_VISIBLE <<EOF && add_cppflags -D__BSD_VISIBLE -D__XSI_VISIBLE && enable_safe sys/soundcard.h
#include <sys/soundcard.h>
audio_buf_info abc;
EOF
fi
2007-09-07 13:47:14 +00:00
check_header soundcard.h
2007-02-10 22:24:45 +00:00
2013-06-20 13:42:21 +02:00
enabled_any alsa_indev alsa_outdev &&
2016-12-08 10:16:34 +01:00
check_lib alsa alsa/asoundlib.h snd_pcm_htimestamp -lasound
2009-01-26 09:16:09 +00:00
2016-12-08 10:16:34 +01:00
enabled jack_indev && check_lib jack jack/jack.h jack_client_open -ljack &&
2012-06-11 18:22:31 -04:00
check_func jack_port_get_latency_range -ljack
2009-04-02 23:53:47 +00:00
2016-12-08 10:16:34 +01:00
enabled_any sndio_indev sndio_outdev && check_lib sndio sndio.h sio_open -lsndio
2011-03-26 19:03:41 -04:00
2013-01-17 11:24:01 +01:00
if enabled libcdio; then
2016-12-08 10:16:34 +01:00
check_lib libcdio "cdio/cdda.h cdio/paranoia.h" cdio_cddap_open -lcdio_paranoia -lcdio_cdda -lcdio ||
check_lib libcdio "cdio/paranoia/cdda.h cdio/paranoia/paranoia.h" cdio_cddap_open -lcdio_paranoia -lcdio_cdda -lcdio ||
2015-02-22 19:49:52 +00:00
die "ERROR: No usable libcdio/cdparanoia found"
2013-01-17 11:24:01 +01:00
fi
2011-09-13 17:23:06 +02:00
2014-10-30 00:26:27 +01:00
if ! disabled libxcb; then
2015-01-03 09:52:32 +01:00
check_pkg_config "xcb >= 1.4" xcb/xcb.h xcb_connect || {
enabled libxcb && die "ERROR: libxcb >= 1.4 not found" ;
2016-07-27 11:25:19 +02:00
} && enable libxcb
2014-08-24 14:18:22 +02:00
2014-10-30 00:26:27 +01:00
if enabled libxcb; then
2014-10-30 10:03:45 +01:00
disabled libxcb_shm || {
2014-08-24 14:18:22 +02:00
check_pkg_config xcb-shm xcb/shm.h xcb_shm_attach || {
enabled libxcb_shm && die "ERROR: libxcb_shm not found" ;
2014-10-30 10:03:45 +01:00
} && check_header sys/shm.h && enable libxcb_shm; }
2014-08-24 14:18:22 +02:00
2014-10-30 10:03:45 +01:00
disabled libxcb_xfixes || {
2014-08-24 14:18:22 +02:00
check_pkg_config xcb-xfixes xcb/xfixes.h xcb_xfixes_get_cursor_image || {
enabled libxcb_xfixes && die "ERROR: libxcb_xfixes not found" ;
2014-10-30 10:03:45 +01:00
} && enable libxcb_xfixes; }
2014-08-24 14:18:22 +02:00
2014-11-24 02:00:05 -06:00
disabled libxcb_shape || {
check_pkg_config xcb-shape xcb/shape.h xcb_shape_get_rectangles || {
enabled libxcb_shape && die "ERROR: libxcb_shape not found" ;
} && enable libxcb_shape; }
add_cflags $xcb_cflags $xcb_shm_cflags $xcb_xfixes_cflags $xcb_shape_cflags
2017-04-17 10:22:52 +02:00
add_extralibs $xcb_extralibs $xcb_shm_extralibs $xcb_xfixes_extralibs $xcb_shape_extralibs
2014-08-24 14:18:22 +02:00
fi
2014-10-30 00:26:27 +01:00
fi
2014-08-24 14:18:22 +02:00
2014-04-02 14:53:10 -04:00
check_func_headers "windows.h" CreateDIBSection " $gdigrab_indev_extralibs "
2017-06-09 12:05:00 +03:00
# d3d11va requires linking directly to dxgi and d3d11 if not building for
# the desktop api partition
2017-07-04 20:03:00 +03:00
check_cpp <<EOF && enable uwp && d3d11va_extralibs="-ldxgi -ld3d11"
#ifdef WINAPI_FAMILY
#include <winapifamily.h>
#if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP)
#error desktop, not uwp
#else
// WINAPI_FAMILY_APP, WINAPI_FAMILY_PHONE_APP => UWP
#endif
#else
#error no family set
#endif
EOF
2017-06-09 12:05:00 +03:00
2013-05-17 02:32:21 +02:00
enabled vaapi &&
2017-04-26 16:57:11 +02:00
check_lib vaapi va/va.h vaInitialize -lva
2011-03-30 09:19:50 +02:00
2016-02-15 19:32:45 +00:00
enabled vaapi &&
check_code cc "va/va.h" "vaCreateSurfaces(0, 0, 0, 0, 0, 0, 0, 0)" ||
disable vaapi
2016-11-07 20:22:14 +01:00
enabled vaapi &&
2016-12-08 10:16:34 +01:00
check_lib vaapi_drm "va/va.h va/va_drm.h" vaGetDisplayDRM -lva -lva-drm
2016-03-23 23:48:13 +00:00
2016-11-23 12:15:00 +01:00
enabled vaapi &&
2016-12-08 10:16:34 +01:00
check_lib vaapi_x11 "va/va.h va/va_x11.h" vaGetDisplay -lva -lva-x11 -lX11
2016-11-23 12:15:00 +01:00
2013-02-21 12:34:42 +01:00
enabled vdpau &&
2012-08-19 21:35:30 +02:00
check_cpp_condition vdpau/vdpau.h "defined VDP_DECODER_PROFILE_MPEG4_PART2_ASP" ||
2013-02-21 12:34:42 +01:00
disable vdpau
2009-12-14 06:33:43 +00:00
2016-11-23 12:15:00 +01:00
enabled vdpau &&
2016-12-08 10:16:34 +01:00
check_lib vdpau_x11 "vdpau/vdpau.h vdpau/vdpau_x11.h" vdp_device_create_x11 -lvdpau -lX11
2013-11-03 19:21:00 +01:00
2016-08-31 15:40:00 +02:00
if enabled x86; then
case $target_os in
mingw32*| mingw64*| win32| win64| linux| cygwin*)
;;
*)
2016-10-10 12:58:26 +02:00
disable cuda cuvid nvenc
2016-08-31 15:40:00 +02:00
;;
esac
else
2016-10-10 12:58:26 +02:00
disable cuda cuvid nvenc
2016-08-27 14:39:35 +02:00
fi
2016-08-31 15:40:00 +02:00
enabled nvenc &&
check_cc -I$source_path <<EOF || disable nvenc
#include "compat/nvenc/nvEncodeAPI.h"
NV_ENCODE_API_FUNCTION_LIST flist;
void f(void) { struct { const GUID guid; } s[] = { { NV_ENC_PRESET_HQ_GUID } }; }
int main(void) { return 0; }
EOF
2013-03-06 00:57:51 +01:00
# Funny iconv installations are not unusual, so check it after all flags have been set
2017-04-26 16:57:11 +02:00
disabled iconv || check_func_headers iconv.h iconv || check_lib iconv iconv.h iconv -liconv
2013-03-06 00:57:51 +01:00
2009-09-10 02:42:19 +00:00
enabled debug && add_cflags -g" $debuglevel " && add_asflags -g" $debuglevel "
2006-06-16 19:26:31 +00:00
# add some useful compiler flags if supported
check_cflags -Wdeclaration-after-statement
2006-06-01 19:28:41 +00:00
check_cflags -Wall
2006-08-30 23:02:52 +00:00
check_cflags -Wdisabled-optimization
check_cflags -Wpointer-arith
check_cflags -Wredundant-decls
2008-02-03 21:33:26 +00:00
check_cflags -Wwrite-strings
2008-02-03 22:31:25 +00:00
check_cflags -Wtype-limits
2009-01-16 00:37:38 +00:00
check_cflags -Wundef
2010-02-23 21:03:25 +00:00
check_cflags -Wmissing-prototypes
2011-05-04 22:06:41 +02:00
check_cflags -Wno-pointer-to-int-cast
2011-10-10 10:31:31 +02:00
check_cflags -Wstrict-prototypes
2014-04-04 01:18:02 +02:00
check_cflags -Wempty-body
2015-03-16 19:21:14 +01:00
if enabled extra_warnings; then
check_cflags -Wcast-qual
check_cflags -Wextra
check_cflags -Wpedantic
fi
2003-10-18 18:47:06 +00:00
2013-10-31 20:14:37 +01:00
check_disable_warning(){
warning_flag = -W${ 1 #-Wno- }
test_cflags $warning_flag && add_cflags $1
}
check_disable_warning -Wno-parentheses
check_disable_warning -Wno-switch
check_disable_warning -Wno-format-zero-length
check_disable_warning -Wno-pointer-sign
2016-01-18 16:25:11 -03:00
check_disable_warning -Wno-unused-const-variable
2013-10-31 20:14:37 +01:00
2016-03-09 15:39:29 +01:00
check_disable_warning_headers(){
warning_flag = -W${ 1 #-Wno- }
2016-12-04 11:06:47 +01:00
test_cflags $warning_flag && add_cflags_headers $1
2016-03-09 15:39:29 +01:00
}
check_disable_warning_headers -Wno-deprecated-declarations
check_disable_warning_headers -Wno-unused-variable
2017-01-25 18:40:51 +01:00
check_cc <<EOF && enable blocks_extension
void (^block)(void);
EOF
2006-06-16 19:26:31 +00:00
# add some linker flags
2007-06-15 20:43:58 +00:00
check_ldflags -Wl,--warn-common
2012-04-26 22:24:58 +02:00
check_ldflags -Wl,-rpath-link= libpostproc:libswresample:libswscale:libavfilter:libavdevice:libavformat:libavcodec:libavutil:libavresample
2014-08-23 10:04:26 -04:00
enabled rpath && add_ldexeflags -Wl,-rpath,$libdir
2015-06-27 12:27:59 -04:00
enabled rpath && add_ldlibflags -Wl,-rpath,$libdir
2010-10-15 11:31:58 +01:00
test_ldflags -Wl,-Bsymbolic && append SHFLAGS -Wl,-Bsymbolic
2003-06-10 08:32:12 +00:00
2013-11-25 08:46:14 +00:00
# add some strip flags
2017-05-16 12:08:37 +01:00
check_stripflags -x
2013-11-25 08:46:14 +00:00
2013-12-20 13:51:50 +02:00
enabled neon_clobber_test &&
check_ldflags -Wl,--wrap,avcodec_open2 \
-Wl,--wrap,avcodec_decode_audio4 \
-Wl,--wrap,avcodec_decode_video2 \
-Wl,--wrap,avcodec_decode_subtitle2 \
-Wl,--wrap,avcodec_encode_audio2 \
-Wl,--wrap,avcodec_encode_video2 \
2014-01-11 22:43:26 +02:00
-Wl,--wrap,avcodec_encode_subtitle \
2016-09-21 20:44:36 +02:00
-Wl,--wrap,avcodec_send_packet \
-Wl,--wrap,avcodec_receive_packet \
-Wl,--wrap,avcodec_send_frame \
-Wl,--wrap,avcodec_receive_frame \
2014-01-18 18:17:54 +01:00
-Wl,--wrap,swr_convert \
2014-01-11 22:43:26 +02:00
-Wl,--wrap,avresample_convert ||
2013-12-20 13:51:50 +02:00
disable neon_clobber_test
2012-07-16 16:51:33 +02:00
enabled xmm_clobber_test &&
2012-02-02 11:48:13 -08:00
check_ldflags -Wl,--wrap,avcodec_open2 \
-Wl,--wrap,avcodec_decode_audio4 \
-Wl,--wrap,avcodec_decode_video2 \
-Wl,--wrap,avcodec_decode_subtitle2 \
-Wl,--wrap,avcodec_encode_audio2 \
2013-09-10 12:31:46 +02:00
-Wl,--wrap,avcodec_encode_video2 \
2012-02-02 11:48:13 -08:00
-Wl,--wrap,avcodec_encode_subtitle \
2016-07-03 16:43:08 -03:00
-Wl,--wrap,avcodec_send_packet \
2016-10-01 13:23:56 -03:00
-Wl,--wrap,avcodec_receive_packet \
2016-09-21 20:44:36 +02:00
-Wl,--wrap,avcodec_send_frame \
-Wl,--wrap,avcodec_receive_frame \
2014-01-18 18:17:54 +01:00
-Wl,--wrap,swr_convert \
2014-01-11 22:43:26 +02:00
-Wl,--wrap,avresample_convert \
2012-07-16 16:51:33 +02:00
-Wl,--wrap,sws_scale ||
2012-02-02 11:48:13 -08:00
disable xmm_clobber_test
2016-06-27 19:48:21 +02:00
check_ld "cc" <<EOF && enable proper_dce
2016-05-27 20:14:21 +02:00
extern const int array[512];
static inline int func(void) { return array[0]; }
int main(void) { return 0; }
EOF
if enabled proper_dce; then
echo "X { local: *; };" > $TMPV
if test_ldflags -Wl,${ version_script } ,$TMPV ; then
append SHFLAGS '-Wl,${version_script},\$(SUBDIR)lib\$(NAME).ver'
check_cc <<EOF && enable symver_asm_label
2010-06-15 13:26:52 +00:00
void ff_foo(void) __asm__ ("av_foo@VERSION");
2010-06-15 18:06:28 +00:00
void ff_foo(void) { ${inline_asm+__asm__($quotes);} }
2010-06-15 13:26:52 +00:00
EOF
2016-05-27 20:14:21 +02:00
check_cc <<EOF && enable symver_gnu_asm
2010-06-15 13:26:52 +00:00
__asm__(".symver ff_foo,av_foo@VERSION");
void ff_foo(void) {}
EOF
2016-05-27 20:14:21 +02:00
fi
2016-05-27 11:38:38 +02:00
fi
2010-01-16 04:49:02 +00:00
2012-09-20 15:50:14 +01:00
if [ -z " $optflags " ] ; then
if enabled small; then
optflags = $cflags_size
elif enabled optimizations; then
optflags = $cflags_speed
else
optflags = $cflags_noopt
fi
2003-09-09 19:03:14 +00:00
fi
2012-09-20 15:50:14 +01:00
2017-05-11 22:53:41 +02:00
if [ -z " $nvccflags " ] ; then
nvccflags = $nvccflags_default
fi
if enabled x86_64 || enabled ppc64 || enabled aarch64; then
nvccflags = " $nvccflags -m64"
else
nvccflags = " $nvccflags -m32"
fi
2012-09-20 15:50:14 +01:00
check_optflags(){
check_cflags " $@ "
enabled lto && check_ldflags " $@ "
}
2016-12-15 12:20:06 +01:00
check_optflags $optflags
check_optflags -fno-math-errno
check_optflags -fno-signed-zeros
2012-09-20 15:50:14 +01:00
if enabled lto; then
test " $cc_type " != " $ld_type " && die "LTO requires same compiler and linker"
check_cflags -flto
check_ldflags -flto $cpuflags
2014-05-04 17:09:21 +02:00
disable inline_asm_direct_symbol_refs
2012-09-20 15:50:14 +01:00
fi
2012-10-09 05:43:30 +02:00
enabled ftrapv && check_cflags -ftrapv
2011-09-21 19:10:58 +02:00
check_cc -mno-red-zone <<EOF && noredzone_flags="-mno-red-zone"
int x;
EOF
2003-09-09 19:03:14 +00:00
2009-02-21 21:07:32 +00:00
if enabled icc; then
2009-02-21 22:12:47 +00:00
# Just warnings, no remarks
check_cflags -w1
# -wd: Disable following warnings
# 144, 167, 556: -Wno-pointer-sign
2013-01-03 15:57:42 +01:00
# 188: enumerated type mixed with another type
2011-03-23 11:24:10 +00:00
# 1292: attribute "foo" ignored
2012-04-25 21:15:39 +01:00
# 1419: external declaration in primary source file
2009-02-21 22:12:47 +00:00
# 10006: ignoring unknown option -fno-signed-zeros
2010-11-04 10:38:39 +00:00
# 10148: ignoring unknown option -Wno-parentheses
2009-02-21 22:12:47 +00:00
# 10156: ignoring option '-W'; no argument required
2015-03-16 15:38:36 +01:00
# 13200: No EMMS instruction before call to function
# 13203: No EMMS instruction before return from function
check_cflags -wd144,167,188,556,1292,1419,10006,10148,10156,13200,13203
2009-02-21 22:12:47 +00:00
# 11030: Warning unknown option --as-needed
# 10156: ignoring option '-export'; no argument required
check_ldflags -wd10156,11030
2009-03-15 13:22:41 +00:00
# icc 11.0 and 11.1 work with ebp_available, but don't pass the test
enable ebp_available
2014-05-12 14:51:21 +02:00
# The test above does not test linking
enabled lto && disable symver_asm_label
2010-09-21 17:57:17 +00:00
if enabled x86_32; then
2012-07-18 20:40:38 +01:00
icc_version = $( $cc -dumpversion)
2012-07-16 16:51:33 +02:00
test ${ icc_version %%.* } -ge 11 &&
check_cflags -falign-stack= maintain-16-byte ||
2010-09-21 17:57:17 +00:00
disable aligned_stack
fi
2009-02-22 00:13:19 +00:00
elif enabled ccc; then
# disable some annoying warnings
2012-10-23 00:05:44 +01:00
add_cflags -msg_disable bitnotint
add_cflags -msg_disable mixfuncvoid
add_cflags -msg_disable nonstandcast
add_cflags -msg_disable unsupieee
2009-07-15 19:02:07 +00:00
elif enabled gcc; then
2016-07-09 16:00:06 -03:00
check_optflags -fno-tree-vectorize
2014-07-12 22:11:56 +02:00
check_cflags -Werror= format-security
2014-07-12 23:24:16 +02:00
check_cflags -Werror= implicit-function-declaration
2010-03-08 02:36:27 +00:00
check_cflags -Werror= missing-prototypes
2013-01-14 20:38:33 +01:00
check_cflags -Werror= return -type
2012-10-06 14:03:32 +02:00
check_cflags -Werror= vla
2014-07-12 22:11:56 +02:00
check_cflags -Wformat
2015-03-09 01:02:01 +00:00
check_cflags -fdiagnostics-color= auto
2013-11-02 12:16:00 +01:00
enabled extra_warnings || check_disable_warning -Wno-maybe-uninitialized
2010-09-02 21:41:07 +00:00
elif enabled llvm_gcc; then
check_cflags -mllvm -stack-alignment= 16
2009-10-22 21:19:13 +00:00
elif enabled clang; then
2010-09-02 19:40:18 +00:00
check_cflags -mllvm -stack-alignment= 16
2016-10-06 18:44:29 +02:00
check_cflags -mstack-alignment= 16
2009-10-22 21:19:13 +00:00
check_cflags -Qunused-arguments
2012-11-13 19:01:51 +02:00
check_cflags -Werror= implicit-function-declaration
check_cflags -Werror= missing-prototypes
2013-01-14 20:38:33 +01:00
check_cflags -Werror= return -type
2013-09-12 20:17:15 +02:00
elif enabled cparser; then
add_cflags -Wno-missing-variable-declarations
add_cflags -Wno-empty-statement
2010-01-20 20:06:11 +00:00
elif enabled armcc; then
2014-04-18 23:40:59 +03:00
add_cflags -W${ armcc_opt } ,--diag_suppress= 4343 # hardfp compat
add_cflags -W${ armcc_opt } ,--diag_suppress= 3036 # using . as system include dir
2014-06-18 16:21:00 +02:00
# 2523: use of inline assembly is deprecated
2010-08-26 12:52:10 +00:00
add_cflags -W${ armcc_opt } ,--diag_suppress= 2523
add_cflags -W${ armcc_opt } ,--diag_suppress= 1207
2011-01-15 14:55:08 +00:00
add_cflags -W${ armcc_opt } ,--diag_suppress= 1293 # assignment in condition
2011-01-16 12:50:49 +00:00
add_cflags -W${ armcc_opt } ,--diag_suppress= 3343 # hardfp compat
2011-06-25 18:51:00 +01:00
add_cflags -W${ armcc_opt } ,--diag_suppress= 167 # pointer sign
add_cflags -W${ armcc_opt } ,--diag_suppress= 513 # pointer sign
2010-01-22 03:25:27 +00:00
elif enabled tms470; then
add_cflags -pds= 824 -pds= 837
2013-12-09 15:03:22 +01:00
disable inline_asm
2011-01-23 23:13:33 +00:00
elif enabled pathscale; then
add_cflags -fstrict-overflow -OPT:wrap_around_unsafe_opt= OFF
2013-06-19 21:07:49 +00:00
elif enabled_any msvc icl; then
2012-09-11 11:10:12 +03:00
enabled x86_32 && disable aligned_stack
2013-06-24 21:10:12 +00:00
enabled_all x86_32 debug && add_cflags -Oy-
2013-07-19 15:44:39 +02:00
enabled debug && add_ldflags -debug
2013-09-19 16:58:21 -04:00
enable pragma_deprecated
2013-06-19 21:07:49 +00:00
if enabled icl; then
2013-09-24 04:30:38 -04:00
# -Qansi-alias is basically -fstrict-aliasing, but does not work
# (correctly) on icl 13.x.
check_cpp_condition "windows.h" "__ICL < 1300 || __ICL >= 1400" &&
add_cflags -Qansi-alias
2014-05-03 19:37:53 +10:00
# Some inline asm is not compilable in debug
if enabled debug; then
disable ebp_available
disable ebx_available
fi
2013-06-19 21:07:49 +00:00
fi
2014-05-11 17:40:20 +10:00
# msvcrt10 x64 incorrectly enables log2, only msvcrt12 (MSVC 2013) onwards actually has log2.
2014-05-12 17:35:52 +10:00
check_cpp_condition crtversion.h "_VC_CRT_MAJOR_VERSION >= 12" || disable log2
2015-07-25 22:09:21 +03:00
# The CRT headers contain __declspec(restrict) in a few places, but if redefining
# restrict, this might break. MSVC 2010 and 2012 fail with __declspec(__restrict)
# (as it ends up if the restrict redefine is done before including stdlib.h), while
# MSVC 2013 and newer can handle it fine.
# If this declspec fails, force including stdlib.h before the restrict redefinition
# happens in config.h.
if [ $_restrict != restrict ] ; then
check_cc <<EOF || add_cflags -FIstdlib.h
__declspec($_restrict) void* foo(int);
EOF
fi
2016-06-28 11:48:29 +02:00
# the new SSA optimzer in VS2015 U3 is mis-optimizing some parts of the code
2017-01-12 01:02:23 +01:00
# Issue has been fixed in MSVC v19.00.24218.
check_cpp_condition windows.h "_MSC_FULL_VER >= 190024218" ||
check_cflags -d2SSAOptimizer-
2017-02-03 09:37:53 +01:00
# enable utf-8 source processing on VS2015 U2 and newer
check_cpp_condition windows.h "_MSC_FULL_VER >= 190023918" &&
add_cflags -utf-8
2008-05-11 13:08:18 +00:00
fi
2015-07-25 22:47:47 +03:00
for pfx in "" host_; do
2015-07-27 09:40:28 +03:00
varname = ${ pfx %_ } cc_type
2015-07-25 22:47:47 +03:00
eval "type=\$ $varname "
2017-01-25 15:11:23 +02:00
if [ " $type " = "msvc" ] ; then
2015-07-25 22:47:47 +03:00
check_${ pfx } cc <<EOF || add_${pfx}cflags -Dinline=__inline
static inline int foo(int a) { return a; }
EOF
fi
done
2014-02-07 19:23:28 +01:00
case $as_type in
clang)
add_asflags -Qunused-arguments
;;
esac
case $ld_type in
clang)
check_ldflags -Qunused-arguments
;;
esac
2012-10-15 02:38:17 +01:00
case $target_os in
2012-10-23 00:05:44 +01:00
osf1)
enabled ccc && add_ldflags '-Wl,-expect_unresolved,*'
;;
2012-10-15 02:38:17 +01:00
esac
2013-03-13 21:59:33 -07:00
enable frame_thread_encoder
2013-10-25 16:54:45 +02:00
2012-08-31 01:56:03 +01:00
enabled asm || { arch = c; disable $ARCH_LIST $ARCH_EXT_LIST ; }
2007-11-23 11:09:28 +00:00
check_deps $CONFIG_LIST \
2008-10-24 23:18:21 +00:00
$CONFIG_EXTRA \
2007-11-23 11:09:28 +00:00
$HAVE_LIST \
2011-09-12 17:52:44 +02:00
$ALL_COMPONENTS \
2007-02-11 16:24:15 +00:00
2013-12-20 12:48:16 +01:00
enabled threads && ! enabled pthreads && ! enabled atomics_native && die "non pthread threading without atomics not supported, try adding --enable-pthreads or --cpu=i486 or higher if you are on x86"
2010-01-18 23:12:55 +00:00
2011-10-04 21:34:55 +02:00
if test $target_os = "haiku" ; then
2011-06-21 16:36:23 +02:00
disable memalign
disable posix_memalign
fi
2012-02-05 16:52:26 +01:00
# add_dep lib dep
# -> enable ${lib}_deps_${dep}
# -> add $dep to ${lib}_deps only once
add_dep() {
lib = $1
dep = $2
enabled " ${ lib } _deps_ ${ dep } " && return 0
enable " ${ lib } _deps_ ${ dep } "
prepend " ${ lib } _deps" $dep
}
# merge deps lib components
# merge all ${component}_deps into ${lib}_deps and ${lib}_deps_*
merge_deps() {
lib = $1
shift
for comp in $* ; do
enabled $comp || continue
eval "dep=\"\$ ${ comp } _deps\""
for d in $dep ; do
add_dep $lib $d
done
done
}
merge_deps libavfilter $FILTER_LIST
2014-05-13 23:03:28 +02:00
map 'enabled $v && intrinsics=${v#intrinsics_}' $INTRINSICS_LIST
2013-12-23 04:24:53 +01:00
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
2016-11-28 13:24:22 -08:00
if disabled stdatomic_h; then
if enabled atomics_gcc; then
add_cppflags '-I\$(SRC_PATH)/compat/atomics/gcc'
2016-11-28 15:29:53 -08:00
elif enabled atomics_win32; then
add_cppflags '-I\$(SRC_PATH)/compat/atomics/win32'
2016-11-28 15:29:54 -08:00
elif enabled atomics_suncc; then
add_cppflags '-I\$(SRC_PATH)/compat/atomics/suncc'
2016-11-28 15:29:55 -08:00
elif enabled pthreads; then
add_compat atomics/pthread/stdatomic.o
add_cppflags '-I\$(SRC_PATH)/compat/atomics/pthread'
2016-11-28 15:29:56 -08:00
else
enabled threads && die "Threading is enabled, but no atomics are available"
add_cppflags '-I\$(SRC_PATH)/compat/atomics/dummy'
2016-11-28 13:24:22 -08:00
fi
fi
2016-11-30 23:50:17 +01:00
# Check if requested libraries were found.
for lib in $AUTODETECT_LIBS ; do
requested $lib && ! enabled $lib && die "ERROR: $lib requested but not found" ;
done
2014-07-30 05:10:18 -07:00
enabled zlib && add_cppflags -DZLIB_CONST
2014-05-01 13:18:57 +02:00
# conditional library dependencies, in linking order
2016-01-16 15:09:25 +01:00
enabled afftfilt_filter && prepend avfilter_deps "avcodec"
2017-01-26 17:03:08 +01:00
enabled afir_filter && prepend avfilter_deps "avcodec"
2014-05-13 21:36:14 +02:00
enabled amovie_filter && prepend avfilter_deps "avformat avcodec"
enabled aresample_filter && prepend avfilter_deps "swresample"
enabled atempo_filter && prepend avfilter_deps "avcodec"
2015-05-03 01:42:51 +02:00
enabled cover_rect_filter && prepend avfilter_deps "avformat avcodec"
2014-05-13 23:13:44 +02:00
enabled ebur128_filter && enabled swresample && prepend avfilter_deps "swresample"
2014-05-13 21:36:14 +02:00
enabled elbg_filter && prepend avfilter_deps "avcodec"
2015-03-09 09:05:35 +05:30
enabled fftfilt_filter && prepend avfilter_deps "avcodec"
2015-05-03 01:42:51 +02:00
enabled find_rect_filter && prepend avfilter_deps "avformat avcodec"
2017-05-06 23:52:38 -03:00
enabled firequalizer_filter && prepend avfilter_deps "avcodec"
2014-05-13 21:36:14 +02:00
enabled mcdeint_filter && prepend avfilter_deps "avcodec"
2014-05-01 13:18:57 +02:00
enabled movie_filter && prepend avfilter_deps "avformat avcodec"
2014-05-13 21:36:14 +02:00
enabled pan_filter && prepend avfilter_deps "swresample"
enabled pp_filter && prepend avfilter_deps "postproc"
enabled removelogo_filter && prepend avfilter_deps "avformat avcodec swscale"
2014-05-01 13:18:57 +02:00
enabled resample_filter && prepend avfilter_deps "avresample"
2014-05-13 21:36:14 +02:00
enabled sab_filter && prepend avfilter_deps "swscale"
2014-05-01 13:18:57 +02:00
enabled scale_filter && prepend avfilter_deps "swscale"
2015-08-15 18:38:06 +02:00
enabled scale2ref_filter && prepend avfilter_deps "swscale"
2015-12-14 22:41:52 +01:00
enabled sofalizer_filter && prepend avfilter_deps "avcodec"
2016-01-21 00:49:02 -03:00
enabled showcqt_filter && prepend avfilter_deps "avformat avcodec swscale"
2015-12-14 22:41:52 +01:00
enabled showfreqs_filter && prepend avfilter_deps "avcodec"
2014-05-13 21:36:14 +02:00
enabled showspectrum_filter && prepend avfilter_deps "avcodec"
2017-05-06 23:52:38 -03:00
enabled signature_filter && prepend avfilter_deps "avcodec avformat"
2014-05-13 21:36:14 +02:00
enabled smartblur_filter && prepend avfilter_deps "swscale"
2016-01-10 14:48:12 +01:00
enabled spectrumsynth_filter && prepend avfilter_deps "avcodec"
2017-05-06 23:52:38 -03:00
enabled spp_filter && prepend avfilter_deps "avcodec"
2014-05-13 21:36:14 +02:00
enabled subtitles_filter && prepend avfilter_deps "avformat avcodec"
2014-12-12 01:45:49 +01:00
enabled uspp_filter && prepend avfilter_deps "avcodec"
2017-05-06 23:52:38 -03:00
enabled zoompan_filter && prepend avfilter_deps "swscale"
2014-05-13 21:36:14 +02:00
enabled lavfi_indev && prepend avdevice_deps "avfilter"
2014-05-01 13:18:57 +02:00
2014-05-15 18:28:45 +02:00
enabled opus_decoder && prepend avcodec_deps "swresample"
2014-04-17 12:51:03 +02:00
2014-05-01 13:18:57 +02:00
expand_deps(){
lib_deps = ${ 1 } _deps
eval "deps=\$ $lib_deps "
append $lib_deps $( map 'eval echo \$${v}_deps' $deps )
unique $lib_deps
}
2014-05-13 21:36:14 +02:00
#we have to remove gpl from the deps here as some code assumes all lib deps are libs
postproc_deps = " $( filter_out 'gpl' $postproc_deps ) "
2014-05-01 13:18:57 +02:00
map 'expand_deps $v' $LIBRARY_LIST
2017-03-31 10:22:32 +02:00
license = "LGPL version 2.1 or later"
if enabled nonfree; then
license = "nonfree and unredistributable"
elif enabled gplv3; then
license = "GPL version 3 or later"
elif enabled lgplv3; then
license = "LGPL version 3 or later"
elif enabled gpl; then
license = "GPL version 2 or later"
fi
2016-11-06 18:33:05 +01:00
if test " $quiet " != "yes" ; then
2008-03-25 22:49:54 +00:00
echo "install prefix $prefix "
2007-01-06 21:53:48 +00:00
echo "source path $source_path "
echo "C compiler $cc "
2013-02-28 16:16:10 +01:00
echo "C library $libc_type "
2013-02-28 16:06:39 +01:00
if test " $host_cc " != " $cc " ; then
echo "host C compiler $host_cc "
2013-02-28 16:16:10 +01:00
echo "host C library $host_libc_type "
2013-02-28 16:06:39 +01:00
fi
2007-01-06 21:53:48 +00:00
echo "ARCH $arch ( $cpu )"
2008-03-25 22:49:51 +00:00
if test " $build_suffix " != "" ; then
echo "build suffix $build_suffix "
2005-05-08 15:04:59 +00:00
fi
2011-08-29 17:52:03 +02:00
if test " $progs_suffix " != "" ; then
echo "progs suffix $progs_suffix "
fi
2008-09-26 21:37:50 +00:00
if test " $extra_version " != "" ; then
echo "version string suffix $extra_version "
fi
2007-06-17 23:14:08 +00:00
echo "big-endian ${ bigendian -no } "
2009-04-08 20:26:18 +00:00
echo "runtime cpu detection ${ runtime_cpudetect -no } "
2009-01-11 21:55:14 +00:00
if enabled x86; then
2016-10-08 14:18:33 +00:00
echo "standalone assembly ${ x86asm -no } "
2017-06-20 19:14:32 -03:00
echo "x86 assembler ${ x86asmexe } "
2007-06-17 23:14:08 +00:00
echo "MMX enabled ${ mmx -no } "
2012-07-08 18:42:12 +02:00
echo "MMXEXT enabled ${ mmxext -no } "
2009-01-25 19:48:26 +00:00
echo "3DNow! enabled ${ amd3dnow -no } "
2009-02-18 00:03:09 +00:00
echo "3DNow! extended enabled ${ amd3dnowext -no } "
2009-01-07 23:38:54 +00:00
echo "SSE enabled ${ sse -no } "
2009-01-25 18:15:41 +00:00
echo "SSSE3 enabled ${ ssse3 -no } "
2015-10-26 02:08:58 -05:00
echo "AESNI enabled ${ aesni -no } "
2011-05-15 11:46:18 +02:00
echo "AVX enabled ${ avx -no } "
2017-08-26 21:26:00 +02:00
echo "AVX2 enabled ${ avx2 -no } "
2014-02-06 01:33:59 -03:00
echo "XOP enabled ${ xop -no } "
2014-02-22 02:47:01 -03:00
echo "FMA3 enabled ${ fma3 -no } "
2012-06-18 23:39:14 -04:00
echo "FMA4 enabled ${ fma4 -no } "
2013-04-26 16:49:02 +02:00
echo "i686 features enabled ${ i686 -no } "
2007-06-17 23:14:08 +00:00
echo "CMOV is fast ${ fast_cmov -no } "
2007-08-26 23:09:34 +00:00
echo "EBX available ${ ebx_available -no } "
echo "EBP available ${ ebp_available -no } "
2002-10-01 08:46:41 +00:00
fi
2013-12-10 20:13:32 +01:00
if enabled aarch64; then
echo "NEON enabled ${ neon -no } "
echo "VFP enabled ${ vfp -no } "
fi
2009-01-11 21:55:14 +00:00
if enabled arm; then
2007-06-17 23:14:08 +00:00
echo "ARMv5TE enabled ${ armv5te -no } "
echo "ARMv6 enabled ${ armv6 -no } "
2008-12-30 03:13:44 +00:00
echo "ARMv6T2 enabled ${ armv6t2 -no } "
2012-12-04 23:29:34 +00:00
echo "VFP enabled ${ vfp -no } "
2008-06-05 19:51:15 +00:00
echo "NEON enabled ${ neon -no } "
2012-12-14 02:37:32 +01:00
echo "THUMB enabled ${ thumb -no } "
2005-06-28 22:46:36 +00:00
fi
2009-01-11 21:55:14 +00:00
if enabled mips; then
2012-06-04 18:02:56 +02:00
echo "MIPS FPU enabled ${ mipsfpu -no } "
2015-12-03 13:22:16 +00:00
echo "MIPS DSP R1 enabled ${ mipsdsp -no } "
2012-06-04 18:02:56 +02:00
echo "MIPS DSP R2 enabled ${ mipsdspr2 -no } "
2015-04-09 19:46:24 +05:30
echo "MIPS MSA enabled ${ msa -no } "
2015-07-03 18:11:27 +08:00
echo "LOONGSON MMI enabled ${ mmi -no } "
2002-10-01 08:46:41 +00:00
fi
2009-01-11 21:55:14 +00:00
if enabled ppc; then
2007-06-17 23:14:08 +00:00
echo "AltiVec enabled ${ altivec -no } "
2015-05-10 02:47:31 +02:00
echo "VSX enabled ${ vsx -no } "
echo "POWER8 enabled ${ power8 -no } "
2009-01-25 18:15:41 +00:00
echo "PPC 4xx optimizations ${ ppc4xx -no } "
2007-06-17 23:14:08 +00:00
echo "dcbzl available ${ dcbzl -no } "
2009-01-25 18:15:41 +00:00
fi
2007-06-17 23:14:08 +00:00
echo "debug symbols ${ debug -no } "
2011-04-01 00:24:12 +02:00
echo "strip symbols ${ stripping -no } "
2011-06-19 18:41:14 +01:00
echo "optimize for size ${ small -no } "
2007-10-24 19:17:15 +00:00
echo "optimizations ${ optimizations -no } "
2007-06-17 23:14:08 +00:00
echo "static ${ static -no } "
echo "shared ${ shared -no } "
2008-03-08 18:50:38 +00:00
echo "postprocessing support ${ postproc -no } "
2007-06-17 23:14:08 +00:00
echo "network support ${ network -no } "
echo "threading support ${ thread_type -no } "
2011-12-21 15:32:39 +02:00
echo "safe bitstream reader ${ safe_bitstream_reader -no } "
2012-07-16 14:45:41 +02:00
echo "texi2html enabled ${ texi2html -no } "
2012-08-09 23:37:28 +02:00
echo "perl enabled ${ perl -no } "
2012-07-16 14:45:41 +02:00
echo "pod2man enabled ${ pod2man -no } "
echo "makeinfo enabled ${ makeinfo -no } "
2014-08-31 19:39:35 -07:00
echo "makeinfo supports HTML ${ makeinfo_html -no } "
2012-05-09 04:29:53 +01:00
test -n " $random_seed " &&
echo "random seed ${ random_seed } "
2008-02-27 22:41:14 +00:00
echo
2001-07-22 14:18:56 +00:00
2012-10-27 22:25:27 +01:00
echo "External libraries:"
2015-09-14 16:34:50 -07:00
print_enabled '' $EXTERNAL_LIBRARY_LIST | print_in_columns
2012-10-27 22:25:27 +01:00
echo
2016-05-03 08:06:15 +02:00
echo "External libraries providing hardware acceleration:"
2016-06-25 11:32:26 +02:00
print_enabled '' $HWACCEL_LIBRARY_LIST | print_in_columns
2016-05-03 08:06:15 +02:00
echo
2012-10-27 22:25:27 +01:00
2016-01-23 19:35:21 +01:00
echo "Libraries:"
2016-02-17 15:30:44 +00:00
print_enabled '' $LIBRARY_LIST | print_in_columns
2016-01-23 19:35:21 +01:00
echo
2016-11-07 22:12:23 +01:00
echo "Programs:"
2017-03-31 11:24:11 +02:00
print_enabled '' $PROGRAM_LIST | print_in_columns
2016-11-07 22:12:23 +01:00
echo
2009-04-02 08:48:06 +00:00
for type in decoder encoder hwaccel parser demuxer muxer protocol filter bsf indev outdev; do
2007-11-04 02:20:12 +00:00
echo "Enabled ${ type } s:"
2008-02-26 21:50:06 +00:00
eval list = \$ $( toupper $type ) _LIST
2015-09-14 16:34:50 -07:00
print_enabled '_*' $list | print_in_columns
2008-02-26 21:50:06 +00:00
echo
2007-11-04 02:20:12 +00:00
done
2016-12-28 00:19:49 +02:00
if test -n " $ignore_tests " ; then
ignore_tests = $( echo $ignore_tests | tr ',' ' ' )
echo "Ignored FATE tests:"
2017-05-05 09:19:41 +02:00
echo $ignore_tests | print_in_columns
2016-12-28 00:19:49 +02:00
echo
fi
2008-05-16 16:12:55 +00:00
echo "License: $license "
2008-01-07 21:37:18 +00:00
2016-10-25 22:47:00 +02:00
echo "Creating configuration files ..."
2008-01-16 09:08:19 +00:00
2016-11-06 18:33:05 +01:00
fi # test "$quiet" != "yes"
2013-11-14 13:22:11 +02:00
test -e Makefile || echo "include $source_path /Makefile" > Makefile
2010-01-19 04:40:10 +00:00
2011-04-01 00:24:12 +02:00
enabled stripping || strip = "echo skipping strip"
2017-05-03 12:51:48 +02:00
config_files = " $TMPH ffbuild/config.mak doc/config.texi"
2010-09-03 21:27:12 +00:00
2017-05-03 12:51:48 +02:00
cat > ffbuild/config.mak <<EOF
2009-10-31 15:59:03 +00:00
# Automatically generated by configure - do not modify!
2011-06-26 09:44:31 +02:00
ifndef FFMPEG_CONFIG_MAK
FFMPEG_CONFIG_MAK=1
2011-03-17 17:01:10 +01:00
FFMPEG_CONFIGURATION=$FFMPEG_CONFIGURATION
2009-10-31 15:59:03 +00:00
prefix=$prefix
LIBDIR=\$(DESTDIR)$libdir
SHLIBDIR=\$(DESTDIR)$shlibdir
INCDIR=\$(DESTDIR)$incdir
BINDIR=\$(DESTDIR)$bindir
DATADIR=\$(DESTDIR)$datadir
2013-08-28 10:30:14 +02:00
DOCDIR=\$(DESTDIR)$docdir
2009-10-31 15:59:03 +00:00
MANDIR=\$(DESTDIR)$mandir
2015-05-29 16:08:36 +02:00
PKGCONFIGDIR=\$(DESTDIR)$pkgconfigdir
2016-02-19 16:34:30 +01:00
INSTALL_NAME_DIR=$install_name_dir
2011-06-06 22:38:38 +01:00
SRC_PATH=$source_path
2016-01-25 01:42:23 +01:00
SRC_LINK=$source_link
2011-06-30 00:01:14 +02:00
ifndef MAIN_MAKEFILE
SRC_PATH:=\$(SRC_PATH:.%=..%)
endif
2010-07-26 23:44:02 +00:00
CC_IDENT=$cc_ident
2009-10-31 15:59:03 +00:00
ARCH=$arch
2014-05-13 23:03:28 +02:00
INTRINSICS=$intrinsics
2009-10-31 15:59:03 +00:00
CC=$cc
2011-08-31 04:11:25 +05:30
CXX=$cxx
2009-10-31 15:59:03 +00:00
AS=$as
2015-11-23 17:08:49 -05:00
OBJCC=$objcc
2009-10-31 15:59:03 +00:00
LD=$ld
DEPCC=$dep_cc
2012-07-20 13:43:07 +01:00
DEPCCFLAGS=$DEPCCFLAGS \$(CPPFLAGS)
DEPAS=$as
DEPASFLAGS=$DEPASFLAGS \$(CPPFLAGS)
2016-10-08 14:18:33 +00:00
X86ASM=$x86asmexe
DEPX86ASM=$x86asmexe
2016-10-13 00:45:09 +00:00
DEPX86ASMFLAGS=\$(X86ASMFLAGS)
2009-10-31 15:59:03 +00:00
AR=$ar
2012-09-17 23:56:32 +01:00
ARFLAGS=$arflags
AR_O=$ar_o
2009-10-31 15:59:03 +00:00
RANLIB=$ranlib
2013-09-12 18:06:23 +00:00
STRIP=$strip
2017-05-11 22:53:41 +02:00
NVCC=$nvcc
2011-04-01 00:24:12 +02:00
CP=cp -p
2009-10-31 15:59:03 +00:00
LN_S=$ln_s
CPPFLAGS=$CPPFLAGS
CFLAGS=$CFLAGS
2011-08-31 04:11:25 +05:30
CXXFLAGS=$CXXFLAGS
2015-11-23 17:08:49 -05:00
OBJCFLAGS=$OBJCFLAGS
2009-10-31 15:59:03 +00:00
ASFLAGS=$ASFLAGS
2017-05-11 22:53:41 +02:00
NVCCFLAGS=$nvccflags
2012-07-20 23:43:27 +01:00
AS_C=$AS_C
2012-07-20 13:43:07 +01:00
AS_O=$AS_O
2015-11-23 17:08:49 -05:00
OBJCC_C=$OBJCC_C
OBJCC_E=$OBJCC_E
OBJCC_O=$OBJCC_O
2012-07-20 23:43:27 +01:00
CC_C=$CC_C
2012-10-03 13:48:27 +01:00
CC_E=$CC_E
2009-10-31 15:59:03 +00:00
CC_O=$CC_O
2012-07-30 17:44:56 +02:00
CXX_C=$CXX_C
2011-08-31 04:11:25 +05:30
CXX_O=$CXX_O
2017-05-11 22:53:41 +02:00
NVCC_C=$NVCC_C
NVCC_O=$NVCC_O
2012-07-20 13:43:07 +01:00
LD_O=$LD_O
2016-10-13 00:45:09 +00:00
X86ASM_O=$X86ASM_O
2012-08-28 16:06:56 +01:00
LD_LIB=$LD_LIB
LD_PATH=$LD_PATH
2012-08-02 00:41:16 +02:00
DLLTOOL=$dlltool
2013-12-05 17:50:14 -03:00
WINDRES=$windres
2013-12-08 22:44:52 -03:00
DEPWINDRES=$dep_cc
2014-07-07 15:24:48 -07:00
DOXYGEN=$doxygen
2009-10-31 15:59:03 +00:00
LDFLAGS=$LDFLAGS
2014-07-16 17:00:11 +02:00
LDEXEFLAGS=$LDEXEFLAGS
2015-06-27 12:27:59 -04:00
LDLIBFLAGS=$LDLIBFLAGS
2013-01-14 12:52:00 -05:00
SHFLAGS=$(echo $($ldflags_filter $SHFLAGS))
2013-11-28 21:29:13 +01:00
ASMSTRIPFLAGS=$ASMSTRIPFLAGS
2016-10-08 14:18:33 +00:00
X86ASMFLAGS=$X86ASMFLAGS
2009-10-31 15:59:03 +00:00
BUILDSUF=$build_suffix
2011-08-29 17:52:03 +02:00
PROGSSUF=$progs_suffix
2009-10-31 15:59:03 +00:00
FULLNAME=$FULLNAME
LIBPREF=$LIBPREF
LIBSUF=$LIBSUF
LIBNAME=$LIBNAME
SLIBPREF=$SLIBPREF
SLIBSUF=$SLIBSUF
EXESUF=$EXESUF
EXTRA_VERSION=$extra_version
CCDEP=$CCDEP
2011-08-31 04:11:25 +05:30
CXXDEP=$CXXDEP
2012-07-20 13:43:07 +01:00
CCDEP_FLAGS=$CCDEP_FLAGS
2009-10-31 15:59:03 +00:00
ASDEP=$ASDEP
2012-07-20 13:43:07 +01:00
ASDEP_FLAGS=$ASDEP_FLAGS
2016-10-13 00:45:09 +00:00
X86ASMDEP=$X86ASMDEP
X86ASMDEP_FLAGS=$X86ASMDEP_FLAGS
2009-10-31 15:59:03 +00:00
CC_DEPFLAGS=$CC_DEPFLAGS
AS_DEPFLAGS=$AS_DEPFLAGS
2016-10-13 00:45:09 +00:00
X86ASM_DEPFLAGS=$X86ASM_DEPFLAGS
2009-10-31 15:59:03 +00:00
HOSTCC=$host_cc
2012-08-28 13:02:35 +01:00
HOSTLD=$host_ld
2009-10-31 15:59:03 +00:00
HOSTCFLAGS=$host_cflags
2013-02-03 15:13:17 +01:00
HOSTCPPFLAGS=$host_cppflags
2009-10-31 15:59:03 +00:00
HOSTEXESUF=$HOSTEXESUF
HOSTLDFLAGS=$host_ldflags
2016-12-06 18:19:09 +01:00
HOSTEXTRALIBS=$host_extralibs
2012-07-20 13:43:07 +01:00
DEPHOSTCC=$host_cc
DEPHOSTCCFLAGS=$DEPHOSTCCFLAGS \$(HOSTCCFLAGS)
HOSTCCDEP=$HOSTCCDEP
HOSTCCDEP_FLAGS=$HOSTCCDEP_FLAGS
HOSTCC_DEPFLAGS=$HOSTCC_DEPFLAGS
2012-07-20 23:43:27 +01:00
HOSTCC_C=$HOSTCC_C
2012-07-20 13:43:07 +01:00
HOSTCC_O=$HOSTCC_O
2012-08-28 13:02:35 +01:00
HOSTLD_O=$HOSTLD_O
2013-05-04 10:25:41 +02:00
TARGET_EXEC=$target_exec $target_exec_args
2009-10-31 15:59:03 +00:00
TARGET_PATH=$target_path
2013-05-20 01:55:32 +03:00
TARGET_SAMPLES=${target_samples:-\$(SAMPLES)}
2016-02-23 20:43:41 +00:00
CFLAGS-ffplay=${sdl2_cflags}
2016-12-04 11:06:47 +01:00
CFLAGS_HEADERS=$CFLAGS_HEADERS
2012-08-28 16:24:09 +01:00
ZLIB=$($ldflags_filter -lz)
2009-10-31 15:59:03 +00:00
LIB_INSTALL_EXTRA_CMD=$LIB_INSTALL_EXTRA_CMD
EXTRALIBS=$extralibs
2012-10-14 17:56:00 +01:00
COMPAT_OBJS=$compat_objs
2011-05-18 00:03:19 +02:00
INSTALL=$install
2010-03-09 14:58:22 +00:00
LIBTARGET=${LIBTARGET}
SLIBNAME=${SLIBNAME}
SLIBNAME_WITH_VERSION=${SLIBNAME_WITH_VERSION}
SLIBNAME_WITH_MAJOR=${SLIBNAME_WITH_MAJOR}
SLIB_CREATE_DEF_CMD=${SLIB_CREATE_DEF_CMD}
SLIB_EXTRA_CMD=${SLIB_EXTRA_CMD}
2011-07-07 15:25:30 +01:00
SLIB_INSTALL_NAME=${SLIB_INSTALL_NAME}
SLIB_INSTALL_LINKS=${SLIB_INSTALL_LINKS}
SLIB_INSTALL_EXTRA_LIB=${SLIB_INSTALL_EXTRA_LIB}
SLIB_INSTALL_EXTRA_SHLIB=${SLIB_INSTALL_EXTRA_SHLIB}
2016-05-27 11:38:38 +02:00
VERSION_SCRIPT_POSTPROCESS_CMD=${VERSION_SCRIPT_POSTPROCESS_CMD}
2011-04-03 23:12:16 +01:00
SAMPLES:=${samples:-\$(FATE_SAMPLES)}
2011-09-21 19:10:58 +02:00
NOREDZONE_FLAGS=$noredzone_flags
2017-04-21 23:58:32 +02:00
LIBFUZZER_PATH=$libfuzzer_path
2016-12-28 00:19:49 +02:00
IGNORE_TESTS=$ignore_tests
2009-10-31 15:59:03 +00:00
EOF
2005-12-10 17:14:24 +00:00
2017-05-03 12:51:48 +02:00
map 'eval echo "${v}_FFLIBS=\$${v}_deps" >> ffbuild/config.mak' $LIBRARY_LIST
2014-05-01 13:18:57 +02:00
2016-12-08 15:44:45 +01:00
print_program_extralibs(){
eval "program_extralibs=\$ ${ 1 } _extralibs"
2017-05-03 12:51:48 +02:00
eval echo "EXTRALIBS- ${ 1 } = ${ program_extralibs } " >> ffbuild/config.mak
2014-02-13 00:44:08 +01:00
}
2016-12-08 15:44:45 +01:00
map 'print_program_extralibs $v' $PROGRAM_LIST
2014-02-13 00:44:08 +01:00
2009-10-31 15:59:03 +00:00
cat > $TMPH <<EOF
/* Automatically generated by configure - do not modify! */
2011-03-17 17:01:10 +01:00
#ifndef FFMPEG_CONFIG_H
#define FFMPEG_CONFIG_H
#define FFMPEG_CONFIGURATION "$(c_escape $FFMPEG_CONFIGURATION)"
2011-03-17 16:57:37 +01:00
#define FFMPEG_LICENSE "$(c_escape $license)"
2017-01-02 01:38:03 -03:00
#define CONFIG_THIS_YEAR 2017
2009-10-31 15:59:03 +00:00
#define FFMPEG_DATADIR "$(eval c_escape $datadir)"
2011-07-27 20:56:59 +02:00
#define AVCONV_DATADIR "$(eval c_escape $datadir)"
2012-07-18 17:57:57 +01:00
#define CC_IDENT "$(c_escape ${cc_ident:-Unknown compiler})"
2012-06-15 15:52:05 -07:00
#define av_restrict $_restrict
2009-10-31 15:59:03 +00:00
#define EXTERN_PREFIX "${extern_prefix}"
#define EXTERN_ASM ${extern_prefix}
2013-12-05 17:50:14 -03:00
#define BUILDSUF "$build_suffix"
2010-10-03 09:49:36 +00:00
#define SLIBSUF "$SLIBSUF"
2012-08-04 22:39:25 +02:00
#define HAVE_MMX2 HAVE_MMXEXT
2014-06-11 17:51:49 +01:00
#define SWS_MAX_FILTER_SIZE $sws_max_filter_size
2009-10-31 15:59:03 +00:00
EOF
2009-09-21 12:51:45 +00:00
2012-04-07 09:20:54 +02:00
test -n " $assert_level " &&
echo "#define ASSERT_LEVEL $assert_level " >>$TMPH
2010-01-28 13:06:31 +00:00
test -n " $malloc_prefix " &&
echo "#define MALLOC_PREFIX $malloc_prefix " >>$TMPH
2016-10-08 14:18:33 +00:00
if enabled x86asm; then
2010-09-03 21:27:19 +00:00
append config_files $TMPASM
printf '' >$TMPASM
fi
2012-11-30 11:16:58 +02:00
enabled getenv || echo "#define getenv(x) NULL" >> $TMPH
2013-05-02 11:01:43 +03:00
2013-03-19 20:54:26 +01:00
mkdir -p doc
2014-12-15 04:32:23 +01:00
mkdir -p tests
2015-06-28 02:41:48 +02:00
mkdir -p tests/api
2015-10-08 09:01:20 -04:00
echo "@c auto-generated by configure - do not modify! " > doc/config.texi
2013-03-19 20:54:26 +01:00
2010-09-03 21:27:12 +00:00
print_config ARCH_ " $config_files " $ARCH_LIST
print_config HAVE_ " $config_files " $HAVE_LIST
print_config CONFIG_ " $config_files " $CONFIG_LIST \
2010-09-03 21:27:15 +00:00
$CONFIG_EXTRA \
2011-09-12 17:52:44 +02:00
$ALL_COMPONENTS \
2006-08-29 07:34:58 +00:00
2011-03-17 17:01:10 +01:00
echo "#endif /* FFMPEG_CONFIG_H */" >> $TMPH
2017-05-03 12:51:48 +02:00
echo "endif # FFMPEG_CONFIG_MAK" >> ffbuild/config.mak
2007-10-17 22:38:37 +00:00
2008-03-10 22:59:05 +00:00
# Do not overwrite an unchanged config.h to avoid superfluous rebuilds.
2010-01-19 04:40:08 +00:00
cp_if_changed $TMPH config.h
2017-05-03 12:51:48 +02:00
touch ffbuild/.config
2002-04-11 20:11:36 +00:00
2016-10-08 14:18:33 +00:00
enabled x86asm && cp_if_changed $TMPASM config.asm
2010-09-03 21:27:19 +00:00
2010-01-19 04:40:16 +00:00
cat > $TMPH <<EOF
/* Generated by ffconf */
#ifndef AVUTIL_AVCONFIG_H
#define AVUTIL_AVCONFIG_H
EOF
2010-09-03 21:27:12 +00:00
print_config AV_HAVE_ $TMPH $HAVE_LIST_PUB
2010-01-19 04:40:16 +00:00
echo "#endif /* AVUTIL_AVCONFIG_H */" >> $TMPH
cp_if_changed $TMPH libavutil/avconfig.h
2016-03-20 10:00:58 +01:00
# generate the lists of enabled components
print_enabled_components(){
file = $1
struct_name = $2
name = $3
shift 3
echo "static const $struct_name * $name [] = {" > $TMPH
for c in $* ; do
enabled $c && printf " &ff_%s,\n" $c >> $TMPH
done
echo " NULL };" >> $TMPH
cp_if_changed $TMPH $file
}
print_enabled_components libavcodec/bsf_list.c AVBitStreamFilter bitstream_filters $BSF_LIST
print_enabled_components libavformat/protocol_list.c URLProtocol url_protocols $PROTOCOL_LIST
2017-03-23 18:41:46 -03:00
if test -n " $WARNINGS " ; then
printf "\n%s%s $WARNINGS %s" " $warn_color " " $bold_color " " $reset_color "
enabled fatal_warnings && exit 1
fi
2016-10-15 02:50:45 +02:00
2017-05-04 19:59:30 -03:00
# Settings for pkg-config files
2006-12-13 10:21:55 +00:00
2017-05-04 19:59:30 -03:00
cat > ffbuild/config.sh <<EOF
2016-12-20 14:27:19 +01:00
# Automatically generated by configure - do not modify!
shared=$shared
2017-05-04 19:59:30 -03:00
build_suffix=$build_suffix
2008-03-25 22:49:54 +00:00
prefix=$prefix
2008-04-16 21:46:34 +00:00
libdir=$libdir
2017-05-04 19:59:30 -03:00
incdir=$incdir
rpath=$(enabled rpath && echo "-Wl,-rpath,\${libdir}")
2016-12-20 14:27:19 +01:00
source_path=${source_path}
LIBPREF=${LIBPREF}
LIBSUF=${LIBSUF}
2005-08-06 10:03:08 +00:00
2016-12-20 14:27:19 +01:00
extralibs_avutil="$LIBRT $LIBM"
extralibs_avcodec="$extralibs"
extralibs_avformat="$extralibs"
extralibs_avdevice="$extralibs"
extralibs_avfilter="$extralibs"
extralibs_avresample="$LIBM"
2017-05-04 19:59:30 -03:00
extralibs_postproc=""
2016-12-20 14:27:19 +01:00
extralibs_swscale="$LIBM"
2017-05-04 19:59:30 -03:00
extralibs_swresample="$LIBM $LIBSOXR"
2005-08-06 10:03:08 +00:00
EOF
2012-05-10 09:53:36 +02:00
2017-05-04 19:59:30 -03:00
for lib in $LIBRARY_LIST ; do
lib_deps = " $( eval echo \$ ${ lib } _deps) "
echo ${ lib } _deps = \" $lib_deps \" >> ffbuild/config.sh
done