3 # Libav configure script
5 # Copyright (c) 2000-2002 Fabrice Bellard
6 # Copyright (c) 2005-2008 Diego Biurrun
7 # Copyright (c) 2005-2008 Mans Rullgard
10 # Prevent locale nonsense from breaking basic text processing.
14 # make sure we are running under a compatible shell
15 # try to make this part work with most shells
18 echo "Trying shell $1"
19 type "$1" > /dev/null 2>&1 && exec "$@"
23 (: ${foo%%bar}) 2> /dev/null
26 (: ${foo?}) 2> /dev/null
29 if test "$E1" != 0 || test "$E2" = 0; then
30 echo "Broken shell detected. Trying alternatives."
32 if test "0$FF_CONF_EXEC" -lt 1; then
34 try_exec bash "$0" "$@"
36 if test "0$FF_CONF_EXEC" -lt 2; then
38 try_exec ksh "$0" "$@"
40 if test "0$FF_CONF_EXEC" -lt 3; then
42 try_exec /usr/xpg4/bin/sh "$0" "$@"
44 echo "No compatible shell script interpreter found."
45 echo "This configure script requires a POSIX-compatible shell"
46 echo "such as bash or ksh."
47 echo "THIS IS NOT A BUG IN LIBAV, DO NOT REPORT IT AS SUCH."
48 echo "Instead, install a working POSIX-compatible shell."
49 echo "Disabling this configure test will create a broken Libav."
50 if test "$BASH_VERSION" = '2.04.0(1)-release'; then
51 echo "This bash version ($BASH_VERSION) is broken on your platform."
52 echo "Upgrade to a later version if available."
57 test -d /usr/xpg4/bin && PATH=/usr/xpg4/bin:$PATH
61 Usage: configure [options]
62 Options: [defaults in brackets after descriptions]
65 --help print this message
66 --quiet Suppress showing informative output
67 --list-decoders show all available decoders
68 --list-encoders show all available encoders
69 --list-hwaccels show all available hardware accelerators
70 --list-demuxers show all available demuxers
71 --list-muxers show all available muxers
72 --list-parsers show all available parsers
73 --list-protocols show all available protocols
74 --list-bsfs show all available bitstream filters
75 --list-indevs show all available input devices
76 --list-filters show all available filters
79 --logfile=FILE log tests and output to FILE [avbuild/config.log]
80 --disable-logging do not log configure debug information
81 --prefix=PREFIX install in PREFIX [$prefix_default]
82 --bindir=DIR install binaries in DIR [PREFIX/bin]
83 --datadir=DIR install data files in DIR [PREFIX/share/avconv]
84 --docdir=DIR install documentation in DIR [PREFIX/share/doc/libav]
85 --libdir=DIR install libs in DIR [PREFIX/lib]
86 --shlibdir=DIR install shared libs in DIR [PREFIX/lib]
87 --incdir=DIR install includes in DIR [PREFIX/include]
88 --mandir=DIR install man page in DIR [PREFIX/share/man]
89 --enable-rpath use rpath when linking programs (USE WITH CARE)
92 --enable-gpl allow use of GPL code, the resulting libs
93 and binaries will be under GPL [no]
94 --enable-version3 upgrade (L)GPL to version 3 [no]
95 --enable-nonfree allow use of nonfree code, the resulting libs
96 and binaries will be unredistributable [no]
98 Configuration options:
99 --disable-static do not build static libraries [no]
100 --enable-shared build shared libraries [no]
101 --enable-small optimize for size instead of speed
102 --enable-runtime-cpudetect detect CPU capabilities at runtime (bigger binary)
103 --enable-gray enable full grayscale support (slower color)
104 --disable-swscale-alpha disable alpha channel support in swscale
105 --disable-all disable building components, libraries and programs
108 --disable-programs do not build command line programs
109 --disable-avconv disable avconv build
110 --disable-avplay disable avplay build
111 --disable-avprobe disable avprobe build
114 --disable-doc do not build documentation
115 --disable-pod2man do not build manual pages
116 --disable-texi2html do not build HTML documentation
117 --disable-avdevice disable libavdevice build
118 --disable-avcodec disable libavcodec build
119 --disable-avformat disable libavformat build
120 --disable-avutil disable libavutil build
121 --disable-swscale disable libswscale build
122 --disable-avfilter disable video filter support [no]
123 --disable-avresample disable libavresample build [no]
124 --disable-pthreads disable pthreads [auto]
125 --disable-w32threads disable Win32 threads [auto]
126 --disable-network disable network support [no]
127 --disable-dct disable DCT code
128 --disable-error-resilience disable error resilience code
129 --disable-lsp disable LSP code
130 --disable-lzo disable LZO decoder code
131 --disable-mdct disable MDCT code
132 --disable-rdft disable RDFT code
133 --disable-fft disable FFT code
134 --disable-faan disable floating point AAN (I)DCT code
136 Individual component options:
137 --disable-everything disable all components listed below
138 --disable-encoder=NAME disable encoder NAME
139 --enable-encoder=NAME enable encoder NAME
140 --disable-encoders disable all encoders
141 --disable-decoder=NAME disable decoder NAME
142 --enable-decoder=NAME enable decoder NAME
143 --disable-decoders disable all decoders
144 --disable-hwaccel=NAME disable hwaccel NAME
145 --enable-hwaccel=NAME enable hwaccel NAME
146 --disable-hwaccels disable all hwaccels
147 --disable-muxer=NAME disable muxer NAME
148 --enable-muxer=NAME enable muxer NAME
149 --disable-muxers disable all muxers
150 --disable-demuxer=NAME disable demuxer NAME
151 --enable-demuxer=NAME enable demuxer NAME
152 --disable-demuxers disable all demuxers
153 --enable-parser=NAME enable parser NAME
154 --disable-parser=NAME disable parser NAME
155 --disable-parsers disable all parsers
156 --enable-bsf=NAME enable bitstream filter NAME
157 --disable-bsf=NAME disable bitstream filter NAME
158 --disable-bsfs disable all bitstream filters
159 --enable-protocol=NAME enable protocol NAME
160 --disable-protocol=NAME disable protocol NAME
161 --disable-protocols disable all protocols
162 --enable-indev=NAME enable input device NAME
163 --disable-indev=NAME disable input device NAME
164 --disable-indevs disable input devices
165 --disable-devices disable all devices
166 --enable-filter=NAME enable filter NAME
167 --disable-filter=NAME disable filter NAME
168 --disable-filters disable all filters
170 External library support:
172 Using any of the following switches will allow Libav to link to the
173 corresponding external library. All the components depending on that library
174 will become enabled, if all their other dependencies are met and they are not
175 explicitly disabled. E.g. --enable-libwavpack will enable linking to
176 libwavpack and allow the libwavpack encoder to be built, unless it is
177 specifically disabled with --disable-encoder=libwavpack.
179 Note that only the system libraries are auto-detected. All the other external
180 libraries must be explicitly enabled.
182 Also note that the following help text describes the purpose of the libraries
183 themselves, not all their features will necessarily be usable by Libav.
185 --enable-avisynth video frameserver
186 --enable-avxsynth Linux version of AviSynth
187 --enable-bzlib bzip2 compression [autodetect]
188 --enable-frei0r video filtering plugins
189 --enable-gnutls crypto
190 --enable-libbs2b Bauer stereophonic-to-binaural DSP
191 --enable-libcdio audio CD input
192 --enable-libdc1394 IEEE 1394/Firewire camera input
193 --enable-libdcadec DCA audio decoding
194 --enable-libfaac AAC audio encoding
195 --enable-libfdk-aac AAC audio encoding/decoding
196 --enable-libfontconfig font configuration and management
197 --enable-libfreetype font rendering
198 --enable-libgsm GSM audio encoding/decoding
199 --enable-libhdcd HDCD decoding filter
200 --enable-libilbc ILBC audio encoding/decoding
201 --enable-libjack JACK audio sound server
202 --enable-libkvazaar HEVC video encoding
203 --enable-libmp3lame MP3 audio encoding
204 --enable-libopencore-amrnb AMR-NB audio encoding/decoding
205 --enable-libopencore-amrwb AMR-WB audio decoding
206 --enable-libopencv computer vision
207 --enable-libopenh264 H.264 video encoding/decoding
208 --enable-libopenjpeg JPEG 2000 image encoding/decoding
209 --enable-libopus Opus audio encoding/decoding
210 --enable-libpulse Pulseaudio sound server
211 --enable-librtmp RTMP streaming
212 --enable-libschroedinger Dirac video encoding/decoding
213 --enable-libsnappy snappy compression
214 --enable-libspeex Speex audio encoding/decoding
215 --enable-libtheora Theora video encoding/decoding
216 --enable-libtwolame MP2 audio encoding
217 --enable-libvo-aacenc AAC audio encoding
218 --enable-libvo-amrwbenc AMR-WB audio encoding
219 --enable-libvorbis Vorbis audio encoding/decoding
220 --enable-libvpx VP* video encoding/decoding
221 --enable-libwavpack Wavpack audio encoding/decoding
222 --enable-libwebp WebP image encoding/decoding
223 --enable-libx264 H.264 video encoding
224 --enable-libx265 HEVC video encoding
225 --enable-libxavs Chinese AVS video encoding
226 --enable-libxcb X window system protocol communication
227 --enable-libxcb-shm X11 shm communication [auto]
228 --enable-libxcb-xfixes X11 mouse rendering [auto]
229 --enable-libxvid MPEG-4 ASP video encoding
230 --enable-openssl crypto
231 --enable-zlib compression [autodetect]
233 The following libraries provide various hardware acceleration features:
234 --enable-amf AMF video encoding code [auto]
235 --enable-cuda Nvidia CUDA (dynamically linked)
236 --enable-cuvid Nvidia CUVID video decode acceleration
237 --enable-d3d11va Microsoft Direct3D 11 video acceleration [auto]
238 --enable-dxva2 Microsoft DirectX 9 video acceleration [auto]
239 --enable-libmfx Intel MediaSDK (AKA Quick Sync Video)
240 --enable-libnpp Nvidia CUDA processing
241 --enable-mmal Broadcom Multi-Media Abstraction Layer (Raspberry Pi)
242 --enable-nvenc Nvidia video encoding
243 --enable-omx OpenMAX IL
244 --enable-omx-rpi OpenMAX IL for Raspberry Pi
245 --enable-vaapi Video Acceleration API (mainly Unix/Intel)
246 --enable-vda Apple Video Decode Acceleration [auto]
247 --enable-vdpau Nvidia Video Decode and Presentation API for Unix [auto]
250 --arch=ARCH select architecture [$arch]
251 --cpu=CPU select the minimum required CPU (affects
252 instruction selection, may crash on older CPUs)
253 --cross-prefix=PREFIX use PREFIX for compilation tools [$cross_prefix]
254 --enable-cross-compile assume a cross-compiler is used
255 --sysroot=PATH root of cross-build tree
256 --sysinclude=PATH location of cross-build system headers
257 --target-os=OS compiler targets OS [$target_os]
258 --target-exec=CMD command to run executables on target
259 --target-path=DIR path to view of build directory on target
260 --target-samples=DIR path to samples directory on target
261 --toolchain=NAME set tool defaults according to NAME
263 --ar=AR use archive tool AR [$ar_default]
264 --as=AS use assembler AS [$as_default]
265 --cc=CC use C compiler CC [$cc_default]
266 --objcc=OCC use ObjC compiler OCC [$cc_default]
267 --dep-cc=DEPCC use dependency generator DEPCC [$cc_default]
268 --ld=LD use linker LD
269 --x86asmexe=X86ASM use x86 assembler X86ASM
270 --pkg-config=PKGCONFIG use pkg-config tool PKGCONFIG [$pkg_config_default]
271 --pkg-config-flags=FLAGS pass additional flags to pkgconf []
272 --host-cc=HOSTCC use host C compiler HOSTCC
273 --host-cflags=HCFLAGS use HCFLAGS when compiling for host
274 --host-cppflags=HCPPFLAGS use HCPPFLAGS when compiling for host
275 --host-ld=HOSTLD use host linker HOSTLD
276 --host-ldflags=HLDFLAGS use HLDFLAGS when linking for host
277 --host-libs=HLIBS use libs HLIBS when linking for host
278 --host-os=OS compiler host OS [$target_os]
279 --extra-cflags=ECFLAGS add ECFLAGS to CFLAGS [$CFLAGS]
280 --extra-objcflags=FLAGS add FLAGS to OBJCFLAGS [$CFLAGS]
281 --extra-ldflags=ELDFLAGS add ELDFLAGS to LDFLAGS [$LDFLAGS]
282 --extra-ldexeflags=ELDFLAGS add ELDFLAGS to LDEXEFLAGS [$LDEXEFLAGS]
283 --extra-ldsoflags=ELDFLAGS add ELDFLAGS to LDSOFLAGS [$LDSOFLAGS]
284 --extra-libs=ELIBS add ELIBS [$ELIBS]
285 --extra-version=STRING version string suffix []
286 --optflags=OPTFLAGS override optimization-related compiler flags
287 --enable-pic build position-independent code
288 --enable-thumb compile for Thumb instruction set
289 --enable-lto use link-time optimization
290 --env="ENV=override" override the environment variables
292 Advanced options (experts only):
293 --malloc-prefix=PREFIX prefix malloc and related names with PREFIX
294 --custom-allocator=NAME use a supported custom allocator
295 --disable-symver disable symbol versioning
296 --enable-hardcoded-tables use hardcoded tables instead of runtime generation
297 --disable-safe-bitstream-reader
298 disable buffer boundary checking in bitreaders
299 (faster, but may crash)
300 --enable-sram allow use of on-chip SRAM
302 Optimization options (experts only):
303 --disable-asm disable all assembly optimizations
304 --disable-altivec disable AltiVec optimizations
305 --disable-vsx disable VSX optimizations
306 --disable-power8 disable POWER8 optimizations
307 --disable-amd3dnow disable 3DNow! optimizations
308 --disable-amd3dnowext disable 3DNow! extended optimizations
309 --disable-mmx disable MMX optimizations
310 --disable-mmxext disable MMXEXT optimizations
311 --disable-sse disable SSE optimizations
312 --disable-sse2 disable SSE2 optimizations
313 --disable-sse3 disable SSE3 optimizations
314 --disable-ssse3 disable SSSE3 optimizations
315 --disable-sse4 disable SSE4 optimizations
316 --disable-sse42 disable SSE4.2 optimizations
317 --disable-avx disable AVX optimizations
318 --disable-xop disable XOP optimizations
319 --disable-fma3 disable FMA3 optimizations
320 --disable-fma4 disable FMA4 optimizations
321 --disable-avx2 disable AVX2 optimizations
322 --disable-armv5te disable armv5te optimizations
323 --disable-armv6 disable armv6 optimizations
324 --disable-armv6t2 disable armv6t2 optimizations
325 --disable-vfp disable VFP optimizations
326 --disable-neon disable NEON optimizations
327 --disable-inline-asm disable use of inline assembly
328 --disable-x86asm disable use of standalone x86 assembly
330 Developer options (useful when working on Libav itself):
331 --disable-debug disable debugging symbols
332 --enable-debug=LEVEL set the debug level [$debuglevel]
333 --disable-optimizations disable compiler optimizations
334 --enable-extra-warnings enable more compiler warnings
335 --samples=PATH location of test samples for FATE, if not set use
336 \$LIBAV_SAMPLES at make invocation time.
337 --enable-neon-clobber-test check NEON registers for clobbering (should be
338 used only for debugging purposes)
339 --enable-xmm-clobber-test check XMM registers for clobbering (Win64-only;
340 should be used only for debugging purposes)
341 --disable-valgrind-backtrace do not print a backtrace under Valgrind
342 (only applies to --disable-optimizations builds)
343 --ignore-tests=TESTS comma-separated list (without "fate-" prefix
344 in the name) of tests whose result is ignored
346 NOTE: Object files are built at the place where configure is launched.
352 echo "$@" >> $logfile
359 printf '%5s %s\n' "${i}" "${line}"
361 done < $1 >> $logfile
372 WARNINGS="${WARNINGS}WARNING: $*\n"
379 If you think configure made a mistake, make sure you are using the latest
380 version from Git. If the latest version fails, report the problem to the
381 libav-tools@libav.org mailing list or IRC #libav on irc.freenode.net.
383 if disabled logging; then
385 Rerun configure with logging enabled (do not use --disable-logging), and
386 include the log this produces with your report.
390 Include the log file "$logfile" produced by configure as this will help
397 # Avoid locale weirdness, besides we really just want to translate ASCII.
399 echo "$@" | tr abcdefghijklmnopqrstuvwxyz ABCDEFGHIJKLMNOPQRSTUVWXYZ
403 echo "$@" | tr ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyz
407 echo "$*" | sed 's/["\\]/\\\0/g'
411 v=$(echo "$1" | sed "s/'/'\\\\''/g")
412 test "x$v" = "x${v#*[!A-Za-z0-9_/.+-]}" || v="'$v'"
417 echo "$@" | sed 's/^ *//;s/ */ /g;s/ *$//'
424 eval "case '$v' in $pat) printf '%s ' '$v' ;; esac"
432 eval "case '$v' in $pat) ;; *) printf '%s ' '$v' ;; esac"
439 for v; do eval $m; done
445 for v; do echo ${v}${suffix}; done
460 eval : \${$var:=$value}
465 echo $@ | sed 's/[^A-Za-z0-9_]/_/g'
471 eval $(sanitize_var_name "$var")='$*'
475 eval echo \$$(sanitize_var_name "$1")
480 eval level=\${${pvar}_level:=0}
481 eval ${pvar}_${level}="\$$pvar"
482 eval ${pvar}_level=$(($level+1))
488 eval level=\${${pvar}_level:-0}
489 test $level = 0 && continue
490 eval level=$(($level-1))
491 eval $pvar="\${${pvar}_${level}}"
492 eval ${pvar}_level=$level
493 eval unset ${pvar}_${level}
515 enable $(sanitize_var_name $var)
521 disable $(sanitize_var_name $var)
527 enabled $var && continue
528 eval sel="\$${var}_select"
529 eval sgs="\$${var}_suggest"
533 enable_deep_weak $sgs
545 disabled $var && continue
554 test "${1#!}" = "$1" && op="=" || op="!="
555 eval test "x\$${1#!}" $op "xyes"
559 test "${1#!}" = "$1" && op="=" || op="!="
560 eval test "x\$${1#!}" $op "xno"
565 enabled $opt || return 1
571 disabled $opt || return 1
577 enabled $opt && return 0
583 disabled $opt && return 0
590 eval : \${$opt:=\$${opt}_default}
598 [ $var = $value ] && return 0
605 enabled ${cfg}_checking && die "Circular dependency for $cfg."
606 disabled ${cfg}_checking && continue
607 enable ${cfg}_checking
609 eval dep_all="\$${cfg}_deps"
610 eval dep_any="\$${cfg}_deps_any"
611 eval dep_con="\$${cfg}_conflict"
612 eval dep_sel="\$${cfg}_select"
613 eval dep_sgs="\$${cfg}_suggest"
614 eval dep_ifa="\$${cfg}_if"
615 eval dep_ifn="\$${cfg}_if_any"
617 pushvar cfg dep_all dep_any dep_con dep_sel dep_sgs dep_ifa dep_ifn
618 check_deps $dep_all $dep_any $dep_con $dep_sel $dep_sgs $dep_ifa $dep_ifn
619 popvar cfg dep_all dep_any dep_con dep_sel dep_sgs dep_ifa dep_ifn
621 [ -n "$dep_ifa" ] && { enabled_all $dep_ifa && enable_weak $cfg; }
622 [ -n "$dep_ifn" ] && { enabled_any $dep_ifn && enable_weak $cfg; }
623 enabled_all $dep_all || disable $cfg
624 enabled_any $dep_any || disable $cfg
625 disabled_all $dep_con || disable $cfg
626 disabled_any $dep_sel && disable $cfg
628 enabled $cfg && enable_deep_weak $dep_sel $dep_sgs
630 for dep in $dep_all $dep_any $dep_sel $dep_sgs; do
631 # filter out library deps, these do not belong in extralibs
632 is_in $dep $LIBRARY_LIST && continue
633 enabled $dep && eval append ${cfg}_extralibs ${dep}_extralibs
636 disable ${cfg}_checking
644 map 'eval echo "$v \${$v:-no}"' "$@" |
645 awk "BEGIN { split(\"$files\", files) }
647 c = \"$pfx\" toupper(\$1);
653 if (file ~ /\\.h\$/) {
654 printf(\"#define %s %d\\n\", c, v) >>file;
655 } else if (file ~ /\\.asm\$/) {
656 printf(\"%%define %s %d\\n\", c, v) >>file;
657 } else if (file ~ /\\.mak\$/) {
658 n = -v ? \"\" : \"!\";
659 printf(\"%s%s=yes\\n\", n, c) >>file;
669 enabled $v && printf "%s\n" ${v%$suf}
676 eval "$var=\"\$$var $*\""
682 eval "$var=\"$* \$$var\""
688 for tok in $(eval echo \$$var); do
689 uniq_list="$(filter_out $tok $uniq_list) $tok"
691 eval "$var=\"${uniq_list}\""
697 for entry in $(eval echo \$$var); do
698 tmpvar="$tmpvar $(eval echo \$${entry})"
700 eval "$var=\"${tmpvar}\""
708 append CFLAGS $($cflags_filter "$@")
711 add_cflags_headers(){
712 append CFLAGS_HEADERS $($cflags_filter "$@")
716 append ASFLAGS $($asflags_filter "$@")
720 append OBJCFLAGS $($objcflags_filter "$@")
724 append LDFLAGS $($ldflags_filter "$@")
728 append LDEXEFLAGS $($ldflags_filter "$@")
732 append LDSOFLAGS $($ldflags_filter "$@")
736 append STRIPFLAGS "$@"
740 prepend extralibs $($ldflags_filter "$@")
744 append host_cppflags "$@"
748 append host_cflags $($host_cflags_filter "$@")
752 append host_ldflags $($host_ldflags_filter "$@")
756 append compat_objs $1
758 map 'add_cppflags -D$v' "$@"
763 "$@" >> $logfile 2>&1
767 eval printf '%s\\n' $CC_O
771 eval printf '%s\\n' $CC_E
778 test_cmd $cc $CPPFLAGS $CFLAGS "$@" $CC_C $(cc_o $TMPO) $TMPC
785 test_cmd $objcc $CPPFLAGS $CFLAGS $OBJCFLAGS "$@" $OBJCC_C $(cc_o $TMPO) $TMPC
792 test_cmd $cc $CPPFLAGS $CFLAGS "$@" $(cc_e $TMPO) $TMPC
796 eval printf '%s\\n' $AS_O
803 test_cmd $as $CPPFLAGS $ASFLAGS "$@" $AS_C $(as_o $TMPO) $TMPS
809 disabled $cmd && return
811 test_cmd $@ && enable $cmd
815 log check_inline_asm "$@"
820 test_cc "$@" <<EOF && enable $name
821 void foo(void){ __asm__ volatile($code); }
827 check_inline_asm ${1}_inline "$2"
828 echo "$2" | test_as && enable ${1}_external || disable ${1}_external
836 test_cmd $x86asmexe $X86ASMFLAGS "$@" -o $TMPO $TMPS
840 eval printf '%s\\n' $LD_O
845 flags=$(filter_out '-l*' "$@")
846 libs=$(filter '-l*' "$@")
847 test_cc $($cflags_filter $flags) || return
848 flags=$($ldflags_filter $flags)
849 libs=$($ldflags_filter $libs)
850 test_cmd $ld $LDFLAGS $flags $(ld_o $TMPE) $TMPO $libs $extralibs
858 test_ld $@ && enable $name
863 test "${hdr%.h}" = "${hdr}" &&
864 echo "#include $hdr" ||
865 echo "#include <$hdr>"
875 for hdr in $headers; do
878 echo "int main(void) { $code; return 0; }"
883 log check_cppflags "$@"
884 test_cpp "$@" <<EOF && add_cppflags "$@"
891 set -- $($cflags_filter "$@")
898 log check_cflags "$@"
899 test_cflags "$@" && add_cflags "$@"
903 log test_objcflags "$@"
904 set -- $($objcflags_filter "$@")
905 test_objcc "$@" <<EOF
911 log check_objcflags "$@"
912 test_objcflags "$@" && add_objcflags "$@"
916 log test_ldflags "$@"
917 set -- $($ldflags_filter "$@")
919 int main(void){ return 0; }
924 log check_ldflags "$@"
925 test_ldflags "$@" && add_ldflags "$@"
929 log test_stripflags "$@"
930 # call test_cc to get a fresh TMPO
932 int main(void) { return 0; }
934 test_cmd $strip $STRIPFLAGS "$@" $TMPO
938 log check_stripflags "$@"
939 test_stripflags "$@" && add_stripflags "$@"
943 log check_header "$@"
946 disable_sanitized $headers
948 for hdr in $headers; do
952 } | test_cpp "$@" && enable_sanitized $headers
960 test_ld "$@" <<EOF && enable $func
962 int main(void){ $func(); }
967 log check_mathfunc "$@"
971 test $narg = 2 && args="f, g" || args="f"
973 test_ld "$@" <<EOF && enable $func
975 float foo(float f, float g) { return $func($args); }
976 int main(void){ return 0; }
980 check_func_headers(){
981 log check_func_headers "$@"
986 for hdr in $headers; do
989 for func in $funcs; do
990 echo "long check_$func(void) { return (long) $func; }"
992 echo "int main(void) { return 0; }"
993 } | test_ld "$@" && enable $funcs && enable_sanitized $headers
996 test_cpp_condition(){
997 log test_cpp_condition "$@"
1004 #error "unsatisfied condition: $condition"
1009 check_cpp_condition(){
1010 log check_cpp_condition "$@"
1014 test_cpp_condition "$@" && enable $name
1018 log test_cflags_cpp "$@"
1022 set -- $($cflags_filter "$flags")
1025 #error "unsatisfied condition: $condition"
1037 check_func_headers "$headers" "$funcs" "$@" &&
1038 enable $name && eval ${name}_extralibs="\$@"
1042 log test_pkg_config "$@"
1050 test_cmd $pkg_config --exists --print-errors $pkg_version || return
1051 pkg_cflags=$($pkg_config --cflags $pkg_config_flags $pkg)
1052 pkg_libs=$($pkg_config --libs $pkg_config_flags $pkg)
1053 check_func_headers "$headers" "$funcs" $pkg_cflags $pkg_libs "$@" &&
1055 set_sanitized "${name}_cflags" $pkg_cflags &&
1056 set_sanitized "${name}_extralibs" $pkg_libs
1060 log check_pkg_config "$@"
1062 test_pkg_config "$@" &&
1063 eval add_cflags \$${name}_cflags
1068 test_ld "$@" && { enabled cross_compile || $TMPE >> $logfile 2>&1; }
1072 log check_exec_crash "$@"
1075 # exit() is not async signal safe. _Exit (C99) and _exit (POSIX)
1076 # are safe but may not be available everywhere. Thus we use
1077 # raise(SIGTERM) instead. The check is run in a subshell so we
1078 # can redirect the "Terminated" message from the shell. SIGBUS
1079 # is not defined by standard C so it is used conditionally.
1081 (test_exec "$@") >> $logfile 2>&1 <<EOF
1083 static void sighandler(int sig){
1089 int (*func_ptr)(void) = foo;
1091 signal(SIGILL, sighandler);
1092 signal(SIGFPE, sighandler);
1093 signal(SIGSEGV, sighandler);
1095 signal(SIGBUS, sighandler);
1107 disable_sanitized "$type"
1108 test_code cc "$headers" "$type v" "$@" && enable_sanitized "$type"
1112 log check_struct "$@"
1117 disable_sanitized "${struct}_${member}"
1118 test_code cc "$headers" "const void *p = &(($struct *)0)->$member" "$@" &&
1119 enable_sanitized "${struct}_${member}"
1123 log check_builtin "$@"
1127 test_code ld "$@" && enable "$name"
1130 check_compile_assert(){
1131 log check_compile_assert "$@"
1137 test_code cc "$headers" "char c[2 * !!($condition) - 1]" "$@" && enable "$name"
1145 test_code cc "$@" && enable "$name"
1153 check_lib $name "$@" || die "ERROR: $name_version not found"
1160 test_code cc "$@" || die "ERROR: $name failed"
1164 log require_header "$@"
1166 check_header "$@" || die "ERROR: $headers not found"
1169 require_cpp_condition(){
1170 log require_cpp_condition "$@"
1172 test_cpp_condition "$@" || die "ERROR: $condition not satisfied"
1175 require_pkg_config(){
1176 log require_pkg_config "$@"
1178 check_pkg_config "$@" || die "ERROR: $pkg_version not found"
1182 eval printf '%s\\n' $HOSTCC_E
1186 eval printf '%s\\n' $HOSTCC_O
1190 log test_host_cc "$@"
1193 test_cmd $host_cc $host_cflags "$@" $HOSTCC_C $(hostcc_o $TMPO) $TMPC
1197 log test_host_cpp "$@"
1200 test_cmd $host_cc $host_cppflags $host_cflags "$@" $(hostcc_e $TMPO) $TMPC
1203 check_host_cppflags(){
1204 log check_host_cppflags "$@"
1205 test_host_cpp "$@" <<EOF && append host_cppflags "$@"
1206 #include <stdlib.h>;
1210 check_host_cflags(){
1211 log check_host_cflags "$@"
1212 set -- $($host_cflags_filter "$@")
1213 test_host_cc "$@" <<EOF && append host_cflags "$@"
1218 test_host_cpp_condition(){
1219 log test_host_cpp_condition "$@"
1223 test_host_cpp "$@" <<EOF
1226 #error "unsatisfied condition: $condition"
1231 check_host_cpp_condition(){
1232 log check_host_cpp_condition "$@"
1236 test_host_cpp_condition "$@" && enable $name
1240 cmp -s "$1" "$2" && { test "$quiet" != "yes" && echo "$2 is unchanged"; } && return
1241 mkdir -p "$(dirname $2)"
1245 # CONFIG_LIST contains configurable options, while HAVE_LIST is for
1246 # system-dependent things.
1248 AVCODEC_COMPONENTS="
1256 AVDEVICE_COMPONENTS="
1259 AVFILTER_COMPONENTS="
1262 AVFORMAT_COMPONENTS="
1270 $AVDEVICE_COMPONENTS
1271 $AVFILTER_COMPONENTS
1272 $AVFORMAT_COMPONENTS
1276 decode_audio_example
1277 decode_video_example
1278 encode_audio_example
1279 encode_video_example
1280 filter_audio_example
1284 transcode_aac_example
1287 # catchall list of things that require external libs to link
1293 HWACCEL_LIBRARY_NONFREE_LIST="
1298 HWACCEL_LIBRARY_LIST="
1299 $HWACCEL_LIBRARY_NONFREE_LIST
1312 EXTERNAL_LIBRARY_GPL_LIST="
1320 EXTERNAL_LIBRARY_NONFREE_LIST="
1326 EXTERNAL_LIBRARY_VERSION3_LIST="
1333 EXTERNAL_LIBRARY_LIST="
1334 $EXTERNAL_LIBRARY_GPL_LIST
1335 $EXTERNAL_LIBRARY_NONFREE_LIST
1336 $EXTERNAL_LIBRARY_VERSION3_LIST
1372 SYSTEM_LIBRARY_LIST="
1382 safe_bitstream_reader
1425 # COMPONENT_LIST needs to come last to ensure correct dependency checking
1428 $EXTERNAL_LIBRARY_LIST
1429 $HWACCEL_LIBRARY_LIST
1435 $SYSTEM_LIBRARY_LIST
1494 ARCH_EXT_LIST_X86_SIMD="
1522 $ARCH_EXT_LIST_X86_SIMD
1527 ARCH_EXT_LIST_MIPS="
1564 sync_val_compare_and_swap
1578 AVFoundation_AVFoundation_h
1581 cdio_paranoia_paranoia_h
1583 dev_bktr_ioctl_bt848_h
1584 dev_bktr_ioctl_meteor_h
1586 dev_video_bktr_ioctl_bt848_h
1587 dev_video_meteor_ioctl_meteor_h
1592 machine_ioctl_bt848_h
1593 machine_ioctl_meteor_h
1643 MMAL_PARAMETER_VIDEO_MAX_NUM_CALLBACKS
1658 GetProcessAffinityMask
1659 GetProcessMemoryInfo
1662 GetSystemTimeAsFileTime
1676 SetConsoleTextAttribute
1696 TOOLCHAIN_FEATURES="
1717 CONDITION_VARIABLE_Ptr
1718 CUVIDDECODECREATEINFO_bitDepthMinus8
1721 struct_group_source_req
1722 struct_ip_mreq_source
1725 struct_rusage_ru_maxrss
1727 struct_sockaddr_sa_len
1728 struct_sockaddr_storage
1729 struct_v4l2_frmivalenum_discrete
1734 $(add_suffix _external $ARCH_EXT_LIST)
1735 $(add_suffix _inline $ARCH_EXT_LIST)
1751 # options emitted with CONFIG_ prefix but not available on the command line
1906 # code dependency declarations
1908 # architecture extensions
1913 armv8_deps="aarch64"
1914 neon_deps_any="aarch64 arm"
1915 intrinsics_neon_deps="neon"
1916 vfp_deps_any="aarch64 arm"
1919 map 'eval ${v}_inline_deps=inline_asm' $ARCH_EXT_LIST_ARM
1928 loongson_deps="mips"
1929 mips32r1_deps="mips32"
1930 mips32r2_deps="mips32"
1931 mips32r6_deps="mips32"
1932 mips64r1_deps="mips64"
1933 mips64r2_deps="mips64"
1934 mips64r6_deps="mips64"
1939 x86_64_select="i686"
1940 x86_64_suggest="fast_cmov"
1943 amd3dnowext_deps="amd3dnow"
1959 mmx_external_deps="x86asm"
1960 mmx_inline_deps="inline_asm x86"
1961 mmx_suggest="mmx_external mmx_inline"
1963 for ext in $(filter_out mmx $ARCH_EXT_LIST_X86_SIMD); do
1964 eval dep=\$${ext}_deps
1965 eval ${ext}_external_deps='"${dep}_external"'
1966 eval ${ext}_inline_deps='"${dep}_inline"'
1967 eval ${ext}_suggest='"${ext}_external ${ext}_inline"'
1970 aligned_stack_if_any="aarch64 ppc x86"
1971 fast_64bit_if_any="aarch64 alpha ia64 mips64 parisc64 ppc64 sparc64 x86_64"
1972 fast_clz_if_any="aarch64 alpha avr32 mips ppc x86"
1973 fast_unaligned_if_any="aarch64 ppc x86"
1974 simd_align_16_if_any="altivec neon sse"
1975 simd_align_32_if_any="avx"
1977 # system capabilities
1978 symver_if_any="symver_asm_label symver_gnu_asm"
1979 valgrind_backtrace_conflict="optimizations"
1980 valgrind_backtrace_deps="valgrind_valgrind_h"
1983 atomics_gcc_if="sync_val_compare_and_swap"
1984 atomics_suncc_if="atomic_cas_ptr machine_rw_barrier"
1985 atomics_win32_if="MemoryBarrier"
1986 atomics_native_if_any="$ATOMICS_LIST"
1987 w32threads_deps="atomics_native"
1988 threads_if_any="$THREADS_LIST"
1991 cbs_h264_select="cbs golomb"
1992 cbs_h265_select="cbs golomb"
1993 cbs_mpeg2_select="cbs"
1995 dirac_parse_select="golomb"
1996 error_resilience_select="me_cmp"
1998 faandct_select="fdctdsp"
1999 faanidct_deps="faan"
2000 faanidct_select="idctdsp"
2001 h264dsp_select="startcode"
2002 hevcparse_select="golomb"
2003 intrax8_select="blockdsp idctdsp"
2006 me_cmp_select="fdctdsp idctdsp pixblockdsp"
2007 mpeg_er_select="error_resilience"
2008 mpegaudio_select="mpegaudiodsp mpegaudioheader"
2009 mpegaudiodsp_select="dct"
2010 mpegvideo_select="blockdsp hpeldsp idctdsp me_cmp mpeg_er videodsp"
2011 mpegvideoenc_select="me_cmp mpegvideo pixblockdsp qpeldsp"
2012 vc1dsp_select="h264chroma qpeldsp startcode"
2014 # decoders / encoders
2015 aac_decoder_select="adts_header imdct15 mdct sinewin"
2016 aac_encoder_select="audio_frame_queue iirfilter mdct sinewin"
2017 aac_latm_decoder_select="aac_decoder aac_latm_parser"
2018 ac3_decoder_select="ac3_parser ac3dsp bswapdsp fmtconvert mdct"
2019 ac3_encoder_select="ac3dsp audiodsp mdct me_cmp"
2020 ac3_fixed_encoder_select="ac3dsp audiodsp mdct me_cmp"
2021 adpcm_g722_decoder_select="g722dsp"
2022 adpcm_g722_encoder_select="g722dsp"
2023 aic_decoder_select="golomb idctdsp"
2024 alac_encoder_select="lpc"
2025 als_decoder_select="bswapdsp"
2026 amrnb_decoder_select="lsp"
2027 amrwb_decoder_select="lsp"
2028 amv_decoder_select="sp5x_decoder"
2029 ape_decoder_select="bswapdsp"
2030 asv1_decoder_select="blockdsp bswapdsp idctdsp"
2031 asv1_encoder_select="bswapdsp fdctdsp pixblockdsp"
2032 asv2_decoder_select="blockdsp bswapdsp idctdsp"
2033 asv2_encoder_select="bswapdsp fdctdsp pixblockdsp"
2034 atrac1_decoder_select="mdct sinewin"
2035 atrac3_decoder_select="mdct"
2036 atrac3p_decoder_select="mdct sinewin"
2037 bink_decoder_select="blockdsp hpeldsp"
2038 binkaudio_dct_decoder_select="mdct rdft dct sinewin wma_freqs"
2039 binkaudio_rdft_decoder_select="mdct rdft sinewin wma_freqs"
2040 cavs_decoder_select="blockdsp golomb h264chroma idctdsp qpeldsp videodsp"
2041 clearvideo_decoder_select="idctdsp"
2042 cllc_decoder_select="bswapdsp"
2043 comfortnoise_encoder_select="lpc"
2044 cook_decoder_select="audiodsp mdct sinewin"
2045 cscd_decoder_select="lzo"
2046 cscd_decoder_suggest="zlib"
2047 dca_decoder_select="fmtconvert mdct"
2048 dds_decoder_select="texturedsp"
2049 dnxhd_decoder_select="blockdsp idctdsp"
2050 dnxhd_encoder_select="aandcttables blockdsp fdctdsp idctdsp mpegvideoenc pixblockdsp"
2051 dvvideo_decoder_select="dvprofile idctdsp"
2052 dvvideo_encoder_select="dvprofile fdctdsp me_cmp pixblockdsp"
2053 dxa_decoder_deps="zlib"
2054 dxv_decoder_select="lzf texturedsp"
2055 eac3_decoder_select="ac3_decoder"
2056 eac3_encoder_select="ac3_encoder"
2057 eamad_decoder_select="aandcttables blockdsp bswapdsp idctdsp mpegvideo"
2058 eatgq_decoder_select="aandcttables idctdsp"
2059 eatqi_decoder_select="aandcttables blockdsp bswapdsp idctdsp"
2060 exr_decoder_deps="zlib"
2061 ffv1_decoder_select="rangecoder"
2062 ffv1_encoder_select="rangecoder"
2063 ffvhuff_decoder_select="huffyuv_decoder"
2064 ffvhuff_encoder_select="huffyuv_encoder"
2065 fic_decoder_select="golomb"
2066 flac_decoder_select="flacdsp"
2067 flac_encoder_select="bswapdsp flacdsp lpc"
2068 flashsv_decoder_deps="zlib"
2069 flashsv_encoder_deps="zlib"
2070 flashsv2_decoder_deps="zlib"
2071 flv_decoder_select="h263_decoder"
2072 flv_encoder_select="h263_encoder"
2073 fourxm_decoder_select="blockdsp bswapdsp"
2074 fraps_decoder_select="bswapdsp huffman"
2075 g2m_decoder_deps="zlib"
2076 g2m_decoder_select="blockdsp idctdsp jpegtables"
2077 h261_decoder_select="mpeg_er mpegvideo"
2078 h261_encoder_select="aandcttables mpegvideoenc"
2079 h263_decoder_select="error_resilience h263_parser h263dsp mpeg_er mpegvideo qpeldsp"
2080 h263_encoder_select="aandcttables h263dsp mpegvideoenc"
2081 h263i_decoder_select="h263_decoder"
2082 h263p_encoder_select="h263_encoder"
2083 h264_decoder_select="cabac golomb h264chroma h264dsp h264parse h264pred h264qpel videodsp"
2084 h264_decoder_suggest="error_resilience"
2085 hap_decoder_select="snappy texturedsp"
2086 hap_encoder_deps="libsnappy"
2087 hap_encoder_select="texturedspenc"
2088 hevc_decoder_select="bswapdsp cabac hevcparse videodsp"
2089 huffyuv_decoder_select="bswapdsp huffyuvdsp"
2090 huffyuv_encoder_select="bswapdsp huffman huffyuvencdsp"
2091 iac_decoder_select="imc_decoder"
2092 imc_decoder_select="bswapdsp fft mdct sinewin"
2093 indeo3_decoder_select="hpeldsp"
2094 indeo4_decoder_select="ividsp"
2095 indeo5_decoder_select="ividsp"
2096 interplay_video_decoder_select="hpeldsp"
2097 jpegls_decoder_select="mjpeg_decoder"
2098 jv_decoder_select="blockdsp"
2099 lagarith_decoder_select="huffyuvdsp"
2100 ljpeg_encoder_select="aandcttables idctdsp jpegtables"
2101 magicyuv_decoder_select="huffyuvdsp"
2102 mdec_decoder_select="blockdsp idctdsp mpegvideo"
2103 metasound_decoder_select="lsp mdct sinewin"
2104 mimic_decoder_select="blockdsp bswapdsp hpeldsp idctdsp"
2105 mjpeg_decoder_select="blockdsp hpeldsp idctdsp jpegtables"
2106 mjpeg_encoder_select="aandcttables jpegtables mpegvideoenc"
2107 mjpegb_decoder_select="mjpeg_decoder"
2108 mlp_decoder_select="mlp_parser"
2109 motionpixels_decoder_select="bswapdsp"
2110 mp1_decoder_select="mpegaudio"
2111 mp1float_decoder_select="mpegaudio"
2112 mp2_decoder_select="mpegaudio"
2113 mp2float_decoder_select="mpegaudio"
2114 mp3_decoder_select="mpegaudio"
2115 mp3adu_decoder_select="mpegaudio"
2116 mp3adufloat_decoder_select="mpegaudio"
2117 mp3float_decoder_select="mpegaudio"
2118 mp3on4_decoder_select="mpegaudio"
2119 mp3on4float_decoder_select="mpegaudio"
2120 mpc7_decoder_select="bswapdsp mpegaudiodsp"
2121 mpc8_decoder_select="mpegaudiodsp"
2122 mpeg1video_decoder_select="error_resilience mpeg_er mpegvideo"
2123 mpeg1video_encoder_select="aandcttables mpegvideoenc"
2124 mpeg2video_decoder_select="error_resilience mpeg_er mpegvideo"
2125 mpeg2video_encoder_select="aandcttables mpegvideoenc"
2126 mpeg4_decoder_select="h263_decoder mpeg4video_parser"
2127 mpeg4_encoder_select="h263_encoder"
2128 msa1_decoder_select="mss34dsp"
2129 msmpeg4v1_decoder_select="h263_decoder"
2130 msmpeg4v2_decoder_select="h263_decoder"
2131 msmpeg4v2_encoder_select="h263_encoder"
2132 msmpeg4v3_decoder_select="h263_decoder"
2133 msmpeg4v3_encoder_select="h263_encoder"
2134 mss2_decoder_select="error_resilience mpeg_er mpegvideo qpeldsp vc1_decoder"
2135 mts2_decoder_select="mss34dsp"
2136 mxpeg_decoder_select="mjpeg_decoder"
2137 nellymoser_decoder_select="mdct sinewin"
2138 nellymoser_encoder_select="audio_frame_queue mdct sinewin"
2139 nuv_decoder_select="idctdsp lzo"
2140 on2avc_decoder_select="mdct"
2141 opus_decoder_deps="avresample"
2142 opus_decoder_select="imdct15"
2143 png_decoder_deps="zlib"
2144 png_encoder_deps="zlib"
2145 png_encoder_select="huffyuvencdsp"
2146 prores_decoder_select="idctdsp"
2147 prores_encoder_select="fdctdsp"
2148 qcelp_decoder_select="lsp"
2149 qdm2_decoder_select="mdct rdft mpegaudiodsp"
2150 ra_144_encoder_select="audio_frame_queue lpc"
2151 ralf_decoder_select="golomb"
2152 rscc_decoder_deps="zlib"
2153 rv10_decoder_select="error_resilience h263_decoder h263dsp mpeg_er"
2154 rv10_encoder_select="h263_encoder"
2155 rv20_decoder_select="error_resilience h263_decoder h263dsp mpeg_er"
2156 rv20_encoder_select="h263_encoder"
2157 rv30_decoder_select="error_resilience golomb h264chroma h264pred h264qpel mpeg_er mpegvideo rv34dsp videodsp"
2158 rv40_decoder_select="error_resilience golomb h264chroma h264pred h264qpel mpeg_er mpegvideo rv34dsp videodsp"
2159 screenpresso_decoder_deps="zlib"
2160 sipr_decoder_select="lsp"
2161 sp5x_decoder_select="mjpeg_decoder"
2162 svq1_decoder_select="hpeldsp"
2163 svq1_encoder_select="aandcttables hpeldsp me_cmp mpegvideoenc"
2164 svq3_decoder_select="golomb h264dsp h264parse h264pred hpeldsp tpeldsp videodsp"
2165 svq3_decoder_suggest="zlib"
2166 tak_decoder_select="audiodsp"
2167 tdsc_decoder_deps="zlib"
2168 tdsc_decoder_select="mjpeg_decoder"
2169 theora_decoder_select="vp3_decoder"
2170 thp_decoder_select="mjpeg_decoder"
2171 tiff_decoder_suggest="zlib"
2172 tiff_encoder_suggest="zlib"
2173 truehd_decoder_select="mlp_decoder"
2174 truemotion2_decoder_select="bswapdsp"
2175 truespeech_decoder_select="bswapdsp"
2176 tscc_decoder_deps="zlib"
2177 txd_decoder_select="texturedsp"
2178 twinvq_decoder_select="mdct lsp sinewin"
2179 utvideo_decoder_select="bswapdsp huffyuvdsp"
2180 utvideo_encoder_select="bswapdsp huffman huffyuvencdsp"
2181 vble_decoder_select="huffyuvdsp"
2182 vc1_decoder_select="blockdsp error_resilience h263_decoder h264qpel intrax8 mpeg_er mpegvideo vc1dsp"
2183 vc1image_decoder_select="vc1_decoder"
2184 vorbis_decoder_select="mdct"
2185 vorbis_encoder_select="mdct"
2186 vp3_decoder_select="hpeldsp vp3dsp videodsp"
2187 vp5_decoder_select="h264chroma hpeldsp videodsp vp3dsp vp56dsp"
2188 vp6_decoder_select="h264chroma hpeldsp huffman videodsp vp3dsp vp56dsp"
2189 vp6a_decoder_select="vp6_decoder"
2190 vp6f_decoder_select="vp6_decoder"
2191 vp7_decoder_select="h264pred videodsp vp8dsp"
2192 vp8_decoder_select="h264pred videodsp vp8dsp"
2193 vp9_decoder_select="videodsp vp9_superframe_split_bsf"
2194 webp_decoder_select="vp8_decoder"
2195 wmapro_decoder_select="mdct sinewin wma_freqs"
2196 wmav1_decoder_select="mdct sinewin wma_freqs"
2197 wmav1_encoder_select="mdct sinewin wma_freqs"
2198 wmav2_decoder_select="mdct sinewin wma_freqs"
2199 wmav2_encoder_select="mdct sinewin wma_freqs"
2200 wmavoice_decoder_select="lsp rdft dct mdct sinewin"
2201 wmv1_decoder_select="h263_decoder"
2202 wmv1_encoder_select="h263_encoder"
2203 wmv2_decoder_select="blockdsp error_resilience h263_decoder idctdsp intrax8 videodsp wmv2dsp"
2204 wmv2_encoder_select="h263_encoder wmv2dsp"
2205 wmv3_decoder_select="vc1_decoder"
2206 wmv3image_decoder_select="wmv3_decoder"
2207 zerocodec_decoder_deps="zlib"
2208 zlib_decoder_deps="zlib"
2209 zlib_encoder_deps="zlib"
2210 zmbv_decoder_deps="zlib"
2211 zmbv_encoder_deps="zlib"
2213 # hardware accelerators
2214 d3d11va_deps="dxva_h ID3D11VideoDecoder"
2215 dxva2_deps="dxva2api_h DXVA2_ConfigPictureDecode ole32"
2216 vda_deps="VideoDecodeAcceleration_VDADecoder_h blocks_extension pthreads"
2217 vda_extralibs="-framework CoreFoundation -framework VideoDecodeAcceleration -framework QuartzCore"
2219 h263_vaapi_hwaccel_deps="vaapi"
2220 h263_vaapi_hwaccel_select="h263_decoder"
2221 h264_cuvid_hwaccel_deps="cuvid CUVIDH264PICPARAMS"
2222 h264_cuvid_hwaccel_select="h264_decoder"
2223 h264_d3d11va_hwaccel_deps="d3d11va"
2224 h264_d3d11va_hwaccel_select="h264_decoder"
2225 h264_d3d11va2_hwaccel_deps="d3d11va"
2226 h264_d3d11va2_hwaccel_select="h264_decoder"
2227 h264_dxva2_hwaccel_deps="dxva2"
2228 h264_dxva2_hwaccel_select="h264_decoder"
2229 h264_vaapi_hwaccel_deps="vaapi"
2230 h264_vaapi_hwaccel_select="h264_decoder"
2231 h264_vda_hwaccel_deps="vda"
2232 h264_vda_hwaccel_select="h264_decoder"
2233 h264_vda_old_hwaccel_deps="vda"
2234 h264_vda_old_hwaccel_select="h264_decoder"
2235 h264_vdpau_hwaccel_deps="vdpau"
2236 h264_vdpau_hwaccel_select="h264_decoder"
2237 hevc_cuvid_hwaccel_deps="cuvid CUVIDHEVCPICPARAMS"
2238 hevc_cuvid_hwaccel_select="hevc_decoder"
2239 hevc_d3d11va_hwaccel_deps="d3d11va DXVA_PicParams_HEVC"
2240 hevc_d3d11va_hwaccel_select="hevc_decoder"
2241 hevc_d3d11va2_hwaccel_deps="d3d11va DXVA_PicParams_HEVC"
2242 hevc_d3d11va2_hwaccel_select="hevc_decoder"
2243 hevc_dxva2_hwaccel_deps="dxva2 DXVA_PicParams_HEVC"
2244 hevc_dxva2_hwaccel_select="hevc_decoder"
2245 hevc_vaapi_hwaccel_deps="vaapi VAPictureParameterBufferHEVC"
2246 hevc_vaapi_hwaccel_select="hevc_decoder"
2247 hevc_vdpau_hwaccel_deps="vdpau VdpPictureInfoHEVC"
2248 hevc_vdpau_hwaccel_select="hevc_decoder"
2249 mpeg1_vdpau_hwaccel_deps="vdpau"
2250 mpeg1_vdpau_hwaccel_select="mpeg1video_decoder"
2251 mpeg2_d3d11va_hwaccel_deps="d3d11va"
2252 mpeg2_d3d11va_hwaccel_select="mpeg2video_decoder"
2253 mpeg2_d3d11va2_hwaccel_deps="d3d11va"
2254 mpeg2_d3d11va2_hwaccel_select="mpeg2video_decoder"
2255 mpeg2_dxva2_hwaccel_deps="dxva2"
2256 mpeg2_dxva2_hwaccel_select="mpeg2video_decoder"
2257 mpeg2_vaapi_hwaccel_deps="vaapi"
2258 mpeg2_vaapi_hwaccel_select="mpeg2video_decoder"
2259 mpeg2_vdpau_hwaccel_deps="vdpau"
2260 mpeg2_vdpau_hwaccel_select="mpeg2video_decoder"
2261 mpeg4_vaapi_hwaccel_deps="vaapi"
2262 mpeg4_vaapi_hwaccel_select="mpeg4_decoder"
2263 mpeg4_vdpau_hwaccel_deps="vdpau"
2264 mpeg4_vdpau_hwaccel_select="mpeg4_decoder"
2265 vc1_d3d11va_hwaccel_deps="d3d11va"
2266 vc1_d3d11va_hwaccel_select="vc1_decoder"
2267 vc1_d3d11va2_hwaccel_deps="d3d11va"
2268 vc1_d3d11va2_hwaccel_select="vc1_decoder"
2269 vc1_dxva2_hwaccel_deps="dxva2"
2270 vc1_dxva2_hwaccel_select="vc1_decoder"
2271 vc1_vaapi_hwaccel_deps="vaapi"
2272 vc1_vaapi_hwaccel_select="vc1_decoder"
2273 vc1_vdpau_hwaccel_deps="vdpau"
2274 vc1_vdpau_hwaccel_select="vc1_decoder"
2275 vp8_vaapi_hwaccel_deps="vaapi VAPictureParameterBufferVP8"
2276 vp8_vaapi_hwaccel_select="vp8_decoder"
2277 wmv3_d3d11va_hwaccel_select="vc1_d3d11va_hwaccel"
2278 wmv3_d3d11va2_hwaccel_select="vc1_d3d11va2_hwaccel"
2279 wmv3_dxva2_hwaccel_select="vc1_dxva2_hwaccel"
2280 wmv3_vaapi_hwaccel_select="vc1_vaapi_hwaccel"
2281 wmv3_vdpau_hwaccel_select="vc1_vdpau_hwaccel"
2283 # hardware-accelerated codecs
2284 amf_deps_any="libdl LoadLibrary"
2285 nvenc_deps_any="libdl LoadLibrary"
2286 omx_deps="libdl pthreads"
2287 omx_rpi_select="omx"
2292 vaapi_encode_deps="vaapi"
2294 hwupload_cuda_filter_deps="cuda"
2295 scale_npp_filter_deps="cuda libnpp"
2297 h264_amf_encoder_deps="amf"
2298 h264_mmal_decoder_deps="mmal"
2299 h264_nvenc_encoder_deps="nvenc"
2300 h264_omx_encoder_deps="omx"
2301 h264_qsv_decoder_select="h264_mp4toannexb_bsf h264_parser qsvdec"
2302 h264_qsv_encoder_select="qsvenc"
2303 h264_vaapi_encoder_deps="VAEncPictureParameterBufferH264"
2304 h264_vaapi_encoder_select="cbs_h264 vaapi_encode"
2305 hevc_amf_encoder_deps="amf"
2306 hevc_nvenc_encoder_deps="nvenc"
2307 hevc_qsv_decoder_select="hevc_mp4toannexb_bsf hevc_parser qsvdec"
2308 hevc_qsv_encoder_select="hevcparse qsvenc"
2309 hevc_vaapi_encoder_deps="VAEncPictureParameterBufferHEVC"
2310 hevc_vaapi_encoder_select="cbs_h265 vaapi_encode"
2311 mjpeg_qsv_encoder_deps="libmfx"
2312 mjpeg_qsv_encoder_select="qsvenc"
2313 mjpeg_vaapi_encoder_deps="VAEncPictureParameterBufferJPEG"
2314 mjpeg_vaapi_encoder_select="vaapi_encode jpegtables"
2315 mpeg2_mmal_decoder_deps="mmal"
2316 mpeg2_qsv_decoder_select="qsvdec mpegvideo_parser"
2317 mpeg2_qsv_encoder_select="qsvenc"
2318 mpeg2_vaapi_encoder_deps="VAEncPictureParameterBufferMPEG2"
2319 mpeg2_vaapi_encoder_select="cbs_mpeg2 vaapi_encode"
2320 mpeg4_omx_encoder_deps="omx"
2321 vc1_mmal_decoder_deps="mmal"
2322 vc1_qsv_decoder_select="qsvdec vc1_parser"
2323 vp8_qsv_decoder_select="qsvdec vp8_parser"
2324 vp8_vaapi_encoder_deps="VAEncPictureParameterBufferVP8"
2325 vp8_vaapi_encoder_select="vaapi_encode"
2326 vp9_vaapi_encoder_deps="VAEncPictureParameterBufferVP9"
2327 vp9_vaapi_encoder_select="vaapi_encode"
2329 nvenc_h264_encoder_select="h264_nvenc_encoder"
2330 nvenc_hevc_encoder_select="hevc_nvenc_encoder"
2333 aac_parser_select="adts_header"
2334 h264_parser_select="golomb h264dsp h264parse"
2335 hevc_parser_select="hevcparse"
2336 mpegaudio_parser_select="mpegaudioheader"
2337 mpegvideo_parser_select="mpegvideo"
2338 mpeg4video_parser_select="error_resilience h263dsp mpegvideo qpeldsp"
2339 vc1_parser_select="vc1dsp"
2342 aac_adtstoasc_bsf_select="adts_header"
2343 h264_metadata_bsf_select="cbs_h264"
2344 h264_redundant_pps_bsf_select="cbs_h264"
2345 hevc_metadata_bsf_select="cbs_h265"
2346 mjpeg2jpeg_bsf_select="jpegtables"
2347 mpeg2_metadata_bsf_select="cbs_mpeg2"
2348 trace_headers_bsf_select="cbs_h264 cbs_h265 cbs_mpeg2"
2350 # external libraries
2351 avisynth_deps="LoadLibrary"
2352 avxsynth_deps="libdl"
2353 avisynth_demuxer_deps_any="avisynth avxsynth"
2354 avisynth_demuxer_select="riffdec"
2355 libdcadec_decoder_deps="libdcadec"
2356 libfaac_encoder_deps="libfaac"
2357 libfaac_encoder_select="audio_frame_queue"
2358 libfdk_aac_decoder_deps="libfdk_aac"
2359 libfdk_aac_encoder_deps="libfdk_aac"
2360 libfdk_aac_encoder_select="audio_frame_queue"
2361 libgsm_decoder_deps="libgsm"
2362 libgsm_encoder_deps="libgsm"
2363 libgsm_ms_decoder_deps="libgsm"
2364 libgsm_ms_encoder_deps="libgsm"
2365 libilbc_decoder_deps="libilbc"
2366 libilbc_encoder_deps="libilbc"
2367 libkvazaar_encoder_deps="libkvazaar"
2368 libmp3lame_encoder_deps="libmp3lame"
2369 libmp3lame_encoder_select="audio_frame_queue mpegaudioheader"
2370 libopencore_amrnb_decoder_deps="libopencore_amrnb"
2371 libopencore_amrnb_encoder_deps="libopencore_amrnb"
2372 libopencore_amrnb_encoder_select="audio_frame_queue"
2373 libopencore_amrwb_decoder_deps="libopencore_amrwb"
2374 libopenh264_decoder_deps="libopenh264"
2375 libopenh264_decoder_select="h264_mp4toannexb_bsf"
2376 libopenh264_encoder_deps="libopenh264"
2377 libopenjpeg_decoder_deps="libopenjpeg"
2378 libopenjpeg_encoder_deps="libopenjpeg"
2379 libopus_decoder_deps="libopus"
2380 libopus_encoder_deps="libopus"
2381 libopus_encoder_select="audio_frame_queue"
2382 libschroedinger_decoder_deps="libschroedinger"
2383 libschroedinger_encoder_deps="libschroedinger"
2384 libspeex_decoder_deps="libspeex"
2385 libspeex_encoder_deps="libspeex"
2386 libspeex_encoder_select="audio_frame_queue"
2387 libtheora_encoder_deps="libtheora"
2388 libtwolame_encoder_deps="libtwolame"
2389 libvo_aacenc_encoder_deps="libvo_aacenc"
2390 libvo_aacenc_encoder_select="audio_frame_queue"
2391 libvo_amrwbenc_encoder_deps="libvo_amrwbenc"
2392 libvorbis_encoder_deps="libvorbis"
2393 libvorbis_encoder_select="audio_frame_queue"
2394 libvpx_vp8_decoder_deps="libvpx"
2395 libvpx_vp8_encoder_deps="libvpx"
2396 libvpx_vp9_decoder_deps="libvpx"
2397 libvpx_vp9_encoder_deps="libvpx"
2398 libwavpack_encoder_deps="libwavpack"
2399 libwavpack_encoder_select="audio_frame_queue"
2400 libwebp_encoder_deps="libwebp"
2401 libx262_encoder_deps="libx262"
2402 libx264_encoder_deps="libx264"
2403 libx265_encoder_deps="libx265"
2404 libxavs_encoder_deps="libxavs"
2405 libxvid_encoder_deps="libxvid mkstemp"
2408 ac3_demuxer_select="ac3_parser"
2409 asf_demuxer_select="riffdec"
2410 asf_muxer_select="riffenc"
2411 asf_stream_muxer_select="asf_muxer"
2412 avi_demuxer_select="iso_media riffdec"
2413 avi_muxer_select="riffenc"
2414 caf_demuxer_select="iso_media riffdec"
2415 dash_muxer_select="mp4_muxer"
2416 dirac_demuxer_select="dirac_parser"
2417 dv_demuxer_select="dvprofile"
2418 dv_muxer_select="dvprofile"
2419 dxa_demuxer_select="riffdec"
2420 eac3_demuxer_select="ac3_parser"
2421 f4v_muxer_select="mov_muxer"
2422 flac_demuxer_select="flac_parser"
2423 hds_muxer_select="flv_muxer"
2424 hls_muxer_select="mpegts_muxer"
2425 ipod_muxer_select="mov_muxer"
2426 ismv_muxer_select="mov_muxer"
2427 matroska_audio_muxer_select="matroska_muxer"
2428 matroska_demuxer_select="iso_media riffdec"
2429 matroska_demuxer_suggest="bzlib lzo zlib"
2430 matroska_muxer_select="iso_media riffenc"
2431 mmf_muxer_select="riffenc"
2432 mov_demuxer_select="iso_media riffdec"
2433 mov_demuxer_suggest="zlib"
2434 mov_muxer_select="iso_media riffenc rtpenc_chain"
2435 mp3_demuxer_select="mpegaudio_parser"
2436 mp3_muxer_select="mpegaudioheader"
2437 mp4_muxer_select="mov_muxer"
2438 mpegts_demuxer_select="iso_media"
2439 mpegts_muxer_select="adts_muxer latm_muxer"
2440 mpegtsraw_demuxer_select="mpegts_demuxer"
2441 mxf_d10_muxer_select="mxf_muxer"
2442 nut_muxer_select="riffenc"
2443 nuv_demuxer_select="riffdec"
2444 oga_muxer_select="ogg_muxer"
2445 ogg_demuxer_select="dirac_parse"
2446 opus_muxer_select="ogg_muxer"
2447 psp_muxer_select="mov_muxer"
2448 rtp_demuxer_select="sdp_demuxer"
2449 rtpdec_select="asf_demuxer jpegtables mov_demuxer mpegts_demuxer rm_demuxer rtp_protocol srtp"
2450 rtsp_demuxer_select="http_protocol rtpdec"
2451 rtsp_muxer_select="rtp_muxer http_protocol rtp_protocol rtpenc_chain"
2452 sap_demuxer_select="sdp_demuxer"
2453 sap_muxer_select="rtp_muxer rtp_protocol rtpenc_chain"
2454 sdp_demuxer_select="rtpdec"
2455 smoothstreaming_muxer_select="ismv_muxer"
2456 spdif_demuxer_select="adts_header"
2457 spdif_muxer_select="adts_header"
2458 spx_muxer_select="ogg_muxer"
2459 swf_demuxer_suggest="zlib"
2460 tak_demuxer_select="tak_parser"
2461 tg2_muxer_select="mov_muxer"
2462 tgp_muxer_select="mov_muxer"
2463 w64_demuxer_select="wav_demuxer"
2464 wav_demuxer_select="riffdec"
2465 wav_muxer_select="riffenc"
2466 webm_muxer_select="iso_media riffenc"
2467 wtv_demuxer_select="mpegts_demuxer riffdec"
2468 xmv_demuxer_select="riffdec"
2469 xwma_demuxer_select="riffdec"
2472 alsa_indev_deps="alsa"
2473 avfoundation_indev_deps="AVFoundation_AVFoundation_h objc_arc pthreads"
2474 avfoundation_indev_extralibs="-framework Foundation -framework AVFoundation -framework CoreVideo -framework CoreMedia"
2475 bktr_indev_deps_any="dev_bktr_ioctl_bt848_h machine_ioctl_bt848_h dev_video_bktr_ioctl_bt848_h dev_ic_bt8xx_h"
2476 fbdev_indev_deps="linux_fb_h"
2477 jack_indev_deps="libjack"
2478 jack_indev_deps_any="sem_timedwait dispatch_dispatch_h"
2479 libcdio_indev_deps="libcdio"
2480 libdc1394_indev_deps="libdc1394"
2481 oss_indev_deps_any="sys_soundcard_h"
2482 pulse_indev_deps="libpulse"
2483 sndio_indev_deps="sndio"
2484 v4l2_indev_deps_any="linux_videodev2_h sys_videoio_h"
2485 vfwcap_indev_deps="vfw32 vfwcap_defines"
2486 xcbgrab_indev_deps="libxcb libxcb_shape"
2487 xcbgrab_indev_suggest="libxcb_shm libxcb_xfixes"
2490 ffrtmpcrypt_protocol_conflict="librtmp_protocol"
2491 ffrtmpcrypt_protocol_deps_any="gmp openssl"
2492 ffrtmpcrypt_protocol_select="tcp_protocol"
2493 ffrtmphttp_protocol_conflict="librtmp_protocol"
2494 ffrtmphttp_protocol_select="http_protocol"
2495 gopher_protocol_select="network"
2496 http_protocol_select="tcp_protocol"
2497 http_protocol_suggest="zlib"
2498 httpproxy_protocol_select="tcp_protocol"
2499 httpproxy_protocol_suggest="zlib"
2500 https_protocol_select="tls_protocol"
2501 https_protocol_suggest="zlib"
2502 icecast_protocol_select="http_protocol"
2503 librtmp_protocol_deps="librtmp"
2504 librtmpe_protocol_deps="librtmp"
2505 librtmps_protocol_deps="librtmp"
2506 librtmpt_protocol_deps="librtmp"
2507 librtmpte_protocol_deps="librtmp"
2508 mmsh_protocol_select="http_protocol"
2509 mmst_protocol_select="network"
2510 rtmp_protocol_conflict="librtmp_protocol"
2511 rtmp_protocol_select="tcp_protocol"
2512 rtmp_protocol_suggest="zlib"
2513 rtmpe_protocol_select="ffrtmpcrypt_protocol"
2514 rtmpe_protocol_suggest="zlib"
2515 rtmps_protocol_conflict="librtmp_protocol"
2516 rtmps_protocol_select="tls_protocol"
2517 rtmps_protocol_suggest="zlib"
2518 rtmpt_protocol_select="ffrtmphttp_protocol"
2519 rtmpt_protocol_suggest="zlib"
2520 rtmpte_protocol_select="ffrtmpcrypt_protocol ffrtmphttp_protocol"
2521 rtmpte_protocol_suggest="zlib"
2522 rtmpts_protocol_select="ffrtmphttp_protocol https_protocol"
2523 rtmpts_protocol_suggest="zlib"
2524 rtp_protocol_select="udp_protocol"
2525 sctp_protocol_deps="struct_sctp_event_subscribe"
2526 sctp_protocol_select="network"
2527 srtp_protocol_select="rtp_protocol srtp"
2528 tcp_protocol_select="network"
2529 tls_protocol_deps_any="gnutls openssl"
2530 tls_protocol_select="tcp_protocol"
2531 udp_protocol_select="network"
2532 unix_protocol_deps="sys_un_h"
2533 unix_protocol_select="network"
2536 asyncts_filter_deps="avresample"
2537 blackframe_filter_deps="gpl"
2538 boxblur_filter_deps="gpl"
2539 bs2b_filter_deps="libbs2b"
2540 cropdetect_filter_deps="gpl"
2541 deinterlace_qsv_filter_deps="libmfx"
2542 deinterlace_vaapi_filter_deps="vaapi"
2543 delogo_filter_deps="gpl"
2544 drawtext_filter_deps="libfreetype"
2545 drawtext_filter_suggest="libfontconfig"
2546 frei0r_filter_deps="frei0r libdl"
2547 frei0r_src_filter_deps="frei0r libdl"
2548 hdcd_filter_deps="libhdcd"
2549 hqdn3d_filter_deps="gpl"
2550 interlace_filter_deps="gpl"
2551 movie_filter_deps="avcodec avformat"
2552 ocv_filter_deps="libopencv"
2553 overlay_qsv_filter_deps="libmfx"
2554 overlay_qsv_filter_select="qsvvpp"
2555 resample_filter_deps="avresample"
2556 scale_filter_deps="swscale"
2557 scale_qsv_filter_deps="libmfx"
2558 scale_vaapi_filter_deps="vaapi VAProcPipelineParameterBuffer"
2559 vpp_qsv_filter_deps="libmfx"
2560 vpp_qsv_filter_select="qsvvpp"
2563 decode_audio_example_deps="avcodec avutil"
2564 decode_video_example_deps="avcodec avutil"
2565 encode_audio_example_deps="avcodec avutil"
2566 encode_video_example_deps="avcodec avutil"
2567 filter_audio_example_deps="avfilter avutil"
2568 metadata_example_deps="avformat avutil"
2569 output_example_deps="avcodec avformat avresample avutil swscale"
2570 qsvdec_example_deps="avcodec avutil libmfx h264_qsv_decoder"
2571 transcode_aac_example_deps="avcodec avformat avresample"
2574 cpu_init_extralibs="pthreads_extralibs"
2575 cws2fws_extralibs="zlib_extralibs"
2577 # libraries, in linking order
2578 avcodec_deps="avutil"
2579 avcodec_select="null_bsf"
2580 avdevice_deps="avformat avcodec avutil"
2581 avfilter_deps="avutil"
2582 avformat_deps="avcodec avutil"
2583 avformat_suggest="network"
2584 avresample_deps="avutil"
2585 swscale_deps="avutil"
2587 avcodec_extralibs="pthreads_extralibs libm_extralibs"
2588 avdevice_extralibs="libm_extralibs"
2589 avformat_extralibs="libm_extralibs"
2590 avfilter_extralibs="pthreads_extralibs libm_extralibs"
2591 avresample_extralibs="libm_extralibs"
2592 avutil_extralibs="clock_gettime_extralibs cuda_extralibs cuvid_extralibs d3d11va_extralibs libm_extralibs libmfx_extralibs nanosleep_extralibs pthreads_extralibs user32_extralibs vaapi_extralibs vaapi_drm_extralibs vaapi_x11_extralibs vdpau_x11_extralibs wincrypt_extralibs"
2593 swscale_extralibs="libm_extralibs"
2596 avconv_deps="avcodec avfilter avformat avresample swscale"
2597 avconv_select="aformat_filter anull_filter asyncts_filter atrim_filter format_filter
2598 fps_filter null_filter resample_filter scale_filter
2600 avconv_suggest="psapi shell32"
2601 avplay_deps="avcodec avfilter avformat avresample sdl"
2602 avplay_select="rdft format_filter transpose_filter hflip_filter vflip_filter"
2603 avplay_suggest="shell32"
2604 avprobe_deps="avcodec avformat"
2605 avprobe_suggest="shell32"
2609 texi2html_deps="doc"
2611 # default parameters
2613 logfile="avbuild/config.log"
2615 # installation paths
2616 prefix_default="/usr/local"
2617 bindir_default='${prefix}/bin'
2618 datadir_default='${prefix}/share/avconv'
2619 docdir_default='${prefix}/share/doc/libav'
2620 incdir_default='${prefix}/include'
2621 libdir_default='${prefix}/lib'
2622 mandir_default='${prefix}/share/man'
2623 shlibdir_default="$libdir_default"
2628 host_cc_default="gcc"
2629 x86asmexe_default="nasm"
2632 pkg_config_default=pkg-config
2635 version_script='--version-script'
2639 arch_default=$(uname -m)
2644 target_os_default=$(tolower $(uname -s))
2645 host_os=$target_os_default
2647 # configurable options
2648 enable $EXAMPLE_LIST $LIBRARY_LIST $PROGRAM_LIST
2653 enable faan faandct faanidct
2654 enable optimizations
2655 enable safe_bitstream_reader
2657 enable swscale_alpha
2658 enable valgrind_backtrace
2660 # By default, enable only those hwaccels that have no external dependencies.
2661 enable d3d11va dxva2 vda vdpau
2663 # internal components are enabled by default
2664 enable $EXTRALIBS_LIST
2666 # Avoid external, non-system, libraries getting enabled by dependency resolution
2667 disable $EXTERNAL_LIBRARY_LIST
2670 SHFLAGS='-shared -Wl,-soname,$$(@F)'
2673 LIBNAME='$(LIBPREF)$(NAME)$(LIBSUF)'
2676 SLIBNAME='$(SLIBPREF)$(NAME)$(SLIBSUF)'
2677 SLIBNAME_WITH_VERSION='$(SLIBNAME).$(LIBVERSION)'
2678 SLIBNAME_WITH_MAJOR='$(SLIBNAME).$(LIBMAJOR)'
2679 LIB_INSTALL_EXTRA_CMD='$$(RANLIB) "$(LIBDIR)/$(LIBNAME)"'
2680 SLIB_INSTALL_NAME='$(SLIBNAME_WITH_VERSION)'
2681 SLIB_INSTALL_LINKS='$(SLIBNAME_WITH_MAJOR) $(SLIBNAME)'
2682 VERSION_SCRIPT_POSTPROCESS_CMD="cat"
2705 host_extralibs='-lm'
2706 host_cflags_filter=echo
2707 host_ldflags_filter=echo
2709 target_path='$(CURDIR)'
2711 # since the object filename is not given with the -MM flag, the compiler
2712 # is only able to print the basename, and we must add the path ourselves
2713 DEPCMD='$(DEP$(1)) $(DEP$(1)FLAGS) $($(1)DEP_FLAGS) $< | sed -e "/^\#.*/d" -e "s,^[[:space:]]*$(*F)\\.o,$(@D)/$(*F).o," > $(@:.o=.d)'
2719 if test -f configure; then
2722 source_path=$(cd $(dirname "$0"); pwd)
2723 echo "$source_path" | grep -q '[[:blank:]]' &&
2724 die "Out of tree builds are impossible with whitespace in source path."
2725 test -e "$source_path/config.h" &&
2726 die "Out of tree builds are impossible with config.h in source dir."
2733 LIBAV_CONFIGURATION="${LIBAV_CONFIGURATION# } ${l}${r}"
2739 file=$source_path/$3
2740 sed -n "s/^[^#]*$pattern.*([^,]*, *\([^,]*\)\(,.*\)*).*/\1_$thing/p" "$file"
2743 ENCODER_LIST=$(find_things encoder ENC libavcodec/allcodecs.c)
2744 DECODER_LIST=$(find_things decoder DEC libavcodec/allcodecs.c)
2745 PARSER_LIST=$(find_things parser PARSER libavcodec/allcodecs.c)
2746 MUXER_LIST=$(find_things muxer _MUX libavformat/allformats.c)
2747 DEMUXER_LIST=$(find_things demuxer DEMUX libavformat/allformats.c)
2748 INDEV_LIST=$(find_things indev _IN libavdevice/alldevices.c)
2749 FILTER_LIST=$(find_things filter FILTER libavfilter/allfilters.c)
2751 find_things_extern(){
2754 file=$source_path/$3
2755 sed -n "s/^[^#]*extern.*$pattern *ff_\([^ ]*\)_$thing;/\1_$thing/p" "$file"
2758 BSF_LIST=$(find_things_extern bsf AVBitStreamFilter libavcodec/bitstream_filters.c)
2759 HWACCEL_LIST=$(find_things_extern hwaccel AVHWAccel libavcodec/hwaccels.h)
2760 PROTOCOL_LIST=$(find_things_extern protocol URLProtocol libavformat/protocols.c)
2762 AVCODEC_COMPONENTS_LIST="
2770 AVDEVICE_COMPONENTS_LIST="
2774 AVFILTER_COMPONENTS_LIST="
2778 AVFORMAT_COMPONENTS_LIST="
2785 $AVCODEC_COMPONENTS_LIST
2786 $AVDEVICE_COMPONENTS_LIST
2787 $AVFILTER_COMPONENTS_LIST
2788 $AVFORMAT_COMPONENTS_LIST
2791 for n in $COMPONENT_LIST; do
2792 v=$(toupper ${n%s})_LIST
2794 eval ${n}_if_any="\$$v"
2797 enable $ARCH_EXT_LIST
2800 echo "Unknown option \"$1\"."
2801 echo "See $0 --help for available options."
2806 printf "%-25s %-25s %-25s\n" $(cat | tr ' ' '\n' | sort)
2812 echo $* | sed s/$suffix//g | print_3_columns
2822 --extra-ldexeflags=*)
2823 add_ldexeflags $optval
2825 --extra-ldsoflags=*)
2826 add_ldsoflags $optval
2829 add_extralibs $optval
2835 debuglevel="$optval"
2838 disable $PROGRAM_LIST
2840 --disable-everything)
2841 map 'eval unset \${$(toupper ${v%s})_LIST}' $COMPONENT_LIST
2844 map 'eval unset \${$(toupper ${v%s})_LIST}' $COMPONENT_LIST
2845 disable $LIBRARY_LIST $PROGRAM_LIST doc
2847 --enable-*=*|--disable-*=*)
2848 eval $(echo "${opt%%=*}" | sed 's/--/action=/;s/-/ thing=/')
2849 is_in "${thing}s" $COMPONENT_LIST || die_unknown "$opt"
2850 eval list=\$$(toupper $thing)_LIST
2851 name=$(echo "${optval}" | sed "s/,/_${thing}|/g")_${thing}
2852 $action $(filter "$name" $list)
2854 --enable-yasm|--disable-yasm)
2855 warn "The ${opt} option is only provided for compatibility and will be\n"\
2856 "removed in the future. Use --enable-x86asm / --disable-x86asm instead."
2857 test $opt = --enable-yasm && x86asm=yes || x86asm=no
2859 --enable-?*|--disable-?*)
2860 eval $(echo "$opt" | sed 's/--/action=/;s/-/ option=/;s/-/_/g')
2861 if is_in $option $COMPONENT_LIST; then
2862 test $action = disable && action=unset
2863 eval $action \$$(toupper ${option%s})_LIST
2864 elif is_in $option $CMDLINE_SELECT; then
2871 NAME="${opt#--list-}"
2872 is_in $NAME $COMPONENT_LIST || die_unknown $opt
2874 eval show_list $NAME \$$(toupper $NAME)_LIST
2876 --help|-h) show_help
2878 --quiet|-q) quiet=yes
2881 optname="${opt%%=*}"
2882 optname="${optname#--}"
2883 optname=$(echo "$optname" | sed 's/-/_/g')
2884 if is_in $optname $CMDLINE_SET; then
2885 eval $optname='$optval'
2886 elif is_in $optname $CMDLINE_APPEND; then
2887 append $optname "$optval"
2899 disabled logging && logfile=/dev/null
2901 # command line configuration sanity checks
2903 # we need to build at least one lib type
2904 if ! enabled_any static shared; then
2906 At least one library type must be built.
2907 Specify --enable-static to build the static libraries or --enable-shared to
2908 build the shared libraries as well. To only build the shared libraries specify
2909 --disable-static in addition to --enable-shared.
2914 # Die early if licensing-related configure options are incompatible.
2915 die_license_disabled() {
2916 enabled $1 || { enabled $v && die "$v is $1 and --enable-$1 is not specified."; }
2919 map "die_license_disabled gpl" $EXTERNAL_LIBRARY_GPL_LIST
2920 map "die_license_disabled nonfree" $EXTERNAL_LIBRARY_NONFREE_LIST $HWACCEL_LIBRARY_NONFREE_LIST
2921 map "die_license_disabled version3" $EXTERNAL_LIBRARY_VERSION3_LIST
2923 enabled version3 && { enabled gpl && enable gplv3 || enable lgplv3; }
2925 if enabled nonfree; then
2926 license="nonfree and unredistributable"
2927 elif enabled gplv3; then
2928 license="GPL version 3 or later"
2929 elif enabled lgplv3; then
2930 license="LGPL version 3 or later"
2931 elif enabled gpl; then
2932 license="GPL version 2 or later"
2934 license="LGPL version 2.1 or later"
2937 enabled_all gnutls openssl &&
2938 die "GnuTLS and OpenSSL must not be enabled at the same time."
2940 # Disable all the library-specific components if the library itself
2941 # is disabled, see AVCODEC_LIST and following _LIST variables.
2943 disable_components(){
2944 disabled ${1} && disable $(
2945 eval components="\$$(toupper ${1})_COMPONENTS"
2946 map 'eval echo \${$(toupper ${v%s})_LIST}' $components
2950 map 'disable_components $v' $LIBRARY_LIST
2952 echo "# $0 $LIBAV_CONFIGURATION" > $logfile
2955 case "$toolchain" in
2957 cc_default="${toolchain%-asan}"
2958 add_cflags -fsanitize=address
2959 add_ldflags -fsanitize=address
2962 cc_default="${toolchain%-msan}"
2963 add_cflags -fsanitize=memory -fsanitize-memory-track-origins
2964 add_ldflags -fsanitize=memory
2967 cc_default="${toolchain%-tsan}"
2968 add_cflags -fsanitize=thread -fPIE
2969 add_ldflags -fsanitize=thread -pie
2970 case "$toolchain" in
2978 cc_default="${toolchain%-usan}"
2979 add_cflags -fsanitize=undefined
2980 add_ldflags -fsanitize=undefined
2981 case "$toolchain" in
2988 target_exec_default="valgrind"
2989 case "$toolchain" in
2991 target_exec_args="--alloc-fn=av_malloc --alloc-fn=av_mallocz"
2994 target_exec_args="--track-origins=yes --leak-check=full"
2999 # Check whether the current MSVC version needs the C99 converter.
3000 # From MSVC 2013 (compiler major version 18) onwards, it does actually
3001 # support enough of C99 to build libav. Default to the new
3002 # behaviour if the regexp was unable to match anything, since this
3003 # successfully parses the version number of existing supported
3004 # versions that require the converter (MSVC 2010 and 2012).
3005 cl_major_ver=$(cl 2>&1 | sed -n 's/.*Version \([[:digit:]]\{1,\}\)\..*/\1/p')
3006 if [ -z "$cl_major_ver" ] || [ $cl_major_ver -ge 18 ]; then
3009 cc_default="c99wrap cl"
3011 ld_default="$source_path/compat/windows/mslink"
3012 nm_default="dumpbin -symbols"
3016 as_default="armasm64"
3022 target_os_default="win32"
3023 # Use a relative path for TMPDIR. This makes sure all the
3024 # ffconf temp files are written with a relative path, avoiding
3025 # issues with msys/win32 path conversion for MSVC parameters
3026 # such as -Fo<file> or -out:<file>.
3032 nm_default="dumpbin -symbols"
3034 target_os_default="win32"
3038 add_cflags -fprofile-arcs -ftest-coverage
3039 add_ldflags -fprofile-arcs -ftest-coverage
3042 add_cflags -fprofile-arcs -ftest-coverage
3043 add_ldflags --coverage
3046 add_cppflags -U_FORTIFY_SOURCE -D_FORTIFY_SOURCE=2
3047 add_cflags -fno-strict-overflow -fstack-protector-all
3048 add_ldflags -Wl,-z,relro -Wl,-z,now
3051 die "Unknown toolchain $toolchain"
3055 if test -n "$cross_prefix"; then
3056 test -n "$arch" && test -n "$target_os" ||
3057 die "Must specify target arch (--arch) and OS (--target-os) when cross-compiling"
3058 enable cross_compile
3061 ar_default="${cross_prefix}${ar_default}"
3062 cc_default="${cross_prefix}${cc_default}"
3063 objcc_default="${cross_prefix}${objcc_default}"
3064 x86asmexe_default="${cross_prefix}${x86asmexe_default}"
3065 nm_default="${cross_prefix}${nm_default}"
3066 pkg_config_default="${cross_prefix}${pkg_config_default}"
3067 ranlib="${cross_prefix}${ranlib}"
3068 strip="${cross_prefix}${strip}"
3070 sysinclude_default="${sysroot}/usr/include"
3072 set_default arch cc pkg_config sysinclude target_exec target_os x86asmexe
3073 enabled cross_compile || host_cc_default=$cc
3076 if ! $pkg_config --version >/dev/null 2>&1; then
3077 warn "$pkg_config not found, library detection may fail."
3083 mingw32*|mingw64*|win32|win64|cygwin*|*-dos|freedos|opendos|os/2*|symbian) echo .exe ;;
3087 EXESUF=$(exesuf $target_os)
3088 HOSTEXESUF=$(exesuf $host_os)
3090 # set temporary file name
3091 : ${TMPDIR:=$TEMPDIR}
3095 if ! test_cmd mktemp -u XXXXXX; then
3096 # simple replacement for missing mktemp
3097 # NOT SAFE FOR GENERAL USE
3099 tmpname="${2%%XXX*}.${HOSTNAME}.${UID}.$$"
3105 AVTMPDIR=$(mktemp -d "${TMPDIR}/avconf.XXXXXXXX" 2> /dev/null) ||
3106 die "Unable to create temporary directory in $TMPDIR."
3109 tmp="${AVTMPDIR}/test"$2
3110 (set -C; exec > $tmp) 2> /dev/null ||
3111 die "Unable to create temporary file in $AVTMPDIR."
3115 trap 'rm -rf -- "$AVTMPDIR"' EXIT
3120 tmpfile TMPE $EXESUF
3131 # make sure we can execute files in $TMPDIR
3132 cat > $TMPSH 2>> $logfile <<EOF
3135 chmod +x $TMPSH >> $logfile 2>&1
3136 if ! $TMPSH >> $logfile 2>&1; then
3138 Unable to create and execute files in $TMPDIR. Set the TMPDIR environment
3139 variable to another directory and make sure that it is not mounted noexec.
3141 die "Sanity test failed."
3147 # Filter out MSVC cl.exe options from cflags that shouldn't
3148 # be passed to gas-preprocessor
3158 -Wno-switch) echo -Wno-switch-enum ;;
3159 -Wno-format-zero-length) ;;
3160 -Wdisabled-optimization) ;;
3161 -Wno-pointer-sign) echo -Wno-other ;;
3167 msvc_common_flags(){
3170 # In addition to specifying certain flags under the compiler
3171 # specific filters, they must be specified here as well or else the
3172 # generic catch all at the bottom will print the original flag.
3177 -fomit-frame-pointer) ;;
3181 -fno-signed-zeros) ;;
3185 -lz) echo zlib.lib ;;
3186 -lx264) echo libx264.lib ;;
3187 -l*) echo ${flag#-l}.lib ;;
3188 -L*) echo -libpath:${flag#-L} ;;
3195 msvc_common_flags "$@"
3198 -Wall) echo -W3 -wd4018 -wd4146 -wd4244 -wd4305 \
3200 -Wextra) echo -W4 -wd4244 -wd4127 -wd4018 -wd4389 \
3201 -wd4146 -wd4057 -wd4204 -wd4706 -wd4305 \
3202 -wd4152 -wd4324 -we4013 -wd4100 -wd4214 \
3203 -wd4273 -wd4554 -wd4701 -wd4703 ;;
3209 msvc_common_flags "$@"
3212 # Despite what Intel's documentation says -Wall, which is supported
3213 # on Windows, does enable remarks so disable them here.
3214 -Wall) echo $flag -Qdiag-disable:remark ;;
3215 -std=c99) echo -Qstd=c99 ;;
3224 case "${flag#*=}" in
3225 native) echo -xtarget=native ;;
3226 v9|niagara) echo -xarch=sparc ;;
3227 ultrasparc) echo -xarch=sparcvis ;;
3228 ultrasparc3|niagara2) echo -xarch=sparcvis2 ;;
3229 i586|pentium) echo -xchip=pentium ;;
3230 i686|pentiumpro|pentium2) echo -xtarget=pentium_pro ;;
3231 pentium3*|c3-2) echo -xtarget=pentium3 ;;
3232 pentium-m) echo -xarch=sse2 -xchip=pentium3 ;;
3233 pentium4*) echo -xtarget=pentium4 ;;
3234 prescott|nocona) echo -xarch=sse3 -xchip=pentium4 ;;
3235 *-sse3) echo -xarch=sse3 ;;
3236 core2) echo -xarch=ssse3 -xchip=core2 ;;
3237 corei7) echo -xarch=sse4_2 -xchip=nehalem ;;
3238 corei7-avx) echo -xarch=avx -xchip=sandybridge ;;
3239 amdfam10|barcelona|bdver*) echo -xarch=sse4_1 ;;
3240 athlon-4|athlon-[mx]p) echo -xarch=ssea ;;
3241 k8|opteron|athlon64|athlon-fx)
3242 echo -xarch=sse2a ;;
3243 athlon*) echo -xarch=pentium_proa ;;
3246 -std=c99) echo -xc99 ;;
3247 -fomit-frame-pointer) echo -xregs=frameptr ;;
3248 -fPIC) echo -KPIC -xcode=pic32 ;;
3249 -W*,*) echo $flag ;;
3250 -f*-*|-W*|-mimpure-text) ;;
3261 unset _type _ident _cc_c _cc_e _cc_o _flags _cflags
3262 unset _ld_o _ldflags _ld_lib _ld_path
3263 unset _depflags _DEPCMD _DEPFLAGS
3266 if $_cc -v 2>&1 | grep -q '^gcc.*LLVM'; then
3268 gcc_extra_ver=$(expr "$($_cc --version 2>/dev/null | head -n1)" : '.*\((.*)\)')
3269 _ident="llvm-gcc $($_cc -dumpversion 2>/dev/null) $gcc_extra_ver"
3270 _depflags='-MMD -MF $(@:.o=.d) -MT $@'
3273 elif $_cc -v 2>&1 | grep -qi ^gcc; then
3275 gcc_version=$($_cc --version | head -n1)
3276 gcc_basever=$($_cc -dumpversion)
3277 gcc_pkg_ver=$(expr "$gcc_version" : '[^ ]* \(([^)]*)\)')
3278 gcc_ext_ver=$(expr "$gcc_version" : ".*$gcc_pkg_ver $gcc_basever \\(.*\\)")
3279 _ident=$(cleanws "gcc $gcc_basever $gcc_pkg_ver $gcc_ext_ver")
3280 if ! $_cc -dumpversion | grep -q '^2\.'; then
3281 _depflags='-MMD -MF $(@:.o=.d) -MT $@'
3285 elif $_cc --version 2>/dev/null | grep -q ^icc; then
3287 _ident=$($_cc --version | head -n1)
3292 elif $_cc -v 2>&1 | grep -q xlc; then
3294 _ident=$($_cc -qversion 2>/dev/null | head -n1)
3296 _cflags_size='-O5 -qcompact'
3297 elif $_cc --vsn 2>/dev/null | grep -Eq "ARM (C/C\+\+ )?Compiler"; then
3298 test -d "$sysroot" || die "No valid sysroot specified."
3300 _ident=$($_cc --vsn | grep -i build | head -n1 | sed 's/.*: //')
3301 armcc_conf="$PWD/armcc.conf"
3302 $_cc --arm_linux_configure \
3303 --arm_linux_config_file="$armcc_conf" \
3304 --configure_sysroot="$sysroot" \
3305 --configure_cpp_headers="$sysinclude" >>$logfile 2>&1 ||
3306 die "Error creating armcc configuration file."
3307 $_cc --vsn | grep -q RVCT && armcc_opt=rvct || armcc_opt=armcc
3308 _flags="--arm_linux_config_file=$armcc_conf --translate_gcc"
3309 as_default="${cross_prefix}gcc"
3313 elif $_cc -v 2>&1 | grep -q clang; then
3315 _ident=$($_cc --version 2>/dev/null | head -n1)
3316 _depflags='-MMD -MF $(@:.o=.d) -MT $@'
3319 elif $_cc -V 2>&1 | grep -q Sun; then
3321 _ident=$($_cc -V 2>&1 | head -n1 | cut -d' ' -f 2-)
3322 _DEPCMD='$(DEP$(1)) $(DEP$(1)FLAGS) $($(1)DEP_FLAGS) $< | sed -e "1s,^.*: ,$@: ," -e "\$$!s,\$$, \\\," -e "1!s,^.*: , ," > $(@:.o=.d)'
3323 _DEPFLAGS='-xM1 -xc99'
3326 _cflags_size='-O5 -xspace'
3327 _flags_filter=suncc_flags
3328 elif $_cc -v 2>&1 | grep -q 'PathScale\|Path64'; then
3330 _ident=$($_cc -v 2>&1 | head -n1 | tr -d :)
3331 _depflags='-MMD -MF $(@:.o=.d) -MT $@'
3334 _flags_filter='filter_out -Wdisabled-optimization'
3335 elif $_cc -v 2>&1 | grep -q Open64; then
3337 _ident=$($_cc -v 2>&1 | head -n1 | tr -d :)
3338 _depflags='-MMD -MF $(@:.o=.d) -MT $@'
3341 _flags_filter='filter_out -Wdisabled-optimization|-Wtype-limits|-fno-signed-zeros'
3342 elif $_cc 2>&1 | grep -q 'Microsoft.*ARM.*Assembler'; then
3344 _ident=$($_cc | head -n1)
3345 # 4509: "This form of conditional instruction is deprecated"
3346 _flags="-nologo -ignore 4509"
3347 _flags_filter=armasm_flags
3348 elif $_cc -nologo- 2>&1 | grep -q Microsoft; then
3350 _ident=$($_cc 2>&1 | head -n1)
3351 _DEPCMD='$(DEP$(1)) $(DEP$(1)FLAGS) $($(1)DEP_FLAGS) $< 2>&1 | awk '\''/including/ { sub(/^.*file: */, ""); gsub(/\\/, "/"); if (!match($$0, / /)) print "$@:", $$0 }'\'' > $(@:.o=.d)'
3352 _DEPFLAGS='$(CPPFLAGS) $(CFLAGS) -showIncludes -Zs'
3356 if $_cc -nologo- 2>&1 | grep -q Linker; then
3363 _flags_filter=msvc_flags
3365 _ld_path='-libpath:'
3367 elif $_cc 2>&1 | grep -q Intel; then
3369 _ident=$($_cc 2>&1 | head -n1)
3370 _depflags='-QMMD -QMF$(@:.o=.d) -QMT$@'
3371 # Not only is O3 broken on 13.x+ but it is slower on all previous
3372 # versions (tested) as well.
3374 _cflags_size="-O1 -Oi" # -O1 without -Oi miscompiles stuff
3375 if $_cc 2>&1 | grep -q Linker; then
3382 _flags_filter=icl_flags
3384 _ld_path='-libpath:'
3385 # -Qdiag-error to make icl error when seeing certain unknown arguments
3386 _flags='-nologo -Qdiag-error:4044,10157'
3387 # -Qvec- -Qsimd- to prevent miscompilation, -GS for consistency
3388 # with MSVC which enables it by default.
3389 _cflags='-Qms0 -Qvec- -Qsimd- -GS'
3390 elif $_cc -? 2>/dev/null | grep -q 'LLVM.*Linker'; then
3391 # lld can emulate multiple different linkers; in ms link.exe mode,
3392 # the -? parameter gives the help output which contains an identifyable
3393 # string, while it gives an error in other modes.
3395 # The link.exe mode doesn't have a switch for getting the version,
3396 # but we can force it back to gnu mode and get the version from there.
3397 _ident=$($_cc -flavor gnu --version 2>/dev/null)
3399 _flags_filter=msvc_flags
3401 _ld_path='-libpath:'
3402 elif $_cc --version 2>/dev/null | grep -q ^cparser; then
3404 _ident=$($_cc --version | head -n1)
3408 _flags_filter=cparser_flags
3411 eval ${pfx}_type=\$_type
3412 eval ${pfx}_ident=\$_ident
3416 eval ${1}_C=\${_cc_c-\${${1}_C}}
3417 eval ${1}_E=\${_cc_e-\${${1}_E}}
3418 eval ${1}_O=\${_cc_o-\${${1}_O}}
3420 if [ -n "$_depflags" ]; then
3421 eval ${1}_DEPFLAGS=\$_depflags
3423 eval ${1}DEP=\${_DEPCMD:-\$DEPCMD}
3424 eval ${1}DEP_FLAGS=\${_DEPFLAGS:-\$DEPFLAGS}
3425 eval DEP${1}FLAGS=\$_flags
3430 cflags_filter=$_flags_filter
3431 cflags_speed=$_cflags_speed
3432 cflags_size=$_cflags_size
3433 cflags_noopt=$_cflags_noopt
3434 add_cflags $_flags $_cflags
3435 cc_ldflags=$_ldflags
3438 probe_cc hostcc "$host_cc"
3439 host_cflags_filter=$_flags_filter
3440 host_cflags_speed=$_cflags_speed
3441 add_host_cflags $_flags $_cflags
3444 test -n "$cc_type" && enable $cc_type ||
3445 warn "Unknown C compiler $cc, unable to select optimal CFLAGS"
3447 : ${as_default:=$cc}
3448 : ${objcc_default:=$cc}
3449 : ${dep_cc_default:=$cc}
3450 : ${ld_default:=$cc}
3451 : ${host_ld_default:=$host_cc}
3452 set_default ar as objcc dep_cc ld host_ld
3455 asflags_filter=$_flags_filter
3456 add_asflags $_flags $_cflags
3459 probe_cc objcc "$objcc"
3460 objcflags_filter=$_flags_filter
3461 add_objcflags $_flags $_cflags
3465 ldflags_filter=$_flags_filter
3466 add_ldflags $_flags $_ldflags
3467 test "$cc_type" != "$ld_type" && add_ldflags $cc_ldflags
3469 LD_LIB=${_ld_lib-$LD_LIB}
3470 LD_PATH=${_ld_path-$LD_PATH}
3472 probe_cc hostld "$host_ld"
3473 host_ldflags_filter=$_flags_filter
3474 add_host_ldflags $_flags $_ldflags
3475 HOSTLD_O=${_ld_o-$HOSTLD_O}
3477 if [ -z "$CC_DEPFLAGS" ] && [ "$dep_cc" != "$cc" ]; then
3478 probe_cc depcc "$dep_cc"
3479 CCDEP=${_DEPCMD:-$DEPCMD}
3480 CCDEP_FLAGS=${_DEPFLAGS:=$DEPFLAGS}
3484 if $ar 2>&1 | grep -q Microsoft; then
3492 add_cflags $extra_cflags
3493 add_objcflags $extra_objcflags
3494 add_asflags $extra_cflags
3496 if test -n "$sysroot"; then
3499 add_cppflags --sysroot="$sysroot"
3500 add_ldflags --sysroot="$sysroot"
3505 if test "$cpu" = host; then
3506 enabled cross_compile &&
3507 die "--cpu=host makes no sense when cross-compiling."
3512 $cc $1=native -v -c -o $TMPO $TMPC >$TMPE 2>&1 || return
3514 s/.*$1=\\([^ ]*\\).*/\\1/
3519 cpu=$(check_native -march || check_native -mcpu)
3523 test "${cpu:-host}" = host &&
3524 die "--cpu=host not supported with compiler $cc"
3527 # Deal with common $arch aliases
3551 "Power Macintosh"|ppc*|powerpc*)
3566 i[3-6]86|i86pc|BePC|x86pc|x86_64|amd64)
3571 is_in $arch $ARCH_LIST || warn "unknown architecture $arch"
3574 # Add processor-specific flags
3575 if enabled aarch64; then
3579 cpuflags="-march=$cpu"
3582 cpuflags="-mcpu=$cpu"
3586 elif enabled alpha; then
3588 cpuflags="-mcpu=$cpu"
3590 elif enabled arm; then
3593 test_cpp_condition stddef.h \
3594 "defined __ARM_ARCH_${1}__ || defined __TARGET_ARCH_${2:-$1}" \
3599 if check_arm_arch 4; then echo armv4
3600 elif check_arm_arch 4T; then echo armv4t
3601 elif check_arm_arch 5; then echo armv5
3602 elif check_arm_arch 5E; then echo armv5e
3603 elif check_arm_arch 5T; then echo armv5t
3604 elif check_arm_arch 5TE; then echo armv5te
3605 elif check_arm_arch 5TEJ; then echo armv5te
3606 elif check_arm_arch 6; then echo armv6
3607 elif check_arm_arch 6J; then echo armv6j
3608 elif check_arm_arch 6K; then echo armv6k
3609 elif check_arm_arch 6Z; then echo armv6z
3610 elif check_arm_arch 6ZK; then echo armv6zk
3611 elif check_arm_arch 6T2; then echo armv6t2
3612 elif check_arm_arch 7; then echo armv7
3613 elif check_arm_arch 7A 7_A; then echo armv7-a
3614 elif check_arm_arch 7S; then echo armv7-a
3615 elif check_arm_arch 7R 7_R; then echo armv7-r
3616 elif check_arm_arch 7M 7_M; then echo armv7-m
3617 elif check_arm_arch 7EM 7E_M; then echo armv7-m
3618 elif check_arm_arch 8A 8_A; then echo armv8-a
3622 [ "$cpu" = generic ] && cpu=$(probe_arm_arch)
3626 cpuflags="-march=$cpu"
3627 subarch=$(echo $cpu | sed 's/[^a-z0-9]//g')
3630 cpuflags="-mcpu=$cpu"
3632 cortex-a*) subarch=armv7a ;;
3633 cortex-r*) subarch=armv7r ;;
3634 cortex-m*) enable thumb; subarch=armv7m ;;
3635 arm11*) subarch=armv6 ;;
3636 arm[79]*e*|arm9[24]6*|arm96*|arm102[26]) subarch=armv5te ;;
3637 armv4*|arm7*|arm9[24]*) subarch=armv4 ;;
3638 *) subarch=$(probe_arm_arch) ;;
3644 armv5t*) enable fast_clz ;;
3645 armv[6-8]*) enable fast_clz fast_unaligned ;;
3648 elif enabled avr32; then
3653 cpuflags="-mpart=$cpu"
3657 cpuflags="-march=$cpu"
3661 cpuflags="-mcpu=$cpu"
3665 cpuflags="-march=$cpu"
3669 elif enabled bfin; then
3671 cpuflags="-mcpu=$cpu"
3673 elif enabled mips; then
3675 cpuflags="-march=$cpu"
3677 elif enabled ppc; then
3681 case $(tolower $cpu) in
3682 601|ppc601|powerpc601)
3683 cpuflags="-mcpu=601"
3686 603*|ppc603*|powerpc603*)
3687 cpuflags="-mcpu=603"
3690 604*|ppc604*|powerpc604*)
3691 cpuflags="-mcpu=604"
3694 g3|75*|ppc75*|powerpc75*)
3695 cpuflags="-mcpu=750"
3698 g4|745*|ppc745*|powerpc745*)
3699 cpuflags="-mcpu=7450"
3702 74*|ppc74*|powerpc74*)
3703 cpuflags="-mcpu=7400"
3706 g5|970|ppc970|powerpc970)
3707 cpuflags="-mcpu=970"
3711 cpuflags="-mcpu=$cpu"
3715 cpuflags="-mcpu=$cpu"
3719 cpuflags="-mcpu=cell"
3724 cpuflags="-mcpu=e500mc"
3728 cpuflags="-mcpu=8548 -mhard-float -mfloat-gprs=double"
3733 cpuflags="-mcpu=8540 -mhard-float"
3739 elif enabled sparc; then
3742 cypress|f93[04]|tsc701|sparcl*|supersparc|hypersparc|niagara|v[789])
3743 cpuflags="-mcpu=$cpu"
3745 ultrasparc*|niagara[234])
3746 cpuflags="-mcpu=$cpu"
3750 elif enabled x86; then
3754 cpuflags="-march=$cpu"
3758 # targets that do NOT support nopl and conditional mov (cmov)
3759 pentium-mmx|k6|k6-[23]|winchip-c6|winchip2|c3)
3760 cpuflags="-march=$cpu"
3763 # targets that do support nopl and conditional mov (cmov)
3764 i686|pentiumpro|pentium[23]|pentium-m|athlon|athlon-tbird|athlon-4|athlon-[mx]p|athlon64*|k8*|opteron*|athlon-fx|core2|corei7*|amdfam10|barcelona|atom|bdver*)
3765 cpuflags="-march=$cpu"
3769 # targets that do support conditional mov but on which it's slow
3770 pentium4|pentium4m|prescott|nocona)
3771 cpuflags="-march=$cpu"
3779 if [ "$cpu" != generic ]; then
3780 add_cflags $cpuflags
3781 add_asflags $cpuflags
3782 test "$cc_type" = "$ld_type" && add_ldflags $cpuflags
3785 # compiler sanity check
3787 int main(void){ return 0; }
3789 if test "$?" != 0; then
3790 echo "$cc is unable to create an executable file."
3791 if test -z "$cross_prefix" && ! enabled cross_compile ; then
3792 echo "If $cc is a cross-compiler, use the --enable-cross-compile option."
3793 echo "Only do this if you know what cross compiling means."
3795 die "C compiler test failed."
3798 add_cppflags -D_ISOC99_SOURCE
3800 # some compilers silently accept -std=c11, so we also need to check that the
3801 # version macro is defined properly
3802 test_cpp_condition stdlib.h "__STDC_VERSION__ >= 201112L" -std=c11 &&
3803 add_cflags -std=c11 ||
3804 check_cflags -std=c99
3806 check_cppflags -D_FILE_OFFSET_BITS=64
3807 check_cppflags -D_LARGEFILE_SOURCE
3809 add_host_cppflags -D_ISOC99_SOURCE
3810 check_host_cflags -std=c99
3811 check_host_cflags -Wall
3812 check_host_cflags $host_cflags_speed
3817 expr=${3:-'sizeof(void *) > 4'}
3818 test_code cc "" "int test[2*($expr) - 1]" &&
3819 subarch=$arch64 || subarch=$arch32
3825 enabled shared && enable_weak pic
3828 check_64bit mips mips64 '_MIPS_SIM > 1'
3829 enabled shared && enable_weak pic
3832 check_64bit parisc parisc64
3833 enabled shared && enable_weak pic
3836 check_64bit ppc ppc64
3837 enabled shared && enable_weak pic
3840 check_64bit s390 s390x
3841 enabled shared && enable_weak pic
3844 check_64bit sparc sparc64
3845 enabled shared && enable_weak pic
3848 check_64bit x86_32 x86_64
3849 if enabled x86_64; then
3850 enabled shared && enable_weak pic
3860 add_cppflags '-I\$(SRC_PATH)/compat/aix'
3861 enabled shared && add_ldflags -Wl,-brtl
3862 arflags='-Xany -r -c'
3866 enable section_data_rel_ro
3867 SLIB_INSTALL_NAME='$(SLIBNAME)'
3869 SHFLAGS='-shared -Wl,-soname,$(SLIBNAME)'
3872 prefix_default="/boot/common"
3873 network_extralibs="-lnetwork"
3877 SHFLAGS='-shared -Wl,-h,$$(@F)'
3878 enabled x86 && append SHFLAGS -mimpure-text
3879 network_extralibs="-lsocket -lnsl"
3880 # When using suncc to build, the Solaris linker will mark
3881 # an executable with each instruction set encountered by
3882 # the Solaris assembler. As our libraries contain their own
3883 # guards for processor-specific code, instead suppress
3884 # generation of the HWCAPS ELF section on Solaris x86 only.
3885 enabled_all suncc x86 &&
3886 echo "hwcap_1 = OVERRIDE;" > mapfile &&
3887 add_ldflags -Wl,-M,mapfile
3888 nm_default='nm -P -g'
3890 VERSION_SCRIPT_POSTPROCESS_CMD='perl $(SRC_PATH)/compat/solaris/make_sunver.pl - $(OBJS)'
3894 oss_indev_extralibs="-lossaudio"
3899 SLIB_INSTALL_NAME='$(SLIBNAME).$(LIBMAJOR).$(LIBMINOR)'
3901 oss_indev_extralibs="-lossaudio"
3909 add_extralibs -lpoll -lgnugetopt
3912 enabled ppc && add_asflags -force_cpusubtype_ALL
3913 SHFLAGS='-dynamiclib -Wl,-single_module -Wl,-install_name,$(SHLIBDIR)/$(SLIBNAME_WITH_MAJOR),-current_version,$(LIBVERSION),-compatibility_version,$(LIBMAJOR)'
3914 enabled x86_32 && append SHFLAGS -Wl,-read_only_relocs,suppress
3915 add_ldflags -Wl,-dynamic,-search_paths_first
3916 check_cflags -Werror=partial-availability
3918 SLIBNAME_WITH_VERSION='$(SLIBPREF)$(NAME).$(LIBVERSION)$(SLIBSUF)'
3919 SLIBNAME_WITH_MAJOR='$(SLIBPREF)$(NAME).$(LIBMAJOR)$(SLIBSUF)'
3920 enabled x86_64 && objformat="macho64" || objformat="macho32"
3921 enabled_any pic shared ||
3922 { check_cflags -mdynamic-no-pic && add_asflags -mdynamic-no-pic; }
3923 check_header dispatch/dispatch.h &&
3924 add_cppflags '-I\$(SRC_PATH)/compat/dispatch_semaphore'
3925 if test -n "$sysroot"; then
3926 is_in -isysroot $cc $CPPFLAGS $CFLAGS || check_cppflags -isysroot $sysroot
3927 is_in -isysroot $ld $LDFLAGS || check_ldflags -isysroot $sysroot
3931 die "Native MSYS builds are discouraged, please use the MINGW environment."
3936 if enabled x86_64; then
3937 LIBTARGET="i386:x86-64"
3938 elif enabled arm; then
3940 elif enabled aarch64; then
3943 if enabled shared; then
3944 # Cannot build both shared and static libs when using dllimport.
3947 check_ldflags -Wl,--nxcompat
3948 check_ldflags -Wl,--dynamicbase
3949 shlibdir_default="$bindir_default"
3952 SLIBNAME_WITH_VERSION='$(SLIBPREF)$(NAME)-$(LIBVERSION)$(SLIBSUF)'
3953 SLIBNAME_WITH_MAJOR='$(SLIBPREF)$(NAME)-$(LIBMAJOR)$(SLIBSUF)'
3954 SLIB_EXTRA_CMD=-'$(DLLTOOL) -m $(LIBTARGET) -d $$(@:$(SLIBSUF)=.def) -l $(SUBDIR)$(SLIBNAME:$(SLIBSUF)=.lib) -D $(SLIBNAME_WITH_MAJOR)'
3955 SLIB_INSTALL_NAME='$(SLIBNAME_WITH_MAJOR)'
3957 SLIB_INSTALL_EXTRA_SHLIB='$(SLIBNAME:$(SLIBSUF)=.lib)'
3958 SLIB_INSTALL_EXTRA_LIB='lib$(SLIBNAME:$(SLIBSUF)=.dll.a) $(SLIBNAME_WITH_MAJOR:$(SLIBSUF)=.def)'
3959 SLIB_CREATE_DEF_CMD='EXTERN_PREFIX="$(EXTERN_PREFIX)" AR="$(AR_CMD)" NM="$(NM_CMD)" $(SRC_PATH)/compat/windows/makedef $(SUBDIR)lib$(NAME).ver $(OBJS) > $$(@:$(SLIBSUF)=.def)'
3960 SHFLAGS='-shared -Wl,--out-implib,$(SUBDIR)lib$(SLIBNAME:$(SLIBSUF)=.dll.a) -Wl,--enable-auto-image-base $$(@:$(SLIBSUF)=.def)'
3961 enabled x86_64 && objformat="win64" || objformat="win32"
3962 dlltool="${cross_prefix}dlltool"
3968 if enabled shared; then
3969 # Link to the import library instead of the normal static library
3972 # Cannot build both shared and static libs with MSVC or icl.
3975 shlibdir_default="$bindir_default"
3978 SLIBNAME_WITH_VERSION='$(SLIBPREF)$(NAME)-$(LIBVERSION)$(SLIBSUF)'
3979 SLIBNAME_WITH_MAJOR='$(SLIBPREF)$(NAME)-$(LIBMAJOR)$(SLIBSUF)'
3980 SLIB_CREATE_DEF_CMD='EXTERN_PREFIX="$(EXTERN_PREFIX)" $(SRC_PATH)/compat/windows/makedef $(SUBDIR)lib$(NAME).ver $(OBJS) > $$(@:$(SLIBSUF)=.def)'
3981 SLIB_INSTALL_NAME='$(SLIBNAME_WITH_MAJOR)'
3983 SLIB_INSTALL_EXTRA_SHLIB='$(SLIBNAME:$(SLIBSUF)=.lib)'
3984 SLIB_INSTALL_EXTRA_LIB='$(SLIBNAME_WITH_MAJOR:$(SLIBSUF)=.def)'
3985 SHFLAGS='-dll -def:$$(@:$(SLIBSUF)=.def) -implib:$(SUBDIR)$(SLIBNAME:$(SLIBSUF)=.lib)'
3986 enabled x86_64 && objformat="win64" || objformat="win32"
3992 shlibdir_default="$bindir_default"
3995 SLIBNAME_WITH_VERSION='$(SLIBPREF)$(NAME)-$(LIBVERSION)$(SLIBSUF)'
3996 SLIBNAME_WITH_MAJOR='$(SLIBPREF)$(NAME)-$(LIBMAJOR)$(SLIBSUF)'
3997 SLIB_INSTALL_NAME='$(SLIBNAME_WITH_MAJOR)'
3999 SLIB_INSTALL_EXTRA_LIB='lib$(NAME).dll.a'
4000 SHFLAGS='-shared -Wl,--out-implib,$(SUBDIR)lib$(NAME).dll.a'
4001 enabled x86_64 && objformat="win64" || objformat="win32"
4004 *-dos|freedos|opendos)
4005 network_extralibs="-lsocket"
4008 add_cppflags -U__STRICT_ANSI__
4011 enable section_data_rel_ro
4015 ranlib="echo ignoring ranlib"
4020 add_cppflags -D_GNU_SOURCE
4021 add_ldflags -Zomf -Zbin-files -Zargs-wild -Zhigh-mem -Zmap
4022 SHFLAGS='$(SUBDIR)$(NAME).def -Zdll -Zomf'
4026 SLIBNAME_WITH_VERSION='$(SLIBPREF)$(NAME)-$(LIBVERSION)$(SLIBSUF)'
4027 SLIBNAME_WITH_MAJOR='$(SLIBPREF)$(shell echo $(NAME) | cut -c1-6)$(LIBMAJOR)$(SLIBSUF)'
4028 SLIB_CREATE_DEF_CMD='echo LIBRARY $(SLIBNAME_WITH_MAJOR) INITINSTANCE TERMINSTANCE > $(SUBDIR)$(NAME).def; \
4029 echo CODE PRELOAD MOVEABLE DISCARDABLE >> $(SUBDIR)$(NAME).def; \
4030 echo DATA PRELOAD MOVEABLE MULTIPLE NONSHARED >> $(SUBDIR)$(NAME).def; \
4031 echo EXPORTS >> $(SUBDIR)$(NAME).def; \
4032 emxexp $(OBJS) >> $(SUBDIR)$(NAME).def'
4033 SLIB_EXTRA_CMD='emximp -o $(SUBDIR)$(LIBPREF)$(NAME)_dll.a $(SUBDIR)$(NAME).def; \
4034 emximp -o $(SUBDIR)$(LIBPREF)$(NAME)_dll.lib $(SUBDIR)$(NAME).def;'
4035 SLIB_INSTALL_EXTRA_LIB='$(LIBPREF)$(NAME)_dll.a $(LIBPREF)$(NAME)_dll.lib'
4039 add_cppflags -D_BSD_SOURCE
4044 add_cppflags -D_QNX_SOURCE
4045 network_extralibs="-lsocket"
4050 add_cflags --include=$sysinclude/gcce/gcce.h -fvisibility=default
4051 add_cppflags -D__GCCE__ -D__SYMBIAN32__ -DSYMBIAN_OE_POSIX_SIGNALS
4052 add_ldflags -Wl,--target1-abs,--no-undefined \
4053 -Wl,-Ttext,0x80000,-Tdata,0x1000000 -shared \
4054 -Wl,--entry=_E32Startup -Wl,-u,_E32Startup
4055 add_extralibs -l:eexe.lib -l:usrt2_2.lib -l:dfpaeabi.dso \
4056 -l:drtaeabi.dso -l:scppnwdl.dso -lsupc++ -lgcc \
4057 -l:libc.dso -l:libm.dso -l:euser.dso -l:libcrt0.lib
4064 die "Unknown OS '$target_os'."
4068 # determine libc flavour
4073 # uclibc defines __GLIBC__, so it needs to be checked before glibc.
4074 if test_${pfx}cpp_condition features.h "defined __UCLIBC__"; then
4075 eval ${pfx}libc_type=uclibc
4076 add_${pfx}cppflags -D_POSIX_C_SOURCE=200112 -D_XOPEN_SOURCE=600
4077 elif test_${pfx}cpp_condition features.h "defined __GLIBC__"; then
4078 eval ${pfx}libc_type=glibc
4079 add_${pfx}cppflags -D_POSIX_C_SOURCE=200112 -D_XOPEN_SOURCE=600
4080 # MinGW headers can be installed on Cygwin, so check for newlib first.
4081 elif test_${pfx}cpp_condition newlib.h "defined _NEWLIB_VERSION"; then
4082 eval ${pfx}libc_type=newlib
4083 add_${pfx}cppflags -U__STRICT_ANSI__ -D_XOPEN_SOURCE=600
4084 # MinGW64 is backwards compatible with MinGW32, so check for it first.
4085 elif test_${pfx}cpp_condition _mingw.h "defined __MINGW64_VERSION_MAJOR"; then
4086 eval ${pfx}libc_type=mingw64
4087 add_${pfx}cppflags -U__STRICT_ANSI__ -D__USE_MINGW_ANSI_STDIO=1
4088 eval test \$${pfx_no_}cc_type = "gcc" &&
4089 add_${pfx}cppflags -D__printf__=__gnu_printf__
4090 elif test_${pfx}cpp_condition _mingw.h "defined __MINGW_VERSION" ||
4091 test_${pfx}cpp_condition _mingw.h "defined __MINGW32_VERSION"; then
4092 eval ${pfx}libc_type=mingw32
4093 test_${pfx}cpp_condition _mingw.h "__MINGW32_MAJOR_VERSION > 3 || \
4094 (__MINGW32_MAJOR_VERSION == 3 && __MINGW32_MINOR_VERSION >= 15)" ||
4095 die "ERROR: MinGW32 runtime version must be >= 3.15."
4096 add_${pfx}cppflags -U__STRICT_ANSI__ -D__USE_MINGW_ANSI_STDIO=1
4097 test_${pfx}cpp_condition _mingw.h "__MSVCRT_VERSION__ < 0x0700" &&
4098 add_${pfx}cppflags -D__MSVCRT_VERSION__=0x0700
4099 test_${pfx}cpp_condition windows.h "defined(_WIN32_WINNT) && _WIN32_WINNT < 0x0502" &&
4100 add_${pfx}cppflags -D_WIN32_WINNT=0x0502
4101 eval test \$${pfx_no_}cc_type = "gcc" &&
4102 add_${pfx}cppflags -D__printf__=__gnu_printf__
4103 elif test_${pfx}cpp_condition crtversion.h "defined _VC_CRT_MAJOR_VERSION"; then
4104 eval ${pfx}libc_type=msvcrt
4105 if test_${pfx}cpp_condition crtversion.h "_VC_CRT_MAJOR_VERSION < 14"; then
4106 if [ "$pfx" = host_ ]; then
4107 add_host_cppflags -Dsnprintf=_snprintf
4109 add_compat strtod.o strtod=avpriv_strtod
4110 add_compat msvcrt/snprintf.o snprintf=avpriv_snprintf \
4111 _snprintf=avpriv_snprintf \
4112 vsnprintf=avpriv_vsnprintf
4115 add_${pfx}cppflags -D_USE_MATH_DEFINES -D_CRT_SECURE_NO_WARNINGS -D_CRT_NONSTDC_NO_WARNINGS
4116 # The MSVC 2010 headers (Win 7.0 SDK) set _WIN32_WINNT to
4117 # 0x601 by default unless something else is set by the user.
4118 # This can easily lead to us detecting functions only present
4119 # in such new versions and producing binaries requiring windows 7.0.
4120 # Therefore explicitly set the default to XP unless the user has
4121 # set something else on the command line.
4122 # Don't do this if WINAPI_FAMILY is set and is set to a non-desktop
4123 # family. For these cases, configure is free to use any functions
4124 # found in the SDK headers by default. (Alternatively, we could force
4125 # _WIN32_WINNT to 0x0602 in that case.)
4126 test_${pfx}cpp_condition stdlib.h "defined(_WIN32_WINNT)" ||
4127 { test_${pfx}cpp <<EOF && add_${pfx}cppflags -D_WIN32_WINNT=0x0502; }
4128 #ifdef WINAPI_FAMILY
4129 #include <winapifamily.h>
4130 #if !WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP)
4135 if [ "$pfx" = "" ]; then
4136 check_func strtoll || add_cflags -Dstrtoll=_strtoi64
4138 elif test_${pfx}cpp_condition stddef.h "defined __KLIBC__"; then
4139 eval ${pfx}libc_type=klibc
4140 elif test_${pfx}cpp_condition sys/cdefs.h "defined __BIONIC__"; then
4141 eval ${pfx}libc_type=bionic
4142 elif test_${pfx}cpp_condition sys/brand.h "defined LABELED_BRAND_NAME"; then
4143 eval ${pfx}libc_type=solaris
4144 add_${pfx}cppflags -D__EXTENSIONS__ -D_XOPEN_SOURCE=600
4146 eval ${pfx}libc_type=default
4147 add_${pfx}cppflags -D_DEFAULT_SOURCE
4149 eval test -n "\${${pfx}libc_type}" && enable ${pfx}libc_${libc_type}
4155 # hacks for compiler/libc/os combinations
4159 add_compat strtod.o strtod=avpriv_strtod
4163 check_compile_assert flt_lim "float.h limits.h" "DBL_MAX == (double)DBL_MAX" ||
4164 add_cppflags '-I\$(SRC_PATH)/compat/float'
4166 test_cpp_condition stdlib.h "defined(__PIC__) || defined(__pic__) || defined(PIC)" && enable_weak pic
4168 set_default $PATHS_LIST
4171 disabled optimizations || check_cflags -fomit-frame-pointer
4174 disabled pic && return
4177 case "$target_os" in
4178 mingw*|cygwin*|win*)
4187 enabled pic && enable_weak_pic
4189 test_cc <<EOF || die "Symbol mangling check failed."
4192 sym=$($nm $TMPO | awk '/ff_extern/{ print substr($0, match($0, /[^ \t]*ff_extern/)) }')
4193 extern_prefix=${sym%%ff_extern*}
4195 ! disabled inline_asm && check_inline_asm inline_asm '"" ::'
4197 for restrict_keyword in restrict __restrict__ __restrict ""; do
4198 test_code cc "" "char * $restrict_keyword p" && break
4201 check_cc pragma_deprecated "" '_Pragma("GCC diagnostic ignored \"-Wdeprecated-declarations\"")'
4203 require_cc "endian test" "" "unsigned int endian = 'B' << 24 | 'I' << 16 | 'G' << 8 | 'E'"
4204 od -t x1 $TMPO | grep -q '42 *49 *47 *45' && enable bigendian
4207 log "check_gas using '$as' as AS"
4208 # :vararg is used on aarch64, arm and ppc altivec
4209 test_as <<EOF || return 1
4210 .macro m n, y:vararg=0
4215 # .altmacro is only used in arm asm
4216 ! enabled arm || test_as <<EOF || return 1
4223 if enabled_any arm aarch64 || enabled_all ppc altivec && enabled asm; then
4225 enabled_any arm aarch64 && nogas=die
4226 enabled_all ppc altivec && nogas=warn
4230 arm*) gaspp_as_type=armasm; as_noop=-h ;;
4231 gcc) gaspp_as_type=gas ;;
4232 *) gaspp_as_type=$as_type ;;
4235 [ $target_os = "darwin" ] && gaspp_as_type="apple-$gaspp_as_type"
4237 test_cmd gas-preprocessor.pl -arch $arch -as-type $gaspp_as_type -- $as $as_noop &&
4238 gas="gas-preprocessor.pl -arch $arch -as-type $gaspp_as_type -- $as"
4240 if ! check_gas ; then
4243 $nogas "GNU assembler not found, install/update gas-preprocessor"
4246 test_as <<EOF && enable as_func
4252 check_inline_asm inline_asm_labels '"1:\n"'
4254 if enabled aarch64; then
4255 enabled armv8 && check_insn armv8 'prfm pldl1strm, [x0]'
4256 # internal assembler in clang 3.3 does not support this instruction
4257 enabled neon && check_insn neon 'ext v0.8B, v0.8B, v1.8B, #1'
4258 enabled vfp && check_insn vfp 'fmadd d0, d0, d1, d2'
4260 map 'enabled_any ${v}_external ${v}_inline || disable $v' $ARCH_EXT_LIST_ARM
4262 elif enabled alpha; then
4266 elif enabled arm; then
4268 enabled msvc && check_cpp_condition thumb stddef.h "defined _M_ARMT"
4269 test_cpp_condition stddef.h "defined __thumb__" && enable_weak thumb
4270 enabled thumb && check_cflags -mthumb || check_cflags -marm
4272 if check_cpp_condition vfp_args stddef.h "defined __ARM_PCS_VFP"; then
4274 elif check_cpp_condition vfp_args stddef.h "defined _M_ARM_FP && _M_ARM_FP >= 30"; then
4276 elif ! test_cpp_condition stddef.h "defined __ARM_PCS || defined __SOFTFP__" && [ $target_os != darwin ]; then
4277 case "${cross_prefix:-$cc}" in
4278 *hardfloat*) enable vfp_args; fpabi=vfp ;;
4279 *) check_ld vfp_args <<EOF && fpabi=vfp || fpabi=soft ;;
4280 __asm__ (".eabi_attribute 28, 1");
4281 int main(void) { return 0; }
4284 warn "Compiler does not indicate floating-point ABI, guessing $fpabi."
4287 enabled armv5te && check_insn armv5te 'qadd r0, r0, r0'
4288 enabled armv6 && check_insn armv6 'sadd16 r0, r0, r0'
4289 enabled armv6t2 && check_insn armv6t2 'movt r0, #0'
4290 enabled neon && check_insn neon 'vadd.i16 q0, q0, q0'
4291 enabled vfp && check_insn vfp 'fadds s0, s0, s0'
4292 enabled vfpv3 && check_insn vfpv3 'vmov.f32 s0, #1.0'
4294 [ $target_os = linux ] || [ $target_os = android ] ||
4295 map 'enabled_any ${v}_external ${v}_inline || disable $v' \
4298 check_inline_asm asm_mod_q '"add r0, %Q0, %R0" :: "r"((long long)0)'
4300 test_as <<EOF && enable as_arch_directive
4303 test_as <<EOF && enable as_fpu_directive
4307 # llvm's integrated assembler supports .object_arch from llvm 3.5
4308 [ "$objformat" = elf32 ] || [ "$objformat" = elf64 ] &&
4309 test_as <<EOF && enable as_object_arch
4313 # MS armasm fails to assemble our PIC constructs
4314 [ $target_os != win32 ] && enabled_all armv6t2 shared !pic && enable_weak_pic
4316 elif enabled mips; then
4318 # make sure that only one instruction set is enabled
4319 disable $ARCH_EXT_LIST_MIPS
4321 check_inline_asm loongson '"dmult.g $1, $2, $3"'
4323 if enabled mips64; then
4324 check_inline_asm mips64r6 '"dlsa $0, $0, $0, 1"' ||
4325 check_inline_asm mips64r2 '"dext $0, $0, 0, 1"' ||
4326 check_inline_asm mips64r1 '"daddi $0, $0, 0"'
4328 check_inline_asm mips32r6 '"aui $0, $0, 0"' ||
4329 check_inline_asm mips32r2 '"ext $0, $0, 0, 1"' ||
4330 check_inline_asm mips32r1 '"addi $0, $0, 0"'
4333 elif enabled parisc; then
4335 if enabled gcc; then
4336 case $($cc -dumpversion) in
4337 4.[3-8].*) check_cflags -fno-optimize-sibling-calls ;;
4341 elif enabled ppc; then
4343 enable local_aligned_8 local_aligned_16 local_aligned_32
4345 check_inline_asm dcbzl '"dcbzl 0, %0" :: "r"(0)'
4346 check_inline_asm ibm_asm '"add 0, 0, 0"'
4347 check_inline_asm ppc4xx '"maclhw r10, r11, r12"'
4348 check_inline_asm xform_asm '"lwzx %1, %y0" :: "Z"(*(int*)0), "r"(0)'
4350 if enabled altivec; then
4351 check_cflags -maltivec -mabi=altivec
4353 # check if our compiler supports Motorola AltiVec C API
4354 check_cc altivec altivec.h "vector signed int v1 = (vector signed int) { 0 };
4355 vector signed int v2 = (vector signed int) { 1 };
4356 v1 = vec_add(v1, v2);"
4358 enabled altivec || warn "Altivec disabled, possibly missing --cpu flag"
4361 if enabled vsx; then
4362 check_cflags -mvsx &&
4363 check_cc vsx altivec.h "int v[4] = { 0 };
4364 vector signed int v1 = vec_vsx_ld(0, v);"
4367 if enabled power8; then
4368 check_cpp_condition power8 altivec.h "defined(_ARCH_PWR8)"
4371 elif enabled x86; then
4373 check_builtin rdtsc intrin.h "__rdtsc()"
4374 check_builtin mm_empty mmintrin.h "_mm_empty()"
4376 enable local_aligned_8 local_aligned_16 local_aligned_32
4378 # check whether EBP is available on x86
4379 # As 'i' is stored on the stack, this program will crash
4380 # if the base pointer is used to access it because the
4381 # base pointer is cleared in the inline assembly code.
4382 check_exec_crash <<EOF && enable ebp_available
4384 __asm__ volatile ("xorl %%ebp, %%ebp" ::: "%ebp");
4388 # check whether EBX is available on x86
4389 check_inline_asm ebx_available '""::"b"(0)' &&
4390 check_inline_asm ebx_available '"":::"%ebx"'
4392 # check whether xmm clobbers are supported
4393 check_inline_asm xmm_clobbers '"":::"%xmm0"'
4395 # check whether binutils is new enough to compile SSSE3/MMXEXT
4396 enabled ssse3 && check_inline_asm ssse3_inline '"pabsw %xmm0, %xmm0"'
4397 enabled mmxext && check_inline_asm mmxext_inline '"pmaxub %mm0, %mm1"'
4401 if test_cmd $x86asmexe_probe -v; then
4402 x86asmexe=$x86asmexe_probe
4404 x86asm_debug="-g -F dwarf"
4406 X86ASM_DEPFLAGS='-MD $(@:.o=.d)'
4407 elif test_cmd $x86asmexe_probe --version; then
4408 x86asmexe=$x86asmexe_probe
4410 x86asm_debug="-g dwarf2"
4411 X86ASMDEP='$(DEPX86ASM) $(X86ASMFLAGS) -M $(X86ASM_O) $< > $(@:.o=.d)'
4414 test_x86asm "movbe ecx, [5]" && enable x86asm
4417 if ! disabled_any asm mmx x86asm; then
4419 for program in $x86asmexe nasm yasm; do
4420 probe_x86asm $program && break
4422 disabled x86asm && die "nasm/yasm not found or too old. Use --disable-x86asm for a crippled build."
4423 X86ASMFLAGS="-f $objformat"
4424 enabled pic && append X86ASMFLAGS "-DPIC"
4425 test -n "$extern_prefix" && append X86ASMFLAGS "-DPREFIX"
4426 case "$objformat" in
4427 elf*) enabled debug && append X86ASMFLAGS $x86asm_debug ;;
4430 test_x86asm "vextracti128 xmm0, ymm0, 0" || disable avx2_external
4431 test_x86asm "vpmacsdd xmm0, xmm1, xmm2, xmm3" || disable xop_external
4432 test_x86asm "vfmadd132ps ymm0, ymm1, ymm2" || disable fma3_external
4433 test_x86asm "vfmaddps ymm0, ymm1, ymm2, ymm3" || disable fma4_external
4434 test_x86asm "CPU amdnop" || disable cpunop
4438 athlon*|opteron*|k8*|pentium|pentium-mmx|prescott|nocona|atom|geode)
4445 check_cc intrinsics_neon arm_neon.h "int16x8_t test = vdupq_n_s16(0)"
4447 check_ldflags -Wl,--as-needed
4449 if ! disabled network; then
4450 check_func getaddrinfo $network_extralibs
4451 check_func inet_aton $network_extralibs
4453 check_type netdb.h "struct addrinfo"
4454 check_type netinet/in.h "struct group_source_req" -D_BSD_SOURCE
4455 check_type netinet/in.h "struct ip_mreq_source" -D_BSD_SOURCE
4456 check_type netinet/in.h "struct ipv6_mreq" -D_DARWIN_C_SOURCE
4457 check_type poll.h "struct pollfd"
4458 check_type netinet/sctp.h "struct sctp_event_subscribe"
4459 check_struct "sys/types.h sys/socket.h" "struct sockaddr" sa_len
4460 check_type netinet/in.h "struct sockaddr_in6"
4461 check_type "sys/types.h sys/socket.h" "struct sockaddr_storage"
4462 check_type "sys/types.h sys/socket.h" socklen_t
4464 # Prefer arpa/inet.h over winsock2
4465 if check_header arpa/inet.h ; then
4466 check_func closesocket
4467 elif check_header winsock2.h ; then
4468 check_func_headers winsock2.h closesocket -lws2 &&
4469 network_extralibs="-lws2" ||
4470 { check_func_headers winsock2.h closesocket -lws2_32 &&
4471 network_extralibs="-lws2_32"; } || disable winsock2_h network
4472 check_func_headers ws2tcpip.h getaddrinfo $network_extralibs
4474 check_type ws2tcpip.h socklen_t
4475 check_type ws2tcpip.h "struct addrinfo"
4476 check_type ws2tcpip.h "struct group_source_req"
4477 check_type ws2tcpip.h "struct ip_mreq_source"
4478 check_type ws2tcpip.h "struct ipv6_mreq"
4479 check_type winsock2.h "struct pollfd"
4480 check_struct winsock2.h "struct sockaddr" sa_len
4481 check_type ws2tcpip.h "struct sockaddr_in6"
4482 check_type ws2tcpip.h "struct sockaddr_storage"
4488 check_builtin atomic_cas_ptr atomic.h "void **ptr; void *oldval, *newval; atomic_cas_ptr(ptr, oldval, newval)"
4489 check_builtin machine_rw_barrier mbarrier.h "__machine_rw_barrier()"
4490 check_builtin MemoryBarrier windows.h "MemoryBarrier()"
4491 check_builtin sync_val_compare_and_swap "" "int *ptr; int oldval, newval; __sync_val_compare_and_swap(ptr, oldval, newval)"
4493 case "$custom_allocator" in
4495 # jemalloc by default does not use a prefix
4496 require libjemalloc jemalloc/jemalloc.h malloc -ljemalloc
4499 require_pkg_config libtcmalloc libtcmalloc gperftools/tcmalloc.h tc_malloc
4504 check_func_headers malloc.h _aligned_malloc && enable aligned_malloc
4505 check_func ${malloc_prefix}memalign && enable memalign
4506 check_func ${malloc_prefix}posix_memalign && enable posix_memalign
4508 test_cpp_condition unistd.h "defined(_POSIX_MONOTONIC_CLOCK)" &&
4509 { check_lib clock_gettime time.h clock_gettime ||
4510 check_lib clock_gettime time.h clock_gettime -lrt; }
4513 check_func gethrtime
4515 check_func getrusage
4516 check_func gettimeofday
4519 check_func localtime_r
4523 # Solaris has nanosleep in -lrt, OpenSolaris no longer needs that
4524 check_func_headers time.h nanosleep || check_lib nanosleep time.h nanosleep -lrt
4525 check_func sched_getaffinity
4526 check_func setrlimit
4527 check_func strerror_r
4532 check_func_headers io.h setmode
4533 check_func_headers mach/mach_time.h mach_absolute_time
4534 check_func_headers stdlib.h getenv
4536 check_func_headers windows.h GetProcessAffinityMask
4537 check_func_headers windows.h GetProcessTimes
4538 check_func_headers windows.h GetSystemTimeAsFileTime
4539 check_func_headers windows.h LoadLibrary
4540 check_func_headers windows.h MapViewOfFile
4541 check_func_headers windows.h SetConsoleTextAttribute
4542 check_func_headers windows.h Sleep
4543 check_func_headers windows.h VirtualAlloc
4544 check_struct windows.h "CONDITION_VARIABLE" Ptr
4546 check_header direct.h
4547 check_header dxgidebug.h
4549 check_header dxva2api.h
4551 check_header malloc.h
4553 check_header sys/param.h
4554 check_header sys/resource.h
4555 check_header sys/select.h
4556 check_header sys/time.h
4557 check_header sys/un.h
4558 check_header unistd.h
4559 check_header valgrind/valgrind.h
4560 check_header VideoDecodeAcceleration/VDADecoder.h
4561 check_header windows.h
4563 # it seems there are versions of clang in some distros that try to use the
4564 # gcc headers, which explodes for stdatomic
4565 # so we also check that atomics actually work here
4566 check_builtin stdatomic stdatomic.h "atomic_int foo; atomic_store(&foo, 0)"
4568 check_lib ole32 "windows.h" CoTaskMemFree -lole32
4569 check_lib shell32 "windows.h shellapi.h" CommandLineToArgvW -lshell32
4570 check_lib wincrypt "windows.h wincrypt.h" CryptGenRandom -ladvapi32
4571 check_lib psapi "windows.h psapi.h" GetProcessMemoryInfo -lpsapi
4573 check_struct "sys/time.h sys/resource.h" "struct rusage" ru_maxrss
4575 check_type "cuviddec.h" "CUVIDH264PICPARAMS"
4576 check_type "cuviddec.h" "CUVIDHEVCPICPARAMS"
4577 check_struct "cuviddec.h" "CUVIDDECODECREATEINFO" bitDepthMinus8
4579 check_type "windows.h dxva.h" "DXVA_PicParams_HEVC" -DWINAPI_FAMILY=WINAPI_FAMILY_DESKTOP_APP -D_CRT_BUILD_DESKTOP_APP=0
4580 check_type "windows.h d3d11.h" "ID3D11VideoDecoder"
4581 check_type "d3d9.h dxva2api.h" DXVA2_ConfigPictureDecode -D_WIN32_WINNT=0x0602
4583 check_type "va/va.h va/va_dec_hevc.h" "VAPictureParameterBufferHEVC"
4584 check_type "va/va.h va/va_dec_vp8.h" "VAPictureParameterBufferVP8"
4585 check_type "va/va.h va/va_vpp.h" "VAProcPipelineParameterBuffer"
4586 check_type "va/va.h va/va_enc_h264.h" "VAEncPictureParameterBufferH264"
4587 check_type "va/va.h va/va_enc_hevc.h" "VAEncPictureParameterBufferHEVC"
4588 check_type "va/va.h va/va_enc_jpeg.h" "VAEncPictureParameterBufferJPEG"
4589 check_type "va/va.h va/va_enc_mpeg2.h" "VAEncPictureParameterBufferMPEG2"
4590 check_type "va/va.h va/va_enc_vp8.h" "VAEncPictureParameterBufferVP8"
4591 check_type "va/va.h va/va_enc_vp9.h" "VAEncPictureParameterBufferVP9"
4593 check_type "vdpau/vdpau.h" "VdpPictureInfoHEVC"
4595 if ! disabled w32threads && ! enabled pthreads; then
4596 check_lib w32threads "windows.h process.h" _beginthreadex
4599 # check for some common methods of building with pthread support
4600 # do this before the optional library checks as some of them require pthreads
4601 if ! disabled pthreads && ! enabled w32threads; then
4602 if check_lib pthreads pthread.h pthread_join -pthread; then
4604 elif check_lib pthreads pthread.h pthread_join -pthreads; then
4605 add_cflags -pthreads
4606 elif check_lib pthreads pthread.h pthread_join -lpthreadGC2; then
4608 elif check_lib pthreads pthread.h pthread_join -lpthread; then
4610 elif check_func pthread_join; then
4614 check_builtin sem_timedwait semaphore.h "sem_t *s; sem_init(s,0,0); sem_timedwait(s,0); sem_destroy(s)" $pthreads_extralibs
4617 disabled zlib || check_lib zlib zlib.h zlibVersion -lz
4618 disabled bzlib || check_lib bzlib bzlib.h BZ2_bzlibVersion -lbz2
4620 # On some systems dynamic loading requires no extra linker flags
4621 check_lib libdl dlfcn.h dlopen || check_lib libdl dlfcn.h dlopen -ldl
4623 check_lib libm math.h sin -lm
4629 for func in $MATH_FUNCS; do
4630 eval check_mathfunc $func \${${func}_args:-1} $libm_extralibs
4633 # these are off by default, so fail if requested and not available
4634 enabled amf && require_cpp_condition AMF/core/Version.h "(AMF_VERSION_MAJOR << 48 | AMF_VERSION_MINOR << 32 | AMF_VERSION_RELEASE << 16 | AMF_VERSION_BUILD_NUM) >= 0x0001000400040001"
4635 enabled avisynth && require_header avisynth/avisynth_c.h
4636 enabled avxsynth && require_header avxsynth/avxsynth_c.h
4637 enabled cuda && require cuda cuda.h cuInit -lcuda
4638 enabled cuvid && require cuvid cuviddec.h cuvidCreateDecoder -lnvcuvid
4639 enabled frei0r && require_header frei0r.h
4640 enabled gnutls && require_pkg_config gnutls gnutls gnutls/gnutls.h gnutls_global_init &&
4641 check_lib gmp gmp.h mpz_export -lgmp
4642 enabled libbs2b && require_pkg_config libbs2b libbs2b bs2b.h bs2b_open
4643 enabled libdc1394 && require_pkg_config libdc1394 libdc1394-2 dc1394/dc1394.h dc1394_new
4644 enabled libdcadec && require libdcadec libdcadec/dca_context.h dcadec_context_create -ldcadec
4645 enabled libfaac && require libfaac "stdint.h faac.h" faacEncGetVersion -lfaac
4646 enabled libfdk_aac && require_pkg_config libfdk_aac fdk-aac "fdk-aac/aacenc_lib.h" aacEncOpen
4647 enabled libfontconfig && require_pkg_config libfontconfig fontconfig "fontconfig/fontconfig.h" FcInit
4648 enabled libfreetype && require_pkg_config libfreetype freetype2 "ft2build.h FT_FREETYPE_H" FT_Init_FreeType
4649 enabled libgsm && require libgsm gsm.h gsm_create -lgsm
4650 enabled libhdcd && require_pkg_config libhdcd libhdcd "hdcd/hdcd_simple.h" hdcd_new
4651 enabled libilbc && require libilbc ilbc.h WebRtcIlbcfix_InitDecode -lilbc
4652 enabled libkvazaar && require_pkg_config libkvazaar "kvazaar >= 0.8.1" kvazaar.h kvz_api_get
4653 enabled libmfx && require_pkg_config libmfx libmfx "mfx/mfxvideo.h" MFXInit
4654 enabled libmp3lame && require "libmp3lame >= 3.98.3" lame/lame.h lame_set_VBR_quality -lmp3lame
4655 enabled libnpp && require libnpp npp.h nppGetLibVersion -lnppi -lnppc
4656 enabled libopencore_amrnb && require libopencore_amrnb opencore-amrnb/interf_dec.h Decoder_Interface_init -lopencore-amrnb
4657 enabled libopencore_amrwb && require libopencore_amrwb opencore-amrwb/dec_if.h D_IF_init -lopencore-amrwb
4658 enabled libopencv && require_pkg_config libopencv opencv opencv/cv.h cvCreateImageHeader
4659 enabled libopenh264 && require_pkg_config libopenh264 openh264 wels/codec_api.h WelsGetCodecVersion
4660 enabled libopenjpeg && { check_lib libopenjpeg openjpeg.h opj_version -lopenjpeg -DOPJ_STATIC ||
4661 require_pkg_config libopenjpeg libopenjpeg1 openjpeg.h opj_version -DOPJ_STATIC; }
4662 enabled libopus && require_pkg_config libopus opus opus_multistream.h opus_multistream_decoder_create
4663 enabled libpulse && require_pkg_config libpulse libpulse-simple pulse/simple.h pa_simple_new
4664 enabled librtmp && require_pkg_config librtmp librtmp librtmp/rtmp.h RTMP_Socket
4665 enabled libschroedinger && require_pkg_config libschroedinger schroedinger-1.0 schroedinger/schro.h schro_init
4666 enabled libsnappy && require libsnappy snappy-c.h snappy_compress -lsnappy
4667 enabled libspeex && require_pkg_config libspeex speex speex/speex.h speex_decoder_init
4668 enabled libtheora && require libtheora theora/theoraenc.h th_info_init -ltheoraenc -ltheoradec -logg
4669 enabled libtwolame && require libtwolame twolame.h twolame_init -ltwolame
4670 enabled libvo_aacenc && require libvo_aacenc vo-aacenc/voAAC.h voGetAACEncAPI -lvo-aacenc
4671 enabled libvo_amrwbenc && require libvo_amrwbenc vo-amrwbenc/enc_if.h E_IF_init -lvo-amrwbenc
4672 enabled libvorbis && require libvorbis vorbis/vorbisenc.h vorbis_info_init -lvorbisenc -lvorbis -logg
4673 enabled libvpx && require_pkg_config libvpx "vpx >= 1.3.0" vpx/vpx_codec.h vpx_codec_version &&
4674 { enabled libvpx_vp8_decoder &&
4675 check_pkg_config libvpx_vp8_decoder vpx "vpx/vpx_decoder.h vpx/vp8dx.h" vpx_codec_vp8_dx
4676 enabled libvpx_vp8_encoder &&
4677 check_pkg_config libvpx_vp8_encoder vpx "vpx/vpx_encoder.h vpx/vp8cx.h" vpx_codec_vp8_cx
4678 enabled libvpx_vp9_decoder &&
4679 check_pkg_config libvpx_vp9_decoder vpx "vpx/vpx_decoder.h vpx/vp8dx.h" vpx_codec_vp9_dx
4680 enabled libvpx_vp9_encoder &&
4681 check_pkg_config libvpx_vp9_encoder vpx "vpx/vpx_encoder.h vpx/vp8cx.h" vpx_codec_vp9_cx
4682 disabled_all libvpx_vp8_decoder libvpx_vp9_decoder libvpx_vp8_encoder libvpx_vp9_encoder &&
4683 die "libvpx enabled but no supported decoders/encoders found"
4685 enabled libwavpack && require libwavpack wavpack/wavpack.h WavpackOpenFileOutput -lwavpack
4686 enabled libwebp && require_pkg_config libwebp libwebp webp/encode.h WebPGetEncoderVersion
4687 enabled libx264 && require_pkg_config libx264 x264 "stdint.h x264.h" x264_encoder_encode &&
4688 require_cpp_condition x264.h "X264_BUILD >= 118" &&
4689 check_cpp_condition libx262 x264.h "X264_MPEG2"
4690 enabled libx265 && require_pkg_config libx265 x265 x265.h x265_api_get &&
4691 require_cpp_condition x265.h "X265_BUILD >= 57"
4692 enabled libxavs && require libxavs "stdint.h xavs.h" xavs_encoder_encode -lxavs
4693 enabled libxvid && require libxvid xvid.h xvid_global -lxvidcore
4694 enabled mmal && { check_lib mmal interface/mmal/mmal.h mmal_port_connect -lmmal_core -lmmal_util -lmmal_vc_client -lbcm_host ||
4695 { ! enabled cross_compile &&
4696 add_cflags -isystem/opt/vc/include/ -isystem/opt/vc/include/interface/vmcs_host/linux -isystem/opt/vc/include/interface/vcos/pthreads -fgnu89-inline &&
4697 add_ldflags -L/opt/vc/lib/ &&
4698 check_lib mmal interface/mmal/mmal.h mmal_port_connect -lmmal_core -lmmal_util -lmmal_vc_client -lbcm_host; } ||
4699 die "ERROR: mmal not found" &&
4700 check_func_headers interface/mmal/mmal.h "MMAL_PARAMETER_VIDEO_MAX_NUM_CALLBACKS"; }
4701 enabled nvenc && require_cpp_condition nvEncodeAPI.h "NVENCAPI_MAJOR_VERSION >= 6"
4702 enabled omx && require_header OMX_Core.h
4703 enabled omx_rpi && { check_header OMX_Core.h ||
4704 { ! enabled cross_compile && add_cflags -isystem/opt/vc/include/IL && check_header OMX_Core.h ; } ||
4705 die "ERROR: OpenMAX IL headers not found"; } && enable omx
4706 enabled openssl && { { check_pkg_config openssl openssl openssl/ssl.h OPENSSL_init_ssl ||
4707 check_pkg_config openssl openssl openssl/ssl.h SSL_library_init; } ||
4708 check_lib openssl openssl/ssl.h SSL_library_init -lssl -lcrypto ||
4709 check_lib openssl openssl/ssl.h SSL_library_init -lssl32 -leay32 ||
4710 check_lib openssl openssl/ssl.h SSL_library_init -lssl -lcrypto -lws2_32 -lgdi32 ||
4711 die "ERROR: openssl not found"; }
4713 # SDL adds some CFLAGS that should not be part of the general CFLAGS.
4715 test_pkg_config sdl "sdl >= 1.2.1 sdl < 1.3.0" SDL_events.h SDL_PollEvent
4717 check_header linux/fb.h
4718 check_header linux/videodev2.h
4719 check_struct linux/videodev2.h "struct v4l2_frmivalenum" discrete
4721 check_header AVFoundation/AVFoundation.h
4723 check_header sys/videoio.h
4725 check_lib user32 "windows.h winuser.h" GetShellWindow -luser32
4726 check_lib vfw32 "windows.h vfw.h" capCreateCaptureWindow -lvfw32
4727 # check that WM_CAP_DRIVER_CONNECT is defined to the proper value
4728 # w32api 3.12 had it defined wrong
4729 check_cpp_condition vfwcap_defines vfw.h "WM_CAP_DRIVER_CONNECT > WM_USER"
4731 # check for ioctl_meteor.h, ioctl_bt848.h and alternatives
4732 check_header "dev/bktr/ioctl_meteor.h dev/bktr/ioctl_bt848.h" ||
4733 check_header "machine/ioctl_meteor.h machine/ioctl_bt848.h" ||
4734 check_header "dev/video/meteor/ioctl_meteor.h dev/video/bktr/ioctl_bt848.h" ||
4735 check_header "dev/ic/bt8xx.h"
4737 check_header sys/soundcard.h
4739 enabled alsa_indev &&
4740 check_lib alsa alsa/asoundlib.h snd_pcm_htimestamp -lasound
4743 require_pkg_config libjack jack jack/jack.h jack_port_get_latency_range
4745 enabled sndio_indev && check_lib sndio sndio.h sio_open -lsndio
4747 if enabled libcdio; then
4748 check_lib libcdio "cdio/cdda.h cdio/paranoia.h" cdio_cddap_open -lcdio_paranoia -lcdio_cdda -lcdio ||
4749 check_lib libcdio "cdio/paranoia/cdda.h cdio/paranoia/paranoia.h" cdio_cddap_open -lcdio_paranoia -lcdio_cdda -lcdio ||
4750 die "ERROR: No usable libcdio/cdparanoia found"
4753 if enabled libxcb; then
4754 require_pkg_config libxcb xcb xcb/xcb.h xcb_connect
4755 require_pkg_config libxcb_shape xcb-shape xcb/shape.h xcb_shape_rectangles
4756 disabled libxcb_shm ||
4757 check_pkg_config libxcb_shm xcb-shm xcb/shm.h xcb_shm_attach
4758 disabled libxcb_xfixes ||
4759 check_pkg_config libxcb_xfixes xcb-xfixes xcb/xfixes.h xcb_xfixes_get_cursor_image
4762 # d3d11va requires linking directly to dxgi and d3d11 if not building for
4763 # the desktop api partition
4764 test_cpp <<EOF && enable uwp && d3d11va_extralibs="-ldxgi -ld3d11"
4765 #ifdef WINAPI_FAMILY
4766 #include <winapifamily.h>
4767 #if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP)
4768 #error desktop, not uwp
4770 // WINAPI_FAMILY_APP, WINAPI_FAMILY_PHONE_APP => UWP
4773 #error no family set
4777 enabled vaapi && require vaapi va/va.h vaInitialize -lva
4779 if enabled vaapi; then
4780 require_cc vaapi "va/va.h" "vaCreateSurfaces(0, 0, 0, 0, 0, 0, 0, 0)"
4781 check_lib vaapi_drm "va/va.h va/va_drm.h" vaGetDisplayDRM -lva -lva-drm
4782 check_lib vaapi_x11 "va/va.h va/va_x11.h" vaGetDisplay -lva -lva-x11 -lX11
4786 test_cpp_condition "va/va.h" "VA_CHECK_VERSION(1, 0, 0)" &&
4790 check_cpp_condition vdpau vdpau/vdpau.h "defined VDP_DECODER_PROFILE_MPEG4_PART2_ASP"
4793 check_lib vdpau_x11 "vdpau/vdpau.h vdpau/vdpau_x11.h" vdp_device_create_x11 -lvdpau -lX11
4795 enabled debug && add_cflags -g"$debuglevel" && add_asflags -g"$debuglevel"
4797 # add some useful compiler flags if supported
4798 check_cflags -Wdeclaration-after-statement
4800 check_cflags -Wdisabled-optimization
4801 check_cflags -Wpointer-arith
4802 check_cflags -Wredundant-decls
4803 check_cflags -Wwrite-strings
4804 check_cflags -Wtype-limits
4805 check_cflags -Wundef
4806 check_cflags -Wmissing-prototypes
4807 check_cflags -Wstrict-prototypes
4809 if enabled extra_warnings; then
4810 check_cflags -Wcast-qual
4811 check_cflags -Wextra
4812 check_cflags -Wpedantic
4815 check_disable_warning(){
4816 warning_flag=-W${1#-Wno-}
4817 test_cflags $warning_flag && add_cflags $1
4820 check_disable_warning -Wno-parentheses
4821 check_disable_warning -Wno-switch
4822 check_disable_warning -Wno-format-zero-length
4823 check_disable_warning -Wno-pointer-sign
4825 check_disable_warning_headers(){
4826 warning_flag=-W${1#-Wno-}
4827 test_cflags $warning_flag && add_cflags_headers $1
4830 check_disable_warning_headers -Wno-deprecated-declarations
4831 check_disable_warning_headers -Wno-unused-variable
4833 check_objcflags -fobjc-arc && enable objc_arc
4835 check_cc blocks_extension "" "void (^block)(void)"
4837 # add some linker flags
4838 check_ldflags -Wl,--warn-common
4839 check_ldflags -Wl,-rpath-link=libswscale:libavfilter:libavdevice:libavformat:libavcodec:libavutil:libavresample
4840 enabled rpath && add_ldexeflags -Wl,-rpath,$libdir && add_ldsoflags -Wl,-rpath,$libdir
4841 test_ldflags -Wl,-Bsymbolic && append SHFLAGS -Wl,-Bsymbolic
4843 # add some strip flags
4844 # -wN '..@*' is more selective than -x, but not available everywhere.
4845 check_stripflags -wN \'..@*\' || check_stripflags -x || strip='true'
4847 enabled neon_clobber_test &&
4848 check_ldflags -Wl,--wrap,avcodec_open2 \
4849 -Wl,--wrap,avcodec_decode_audio4 \
4850 -Wl,--wrap,avcodec_decode_video2 \
4851 -Wl,--wrap,avcodec_decode_subtitle2 \
4852 -Wl,--wrap,avcodec_encode_audio2 \
4853 -Wl,--wrap,avcodec_encode_video2 \
4854 -Wl,--wrap,avcodec_encode_subtitle \
4855 -Wl,--wrap,avcodec_send_packet \
4856 -Wl,--wrap,avcodec_receive_packet \
4857 -Wl,--wrap,avcodec_send_frame \
4858 -Wl,--wrap,avcodec_receive_frame \
4859 -Wl,--wrap,avresample_convert ||
4860 disable neon_clobber_test
4862 enabled xmm_clobber_test &&
4863 check_ldflags -Wl,--wrap,avcodec_open2 \
4864 -Wl,--wrap,avcodec_decode_audio4 \
4865 -Wl,--wrap,avcodec_decode_video2 \
4866 -Wl,--wrap,avcodec_decode_subtitle2 \
4867 -Wl,--wrap,avcodec_encode_audio2 \
4868 -Wl,--wrap,avcodec_encode_video2 \
4869 -Wl,--wrap,avcodec_encode_subtitle \
4870 -Wl,--wrap,avcodec_send_packet \
4871 -Wl,--wrap,avcodec_receive_packet \
4872 -Wl,--wrap,avcodec_send_frame \
4873 -Wl,--wrap,avcodec_receive_frame \
4874 -Wl,--wrap,avresample_convert \
4875 -Wl,--wrap,sws_scale ||
4876 disable xmm_clobber_test
4878 check_ld proper_dce <<EOF
4879 extern const int array[512];
4880 static inline int func(void) { return array[0]; }
4881 int main(void) { return 0; }
4884 if enabled proper_dce; then
4885 echo "X { local: *; };" > $TMPV
4886 if test_ldflags -Wl,${version_script},$TMPV; then
4887 append SHFLAGS '-Wl,${version_script},\$(SUBDIR)lib\$(NAME).ver'
4889 check_cc symver_asm_label "" "void ff_foo(void) __asm__ ("av_foo@VERSION");
4890 void ff_foo(void) { ${inline_asm+__asm__($quotes);} }"
4891 check_cc symver_gnu_asm "" "__asm__(".symver ff_foo,av_foo@VERSION");
4892 void ff_foo(void) {}"
4896 if [ -z "$optflags" ]; then
4897 if enabled small; then
4898 optflags=$cflags_size
4899 elif enabled optimizations; then
4900 optflags=$cflags_speed
4902 optflags=$cflags_noopt
4908 enabled lto && check_ldflags "$@"
4911 check_optflags $optflags
4912 check_optflags -fno-math-errno
4913 check_optflags -fno-signed-zeros
4915 if enabled lto; then
4916 test "$cc_type" != "$ld_type" && die "LTO requires same compiler and linker"
4918 check_ldflags -flto $cpuflags
4921 if enabled icc; then
4922 # Just warnings, no remarks
4924 # -wd: Disable following warnings
4925 # 144, 167, 556: -Wno-pointer-sign
4926 # 1292: attribute "foo" ignored
4927 # 1419: external declaration in primary source file
4928 # 10006: ignoring unknown option -fno-signed-zeros
4929 # 10148: ignoring unknown option -Wno-parentheses
4930 # 10156: ignoring option '-W'; no argument required
4931 check_cflags -wd144,167,556,1292,1419,10006,10148,10156
4932 # 11030: Warning unknown option --as-needed
4933 # 10156: ignoring option '-export'; no argument required
4934 check_ldflags -wd10156,11030
4935 # icc 11.0 and 11.1 work with ebp_available, but don't pass the test
4936 enable ebp_available
4937 if enabled x86_32; then
4938 icc_version=$($cc -dumpversion)
4939 test ${icc_version%%.*} -ge 11 &&
4940 check_cflags -falign-stack=maintain-16-byte ||
4941 disable aligned_stack
4943 elif enabled gcc; then
4944 check_optflags -fno-tree-vectorize
4945 check_cflags -Werror=implicit-function-declaration
4946 check_cflags -Werror=missing-prototypes
4947 check_cflags -Werror=return-type
4948 check_cflags -Werror=declaration-after-statement
4949 check_cflags -Werror=vla
4950 check_cflags -Werror=format-security
4951 check_cflags -fdiagnostics-color=auto
4952 enabled extra_warnings || check_disable_warning -Wno-maybe-uninitialized
4953 elif enabled llvm_gcc; then
4954 check_cflags -mllvm -stack-alignment=16
4955 elif enabled clang; then
4956 check_cflags -mllvm -stack-alignment=16
4957 check_cflags -Qunused-arguments
4958 check_cflags -Werror=implicit-function-declaration
4959 check_cflags -Werror=missing-prototypes
4960 check_cflags -Werror=return-type
4961 elif enabled cparser; then
4962 add_cflags -Wno-missing-variable-declarations
4963 add_cflags -Wno-empty-statement
4964 elif enabled armcc; then
4965 add_cflags -W${armcc_opt},--diag_suppress=4343 # hardfp compat
4966 add_cflags -W${armcc_opt},--diag_suppress=3036 # using . as system include dir
4967 # 2523: use of inline assembly is deprecated
4968 add_cflags -W${armcc_opt},--diag_suppress=2523
4969 add_cflags -W${armcc_opt},--diag_suppress=1207
4970 add_cflags -W${armcc_opt},--diag_suppress=1293 # assignment in condition
4971 add_cflags -W${armcc_opt},--diag_suppress=3343 # hardfp compat
4972 add_cflags -W${armcc_opt},--diag_suppress=167 # pointer sign
4973 add_cflags -W${armcc_opt},--diag_suppress=513 # pointer sign
4974 elif enabled pathscale; then
4975 add_cflags -fstrict-overflow -OPT:wrap_around_unsafe_opt=OFF
4977 elif enabled_any msvc icl; then
4978 enabled x86_32 && disable aligned_stack
4979 enabled_all x86_32 debug && add_cflags -Oy-
4980 enabled debug && add_ldflags -debug
4981 enable pragma_deprecated
4982 if enabled icl; then
4983 # -Qansi-alias is basically -fstrict-aliasing, but does not work
4984 # (correctly) on icl 13.x.
4985 test_cpp_condition "windows.h" "__ICL < 1300 || __ICL >= 1400" &&
4986 add_cflags -Qansi-alias
4987 # icl will pass the inline asm tests but inline asm is currently
4988 # not supported (build will fail)
4991 # msvcrt10 x64 incorrectly enables log2, only msvcrt12 (MSVC 2013) onwards actually has log2.
4992 check_cpp_condition log2 crtversion.h "_VC_CRT_MAJOR_VERSION >= 12"
4993 # The CRT headers contain __declspec(restrict) in a few places, but if redefining
4994 # restrict, this might break. MSVC 2010 and 2012 fail with __declspec(__restrict)
4995 # (as it ends up if the restrict redefine is done before including stdlib.h), while
4996 # MSVC 2013 and newer can handle it fine.
4997 # If this declspec fails, force including stdlib.h before the restrict redefinition
4998 # happens in config.h.
4999 if [ $restrict_keyword != restrict ]; then
5000 test_cc <<EOF || add_cflags -FIstdlib.h
5001 __declspec($restrict_keyword) void *foo(int);
5006 for pfx in "" host_; do
5007 varname=${pfx%_}cc_type
5008 eval "type=\$$varname"
5009 if [ "$type" = "msvc" ]; then
5010 test_${pfx}cc <<EOF || add_${pfx}cflags -Dinline=__inline
5011 static inline int foo(int a) { return a; }
5018 add_asflags -Qunused-arguments
5024 check_ldflags -Qunused-arguments
5028 enabled asm || { arch=c; disable $ARCH_LIST $ARCH_EXT_LIST; }
5030 check_cmd pod2man --help
5031 check_cmd texi2html -version
5033 check_deps $CONFIG_LIST \
5038 flatten_extralibs(){
5039 unset nested_entries
5042 for entry in $list; do
5045 append nested_entries $(filter '*_extralibs' $entry_copy)
5046 flat_entries=$(filter_out '*_extralibs' $entry_copy)
5047 eval $entry="\$flat_entries"
5049 append $list_name "$nested_entries"
5051 resolve nested_entries
5052 if test -n "$(filter '*_extralibs' $nested_entries)"; then
5053 flatten_extralibs $list_name
5057 for linkunit in $LIBRARY_LIST; do
5058 unset current_extralibs
5059 eval components=\$$(toupper ${linkunit})_COMPONENTS_LIST
5060 for comp in ${components}; do
5061 enabled $comp || continue
5062 comp_extralibs="${comp}_extralibs"
5063 append current_extralibs $comp_extralibs
5065 eval prepend ${linkunit}_extralibs $current_extralibs
5068 for linkunit in $LIBRARY_LIST $PROGRAM_LIST $EXTRALIBS_LIST; do
5069 flatten_extralibs ${linkunit}_extralibs
5070 unique ${linkunit}_extralibs
5071 resolve ${linkunit}_extralibs
5072 eval ${linkunit}_extralibs=\$\(\$ldflags_filter \$${linkunit}_extralibs\)
5075 map 'enabled $v && intrinsics=${v#intrinsics_}' $INTRINSICS_LIST
5077 for thread in $THREADS_LIST; do
5078 if enabled $thread; then
5079 test -n "$thread_type" &&
5080 die "ERROR: Only one thread type must be selected." ||
5081 thread_type="$thread"
5085 if disabled stdatomic; then
5086 if enabled atomics_gcc; then
5087 add_cppflags '-I\$(SRC_PATH)/compat/atomics/gcc'
5088 elif enabled atomics_win32; then
5089 add_cppflags '-I\$(SRC_PATH)/compat/atomics/win32'
5090 elif enabled atomics_suncc; then
5091 add_cppflags '-I\$(SRC_PATH)/compat/atomics/suncc'
5092 elif enabled pthreads; then
5093 add_compat atomics/pthread/stdatomic.o
5094 add_cppflags '-I\$(SRC_PATH)/compat/atomics/pthread'
5096 enabled threads && die "Threading is enabled, but no atomics are available"
5097 add_cppflags '-I\$(SRC_PATH)/compat/atomics/dummy'
5101 enabled zlib && add_cppflags -DZLIB_CONST
5103 # conditional library dependencies, in linking order
5104 enabled movie_filter && prepend avfilter_deps "avformat avcodec"
5105 enabled_any asyncts_filter resample_filter &&
5106 prepend avfilter_deps "avresample"
5107 enabled scale_filter && prepend avfilter_deps "swscale"
5109 enabled opus_decoder && prepend avcodec_deps "avresample"
5113 eval "deps=\$$lib_deps"
5114 append $lib_deps $(map 'eval echo \$${v}_deps' $deps)
5118 map 'expand_deps $v' $LIBRARY_LIST
5120 if test "$quiet" != "yes"; then
5122 echo "install prefix $prefix"
5123 echo "source path $source_path"
5124 echo "C compiler $cc"
5125 echo "C library $libc_type"
5126 if test "$host_cc" != "$cc"; then
5127 echo "host C compiler $host_cc"
5128 echo "host C library $host_libc_type"
5130 echo "ARCH $arch ($cpu)"
5131 if test "$extra_version" != ""; then
5132 echo "version string suffix $extra_version"
5134 echo "big-endian ${bigendian-no}"
5135 echo "runtime cpu detection ${runtime_cpudetect-no}"
5136 if enabled x86; then
5137 echo "standalone assembly ${x86asm-no}"
5138 echo "x86 assembler ${x86asmexe}"
5139 echo "MMX enabled ${mmx-no}"
5140 echo "MMXEXT enabled ${mmxext-no}"
5141 echo "3DNow! enabled ${amd3dnow-no}"
5142 echo "3DNow! extended enabled ${amd3dnowext-no}"
5143 echo "SSE enabled ${sse-no}"
5144 echo "SSSE3 enabled ${ssse3-no}"
5145 echo "AVX enabled ${avx-no}"
5146 echo "XOP enabled ${xop-no}"
5147 echo "FMA3 enabled ${fma3-no}"
5148 echo "FMA4 enabled ${fma4-no}"
5149 echo "i686 features enabled ${i686-no}"
5150 echo "CMOV is fast ${fast_cmov-no}"
5151 echo "EBX available ${ebx_available-no}"
5152 echo "EBP available ${ebp_available-no}"
5154 if enabled aarch64; then
5155 echo "NEON enabled ${neon-no}"
5156 echo "VFP enabled ${vfp-no}"
5158 if enabled arm; then
5159 echo "ARMv5TE enabled ${armv5te-no}"
5160 echo "ARMv6 enabled ${armv6-no}"
5161 echo "ARMv6T2 enabled ${armv6t2-no}"
5162 echo "VFP enabled ${vfp-no}"
5163 echo "NEON enabled ${neon-no}"
5165 if enabled ppc; then
5166 echo "AltiVec enabled ${altivec-no}"
5167 echo "VSX enabled ${vsx-no}"
5168 echo "POWER8 enabled ${power8-no}"
5169 echo "PPC 4xx optimizations ${ppc4xx-no}"
5170 echo "dcbzl available ${dcbzl-no}"
5172 echo "debug symbols ${debug-no}"
5173 echo "optimize for size ${small-no}"
5174 echo "optimizations ${optimizations-no}"
5175 echo "static ${static-no}"
5176 echo "shared ${shared-no}"
5177 echo "network support ${network-no}"
5178 echo "threading support ${thread_type-no}"
5179 echo "safe bitstream reader ${safe_bitstream_reader-no}"
5181 echo "External libraries:"
5182 print_enabled '' $EXTERNAL_LIBRARY_LIST | print_3_columns
5184 echo "External libraries providing hardware acceleration:"
5185 print_enabled '' $HWACCEL_LIBRARY_LIST | print_3_columns
5189 print_enabled '' $LIBRARY_LIST | print_3_columns
5193 print_enabled '' $PROGRAM_LIST | print_3_columns
5196 for type in decoder encoder hwaccel parser demuxer muxer protocol filter bsf indev; do
5197 echo "Enabled ${type}s:"
5198 eval list=\$$(toupper $type)_LIST
5199 print_enabled '_*' $list | print_3_columns
5203 if test -n "$ignore_tests"; then
5204 ignore_tests=$(echo $ignore_tests | tr ',' ' ')
5205 echo "Ignored FATE tests:"
5206 echo $ignore_tests | print_3_columns
5210 echo "License: $license"
5212 fi # test "$quiet" != "yes"
5214 test -n "$WARNINGS" && printf "\n$WARNINGS"
5216 test -e Makefile || echo "include $source_path/Makefile" > Makefile
5219 echo "$*" | sed 's/%/%25/g;s/:/%3a/g'
5222 echo "config:$arch:$subarch:$cpu:$target_os:$(esc $cc_ident):$(esc $LIBAV_CONFIGURATION)" > avbuild/config.fate
5224 config_files="$TMPH avbuild/config.mak"
5226 cat > avbuild/config.mak <<EOF
5227 # Automatically generated by configure - do not modify!
5228 LIBAV_CONFIGURATION=$LIBAV_CONFIGURATION
5230 LIBDIR=\$(DESTDIR)$libdir
5231 SHLIBDIR=\$(DESTDIR)$shlibdir
5232 INCDIR=\$(DESTDIR)$incdir
5233 BINDIR=\$(DESTDIR)$bindir
5234 DATADIR=\$(DESTDIR)$datadir
5235 DOCDIR=\$(DESTDIR)$docdir
5236 MANDIR=\$(DESTDIR)$mandir
5237 SRC_PATH=$source_path
5240 INTRINSICS=$intrinsics
5241 EXTERN_PREFIX=$extern_prefix
5247 DEPCCFLAGS=$DEPCCFLAGS \$(CPPFLAGS)
5249 DEPASFLAGS=$DEPASFLAGS \$(CPPFLAGS)
5251 DEPX86ASM=$x86asmexe
5252 DEPX86ASMFLAGS=\$(X86ASMFLAGS)
5263 OBJCFLAGS=$OBJCFLAGS
5279 LDEXEFLAGS=$LDEXEFLAGS
5280 LDSOFLAGS=$LDSOFLAGS
5281 SHFLAGS=$(echo $($ldflags_filter $SHFLAGS))
5282 STRIPFLAGS=$STRIPFLAGS
5283 X86ASMFLAGS=$X86ASMFLAGS
5290 EXTRA_VERSION=$extra_version
5292 CCDEP_FLAGS=$CCDEP_FLAGS
5294 ASDEP_FLAGS=$ASDEP_FLAGS
5295 X86ASMDEP=$X86ASMDEP
5296 X86ASMDEP_FLAGS=$X86ASMDEP_FLAGS
5297 CC_DEPFLAGS=$CC_DEPFLAGS
5298 AS_DEPFLAGS=$AS_DEPFLAGS
5299 X86ASM_DEPFLAGS=$X86ASM_DEPFLAGS
5302 HOSTCFLAGS=$host_cflags
5303 HOSTCPPFLAGS=$host_cppflags
5304 HOSTEXESUF=$HOSTEXESUF
5305 HOSTLDFLAGS=$host_ldflags
5306 HOSTEXTRALIBS=$host_extralibs
5308 DEPHOSTCCFLAGS=$DEPHOSTCCFLAGS \$(HOSTCCFLAGS)
5309 HOSTCCDEP=$HOSTCCDEP
5310 HOSTCCDEP_FLAGS=$HOSTCCDEP_FLAGS
5311 HOSTCC_DEPFLAGS=$HOSTCC_DEPFLAGS
5315 TARGET_EXEC=$target_exec $target_exec_args
5316 TARGET_PATH=$target_path
5317 TARGET_SAMPLES=${target_samples:-\$(SAMPLES)}
5318 CFLAGS-avplay=$sdl_cflags
5319 CFLAGS_HEADERS=$CFLAGS_HEADERS
5320 LIB_INSTALL_EXTRA_CMD=$LIB_INSTALL_EXTRA_CMD
5321 EXTRALIBS=$extralibs
5322 COMPAT_OBJS=$compat_objs
5324 LIBTARGET=${LIBTARGET}
5325 SLIBNAME=${SLIBNAME}
5326 SLIBNAME_WITH_VERSION=${SLIBNAME_WITH_VERSION}
5327 SLIBNAME_WITH_MAJOR=${SLIBNAME_WITH_MAJOR}
5328 SLIB_CREATE_DEF_CMD=${SLIB_CREATE_DEF_CMD}
5329 SLIB_EXTRA_CMD=${SLIB_EXTRA_CMD}
5330 SLIB_INSTALL_NAME=${SLIB_INSTALL_NAME}
5331 SLIB_INSTALL_LINKS=${SLIB_INSTALL_LINKS}
5332 SLIB_INSTALL_EXTRA_LIB=${SLIB_INSTALL_EXTRA_LIB}
5333 SLIB_INSTALL_EXTRA_SHLIB=${SLIB_INSTALL_EXTRA_SHLIB}
5334 VERSION_SCRIPT_POSTPROCESS_CMD=${VERSION_SCRIPT_POSTPROCESS_CMD}
5335 SAMPLES:=${samples:-\$(LIBAV_SAMPLES)}
5336 IGNORE_TESTS=$ignore_tests
5339 map 'eval echo "${v}_FFLIBS=\$${v}_deps" >> avbuild/config.mak' $LIBRARY_LIST
5341 for entry in $LIBRARY_LIST $PROGRAM_LIST $EXTRALIBS_LIST; do
5342 eval echo "EXTRALIBS-${entry}=\$${entry}_extralibs" >> avbuild/config.mak
5346 /* Automatically generated by configure - do not modify! */
5347 #ifndef LIBAV_CONFIG_H
5348 #define LIBAV_CONFIG_H
5349 #define LIBAV_CONFIGURATION "$(c_escape $LIBAV_CONFIGURATION)"
5350 #define LIBAV_LICENSE "$(c_escape $license)"
5351 #define AVCONV_DATADIR "$(eval c_escape $datadir)"
5352 #define CC_IDENT "$(c_escape ${cc_ident:-Unknown compiler})"
5353 #define EXTERN_PREFIX "${extern_prefix}"
5354 #define EXTERN_ASM ${extern_prefix}
5355 #define SLIBSUF "$SLIBSUF"
5358 test $restrict_keyword != restrict &&
5359 echo "#define restrict $restrict_keyword" >> $TMPH
5361 test -n "$malloc_prefix" &&
5362 echo "#define MALLOC_PREFIX $malloc_prefix" >>$TMPH
5364 if enabled x86asm; then
5365 append config_files $TMPASM
5367 ; Automatically generated by configure - do not modify!
5371 enabled getenv || echo "#define getenv(x) NULL" >> $TMPH
5373 print_config ARCH_ "$config_files" $ARCH_LIST
5374 print_config HAVE_ "$config_files" $HAVE_LIST
5375 print_config CONFIG_ "$config_files" $CONFIG_LIST \
5379 echo "#endif /* LIBAV_CONFIG_H */" >> $TMPH
5381 # Do not overwrite an unchanged config.h to avoid superfluous rebuilds.
5382 cp_if_changed $TMPH config.h
5383 touch avbuild/.config
5385 enabled x86asm && cp_if_changed $TMPASM config.asm
5388 /* Generated by libav configure */
5389 #ifndef AVUTIL_AVCONFIG_H
5390 #define AVUTIL_AVCONFIG_H
5393 print_config AV_HAVE_ $TMPH $HAVE_LIST_PUB
5395 echo "#endif /* AVUTIL_AVCONFIG_H */" >> $TMPH
5397 cp_if_changed $TMPH libavutil/avconfig.h
5399 # generate the lists of enabled components
5400 print_enabled_components(){
5405 echo "static const $struct_name * const $name[] = {" > $TMPH
5407 enabled $c && printf " &ff_%s,\n" $c >> $TMPH
5409 echo " NULL };" >> $TMPH
5410 cp_if_changed $TMPH $file
5413 print_enabled_components libavcodec/bsf_list.c AVBitStreamFilter bitstream_filters $BSF_LIST
5414 print_enabled_components libavformat/protocol_list.c URLProtocol url_protocols $PROTOCOL_LIST
5416 # Settings for pkg-config files
5419 # Automatically generated by configure - do not modify!
5424 source_path=${source_path}
5427 extralibs_avutil="$avutil_extralibs"
5428 extralibs_avcodec="$avcodec_extralibs"
5429 extralibs_avformat="$avformat_extralibs"
5430 extralibs_avdevice="$avdevice_extralibs"
5431 extralibs_avfilter="$avfilter_extralibs"
5432 extralibs_avresample="$avresample_extralibs"
5433 extralibs_swscale="$swscale_extralibs"
5436 for lib in $LIBRARY_LIST; do
5437 lib_deps="$(eval echo \$${lib}_deps)"
5438 echo ${lib}_deps=\"$lib_deps\" >> $TMPH
5441 cp_if_changed $TMPH avbuild/config.sh