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-outdevs show all available output devices
77 --list-filters show all available filters
80 --logfile=FILE log tests and output to FILE [config.log]
81 --disable-logging do not log configure debug information
82 --prefix=PREFIX install in PREFIX [$prefix_default]
83 --bindir=DIR install binaries in DIR [PREFIX/bin]
84 --datadir=DIR install data files in DIR [PREFIX/share/avconv]
85 --docdir=DIR install documentation in DIR [PREFIX/share/doc/libav]
86 --libdir=DIR install libs in DIR [PREFIX/lib]
87 --shlibdir=DIR install shared libs in DIR [PREFIX/lib]
88 --incdir=DIR install includes in DIR [PREFIX/include]
89 --mandir=DIR install man page in DIR [PREFIX/share/man]
90 --enable-rpath use rpath when linking programs (USE WITH CARE)
93 --enable-gpl allow use of GPL code, the resulting libs
94 and binaries will be under GPL [no]
95 --enable-version3 upgrade (L)GPL to version 3 [no]
96 --enable-nonfree allow use of nonfree code, the resulting libs
97 and binaries will be unredistributable [no]
99 Configuration options:
100 --disable-static do not build static libraries [no]
101 --enable-shared build shared libraries [no]
102 --enable-small optimize for size instead of speed
103 --enable-runtime-cpudetect detect CPU capabilities at runtime (bigger binary)
104 --enable-gray enable full grayscale support (slower color)
105 --disable-swscale-alpha disable alpha channel support in swscale
106 --disable-all disable building components, libraries and programs
109 --disable-programs do not build command line programs
110 --disable-avconv disable avconv build
111 --disable-avplay disable avplay build
112 --disable-avprobe disable avprobe build
113 --disable-avserver deprecated, does nothing
116 --disable-doc do not build documentation
117 --disable-pod2man do not build manual pages
118 --disable-texi2html do not build HTML documentation
119 --disable-avdevice disable libavdevice build
120 --disable-avcodec disable libavcodec build
121 --disable-avformat disable libavformat build
122 --disable-avutil disable libavutil build
123 --disable-swscale disable libswscale build
124 --disable-avfilter disable video filter support [no]
125 --disable-avresample disable libavresample build [no]
126 --disable-pthreads disable pthreads [auto]
127 --disable-w32threads disable Win32 threads [auto]
128 --disable-network disable network support [no]
129 --disable-dct disable DCT code
130 --disable-error-resilience disable error resilience code
131 --disable-lsp disable LSP code
132 --disable-lzo disable LZO decoder code
133 --disable-mdct disable MDCT code
134 --disable-rdft disable RDFT code
135 --disable-fft disable FFT code
136 --disable-faan disable floating point AAN (I)DCT code
138 Individual component options:
139 --disable-everything disable all components listed below
140 --disable-encoder=NAME disable encoder NAME
141 --enable-encoder=NAME enable encoder NAME
142 --disable-encoders disable all encoders
143 --disable-decoder=NAME disable decoder NAME
144 --enable-decoder=NAME enable decoder NAME
145 --disable-decoders disable all decoders
146 --disable-hwaccel=NAME disable hwaccel NAME
147 --enable-hwaccel=NAME enable hwaccel NAME
148 --disable-hwaccels disable all hwaccels
149 --disable-muxer=NAME disable muxer NAME
150 --enable-muxer=NAME enable muxer NAME
151 --disable-muxers disable all muxers
152 --disable-demuxer=NAME disable demuxer NAME
153 --enable-demuxer=NAME enable demuxer NAME
154 --disable-demuxers disable all demuxers
155 --enable-parser=NAME enable parser NAME
156 --disable-parser=NAME disable parser NAME
157 --disable-parsers disable all parsers
158 --enable-bsf=NAME enable bitstream filter NAME
159 --disable-bsf=NAME disable bitstream filter NAME
160 --disable-bsfs disable all bitstream filters
161 --enable-protocol=NAME enable protocol NAME
162 --disable-protocol=NAME disable protocol NAME
163 --disable-protocols disable all protocols
164 --enable-indev=NAME enable input device NAME
165 --disable-indev=NAME disable input device NAME
166 --disable-indevs disable input devices
167 --enable-outdev=NAME enable output device NAME
168 --disable-outdev=NAME disable output device NAME
169 --disable-outdevs disable output devices
170 --disable-devices disable all devices
171 --enable-filter=NAME enable filter NAME
172 --disable-filter=NAME disable filter NAME
173 --disable-filters disable all filters
175 External library support:
177 Using any of the following switches will allow Libav to link to the
178 corresponding external library. All the components depending on that library
179 will become enabled, if all their other dependencies are met and they are not
180 explicitly disabled. E.g. --enable-libwavpack will enable linking to
181 libwavpack and allow the libwavpack encoder to be built, unless it is
182 specifically disabled with --disable-encoder=libwavpack.
184 Note that only the system libraries are auto-detected. All the other external
185 libraries must be explicitly enabled.
187 Also note that the following help text describes the purpose of the libraries
188 themselves, not all their features will necessarily be usable by Libav.
190 --enable-avisynth video frameserver
191 --enable-bzlib bzip2 compression [autodetect]
192 --enable-frei0r video filtering plugins
193 --enable-gnutls crypto
194 --enable-libbs2b Bauer stereophonic-to-binaural DSP
195 --enable-libcdio audio CD input
196 --enable-libdc1394 IEEE 1394/Firewire camera input
197 --enable-libdcadec DCA audio decoding
198 --enable-libfaac AAC audio encoding
199 --enable-libfdk-aac AAC audio encoding/decoding
200 --enable-libfontconfig font configuration and management
201 --enable-libfreetype font rendering
202 --enable-libgsm GSM audio encoding/decoding
203 --enable-libhdcd HDCD decoding filter
204 --enable-libilbc ILBC audio encoding/decoding
205 --enable-libkvazaar HEVC video encoding
206 --enable-libmp3lame MP3 audio encoding
207 --enable-libopencore-amrnb AMR-NB audio encoding/decoding
208 --enable-libopencore-amrwb AMR-WB audio decoding
209 --enable-libopencv computer vision
210 --enable-libopenh264 H.264 video encoding/decoding
211 --enable-libopenjpeg JPEG 2000 image encoding/decoding
212 --enable-libopus Opus audio encoding/decoding
213 --enable-libpulse Pulseaudio sound server
214 --enable-librtmp RTMP streaming
215 --enable-libschroedinger Dirac video encoding/decoding
216 --enable-libsnappy snappy compression
217 --enable-libspeex Speex audio encoding/decoding
218 --enable-libtheora Theora video encoding/decoding
219 --enable-libtwolame MP2 audio encoding
220 --enable-libvo-aacenc AAC audio encoding
221 --enable-libvo-amrwbenc AMR-WB audio encoding
222 --enable-libvorbis Vorbis audio encoding/decoding
223 --enable-libvpx VP* video encoding/decoding
224 --enable-libwavpack Wavpack audio encoding/decoding
225 --enable-libwebp WebP image encoding/decoding
226 --enable-libx264 H.264 video encoding
227 --enable-libx265 HEVC video encoding
228 --enable-libxavs Chinese AVS video encoding
229 --enable-libxcb X window system protocol communication
230 --enable-libxcb-shm X11 shm communication [auto]
231 --enable-libxcb-xfixes X11 mouse rendering [auto]
232 --enable-libxvid MPEG-4 ASP video encoding
233 --enable-openssl crypto
234 --enable-zlib compression [autodetect]
236 The following libraries provide various hardware acceleration features:
237 --enable-cuda Nvidia CUDA (dynamically linked)
238 --enable-d3d11va Microsoft Direct3D 11 video acceleration [auto]
239 --enable-dxva2 Microsoft DirectX 9 video acceleration [auto]
240 --enable-libmfx Intel MediaSDK (AKA Quick Sync Video)
241 --enable-libnpp Nvidia CUDA processing
242 --enable-mmal Broadcom Multi-Media Abstraction Layer (Raspberry Pi)
243 --enable-nvenc Nvidia video encoding
244 --enable-omx OpenMAX IL
245 --enable-omx-rpi OpenMAX IL for Raspberry Pi
246 --enable-vaapi Video Acceleration API (mainly Unix/Intel)
247 --enable-vda Apple Video Decode Acceleration [auto]
248 --enable-vdpau Nvidia Video Decode and Presentation API for Unix [auto]
251 --arch=ARCH select architecture [$arch]
252 --cpu=CPU select the minimum required CPU (affects
253 instruction selection, may crash on older CPUs)
254 --cross-prefix=PREFIX use PREFIX for compilation tools [$cross_prefix]
255 --enable-cross-compile assume a cross-compiler is used
256 --sysroot=PATH root of cross-build tree
257 --sysinclude=PATH location of cross-build system headers
258 --target-os=OS compiler targets OS [$target_os]
259 --target-exec=CMD command to run executables on target
260 --target-path=DIR path to view of build directory on target
261 --target-samples=DIR path to samples directory on target
262 --toolchain=NAME set tool defaults according to NAME
264 --ar=AR use archive tool AR [$ar_default]
265 --as=AS use assembler AS [$as_default]
266 --cc=CC use C compiler CC [$cc_default]
267 --objcc=OCC use ObjC compiler OCC [$cc_default]
268 --dep-cc=DEPCC use dependency generator DEPCC [$cc_default]
269 --ld=LD use linker LD
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-libs=ELIBS add ELIBS [$ELIBS]
284 --extra-version=STRING version string suffix []
285 --optflags=OPTFLAGS override optimization-related compiler flags
286 --enable-pic build position-independent code
287 --enable-thumb compile for Thumb instruction set
288 --enable-lto use link-time optimization
289 --env="ENV=override" override the environment variables
291 Advanced options (experts only):
292 --malloc-prefix=PREFIX prefix malloc and related names with PREFIX
293 --custom-allocator=NAME use a supported custom allocator
294 --disable-symver disable symbol versioning
295 --enable-hardcoded-tables use hardcoded tables instead of runtime generation
296 --disable-safe-bitstream-reader
297 disable buffer boundary checking in bitreaders
298 (faster, but may crash)
299 --enable-sram allow use of on-chip SRAM
301 Optimization options (experts only):
302 --disable-asm disable all assembly optimizations
303 --disable-altivec disable AltiVec optimizations
304 --disable-vsx disable VSX optimizations
305 --disable-power8 disable POWER8 optimizations
306 --disable-amd3dnow disable 3DNow! optimizations
307 --disable-amd3dnowext disable 3DNow! extended optimizations
308 --disable-mmx disable MMX optimizations
309 --disable-mmxext disable MMXEXT optimizations
310 --disable-sse disable SSE optimizations
311 --disable-sse2 disable SSE2 optimizations
312 --disable-sse3 disable SSE3 optimizations
313 --disable-ssse3 disable SSSE3 optimizations
314 --disable-sse4 disable SSE4 optimizations
315 --disable-sse42 disable SSE4.2 optimizations
316 --disable-avx disable AVX optimizations
317 --disable-xop disable XOP optimizations
318 --disable-fma3 disable FMA3 optimizations
319 --disable-fma4 disable FMA4 optimizations
320 --disable-avx2 disable AVX2 optimizations
321 --disable-armv5te disable armv5te optimizations
322 --disable-armv6 disable armv6 optimizations
323 --disable-armv6t2 disable armv6t2 optimizations
324 --disable-vfp disable VFP optimizations
325 --disable-neon disable NEON optimizations
326 --disable-inline-asm disable use of inline assembly
327 --disable-yasm disable use of nasm/yasm assembly
329 Developer options (useful when working on Libav itself):
330 --disable-debug disable debugging symbols
331 --enable-debug=LEVEL set the debug level [$debuglevel]
332 --disable-optimizations disable compiler optimizations
333 --enable-extra-warnings enable more compiler warnings
334 --samples=PATH location of test samples for FATE, if not set use
335 \$LIBAV_SAMPLES at make invocation time.
336 --enable-neon-clobber-test check NEON registers for clobbering (should be
337 used only for debugging purposes)
338 --enable-xmm-clobber-test check XMM registers for clobbering (Win64-only;
339 should be used only for debugging purposes)
340 --enable-random randomly enable/disable components
342 --enable-random=LIST randomly enable/disable specific components or
343 --disable-random=LIST component groups. LIST is a comma-separated list
344 of NAME[:PROB] entries where NAME is a component
345 (group) and PROB the probability associated with
347 --random-seed=VALUE seed value for --enable/disable-random
348 --disable-valgrind-backtrace do not print a backtrace under Valgrind
349 (only applies to --disable-optimizations builds)
351 NOTE: Object files are built at the place where configure is launched.
359 echo "$@" >> $logfile
366 printf '%5s %s\n' "${i}" "${line}"
368 done < $1 >> $logfile
379 WARNINGS
="${WARNINGS}WARNING: $*\n"
386 If you think configure made a mistake, make sure you are using the latest
387 version from Git. If the latest version fails, report the problem to the
388 libav-tools@libav.org mailing list or IRC #libav on irc.freenode.net.
390 if disabled logging
; then
392 Rerun configure with logging enabled (do not use --disable-logging), and
393 include the log this produces with your report.
397 Include the log file "$logfile" produced by configure as this will help
404 # Avoid locale weirdness, besides we really just want to translate ASCII.
406 echo "$@" |
tr abcdefghijklmnopqrstuvwxyz ABCDEFGHIJKLMNOPQRSTUVWXYZ
410 echo "$@" |
tr ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyz
414 echo "$*" |
sed 's/["\\]/\\\0/g'
418 v
=$
(echo "$1" |
sed "s/'/'\\\\''/g")
419 test "x$v" = "x${v#*[!A-Za-z0-9_/.+-]}" || v
="'$v'"
424 echo "$@" |
sed 's/^ *//;s/ */ /g;s/ *$//'
431 eval "case $v in $pat) printf '%s ' $v ;; esac"
439 eval "case $v in $pat) ;; *) printf '%s ' $v ;; esac"
446 for v
; do eval $m; done
452 for v
; do echo ${v}${suffix}; done
467 eval : \
${$var:=$value}
472 echo $@ |
sed 's/[^A-Za-z0-9_]/_/g'
478 eval $
(sanitize_var_name
"$var")='$*'
482 eval echo \$$
(sanitize_var_name
"$1")
487 eval level
=\
${${pvar}_level
:=0}
488 eval ${pvar}_
${level}="\$$pvar"
489 eval ${pvar}_level
=$
(($level+1))
495 eval level
=\
${${pvar}_level
:-0}
496 test $level = 0 && continue
497 eval level
=$
(($level-1))
498 eval $pvar="\${${pvar}_${level}}"
499 eval ${pvar}_level
=$level
500 eval unset ${pvar}_
${level}
522 enable $
(echo "$var" |
sed 's/[^A-Za-z0-9_]/_/g')
528 disable $
(echo "$var" |
sed 's/[^A-Za-z0-9_]/_/g')
534 enabled
$var && continue
535 eval sel
="\$${var}_select"
536 eval sgs
="\$${var}_suggest"
540 enable_deep_weak
$sgs
552 disabled
$var && continue
561 test "${1#!}" = "$1" && op
== || op
=!=
562 eval test "x\$${1#!}" $op "xyes"
566 test "${1#!}" = "$1" && op
== || op
=!=
567 eval test "x\$${1#!}" $op "xno"
572 enabled
$opt ||
return 1
578 disabled
$opt ||
return 1
584 enabled
$opt && return 0
590 disabled
$opt && return 0
597 eval : \
${$opt:=\$${opt}_default
}
605 [ $var = $value ] && return 0
613 enabled
${cfg}_checking
&& die
"Circular dependency for $cfg."
614 disabled
${cfg}_checking
&& continue
615 enable ${cfg}_checking
618 eval dep_all
="\$${cfg}_deps"
619 eval dep_any
="\$${cfg}_deps_any"
620 eval dep_sel
="\$${cfg}_select"
621 eval dep_sgs
="\$${cfg}_suggest"
622 eval dep_ifa
="\$${cfg}_if"
623 eval dep_ifn
="\$${cfg}_if_any"
625 pushvar cfg dep_all dep_any dep_sel dep_sgs dep_ifa dep_ifn
626 do_check_deps
$dep_all $dep_any $dep_sel $dep_sgs $dep_ifa $dep_ifn
627 popvar cfg dep_all dep_any dep_sel dep_sgs dep_ifa dep_ifn
629 [ -n
"$dep_ifa" ] && { enabled_all
$dep_ifa && enable_weak
$cfg; }
630 [ -n
"$dep_ifn" ] && { enabled_any
$dep_ifn && enable_weak
$cfg; }
631 enabled_all
$dep_all || disable
$cfg
632 enabled_any
$dep_any || disable
$cfg
633 disabled_any
$dep_sel && disable
$cfg
635 if enabled
$cfg; then
637 enable_deep_weak
$dep_sgs
640 disable
${cfg}_checking
649 for cfg
in $allopts; do
650 enabled
$cfg ||
continue
651 eval dep_extralibs
="\$${cfg}_extralibs"
652 test -n
"$dep_extralibs" && add_extralibs
$dep_extralibs
660 map
'eval echo "$v \${$v:-no}"' "$@" |
661 awk "BEGIN { split(\"$files\", files) }
663 c = \"$pfx\" toupper(\$1);
669 if (file ~ /\\.h\$/) {
670 printf(\"#define %s %d\\n\", c, v) >>file;
671 } else if (file ~ /\\.asm\$/) {
672 printf(\"%%define %s %d\\n\", c, v) >>file;
673 } else if (file ~ /\\.mak\$/) {
674 n = -v ? \"\" : \"!\";
675 printf(\"%s%s=yes\\n\", n, c) >>file;
685 enabled
$v && printf "%s\n" ${v%$suf}
692 eval "$var=\"\$$var $*\""
698 eval "$var=\"$* \$$var\""
704 for tok
in $
(eval echo \$
$var); do
705 uniq_list
="$(filter_out $tok $uniq_list) $tok"
707 eval "$var=\"${uniq_list}\""
715 append CFLAGS $
($cflags_filter "$@")
719 append ASFLAGS $
($asflags_filter "$@")
723 append OBJCFLAGS $
($objcflags_filter "$@")
727 append LDFLAGS $
($ldflags_filter "$@")
731 append LDEXEFLAGS $
($ldflags_filter "$@")
735 append STRIPFLAGS
"$@"
739 prepend extralibs $
($ldflags_filter "$@")
743 append host_cppflags
"$@"
747 append host_cflags $
($host_cflags_filter "$@")
751 append host_ldflags $
($host_ldflags_filter "$@")
755 append compat_objs
$1
757 map
'add_cppflags -D$v' "$@"
762 "$@" >> $logfile 2>&1
766 eval printf '%s\\n' $CC_O
770 eval printf '%s\\n' $CC_E
777 check_cmd
$cc $CPPFLAGS $CFLAGS "$@" $CC_C $
(cc_o
$TMPO) $TMPC
784 check_cmd
$objcc $CPPFLAGS $CFLAGS $OBJCFLAGS "$@" $OBJCC_C $
(cc_o
$TMPO) $TMPC
791 check_cmd
$cc $CPPFLAGS $CFLAGS "$@" $
(cc_e
$TMPO) $TMPC
795 eval printf '%s\\n' $AS_O
802 check_cmd
$as $CPPFLAGS $ASFLAGS "$@" $AS_C $
(as_o
$TMPO) $TMPS
806 log check_inline_asm
"$@"
811 check_cc
"$@" <<EOF && enable $name
812 void foo(void){ __asm__ volatile($code); }
818 check_inline_asm
${1}_inline
"\"$2\""
819 echo "$2" | check_as
&& enable ${1}_external || disable
${1}_external
827 check_cmd
$yasmexe $YASMFLAGS "$@" -o
$TMPO $TMPS
831 eval printf '%s\\n' $LD_O
836 flags
=$
(filter_out
'-l*' "$@")
837 libs
=$
(filter
'-l*' "$@")
838 check_cc $
($cflags_filter $flags) ||
return
839 flags
=$
($ldflags_filter $flags)
840 libs
=$
($ldflags_filter $libs)
841 check_cmd
$ld $LDFLAGS $flags $
(ld_o
$TMPE) $TMPO $libs $extralibs
846 test "${hdr%.h}" = "${hdr}" &&
847 echo "#include $hdr" ||
848 echo "#include <$hdr>"
858 for hdr
in $headers; do
861 echo "int main(void) { $code; return 0; }"
862 } | check_
$check "$@"
866 log check_cppflags
"$@"
867 check_cpp
"$@" <<EOF && append CPPFLAGS "$@"
874 set -- $
($cflags_filter "$@")
881 log check_cflags
"$@"
882 test_cflags
"$@" && add_cflags
"$@"
886 log test_objcflags
"$@"
887 set -- $
($objcflags_filter "$@")
888 check_objcc
"$@" <<EOF
894 log check_objcflags
"$@"
895 test_objcflags
"$@" && add_objcflags
"$@"
899 log test_ldflags
"$@"
901 int main(void){ return 0; }
906 log check_ldflags
"$@"
907 test_ldflags
"$@" && add_ldflags
"$@"
911 log test_stripflags
"$@"
912 # call check_cc to get a fresh TMPO
914 int main(void) { return 0; }
916 check_cmd
$strip $STRIPFLAGS "$@" $TMPO
920 log check_stripflags
"$@"
921 test_stripflags
"$@" && add_stripflags
"$@"
925 log check_header
"$@"
929 check_cpp
"$@" <<EOF && enable_safe $header
940 check_ld
"$@" <<EOF && enable $func
942 int main(void){ $func(); }
947 log check_mathfunc
"$@"
951 test $narg = 2 && args
="f, g" || args
="f"
953 check_ld
"$@" <<EOF && enable $func
955 float foo(float f, float g) { return $func($args); }
956 int main(void){ return 0; }
960 check_func_headers
(){
961 log check_func_headers
"$@"
966 for hdr
in $headers; do
969 for func
in $funcs; do
970 echo "long check_$func(void) { return (long) $func; }"
972 echo "int main(void) { return 0; }"
973 } | check_ld
"$@" && enable $funcs && enable_safe
$headers
976 check_cpp_condition
(){
977 log check_cpp_condition
"$@"
984 #error "unsatisfied condition: $condition"
990 log test_cflags_cpp
"$@"
994 set -- $
($cflags_filter "$flags")
997 #error "unsatisfied condition: $condition"
1007 check_func_headers
"$headers" "$funcs" "$@" && add_extralibs
"$@"
1011 log check_pkg_config
"$@"
1016 check_cmd
$pkg_config --exists
--print-errors
$pkg ||
return
1017 pkg_cflags
=$
($pkg_config --cflags
$pkg_config_flags $pkg)
1018 pkg_libs
=$
($pkg_config --libs
$pkg_config_flags $pkg)
1019 check_func_headers
"$headers" "$funcs" $pkg_cflags $pkg_libs "$@" &&
1020 set_safe
"${pkg}_cflags" $pkg_cflags &&
1021 set_safe
"${pkg}_libs" $pkg_libs
1025 check_ld
"$@" && { enabled cross_compile ||
$TMPE >> $logfile 2>&1; }
1029 log check_exec_crash
"$@"
1032 # exit() is not async signal safe. _Exit (C99) and _exit (POSIX)
1033 # are safe but may not be available everywhere. Thus we use
1034 # raise(SIGTERM) instead. The check is run in a subshell so we
1035 # can redirect the "Terminated" message from the shell. SIGBUS
1036 # is not defined by standard C so it is used conditionally.
1038 (check_exec
"$@") >> $logfile 2>&1 <<EOF
1040 static void sighandler(int sig){
1046 int (*func_ptr)(void) = foo;
1048 signal(SIGILL, sighandler);
1049 signal(SIGFPE, sighandler);
1050 signal(SIGSEGV, sighandler);
1052 signal(SIGBUS, sighandler);
1064 disable_safe
"$type"
1065 check_code cc
"$headers" "$type v" "$@" && enable_safe
"$type"
1069 log check_struct
"$@"
1074 disable_safe
"${struct}_${member}"
1075 check_code cc
"$headers" "const void *p = &(($struct *)0)->$member" "$@" &&
1076 enable_safe
"${struct}_${member}"
1080 log check_builtin
"$@"
1086 check_code ld
"$headers" "$builtin" "$@" && enable "$name"
1089 check_compile_assert
(){
1090 log check_compile_assert
"$@"
1096 check_code cc
"$headers" "char c[2 * !!($condition) - 1]" "$@" && enable "$name"
1105 check_lib
"$headers" $func "$@" || die
"ERROR: $name not found"
1108 require_pkg_config
(){
1109 log require_pkg_config
"$@"
1111 check_pkg_config
"$@" || die
"ERROR: $pkg not found"
1112 add_cflags $
(get_safe
"${pkg}_cflags")
1113 add_extralibs $
(get_safe
"${pkg}_libs")
1117 eval printf '%s\\n' $HOSTCC_E
1121 eval printf '%s\\n' $HOSTCC_O
1125 log check_host_cc
"$@"
1128 check_cmd
$host_cc $host_cflags "$@" $HOSTCC_C $
(hostcc_o
$TMPO) $TMPC
1132 log check_host_cpp
"$@"
1135 check_cmd
$host_cc $host_cppflags $host_cflags "$@" $
(hostcc_e
$TMPO) $TMPC
1138 check_host_cppflags
(){
1139 log check_host_cppflags
"$@"
1140 check_host_cpp
"$@" <<EOF && append host_cppflags "$@"
1145 check_host_cflags
(){
1146 log check_host_cflags
"$@"
1147 set -- $
($host_cflags_filter "$@")
1148 check_host_cc
"$@" <<EOF && append host_cflags "$@"
1153 check_host_cpp_condition
(){
1154 log check_host_cpp_condition
"$@"
1158 check_host_cpp
"$@" <<EOF
1161 #error "unsatisfied condition: $condition"
1169 "$@" < "$file" > "$file.tmp" && mv "$file.tmp" "$file" ||
rm "$file.tmp"
1173 cmp -s
"$1" "$2" && { test "$quiet" != "yes" && echo "$2 is unchanged"; } && return
1174 mkdir
-p
"$(dirname $2)"
1178 # CONFIG_LIST contains configurable options, while HAVE_LIST is for
1179 # system-dependent things.
1181 AVCODEC_COMPONENTS
="
1189 AVDEVICE_COMPONENTS
="
1193 AVFILTER_COMPONENTS
="
1196 AVFORMAT_COMPONENTS
="
1202 AVRESAMPLE_COMPONENTS
=""
1203 AVUTIL_COMPONENTS
=""
1207 $AVDEVICE_COMPONENTS
1208 $AVFILTER_COMPONENTS
1209 $AVFORMAT_COMPONENTS
1210 $AVRESAMPLE_COMPONENTS
1215 decode_audio_example
1216 decode_video_example
1217 encode_audio_example
1218 encode_video_example
1219 filter_audio_example
1223 transcode_aac_example
1226 HWACCEL_LIBRARY_NONFREE_LIST
="
1230 HWACCEL_LIBRARY_LIST
="
1231 $HWACCEL_LIBRARY_NONFREE_LIST
1243 EXTERNAL_LIBRARY_GPL_LIST
="
1251 EXTERNAL_LIBRARY_NONFREE_LIST
="
1257 EXTERNAL_LIBRARY_VERSION3_LIST
="
1264 EXTERNAL_LIBRARY_LIST
="
1265 $EXTERNAL_LIBRARY_GPL_LIST
1266 $EXTERNAL_LIBRARY_NONFREE_LIST
1267 $EXTERNAL_LIBRARY_VERSION3_LIST
1308 safe_bitstream_reader
1354 $EXTERNAL_LIBRARY_LIST
1355 $HWACCEL_LIBRARY_LIST
1418 ARCH_EXT_LIST_X86_SIMD
="
1446 $ARCH_EXT_LIST_X86_SIMD
1451 ARCH_EXT_LIST_MIPS
="
1488 sync_val_compare_and_swap
1502 AVFoundation_AVFoundation_h
1507 cdio_paranoia_paranoia_h
1509 dev_bktr_ioctl_bt848_h
1510 dev_bktr_ioctl_meteor_h
1512 dev_video_bktr_ioctl_bt848_h
1513 dev_video_meteor_ioctl_meteor_h
1521 machine_ioctl_bt848_h
1522 machine_ioctl_meteor_h
1587 GetProcessAffinityMask
1588 GetProcessMemoryInfo
1591 GetSystemTimeAsFileTime
1596 jack_port_get_latency_range
1608 SetConsoleTextAttribute
1619 TOOLCHAIN_FEATURES
="
1641 CONDITION_VARIABLE_Ptr
1644 struct_group_source_req
1645 struct_ip_mreq_source
1648 struct_rusage_ru_maxrss
1650 struct_sockaddr_sa_len
1651 struct_sockaddr_storage
1652 struct_v4l2_frmivalenum_discrete
1657 $(add_suffix _external $ARCH_EXT_LIST)
1658 $(add_suffix _inline $ARCH_EXT_LIST)
1673 MMAL_PARAMETER_VIDEO_MAX_NUM_CALLBACKS
1682 # options emitted with CONFIG_ prefix but not available on the command line
1828 # code dependency declarations
1830 # architecture extensions
1835 armv8_deps
="aarch64"
1836 neon_deps_any
="aarch64 arm"
1837 intrinsics_neon_deps
="neon"
1838 vfp_deps_any
="aarch64 arm"
1841 map
'eval ${v}_inline_deps=inline_asm' $ARCH_EXT_LIST_ARM
1849 x86_64_select
="i686"
1850 x86_64_suggest
="fast_cmov"
1853 amd3dnowext_deps
="amd3dnow"
1869 mmx_external_deps
="yasm"
1870 mmx_inline_deps
="inline_asm"
1871 mmx_suggest
="mmx_external mmx_inline"
1873 for ext
in $
(filter_out mmx
$ARCH_EXT_LIST_X86_SIMD); do
1874 eval dep
=\$
${ext}_deps
1875 eval ${ext}_external_deps
='"${dep}_external"'
1876 eval ${ext}_inline_deps
='"${dep}_inline"'
1877 eval ${ext}_suggest
='"${ext}_external ${ext}_inline"'
1880 aligned_stack_if_any
="aarch64 ppc x86"
1881 fast_64bit_if_any
="aarch64 alpha ia64 mips64 parisc64 ppc64 sparc64 x86_64"
1882 fast_clz_if_any
="aarch64 alpha avr32 mips ppc x86"
1883 fast_unaligned_if_any
="aarch64 ppc x86"
1884 simd_align_16_if_any
="altivec neon sse"
1885 simd_align_32_if_any
="avx"
1887 # system capabilities
1888 symver_if_any
="symver_asm_label symver_gnu_asm"
1889 valgrind_backtrace_deps
="!optimizations valgrind_valgrind_h"
1892 atomics_gcc_if
="sync_val_compare_and_swap"
1893 atomics_suncc_if
="atomic_cas_ptr machine_rw_barrier"
1894 atomics_win32_if
="MemoryBarrier"
1895 atomics_native_if_any
="$ATOMICS_LIST"
1896 w32threads_deps
="atomics_native"
1897 threads_if_any
="$THREADS_LIST"
1901 dirac_parse_select
="golomb"
1902 error_resilience_select
="me_cmp"
1903 faandct_deps
="faan fdctdsp"
1904 faanidct_deps
="faan idctdsp"
1905 h264dsp_select
="startcode"
1906 intrax8_select
="blockdsp idctdsp"
1909 me_cmp_select
="fdctdsp idctdsp pixblockdsp"
1910 mpeg_er_select
="error_resilience"
1911 mpegaudio_select
="mpegaudiodsp mpegaudioheader"
1912 mpegaudiodsp_select
="dct"
1913 mpegvideo_select
="blockdsp hpeldsp idctdsp me_cmp mpeg_er videodsp"
1914 mpegvideoenc_select
="me_cmp mpegvideo pixblockdsp qpeldsp"
1915 vc1dsp_select
="h264chroma qpeldsp startcode"
1917 # decoders / encoders
1918 aac_decoder_select
="imdct15 mdct sinewin"
1919 aac_encoder_select
="audio_frame_queue iirfilter mdct sinewin"
1920 aac_latm_decoder_select
="aac_decoder aac_latm_parser"
1921 ac3_decoder_select
="ac3_parser ac3dsp bswapdsp fmtconvert mdct"
1922 ac3_encoder_select
="ac3dsp audiodsp mdct me_cmp"
1923 ac3_fixed_encoder_select
="ac3dsp audiodsp mdct me_cmp"
1924 adpcm_g722_decoder_select
="g722dsp"
1925 adpcm_g722_encoder_select
="g722dsp"
1926 aic_decoder_select
="golomb idctdsp"
1927 alac_encoder_select
="lpc"
1928 als_decoder_select
="bswapdsp"
1929 amrnb_decoder_select
="lsp"
1930 amrwb_decoder_select
="lsp"
1931 amv_decoder_select
="sp5x_decoder"
1932 ape_decoder_select
="bswapdsp"
1933 asv1_decoder_select
="blockdsp bswapdsp idctdsp"
1934 asv1_encoder_select
="bswapdsp fdctdsp pixblockdsp"
1935 asv2_decoder_select
="blockdsp bswapdsp idctdsp"
1936 asv2_encoder_select
="bswapdsp fdctdsp pixblockdsp"
1937 atrac1_decoder_select
="mdct sinewin"
1938 atrac3_decoder_select
="mdct"
1939 atrac3p_decoder_select
="mdct sinewin"
1940 bink_decoder_select
="blockdsp hpeldsp"
1941 binkaudio_dct_decoder_select
="mdct rdft dct sinewin wma_freqs"
1942 binkaudio_rdft_decoder_select
="mdct rdft sinewin wma_freqs"
1943 cavs_decoder_select
="blockdsp golomb h264chroma idctdsp qpeldsp videodsp"
1944 cllc_decoder_select
="bswapdsp"
1945 comfortnoise_encoder_select
="lpc"
1946 cook_decoder_select
="audiodsp mdct sinewin"
1947 cscd_decoder_select
="lzo"
1948 cscd_decoder_suggest
="zlib"
1949 dca_decoder_select
="fmtconvert mdct"
1950 dds_decoder_select
="texturedsp"
1951 dnxhd_decoder_select
="blockdsp idctdsp"
1952 dnxhd_encoder_select
="aandcttables blockdsp fdctdsp idctdsp mpegvideoenc pixblockdsp"
1953 dvvideo_decoder_select
="dvprofile idctdsp"
1954 dvvideo_encoder_select
="dvprofile fdctdsp me_cmp pixblockdsp"
1955 dxa_decoder_deps
="zlib"
1956 dxv_decoder_select
="lzf texturedsp"
1957 eac3_decoder_select
="ac3_decoder"
1958 eac3_encoder_select
="ac3_encoder"
1959 eamad_decoder_select
="aandcttables blockdsp bswapdsp idctdsp mpegvideo"
1960 eatgq_decoder_select
="aandcttables idctdsp"
1961 eatqi_decoder_select
="aandcttables blockdsp bswapdsp idctdsp"
1962 exr_decoder_deps
="zlib"
1963 ffv1_decoder_select
="golomb rangecoder"
1964 ffv1_encoder_select
="rangecoder"
1965 ffvhuff_decoder_select
="huffyuv_decoder"
1966 ffvhuff_encoder_select
="huffyuv_encoder"
1967 fic_decoder_select
="golomb"
1968 flac_decoder_select
="flacdsp golomb"
1969 flac_encoder_select
="bswapdsp flacdsp golomb lpc"
1970 flashsv_decoder_deps
="zlib"
1971 flashsv_encoder_deps
="zlib"
1972 flashsv2_decoder_deps
="zlib"
1973 flv_decoder_select
="h263_decoder"
1974 flv_encoder_select
="h263_encoder"
1975 fourxm_decoder_select
="blockdsp bswapdsp"
1976 fraps_decoder_select
="bswapdsp huffman"
1977 g2m_decoder_deps
="zlib"
1978 g2m_decoder_select
="blockdsp idctdsp jpegtables"
1979 h261_decoder_select
="mpeg_er mpegvideo"
1980 h261_encoder_select
="aandcttables mpegvideoenc"
1981 h263_decoder_select
="error_resilience h263_parser h263dsp mpeg_er mpegvideo qpeldsp"
1982 h263_encoder_select
="aandcttables h263dsp mpegvideoenc"
1983 h263i_decoder_select
="h263_decoder"
1984 h263p_encoder_select
="h263_encoder"
1985 h264_decoder_select
="cabac golomb h264chroma h264dsp h264parse h264pred h264qpel videodsp"
1986 h264_decoder_suggest
="error_resilience"
1987 hap_decoder_select
="snappy texturedsp"
1988 hap_encoder_deps
="libsnappy"
1989 hap_encoder_select
="texturedspenc"
1990 hevc_decoder_select
="bswapdsp cabac golomb videodsp"
1991 huffyuv_decoder_select
="bswapdsp huffyuvdsp"
1992 huffyuv_encoder_select
="bswapdsp huffman huffyuvencdsp"
1993 iac_decoder_select
="imc_decoder"
1994 imc_decoder_select
="bswapdsp fft mdct sinewin"
1995 indeo3_decoder_select
="hpeldsp"
1996 indeo4_decoder_select
="ividsp"
1997 indeo5_decoder_select
="ividsp"
1998 interplay_video_decoder_select
="hpeldsp"
1999 jpegls_decoder_select
="golomb mjpeg_decoder"
2000 jpegls_encoder_select
="golomb"
2001 jv_decoder_select
="blockdsp"
2002 lagarith_decoder_select
="huffyuvdsp"
2003 ljpeg_encoder_select
="aandcttables idctdsp jpegtables"
2004 loco_decoder_select
="golomb"
2005 magicyuv_decoder_select
="huffyuvdsp"
2006 mdec_decoder_select
="blockdsp idctdsp mpegvideo"
2007 metasound_decoder_select
="lsp mdct sinewin"
2008 mimic_decoder_select
="blockdsp bswapdsp hpeldsp idctdsp"
2009 mjpeg_decoder_select
="blockdsp hpeldsp idctdsp jpegtables"
2010 mjpeg_encoder_select
="aandcttables jpegtables mpegvideoenc"
2011 mjpegb_decoder_select
="mjpeg_decoder"
2012 mlp_decoder_select
="mlp_parser"
2013 motionpixels_decoder_select
="bswapdsp"
2014 mp1_decoder_select
="mpegaudio"
2015 mp1float_decoder_select
="mpegaudio"
2016 mp2_decoder_select
="mpegaudio"
2017 mp2float_decoder_select
="mpegaudio"
2018 mp3_decoder_select
="mpegaudio"
2019 mp3adu_decoder_select
="mpegaudio"
2020 mp3adufloat_decoder_select
="mpegaudio"
2021 mp3float_decoder_select
="mpegaudio"
2022 mp3on4_decoder_select
="mpegaudio"
2023 mp3on4float_decoder_select
="mpegaudio"
2024 mpc7_decoder_select
="bswapdsp mpegaudiodsp"
2025 mpc8_decoder_select
="mpegaudiodsp"
2026 mpeg_xvmc_decoder_deps
="X11_extensions_XvMClib_h"
2027 mpeg_xvmc_decoder_select
="mpeg2video_decoder"
2028 mpeg1video_decoder_select
="error_resilience mpeg_er mpegvideo"
2029 mpeg1video_encoder_select
="aandcttables mpegvideoenc"
2030 mpeg2video_decoder_select
="error_resilience mpeg_er mpegvideo"
2031 mpeg2video_encoder_select
="aandcttables mpegvideoenc"
2032 mpeg4_decoder_select
="h263_decoder mpeg4video_parser"
2033 mpeg4_encoder_select
="h263_encoder"
2034 msa1_decoder_select
="mss34dsp"
2035 msmpeg4v1_decoder_select
="h263_decoder"
2036 msmpeg4v2_decoder_select
="h263_decoder"
2037 msmpeg4v2_encoder_select
="h263_encoder"
2038 msmpeg4v3_decoder_select
="h263_decoder"
2039 msmpeg4v3_encoder_select
="h263_encoder"
2040 mss2_decoder_select
="error_resilience mpeg_er mpegvideo qpeldsp vc1_decoder"
2041 mts2_decoder_select
="mss34dsp"
2042 mxpeg_decoder_select
="mjpeg_decoder"
2043 nellymoser_decoder_select
="mdct sinewin"
2044 nellymoser_encoder_select
="audio_frame_queue mdct sinewin"
2045 nuv_decoder_select
="idctdsp lzo"
2046 on2avc_decoder_select
="mdct"
2047 opus_decoder_deps
="avresample"
2048 opus_decoder_select
="imdct15"
2049 png_decoder_deps
="zlib"
2050 png_encoder_deps
="zlib"
2051 png_encoder_select
="huffyuvencdsp"
2052 prores_decoder_select
="idctdsp"
2053 prores_encoder_select
="fdctdsp"
2054 qcelp_decoder_select
="lsp"
2055 qdm2_decoder_select
="mdct rdft mpegaudiodsp"
2056 ra_144_encoder_select
="audio_frame_queue lpc"
2057 ralf_decoder_select
="golomb"
2058 rscc_decoder_deps
="zlib"
2059 rv10_decoder_select
="error_resilience h263_decoder h263dsp mpeg_er"
2060 rv10_encoder_select
="h263_encoder"
2061 rv20_decoder_select
="error_resilience h263_decoder h263dsp mpeg_er"
2062 rv20_encoder_select
="h263_encoder"
2063 rv30_decoder_select
="error_resilience golomb h264chroma h264pred h264qpel mpeg_er mpegvideo rv34dsp videodsp"
2064 rv40_decoder_select
="error_resilience golomb h264chroma h264pred h264qpel mpeg_er mpegvideo rv34dsp videodsp"
2065 screenpresso_decoder_deps
="zlib"
2066 shorten_decoder_select
="golomb"
2067 sipr_decoder_select
="lsp"
2068 sp5x_decoder_select
="mjpeg_decoder"
2069 svq1_decoder_select
="hpeldsp"
2070 svq1_encoder_select
="aandcttables hpeldsp me_cmp mpegvideoenc"
2071 svq3_decoder_select
="golomb h264dsp h264parse h264pred hpeldsp tpeldsp videodsp"
2072 svq3_decoder_suggest
="zlib"
2073 tak_decoder_select
="audiodsp"
2074 tdsc_decoder_deps
="zlib"
2075 tdsc_decoder_select
="mjpeg_decoder"
2076 theora_decoder_select
="vp3_decoder"
2077 thp_decoder_select
="mjpeg_decoder"
2078 tiff_decoder_suggest
="zlib"
2079 tiff_encoder_suggest
="zlib"
2080 truehd_decoder_select
="mlp_decoder"
2081 truemotion2_decoder_select
="bswapdsp"
2082 truespeech_decoder_select
="bswapdsp"
2083 tscc_decoder_deps
="zlib"
2084 txd_decoder_select
="texturedsp"
2085 twinvq_decoder_select
="mdct lsp sinewin"
2086 utvideo_decoder_select
="bswapdsp"
2087 utvideo_encoder_select
="bswapdsp huffman huffyuvencdsp"
2088 vble_decoder_select
="huffyuvdsp"
2089 vc1_decoder_select
="blockdsp error_resilience h263_decoder h264qpel intrax8 mpeg_er mpegvideo vc1dsp"
2090 vc1image_decoder_select
="vc1_decoder"
2091 vorbis_decoder_select
="mdct"
2092 vorbis_encoder_select
="mdct"
2093 vp3_decoder_select
="hpeldsp vp3dsp videodsp"
2094 vp5_decoder_select
="h264chroma hpeldsp videodsp vp3dsp vp56dsp"
2095 vp6_decoder_select
="h264chroma hpeldsp huffman videodsp vp3dsp vp56dsp"
2096 vp6a_decoder_select
="vp6_decoder"
2097 vp6f_decoder_select
="vp6_decoder"
2098 vp7_decoder_select
="h264pred videodsp vp8dsp"
2099 vp8_decoder_select
="h264pred videodsp vp8dsp"
2100 vp9_decoder_select
="videodsp"
2101 webp_decoder_select
="vp8_decoder"
2102 wmapro_decoder_select
="mdct sinewin wma_freqs"
2103 wmav1_decoder_select
="mdct sinewin wma_freqs"
2104 wmav1_encoder_select
="mdct sinewin wma_freqs"
2105 wmav2_decoder_select
="mdct sinewin wma_freqs"
2106 wmav2_encoder_select
="mdct sinewin wma_freqs"
2107 wmavoice_decoder_select
="lsp rdft dct mdct sinewin"
2108 wmv1_decoder_select
="h263_decoder"
2109 wmv1_encoder_select
="h263_encoder"
2110 wmv2_decoder_select
="blockdsp error_resilience h263_decoder idctdsp intrax8 videodsp wmv2dsp"
2111 wmv2_encoder_select
="h263_encoder wmv2dsp"
2112 wmv3_decoder_select
="vc1_decoder"
2113 wmv3image_decoder_select
="wmv3_decoder"
2114 zerocodec_decoder_deps
="zlib"
2115 zlib_decoder_deps
="zlib"
2116 zlib_encoder_deps
="zlib"
2117 zmbv_decoder_deps
="zlib"
2118 zmbv_encoder_deps
="zlib"
2120 # hardware accelerators
2121 d3d11va_deps
="d3d11_h dxva_h ID3D11VideoDecoder"
2122 dxva2_deps
="dxva2api_h DXVA2_ConfigPictureDecode"
2123 vaapi_deps
="va_va_h"
2124 vda_deps
="VideoDecodeAcceleration_VDADecoder_h pthreads"
2125 vda_extralibs
="-framework CoreFoundation -framework VideoDecodeAcceleration -framework QuartzCore"
2126 vdpau_deps
="vdpau_vdpau_h vdpau_vdpau_x11_h"
2128 h263_vaapi_hwaccel_deps
="vaapi"
2129 h263_vaapi_hwaccel_select
="h263_decoder"
2130 h264_d3d11va_hwaccel_deps
="d3d11va"
2131 h264_d3d11va_hwaccel_select
="h264_decoder"
2132 h264_dxva2_hwaccel_deps
="dxva2"
2133 h264_dxva2_hwaccel_select
="h264_decoder"
2134 h264_mmal_hwaccel_deps
="mmal"
2135 h264_qsv_hwaccel_deps
="libmfx"
2136 h264_vaapi_hwaccel_deps
="vaapi"
2137 h264_vaapi_hwaccel_select
="h264_decoder"
2138 h264_vda_hwaccel_deps
="vda"
2139 h264_vda_hwaccel_select
="h264_decoder"
2140 h264_vda_old_hwaccel_deps
="vda"
2141 h264_vda_old_hwaccel_select
="h264_decoder"
2142 h264_vdpau_hwaccel_deps
="vdpau"
2143 h264_vdpau_hwaccel_select
="h264_decoder"
2144 hevc_d3d11va_hwaccel_deps
="d3d11va DXVA_PicParams_HEVC"
2145 hevc_d3d11va_hwaccel_select
="hevc_decoder"
2146 hevc_dxva2_hwaccel_deps
="dxva2 DXVA_PicParams_HEVC"
2147 hevc_dxva2_hwaccel_select
="hevc_decoder"
2148 hevc_qsv_hwaccel_deps
="libmfx"
2149 hevc_vdpau_hwaccel_deps
="vdpau VdpPictureInfoHEVC"
2150 hevc_vdpau_hwaccel_select
="hevc_decoder"
2151 mpeg1_vdpau_hwaccel_deps
="vdpau"
2152 mpeg1_vdpau_hwaccel_select
="mpeg1video_decoder"
2153 mpeg2_d3d11va_hwaccel_deps
="d3d11va"
2154 mpeg2_d3d11va_hwaccel_select
="mpeg2video_decoder"
2155 mpeg2_dxva2_hwaccel_deps
="dxva2"
2156 mpeg2_dxva2_hwaccel_select
="mpeg2video_decoder"
2157 mpeg2_mmal_hwaccel_deps
="mmal"
2158 mpeg2_qsv_hwaccel_deps
="libmfx"
2159 mpeg2_vaapi_hwaccel_deps
="vaapi"
2160 mpeg2_vaapi_hwaccel_select
="mpeg2video_decoder"
2161 mpeg2_vdpau_hwaccel_deps
="vdpau"
2162 mpeg2_vdpau_hwaccel_select
="mpeg2video_decoder"
2163 mpeg4_vaapi_hwaccel_deps
="vaapi"
2164 mpeg4_vaapi_hwaccel_select
="mpeg4_decoder"
2165 mpeg4_vdpau_hwaccel_deps
="vdpau"
2166 mpeg4_vdpau_hwaccel_select
="mpeg4_decoder"
2167 vc1_d3d11va_hwaccel_deps
="d3d11va"
2168 vc1_d3d11va_hwaccel_select
="vc1_decoder"
2169 vc1_dxva2_hwaccel_deps
="dxva2"
2170 vc1_dxva2_hwaccel_select
="vc1_decoder"
2171 vc1_mmal_hwaccel_deps
="mmal"
2172 vc1_qsv_hwaccel_deps
="libmfx"
2173 vc1_vaapi_hwaccel_deps
="vaapi"
2174 vc1_vaapi_hwaccel_select
="vc1_decoder"
2175 vc1_vdpau_hwaccel_deps
="vdpau"
2176 vc1_vdpau_hwaccel_select
="vc1_decoder"
2177 vp8_qsv_hwaccel_deps
="libmfx"
2178 vp8_vaapi_hwaccel_deps
="vaapi VAPictureParameterBufferVP8"
2179 vp8_vaapi_hwaccel_select
="vp8_decoder"
2180 wmv3_d3d11va_hwaccel_select
="vc1_d3d11va_hwaccel"
2181 wmv3_dxva2_hwaccel_select
="vc1_dxva2_hwaccel"
2182 wmv3_vaapi_hwaccel_select
="vc1_vaapi_hwaccel"
2183 wmv3_vdpau_hwaccel_select
="vc1_vdpau_hwaccel"
2185 # hardware-accelerated codecs
2186 nvenc_deps_any
="dlopen LoadLibrary"
2187 nvenc_extralibs
='$ldl'
2188 omx_deps
="dlopen pthreads"
2189 omx_extralibs
='$ldl'
2192 vaapi_encode_deps
="vaapi"
2194 hwupload_cuda_filter_deps
="cuda"
2195 scale_npp_filter_deps
="cuda libnpp"
2197 h264_mmal_decoder_deps
="mmal"
2198 h264_nvenc_encoder_deps
="nvenc"
2199 h264_omx_encoder_deps
="omx"
2200 h264_qsv_decoder_deps
="libmfx"
2201 h264_qsv_decoder_select
="h264_mp4toannexb_bsf h264_parser qsvdec h264_qsv_hwaccel"
2202 h264_qsv_encoder_deps
="libmfx"
2203 h264_qsv_encoder_select
="qsvenc"
2204 h264_vaapi_encoder_deps
="VAEncPictureParameterBufferH264"
2205 h264_vaapi_encoder_select
="vaapi_encode golomb"
2206 hevc_nvenc_encoder_deps
="nvenc"
2207 hevc_qsv_decoder_deps
="libmfx"
2208 hevc_qsv_encoder_deps
="libmfx"
2209 hevc_qsv_decoder_select
="hevc_mp4toannexb_bsf hevc_parser hevc_qsv_hwaccel qsvdec"
2210 hevc_qsv_encoder_select
="qsvenc"
2211 hevc_vaapi_encoder_deps
="VAEncPictureParameterBufferHEVC"
2212 hevc_vaapi_encoder_select
="vaapi_encode golomb"
2213 mjpeg_vaapi_encoder_deps
="VAEncPictureParameterBufferJPEG"
2214 mjpeg_vaapi_encoder_select
="vaapi_encode jpegtables"
2215 mpeg2_mmal_decoder_deps
="mmal"
2216 mpeg2_qsv_decoder_deps
="libmfx"
2217 mpeg2_qsv_decoder_select
="qsvdec mpeg2_qsv_hwaccel mpegvideo_parser"
2218 mpeg2_qsv_encoder_deps
="libmfx"
2219 mpeg2_qsv_encoder_select
="qsvenc"
2220 mpeg4_omx_encoder_deps
="omx"
2221 vc1_mmal_decoder_deps
="mmal"
2222 vc1_qsv_decoder_deps
="libmfx"
2223 vc1_qsv_decoder_select
="qsvdec vc1_qsv_hwaccel vc1_parser"
2224 vp8_qsv_decoder_deps
="libmfx"
2225 vp8_qsv_decoder_select
="qsvdec vp8_qsv_hwaccel vp8_parser"
2227 nvenc_h264_encoder_deps
="nvenc"
2228 nvenc_hevc_encoder_deps
="nvenc"
2231 h264_parser_select
="golomb h264dsp h264parse"
2232 hevc_parser_select
="golomb"
2233 mpegaudio_parser_select
="mpegaudioheader"
2234 mpegvideo_parser_select
="mpegvideo"
2235 mpeg4video_parser_select
="error_resilience h263dsp mpegvideo qpeldsp"
2236 vc1_parser_select
="vc1dsp"
2239 mjpeg2jpeg_bsf_select
="jpegtables"
2241 # external libraries
2242 libdcadec_decoder_deps
="libdcadec"
2243 libfaac_encoder_deps
="libfaac"
2244 libfaac_encoder_select
="audio_frame_queue"
2245 libfdk_aac_decoder_deps
="libfdk_aac"
2246 libfdk_aac_encoder_deps
="libfdk_aac"
2247 libfdk_aac_encoder_select
="audio_frame_queue"
2248 libgsm_decoder_deps
="libgsm"
2249 libgsm_encoder_deps
="libgsm"
2250 libgsm_ms_decoder_deps
="libgsm"
2251 libgsm_ms_encoder_deps
="libgsm"
2252 libilbc_decoder_deps
="libilbc"
2253 libilbc_encoder_deps
="libilbc"
2254 libkvazaar_encoder_deps
="libkvazaar"
2255 libmp3lame_encoder_deps
="libmp3lame"
2256 libmp3lame_encoder_select
="audio_frame_queue mpegaudioheader"
2257 libopencore_amrnb_decoder_deps
="libopencore_amrnb"
2258 libopencore_amrnb_encoder_deps
="libopencore_amrnb"
2259 libopencore_amrnb_encoder_select
="audio_frame_queue"
2260 libopencore_amrwb_decoder_deps
="libopencore_amrwb"
2261 libopenh264_decoder_deps
="libopenh264"
2262 libopenh264_decoder_select
="h264_mp4toannexb_bsf"
2263 libopenh264_encoder_deps
="libopenh264"
2264 libopenjpeg_decoder_deps
="libopenjpeg"
2265 libopenjpeg_encoder_deps
="libopenjpeg"
2266 libopus_decoder_deps
="libopus"
2267 libopus_encoder_deps
="libopus"
2268 libopus_encoder_select
="audio_frame_queue"
2269 libschroedinger_decoder_deps
="libschroedinger"
2270 libschroedinger_encoder_deps
="libschroedinger"
2271 libspeex_decoder_deps
="libspeex"
2272 libspeex_encoder_deps
="libspeex"
2273 libspeex_encoder_select
="audio_frame_queue"
2274 libtheora_encoder_deps
="libtheora"
2275 libtwolame_encoder_deps
="libtwolame"
2276 libvo_aacenc_encoder_deps
="libvo_aacenc"
2277 libvo_aacenc_encoder_select
="audio_frame_queue"
2278 libvo_amrwbenc_encoder_deps
="libvo_amrwbenc"
2279 libvorbis_encoder_deps
="libvorbis"
2280 libvorbis_encoder_select
="audio_frame_queue"
2281 libvpx_vp8_decoder_deps
="libvpx"
2282 libvpx_vp8_encoder_deps
="libvpx"
2283 libvpx_vp9_decoder_deps
="libvpx"
2284 libvpx_vp9_encoder_deps
="libvpx"
2285 libwavpack_encoder_deps
="libwavpack"
2286 libwavpack_encoder_select
="audio_frame_queue"
2287 libwebp_encoder_deps
="libwebp"
2288 libx262_encoder_deps
="libx262"
2289 libx264_encoder_deps
="libx264"
2290 libx265_encoder_deps
="libx265"
2291 libxavs_encoder_deps
="libxavs"
2292 libxvid_encoder_deps
="libxvid mkstemp"
2295 ac3_demuxer_select
="ac3_parser"
2296 asf_demuxer_select
="riffdec"
2297 asf_muxer_select
="riffenc"
2298 asf_stream_muxer_select
="asf_muxer"
2299 avi_demuxer_select
="iso_media riffdec"
2300 avi_muxer_select
="riffenc"
2301 avisynth_demuxer_deps
="avisynth"
2302 avisynth_demuxer_select
="riffdec"
2303 caf_demuxer_select
="iso_media riffdec"
2304 dash_muxer_select
="mp4_muxer"
2305 dirac_demuxer_select
="dirac_parser"
2306 dv_demuxer_select
="dvprofile"
2307 dv_muxer_select
="dvprofile"
2308 dxa_demuxer_select
="riffdec"
2309 eac3_demuxer_select
="ac3_parser"
2310 f4v_muxer_select
="mov_muxer"
2311 flac_demuxer_select
="flac_parser"
2312 hds_muxer_select
="flv_muxer"
2313 hls_muxer_select
="mpegts_muxer"
2314 ipod_muxer_select
="mov_muxer"
2315 ismv_muxer_select
="mov_muxer"
2316 matroska_audio_muxer_select
="matroska_muxer"
2317 matroska_demuxer_select
="iso_media riffdec"
2318 matroska_demuxer_suggest
="bzlib lzo zlib"
2319 matroska_muxer_select
="iso_media riffenc"
2320 mmf_muxer_select
="riffenc"
2321 mov_demuxer_select
="iso_media riffdec"
2322 mov_demuxer_suggest
="zlib"
2323 mov_muxer_select
="iso_media riffenc rtpenc_chain"
2324 mp3_demuxer_select
="mpegaudio_parser"
2325 mp3_muxer_select
="mpegaudioheader"
2326 mp4_muxer_select
="mov_muxer"
2327 mpegts_demuxer_select
="iso_media"
2328 mpegts_muxer_select
="adts_muxer latm_muxer"
2329 mpegtsraw_demuxer_select
="mpegts_demuxer"
2330 mxf_d10_muxer_select
="mxf_muxer"
2331 nut_muxer_select
="riffenc"
2332 nuv_demuxer_select
="riffdec"
2333 oga_muxer_select
="ogg_muxer"
2334 ogg_demuxer_select
="dirac_parse"
2335 opus_muxer_select
="ogg_muxer"
2336 psp_muxer_select
="mov_muxer"
2337 rtp_demuxer_select
="sdp_demuxer"
2338 rtpdec_select
="asf_demuxer jpegtables mov_demuxer mpegts_demuxer rm_demuxer rtp_protocol srtp"
2339 rtsp_demuxer_select
="http_protocol rtpdec"
2340 rtsp_muxer_select
="rtp_muxer http_protocol rtp_protocol rtpenc_chain"
2341 sap_demuxer_select
="sdp_demuxer"
2342 sap_muxer_select
="rtp_muxer rtp_protocol rtpenc_chain"
2343 sdp_demuxer_select
="rtpdec"
2344 smoothstreaming_muxer_select
="ismv_muxer"
2345 spdif_muxer_select
="aac_parser"
2346 spx_muxer_select
="ogg_muxer"
2347 swf_demuxer_suggest
="zlib"
2348 tak_demuxer_select
="tak_parser"
2349 tg2_muxer_select
="mov_muxer"
2350 tgp_muxer_select
="mov_muxer"
2351 w64_demuxer_select
="wav_demuxer"
2352 wav_demuxer_select
="riffdec"
2353 wav_muxer_select
="riffenc"
2354 webm_muxer_select
="iso_media riffenc"
2355 webm_muxer_suggest
="libopus_encoder libvorbis_encoder libvpx_vp8_encoder libvpx_vp9_encoder"
2356 wtv_demuxer_select
="mpegts_demuxer riffdec"
2357 xmv_demuxer_select
="riffdec"
2358 xwma_demuxer_select
="riffdec"
2361 alsa_indev_deps
="alsa_asoundlib_h snd_pcm_htimestamp"
2362 alsa_outdev_deps
="alsa_asoundlib_h"
2363 avfoundation_indev_deps
="AVFoundation_AVFoundation_h"
2364 bktr_indev_deps_any
="dev_bktr_ioctl_bt848_h machine_ioctl_bt848_h dev_video_bktr_ioctl_bt848_h dev_ic_bt8xx_h"
2365 dv1394_indev_deps
="dv1394"
2366 dv1394_indev_select
="dv_demuxer"
2367 fbdev_indev_deps
="linux_fb_h"
2368 jack_indev_deps
="jack_jack_h"
2369 jack_indev_deps_any
="sem_timedwait dispatch_dispatch_h"
2370 libcdio_indev_deps
="libcdio"
2371 libdc1394_indev_deps
="libdc1394"
2372 oss_indev_deps_any
="soundcard_h sys_soundcard_h"
2373 oss_outdev_deps_any
="soundcard_h sys_soundcard_h"
2374 pulse_indev_deps
="libpulse"
2375 sndio_indev_deps
="sndio_h"
2376 sndio_outdev_deps
="sndio_h"
2377 v4l2_indev_deps_any
="linux_videodev2_h sys_videoio_h"
2378 vfwcap_indev_deps
="capCreateCaptureWindow vfwcap_defines"
2379 vfwcap_indev_extralibs
="-lavicap32"
2380 xcbgrab_indev_deps
="libxcb"
2383 ffrtmpcrypt_protocol_deps
="!librtmp_protocol"
2384 ffrtmpcrypt_protocol_deps_any
="gmp openssl"
2385 ffrtmpcrypt_protocol_select
="tcp_protocol"
2386 ffrtmphttp_protocol_deps
="!librtmp_protocol"
2387 ffrtmphttp_protocol_select
="http_protocol"
2388 gopher_protocol_select
="network"
2389 http_protocol_select
="tcp_protocol"
2390 httpproxy_protocol_select
="tcp_protocol"
2391 https_protocol_select
="tls_protocol"
2392 icecast_protocol_select
="http_protocol"
2393 librtmp_protocol_deps
="librtmp"
2394 librtmpe_protocol_deps
="librtmp"
2395 librtmps_protocol_deps
="librtmp"
2396 librtmpt_protocol_deps
="librtmp"
2397 librtmpte_protocol_deps
="librtmp"
2398 mmsh_protocol_select
="http_protocol"
2399 mmst_protocol_select
="network"
2400 rtmp_protocol_deps
="!librtmp_protocol"
2401 rtmp_protocol_select
="tcp_protocol"
2402 rtmpe_protocol_select
="ffrtmpcrypt_protocol"
2403 rtmps_protocol_deps
="!librtmp_protocol"
2404 rtmps_protocol_select
="tls_protocol"
2405 rtmpt_protocol_select
="ffrtmphttp_protocol"
2406 rtmpte_protocol_select
="ffrtmpcrypt_protocol ffrtmphttp_protocol"
2407 rtmpts_protocol_select
="ffrtmphttp_protocol https_protocol"
2408 rtp_protocol_select
="udp_protocol"
2409 sctp_protocol_deps
="struct_sctp_event_subscribe"
2410 sctp_protocol_select
="network"
2411 srtp_protocol_select
="rtp_protocol srtp"
2412 tcp_protocol_select
="network"
2413 tls_gnutls_protocol_deps
="gnutls"
2414 tls_gnutls_protocol_select
="tcp_protocol"
2415 tls_openssl_protocol_deps
="openssl !tls_gnutls_protocol"
2416 tls_openssl_protocol_select
="tcp_protocol"
2417 tls_protocol_deps_any
="tls_gnutls_protocol tls_openssl_protocol"
2418 udp_protocol_select
="network"
2419 unix_protocol_deps
="sys_un_h"
2420 unix_protocol_select
="network"
2423 asyncts_filter_deps
="avresample"
2424 blackframe_filter_deps
="gpl"
2425 boxblur_filter_deps
="gpl"
2426 bs2b_filter_deps
="libbs2b"
2427 cropdetect_filter_deps
="gpl"
2428 deinterlace_qsv_filter_deps
="libmfx"
2429 delogo_filter_deps
="gpl"
2430 drawtext_filter_deps
="libfreetype"
2431 frei0r_filter_deps
="frei0r dlopen"
2432 frei0r_filter_extralibs
='$ldl'
2433 frei0r_src_filter_deps
="frei0r dlopen"
2434 frei0r_src_filter_extralibs
='$ldl'
2435 hdcd_filter_deps
="libhdcd"
2436 hqdn3d_filter_deps
="gpl"
2437 interlace_filter_deps
="gpl"
2438 movie_filter_deps
="avcodec avformat"
2439 ocv_filter_deps
="libopencv"
2440 resample_filter_deps
="avresample"
2441 scale_filter_deps
="swscale"
2442 scale_qsv_filter_deps
="libmfx"
2443 scale_vaapi_filter_deps
="vaapi VAProcPipelineParameterBuffer"
2446 decode_audio_example_deps
="avcodec avutil"
2447 decode_video_example_deps
="avcodec avutil"
2448 encode_audio_example_deps
="avcodec avutil"
2449 encode_video_example_deps
="avcodec avutil"
2450 filter_audio_example_deps
="avfilter avutil"
2451 metadata_example_deps
="avformat avutil"
2452 output_example_deps
="avcodec avformat avresample avutil swscale"
2453 qsvdec_example_deps
="avcodec avutil libmfx h264_qsv_decoder"
2454 transcode_aac_example_deps
="avcodec avformat avresample"
2456 # libraries, in linking order
2457 avcodec_deps
="avutil"
2458 avdevice_deps
="avformat avcodec avutil"
2459 avfilter_deps
="avutil"
2460 avformat_deps
="avcodec avutil"
2461 avresample_deps
="avutil"
2462 swscale_deps
="avutil"
2465 avconv_deps
="avcodec avfilter avformat avresample swscale"
2466 avconv_select
="aformat_filter anull_filter asyncts_filter atrim_filter format_filter
2467 fps_filter null_filter resample_filter scale_filter
2469 avplay_deps
="avcodec avfilter avformat avresample sdl"
2470 avplay_libs
='$sdl_libs'
2471 avplay_select
="rdft format_filter transpose_filter hflip_filter vflip_filter"
2472 avprobe_deps
="avcodec avformat"
2476 texi2html_deps
="doc"
2478 # default parameters
2480 logfile
="config.log"
2482 # installation paths
2483 prefix_default
="/usr/local"
2484 bindir_default
='${prefix}/bin'
2485 datadir_default
='${prefix}/share/avconv'
2486 docdir_default
='${prefix}/share/doc/libav'
2487 incdir_default
='${prefix}/include'
2488 libdir_default
='${prefix}/lib'
2489 mandir_default
='${prefix}/share/man'
2490 shlibdir_default
="$libdir_default"
2495 host_cc_default
="gcc"
2499 pkg_config_default
=pkg-config
2502 version_script
='--version-script'
2506 arch_default
=$
(uname
-m
)
2511 target_os_default
=$
(tolower $
(uname
-s
))
2512 host_os
=$target_os_default
2514 # configurable options
2515 enable $EXAMPLE_LIST $LIBRARY_LIST $PROGRAM_LIST
2520 enable faan faandct faanidct
2521 enable optimizations
2522 enable safe_bitstream_reader
2524 enable swscale_alpha
2525 enable valgrind_backtrace
2527 # By default, enable only those hwaccels that have no external dependencies.
2528 enable d3d11va dxva2 vda vdpau
2531 SHFLAGS
='-shared -Wl,-soname,$$(@F)'
2534 LIBNAME
='$(LIBPREF)$(NAME)$(LIBSUF)'
2537 SLIBNAME
='$(SLIBPREF)$(NAME)$(SLIBSUF)'
2538 SLIBNAME_WITH_VERSION
='$(SLIBNAME).$(LIBVERSION)'
2539 SLIBNAME_WITH_MAJOR
='$(SLIBNAME).$(LIBMAJOR)'
2540 LIB_INSTALL_EXTRA_CMD
='$$(RANLIB) "$(LIBDIR)/$(LIBNAME)"'
2541 SLIB_INSTALL_NAME
='$(SLIBNAME_WITH_VERSION)'
2542 SLIB_INSTALL_LINKS
='$(SLIBNAME_WITH_MAJOR) $(SLIBNAME)'
2543 VERSION_SCRIPT_POSTPROCESS_CMD
="cat"
2566 host_cflags_filter
=echo
2567 host_ldflags_filter
=echo
2569 target_path
='$(CURDIR)'
2571 # since the object filename is not given with the -MM flag, the compiler
2572 # is only able to print the basename, and we must add the path ourselves
2573 DEPCMD
='$(DEP$(1)) $(DEP$(1)FLAGS) $($(1)DEP_FLAGS) $< | sed -e "/^\#.*/d" -e "s,^[[:space:]]*$(*F)\\.o,$(@D)/$(*F).o," > $(@:.o=.d)'
2577 if test -f configure
; then
2580 source_path
=$
(cd $
(dirname "$0"); pwd)
2581 echo "$source_path" |
grep -q
'[[:blank:]]' &&
2582 die
"Out of tree builds are impossible with whitespace in source path."
2583 test -e
"$source_path/config.h" &&
2584 die
"Out of tree builds are impossible with config.h in source dir."
2591 LIBAV_CONFIGURATION
="${LIBAV_CONFIGURATION# } ${l}${r}"
2597 file=$source_path/$3
2598 sed -n
"s/^[^#]*$pattern.*([^,]*, *\([^,]*\)\(,.*\)*).*/\1_$thing/p" "$file"
2601 ENCODER_LIST
=$
(find_things encoder ENC libavcodec
/allcodecs.c
)
2602 DECODER_LIST
=$
(find_things decoder DEC libavcodec
/allcodecs.c
)
2603 HWACCEL_LIST
=$
(find_things hwaccel HWACCEL libavcodec
/allcodecs.c
)
2604 PARSER_LIST
=$
(find_things parser PARSER libavcodec
/allcodecs.c
)
2605 MUXER_LIST
=$
(find_things muxer _MUX libavformat
/allformats.c
)
2606 DEMUXER_LIST
=$
(find_things demuxer DEMUX libavformat
/allformats.c
)
2607 OUTDEV_LIST
=$
(find_things outdev OUTDEV libavdevice
/alldevices.c
)
2608 INDEV_LIST
=$
(find_things indev _IN libavdevice
/alldevices.c
)
2609 FILTER_LIST
=$
(find_things filter FILTER libavfilter
/allfilters.c
)
2611 find_things_extern
(){
2614 file=$source_path/$3
2615 sed -n
"s/^[^#]*extern.*$pattern *ff_\([^ ]*\)_$thing;/\1_$thing/p" "$file"
2618 BSF_LIST
=$
(find_things_extern bsf AVBitStreamFilter libavcodec
/bitstream_filters.c
)
2619 PROTOCOL_LIST
=$
(find_things_extern protocol URLProtocol libavformat
/protocols.c
)
2635 for n
in $COMPONENT_LIST; do
2636 v
=$
(toupper
${n%s})_LIST
2638 eval ${n}_if_any
="\$$v"
2641 enable $ARCH_EXT_LIST
2644 echo "Unknown option \"$1\"."
2645 echo "See $0 --help for available options."
2650 printf "%-25s %-25s %-25s\n" $
(cat |
tr ' ' '\n' |
sort)
2656 echo $
* |
sed s
/$suffix//g | print_3_columns
2668 is_in
${comp} $COMPONENT_LIST && eval comp
=\$$
(toupper
${comp%s})_LIST
2669 echo "prob ${prob:-0.5}"
2677 random_seed
=$
(awk "BEGIN { srand($random_seed); print srand() }")
2678 $action $
(rand_list
"$@" |
awk "BEGIN { srand($random_seed) } \$1 == \"prob\" { prob = \$2; next } rand() < prob { print }")
2687 --extra-ldexeflags
=*)
2688 add_ldexeflags
$optval
2691 add_extralibs
$optval
2694 disable
$INDEV_LIST $OUTDEV_LIST
2697 debuglevel
="$optval"
2700 disable
$PROGRAM_LIST
2702 --disable-everything
)
2703 map
'eval unset \${$(toupper ${v%s})_LIST}' $COMPONENT_LIST
2706 map
'eval unset \${$(toupper ${v%s})_LIST}' $COMPONENT_LIST
2707 disable
$LIBRARY_LIST $PROGRAM_LIST doc
2709 --enable-random|
--disable-random
)
2710 action
=${opt%%-random}
2711 do_random
${action#--} $COMPONENT_LIST
2713 --enable-random
=*|
--disable-random
=*)
2714 action
=${opt%%-random=*}
2715 do_random
${action#--} $optval
2717 --enable-
*=*|
--disable-
*=*)
2718 eval $
(echo "${opt%%=*}" |
sed 's/--/action=/;s/-/ thing=/')
2719 is_in
"${thing}s" $COMPONENT_LIST || die_unknown
"$opt"
2720 eval list
=\$$
(toupper
$thing)_LIST
2721 name
=$
(echo "${optval}" |
sed "s/,/_${thing}|/g")_
${thing}
2722 $action $
(filter
"$name" $list)
2724 --enable-avserver|
--disable-avserver
*)
2725 warn
"avserver has been removed, the ${opt} option is only"\
2726 "provided for compatibility and will be removed in the future"
2728 --enable-?
*|
--disable-?
*)
2729 eval $
(echo "$opt" |
sed 's/--/action=/;s/-/ option=/;s/-/_/g')
2730 if is_in
$option $COMPONENT_LIST; then
2731 test $action = disable
&& action
=unset
2732 eval $action \$$
(toupper
${option%s})_LIST
2733 elif is_in
$option $CMDLINE_SELECT; then
2740 NAME
="${opt#--list-}"
2741 is_in
$NAME $COMPONENT_LIST || die_unknown
$opt
2743 eval show_list
$NAME \$$
(toupper
$NAME)_LIST
2745 --help|
-h
) show_help
2747 --quiet|
-q
) quiet
=yes
2750 optname
="${opt%%=*}"
2751 optname
="${optname#--}"
2752 optname
=$
(echo "$optname" |
sed 's/-/_/g')
2753 if is_in
$optname $CMDLINE_SET; then
2754 eval $optname='$optval'
2755 elif is_in
$optname $CMDLINE_APPEND; then
2756 append
$optname "$optval"
2768 disabled logging
&& logfile
=/dev
/null
2770 # Die early if licensing-related configure options are incompatible.
2771 die_license_disabled
() {
2772 enabled
$1 ||
{ enabled
$v && die
"$v is $1 and --enable-$1 is not specified."; }
2775 map
"die_license_disabled gpl" $EXTERNAL_LIBRARY_GPL_LIST
2776 map
"die_license_disabled nonfree" $EXTERNAL_LIBRARY_NONFREE_LIST $HWACCEL_LIBRARY_NONFREE_LIST
2777 map
"die_license_disabled version3" $EXTERNAL_LIBRARY_VERSION3_LIST
2779 enabled version3
&& { enabled gpl
&& enable gplv3 ||
enable lgplv3
; }
2781 # Disable all the library-specific components if the library itself
2782 # is disabled, see AVCODEC_LIST and following _LIST variables.
2784 disable_components
(){
2785 disabled
${1} && disable $
(
2786 eval components
="\$$(toupper ${1})_COMPONENTS"
2787 map
'eval echo \${$(toupper ${v%s})_LIST}' $components
2791 map
'disable_components $v' $LIBRARY_LIST
2793 echo "# $0 $LIBAV_CONFIGURATION" > $logfile
2796 case "$toolchain" in
2798 cc_default
="${toolchain%-asan}"
2799 add_cflags
-fsanitize
=address
2800 add_ldflags
-fsanitize
=address
2803 cc_default
="${toolchain%-msan}"
2804 add_cflags
-fsanitize
=memory
-fsanitize-memory-track-origins
2805 add_ldflags
-fsanitize
=memory
2808 cc_default
="${toolchain%-tsan}"
2809 add_cflags
-fsanitize
=thread
-pie
2810 add_ldflags
-fsanitize
=thread
-pie
2811 case "$toolchain" in
2819 cc_default
="${toolchain%-usan}"
2820 add_cflags
-fsanitize
=undefined
2821 add_ldflags
-fsanitize
=undefined
2822 case "$toolchain" in
2829 target_exec_default
="valgrind"
2830 case "$toolchain" in
2832 target_exec_args
="--alloc-fn=av_malloc --alloc-fn=av_mallocz"
2835 target_exec_args
="--track-origins=yes --leak-check=full"
2840 # Check whether the current MSVC version needs the C99 converter.
2841 # From MSVC 2013 (compiler major version 18) onwards, it does actually
2842 # support enough of C99 to build libav. Default to the new
2843 # behaviour if the regexp was unable to match anything, since this
2844 # successfully parses the version number of existing supported
2845 # versions that require the converter (MSVC 2010 and 2012).
2846 cl_major_ver
=$
(cl
2>&1 |
sed -n
's/.*Version \([[:digit:]]\{1,\}\)\..*/\1/p')
2847 if [ -z
"$cl_major_ver" ] ||
[ $cl_major_ver -ge
18 ]; then
2850 cc_default
="c99wrap cl"
2852 ld_default
="$source_path/compat/windows/mslink"
2853 nm_default
="dumpbin -symbols"
2860 target_os_default
="win32"
2861 # Use a relative path for TMPDIR. This makes sure all the
2862 # ffconf temp files are written with a relative path, avoiding
2863 # issues with msys/win32 path conversion for MSVC parameters
2864 # such as -Fo<file> or -out:<file>.
2870 nm_default
="dumpbin -symbols"
2872 target_os_default
="win32"
2876 add_cflags
-fprofile-arcs
-ftest-coverage
2877 add_ldflags
-fprofile-arcs
-ftest-coverage
2880 add_cflags
-fprofile-arcs
-ftest-coverage
2881 add_ldflags
--coverage
2884 add_cppflags
-U_FORTIFY_SOURCE
-D_FORTIFY_SOURCE
=2
2885 add_cflags
-fno-strict-overflow
-fstack-protector-all
2886 add_ldflags
-Wl
,-z
,relro
-Wl
,-z
,now
2889 die
"Unknown toolchain $toolchain"
2893 test -n
"$cross_prefix" && enable cross_compile
2895 if enabled cross_compile
; then
2896 test -n
"$arch" && test -n
"$target_os" ||
2897 die
"Must specify target arch (--arch) and OS (--target-os) when cross-compiling"
2900 ar_default
="${cross_prefix}${ar_default}"
2901 cc_default
="${cross_prefix}${cc_default}"
2902 occ_default
="${cross_prefix}${occ_default}"
2903 nm_default
="${cross_prefix}${nm_default}"
2904 pkg_config_default
="${cross_prefix}${pkg_config_default}"
2905 ranlib
="${cross_prefix}${ranlib}"
2906 strip
="${cross_prefix}${strip}"
2908 sysinclude_default
="${sysroot}/usr/include"
2910 set_default arch cc pkg_config sysinclude target_exec target_os
2911 enabled cross_compile || host_cc_default
=$cc
2914 if ! $pkg_config --version
>/dev
/null
2>&1; then
2915 warn
"$pkg_config not found, library detection may fail."
2921 mingw32
*|mingw64
*|win32|win64|cygwin
*|
*-dos|freedos|opendos|os
/2*|symbian
) echo .exe
;;
2925 EXESUF
=$
(exesuf
$target_os)
2926 HOSTEXESUF
=$
(exesuf
$host_os)
2928 # set temporary file name
2929 : ${TMPDIR:=$TEMPDIR}
2933 if ! check_cmd mktemp
-u XXXXXX
; then
2934 # simple replacement for missing mktemp
2935 # NOT SAFE FOR GENERAL USE
2937 echo "${2%%XXX*}.${HOSTNAME}.${UID}.$$"
2942 tmp
=$
(mktemp
-u
"${TMPDIR}/ffconf.XXXXXXXX")$2 &&
2943 (set -C
; exec > $tmp) 2>/dev
/null ||
2944 die
"Unable to create temporary file in $TMPDIR."
2945 append TMPFILES
$tmp
2949 trap 'rm -f -- $TMPFILES' EXIT
2953 tmpfile TMPE
$EXESUF
2964 # make sure we can execute files in $TMPDIR
2965 cat > $TMPSH 2>> $logfile <<EOF
2968 chmod +x
$TMPSH >> $logfile 2>&1
2969 if ! $TMPSH >> $logfile 2>&1; then
2971 Unable to create and execute files in $TMPDIR. Set the TMPDIR environment
2972 variable to another directory and make sure that it is not mounted noexec.
2974 die
"Sanity test failed."
2980 # Filter out MSVC cl.exe options from cflags that shouldn't
2981 # be passed to gas-preprocessor
2991 -std
=c99
) echo -c99
;;
2992 -mcpu
=*) echo -arch
${flag#*=} ;;
2993 -mieee
) echo -ieee
;;
2994 -O
*|
-fast
) echo $flag ;;
2995 -fno-math-errno
) echo -assume nomath_errno
;;
2997 -Wall
) echo -msg_enable level2
;;
2998 -Wno-pointer-sign
) echo -msg_disable ptrmismatch1
;;
2999 -Wl
,*) echo $flag ;;
3009 -Wno-switch
) echo -Wno-switch-enum
;;
3010 -Wno-format-zero-length
) ;;
3011 -Wdisabled-optimization
) ;;
3012 -Wno-pointer-sign
) echo -Wno-other
;;
3018 msvc_common_flags
(){
3021 # In addition to specifying certain flags under the compiler
3022 # specific filters, they must be specified here as well or else the
3023 # generic catch all at the bottom will print the original flag.
3027 -fomit-frame-pointer
) ;;
3031 -fno-signed-zeros
) ;;
3035 -lz
) echo zlib.lib
;;
3036 -lavicap32
) echo vfw32.lib user32.lib
;;
3037 -lx264
) echo libx264.lib
;;
3038 -l
*) echo ${flag#-l}.lib
;;
3039 -L
*) echo -libpath
:${flag#-L} ;;
3046 msvc_common_flags
"$@"
3049 -Wall
) echo -W4
-wd4244
-wd4127
-wd4018
-wd4389 \
3050 -wd4146
-wd4057
-wd4204
-wd4706
-wd4305 \
3051 -wd4152
-wd4324
-we4013
-wd4100
-wd4214 \
3052 -wd4273
-wd4554
-wd4701
-wd4703
;;
3058 msvc_common_flags
"$@"
3061 # Despite what Intel's documentation says -Wall, which is supported
3062 # on Windows, does enable remarks so disable them here.
3063 -Wall
) echo $flag -Qdiag-disable
:remark
;;
3064 -std
=c99
) echo -Qstd
=c99
;;
3072 -flto
) echo -Mipa
=fast
,libopt
,libinline
,vestigial
;;
3073 -fomit-frame-pointer
) echo -Mnoframe
;;
3084 case "${flag#*=}" in
3085 native
) echo -xtarget
=native
;;
3086 v9|niagara
) echo -xarch
=sparc
;;
3087 ultrasparc
) echo -xarch
=sparcvis
;;
3088 ultrasparc3|niagara2
) echo -xarch
=sparcvis2
;;
3089 i586|pentium
) echo -xchip
=pentium
;;
3090 i686|pentiumpro|pentium2
) echo -xtarget
=pentium_pro
;;
3091 pentium3
*|c3-2
) echo -xtarget
=pentium3
;;
3092 pentium-m
) echo -xarch
=sse2
-xchip
=pentium3
;;
3093 pentium4
*) echo -xtarget
=pentium4
;;
3094 prescott|nocona
) echo -xarch
=sse3
-xchip
=pentium4
;;
3095 *-sse3
) echo -xarch
=sse3
;;
3096 core2
) echo -xarch
=ssse3
-xchip
=core2
;;
3097 corei7
) echo -xarch
=sse4_2
-xchip
=nehalem
;;
3098 corei7-avx
) echo -xarch
=avx
-xchip
=sandybridge
;;
3099 amdfam10|barcelona|bdver
*) echo -xarch
=sse4_1
;;
3100 athlon-4|athlon-
[mx
]p
) echo -xarch
=ssea
;;
3101 k8|opteron|athlon64|athlon-fx
)
3102 echo -xarch
=sse2a
;;
3103 athlon
*) echo -xarch
=pentium_proa
;;
3106 -std
=c99
) echo -xc99
;;
3107 -fomit-frame-pointer
) echo -xregs
=frameptr
;;
3108 -fPIC
) echo -KPIC
-xcode
=pic32
;;
3109 -W
*,*) echo $flag ;;
3110 -f
*-*|
-W
*|
-mimpure-text
) ;;
3121 case "${flag#*=}" in
3122 armv7-a|cortex-a
*) echo -mv=7a8
;;
3123 armv7-r|cortex-r
*) echo -mv=7r4
;;
3124 armv7-m|cortex-m
*) echo -mv=7m3
;;
3125 armv6
*|arm11
*) echo -mv=6 ;;
3126 armv5
*e|arm
[79]*e
*|arm9
[24]6*|arm96
*|arm102
[26])
3128 armv4
*|arm7
*|arm9
[24]*) echo -mv=4 ;;
3131 -mfpu
=neon
) echo --float_support
=vfpv3
--neon
;;
3132 -mfpu
=vfp
) echo --float_support
=vfpv2
;;
3133 -mfpu
=vfpv3
) echo --float_support
=vfpv3
;;
3134 -mfpu
=vfpv3-d16
) echo --float_support
=vfpv3d16
;;
3135 -msoft-float
) echo --float_support
=vfplib
;;
3136 -O
[0-3]|
-mf
=*) echo $flag ;;
3138 -pds
=*) echo $flag ;;
3139 -D
*|
-I
*) echo $flag ;;
3140 --gcc|
--abi
=*) echo $flag ;;
3150 unset _type _ident _cc_c _cc_e _cc_o _flags _cflags
3151 unset _ld_o _ldflags _ld_lib _ld_path
3152 unset _depflags _DEPCMD _DEPFLAGS
3155 if $_cc -v
2>&1 |
grep -q
'^gcc.*LLVM'; then
3157 gcc_extra_ver
=$
(expr "$($_cc --version 2>/dev/null | head -n1)" : '.*\((.*)\)')
3158 _ident
="llvm-gcc $($_cc -dumpversion 2>/dev/null) $gcc_extra_ver"
3159 _depflags
='-MMD -MF $(@:.o=.d) -MT $@'
3162 elif $_cc -v
2>&1 |
grep -qi ^gcc
; then
3164 gcc_version
=$
($_cc --version |
head -n1
)
3165 gcc_basever
=$
($_cc -dumpversion
)
3166 gcc_pkg_ver
=$
(expr "$gcc_version" : '[^ ]* \(([^)]*)\)')
3167 gcc_ext_ver
=$
(expr "$gcc_version" : ".*$gcc_pkg_ver $gcc_basever \\(.*\\)")
3168 _ident
=$
(cleanws
"gcc $gcc_basever $gcc_pkg_ver $gcc_ext_ver")
3169 if ! $_cc -dumpversion |
grep -q
'^2\.'; then
3170 _depflags
='-MMD -MF $(@:.o=.d) -MT $@'
3174 elif $_cc --version
2>/dev
/null |
grep -q ^icc
; then
3176 _ident
=$
($_cc --version |
head -n1
)
3181 elif $_cc -v
2>&1 |
grep -q xlc
; then
3183 _ident
=$
($_cc -qversion
2>/dev
/null |
head -n1
)
3185 _cflags_size
='-O5 -qcompact'
3186 elif $_cc -V
2>/dev
/null |
grep -q Compaq
; then
3188 _ident
=$
($_cc -V |
head -n1 | cut
-d
' ' -f1-3
)
3190 _cflags_speed
='-fast'
3192 _flags_filter
=ccc_flags
3193 elif $_cc --vsn
2>/dev
/null |
grep -Eq
"ARM (C/C\+\+ )?Compiler"; then
3194 test -d
"$sysroot" || die
"No valid sysroot specified."
3196 _ident
=$
($_cc --vsn |
grep -i build |
head -n1 |
sed 's/.*: //')
3197 armcc_conf
="$PWD/armcc.conf"
3198 $_cc --arm_linux_configure \
3199 --arm_linux_config_file
="$armcc_conf" \
3200 --configure_sysroot
="$sysroot" \
3201 --configure_cpp_headers
="$sysinclude" >>$logfile 2>&1 ||
3202 die
"Error creating armcc configuration file."
3203 $_cc --vsn |
grep -q RVCT
&& armcc_opt
=rvct || armcc_opt
=armcc
3204 _flags
="--arm_linux_config_file=$armcc_conf --translate_gcc"
3205 as_default
="${cross_prefix}gcc"
3209 elif $_cc -version
2>/dev
/null |
grep -Eq
'TMS470|TI ARM'; then
3211 _ident
=$
($_cc -version |
head -n1 |
tr -s
' ')
3212 _flags
='--gcc --abi=eabi -me'
3215 _depflags
='-ppa -ppd=$(@:.o=.d)'
3216 _cflags_speed
='-O3 -mf=5'
3217 _cflags_size
='-O3 -mf=2'
3218 _flags_filter
=tms470_flags
3219 elif $_cc -v
2>&1 |
grep -q clang
; then
3221 _ident
=$
($_cc --version
2>/dev
/null |
head -n1
)
3222 _depflags
='-MMD -MF $(@:.o=.d) -MT $@'
3225 elif $_cc -V
2>&1 |
grep -q Sun
; then
3227 _ident
=$
($_cc -V
2>&1 |
head -n1 | cut
-d
' ' -f
2-)
3228 _DEPCMD
='$(DEP$(1)) $(DEP$(1)FLAGS) $($(1)DEP_FLAGS) $< | sed -e "1s,^.*: ,$@: ," -e "\$$!s,\$$, \\\," -e "1!s,^.*: , ," > $(@:.o=.d)'
3229 _DEPFLAGS
='-xM1 -xc99'
3232 _cflags_size
='-O5 -xspace'
3233 _flags_filter
=suncc_flags
3234 elif $_cc -v
2>&1 |
grep -q
'PathScale\|Path64'; then
3236 _ident
=$
($_cc -v
2>&1 |
head -n1 |
tr -d
:)
3237 _depflags
='-MMD -MF $(@:.o=.d) -MT $@'
3240 _flags_filter
='filter_out -Wdisabled-optimization'
3241 elif $_cc -v
2>&1 |
grep -q Open64
; then
3243 _ident
=$
($_cc -v
2>&1 |
head -n1 |
tr -d
:)
3244 _depflags
='-MMD -MF $(@:.o=.d) -MT $@'
3247 _flags_filter
='filter_out -Wdisabled-optimization|-Wtype-limits|-fno-signed-zeros'
3248 elif $_cc -V
2>&1 |
grep -q Portland
; then
3250 _ident
="PGI $($_cc -V 2>&1 | awk '/^pgcc/ { print $2; exit }')"
3251 opt_common
='-alias=ansi -Mdse -Mlre -Mpre'
3252 _cflags_speed
="-O3 -Mautoinline -Munroll=c:4 $opt_common"
3253 _cflags_size
="-O2 -Munroll=c:1 $opt_common"
3255 _flags_filter
=pgi_flags
3256 elif $_cc 2>&1 |
grep -q
'Microsoft.*ARM.*Assembler'; then
3258 _ident
=$
($_cc |
head -n1
)
3259 # 4509: "This form of conditional instruction is deprecated"
3260 _flags
="-nologo -ignore 4509"
3261 _flags_filter
=armasm_flags
3262 elif $_cc -nologo-
2>&1 |
grep -q Microsoft
; then
3264 _ident
=$
($_cc 2>&1 |
head -n1
)
3265 _DEPCMD
='$(DEP$(1)) $(DEP$(1)FLAGS) $($(1)DEP_FLAGS) $< 2>&1 | awk '\''/including/ { sub(/^.*file: */, ""); gsub(/\\/, "/"); if (!match($$0, / /)) print "$@:", $$0 }'\'' > $(@:.o=.d)'
3266 _DEPFLAGS
='$(CPPFLAGS) $(CFLAGS) -showIncludes -Zs'
3269 if $_cc -nologo-
2>&1 |
grep -q Linker
; then
3276 _flags_filter
=msvc_flags
3278 _ld_path
='-libpath:'
3280 elif $_cc 2>&1 |
grep -q Intel
; then
3282 _ident
=$
($_cc 2>&1 |
head -n1
)
3283 _depflags
='-QMMD -QMF$(@:.o=.d) -QMT$@'
3284 # Not only is O3 broken on 13.x+ but it is slower on all previous
3285 # versions (tested) as well.
3287 _cflags_size
="-O1 -Oi" # -O1 without -Oi miscompiles stuff
3288 if $_cc 2>&1 |
grep -q Linker
; then
3295 _flags_filter
=icl_flags
3297 _ld_path
='-libpath:'
3298 # -Qdiag-error to make icl error when seeing certain unknown arguments
3299 _flags
='-nologo -Qdiag-error:4044,10157'
3300 # -Qvec- -Qsimd- to prevent miscompilation, -GS for consistency
3301 # with MSVC which enables it by default.
3302 _cflags
='-Qms0 -Qvec- -Qsimd- -GS'
3303 elif $_cc -?
2>/dev
/null |
grep -q
'LLVM.*Linker'; then
3304 # lld can emulate multiple different linkers; in ms link.exe mode,
3305 # the -? parameter gives the help output which contains an identifyable
3306 # string, while it gives an error in other modes.
3308 # The link.exe mode doesn't have a switch for getting the version,
3309 # but we can force it back to gnu mode and get the version from there.
3310 _ident
=$
($_cc -flavor gnu
--version
2>/dev
/null
)
3312 _flags_filter
=msvc_flags
3314 _ld_path
='-libpath:'
3315 elif $_cc --version
2>/dev
/null |
grep -q ^cparser
; then
3317 _ident
=$
($_cc --version |
head -n1
)
3321 _flags_filter
=cparser_flags
3324 eval ${pfx}_type
=\
$_type
3325 eval ${pfx}_ident
=\
$_ident
3329 eval ${1}_C
=\
${_cc_c-\${${1}_C
}}
3330 eval ${1}_E
=\
${_cc_e-\${${1}_E
}}
3331 eval ${1}_O
=\
${_cc_o-\${${1}_O
}}
3333 if [ -n
"$_depflags" ]; then
3334 eval ${1}_DEPFLAGS
=\
$_depflags
3336 eval ${1}DEP
=\
${_DEPCMD:-\$DEPCMD}
3337 eval ${1}DEP_FLAGS
=\
${_DEPFLAGS:-\$DEPFLAGS}
3338 eval DEP
${1}FLAGS
=\
$_flags
3343 cflags_filter
=$_flags_filter
3344 cflags_speed
=$_cflags_speed
3345 cflags_size
=$_cflags_size
3346 cflags_noopt
=$_cflags_noopt
3347 add_cflags
$_flags $_cflags
3348 cc_ldflags
=$_ldflags
3351 probe_cc hostcc
"$host_cc"
3352 host_cflags_filter
=$_flags_filter
3353 add_host_cflags
$_flags $_cflags
3356 test -n
"$cc_type" && enable $cc_type ||
3357 warn
"Unknown C compiler $cc, unable to select optimal CFLAGS"
3359 : ${as_default:=$cc}
3360 : ${objcc_default:=$cc}
3361 : ${dep_cc_default:=$cc}
3362 : ${ld_default:=$cc}
3363 : ${host_ld_default:=$host_cc}
3364 set_default
ar as objcc dep_cc ld host_ld
3367 asflags_filter
=$_flags_filter
3368 add_asflags
$_flags $_cflags
3371 probe_cc objcc
"$objcc"
3372 objcflags_filter
=$_flags_filter
3373 add_objcflags
$_flags $_cflags
3377 ldflags_filter
=$_flags_filter
3378 add_ldflags
$_flags $_ldflags
3379 test "$cc_type" != "$ld_type" && add_ldflags
$cc_ldflags
3381 LD_LIB
=${_ld_lib-$LD_LIB}
3382 LD_PATH
=${_ld_path-$LD_PATH}
3384 probe_cc hostld
"$host_ld"
3385 host_ldflags_filter
=$_flags_filter
3386 add_host_ldflags
$_flags $_ldflags
3387 HOSTLD_O
=${_ld_o-$HOSTLD_O}
3389 if [ -z
"$CC_DEPFLAGS" ] && [ "$dep_cc" != "$cc" ]; then
3390 probe_cc depcc
"$dep_cc"
3391 CCDEP
=${_DEPCMD:-$DEPCMD}
3392 CCDEP_FLAGS
=${_DEPFLAGS:=$DEPFLAGS}
3396 if $ar 2>&1 |
grep -q Microsoft
; then
3399 elif $ar 2>&1 |
grep -q
'Texas Instruments'; then
3402 elif $ar 2>&1 |
grep -q
'Usage: ar.*-X.*any'; then
3403 arflags
='-Xany -r -c'
3410 add_cflags
$extra_cflags
3411 add_objcflags
$extra_objcflags
3412 add_asflags
$extra_cflags
3414 if test -n
"$sysroot"; then
3417 add_cppflags
--sysroot
="$sysroot"
3418 add_ldflags
--sysroot
="$sysroot"
3421 add_cppflags
-I
"$sysinclude"
3422 add_ldflags
--sysroot
="$sysroot"
3427 if test "$cpu" = host; then
3428 enabled cross_compile
&&
3429 die
"--cpu=host makes no sense when cross-compiling."
3434 $cc $1=native
-v
-c
-o
$TMPO $TMPC >$TMPE 2>&1 ||
return
3436 s/.*$1=\\([^ ]*\\).*/\\1/
3441 cpu
=$
(check_native
-march || check_native
-mcpu
)
3445 test "${cpu:-host}" = host &&
3446 die
"--cpu=host not supported with compiler $cc"
3449 # Deal with common $arch aliases
3473 "Power Macintosh"|ppc
*|powerpc
*)
3488 i
[3-6]86|i86pc|BePC|x86pc|x86_64|amd64
)
3493 is_in
$arch $ARCH_LIST || warn
"unknown architecture $arch"
3496 # Add processor-specific flags
3497 if enabled aarch64
; then
3501 cpuflags
="-march=$cpu"
3504 cpuflags
="-mcpu=$cpu"
3508 elif enabled alpha
; then
3510 cpuflags
="-mcpu=$cpu"
3512 elif enabled arm
; then
3515 check_cpp_condition stddef.h \
3516 "defined __ARM_ARCH_${1}__ || defined __TARGET_ARCH_${2:-$1}" \
3521 if check_arm_arch
4; then echo armv4
3522 elif check_arm_arch
4T
; then echo armv4t
3523 elif check_arm_arch
5; then echo armv5
3524 elif check_arm_arch
5E
; then echo armv5e
3525 elif check_arm_arch
5T
; then echo armv5t
3526 elif check_arm_arch
5TE
; then echo armv5te
3527 elif check_arm_arch
5TEJ
; then echo armv5te
3528 elif check_arm_arch
6; then echo armv6
3529 elif check_arm_arch
6J
; then echo armv6j
3530 elif check_arm_arch
6K
; then echo armv6k
3531 elif check_arm_arch
6Z
; then echo armv6z
3532 elif check_arm_arch
6ZK
; then echo armv6zk
3533 elif check_arm_arch
6T2
; then echo armv6t2
3534 elif check_arm_arch
7; then echo armv7
3535 elif check_arm_arch
7A
7_A
; then echo armv7-a
3536 elif check_arm_arch
7S
; then echo armv7-a
3537 elif check_arm_arch
7R
7_R
; then echo armv7-r
3538 elif check_arm_arch
7M
7_M
; then echo armv7-m
3539 elif check_arm_arch
7EM
7E_M
; then echo armv7-m
3540 elif check_arm_arch
8A
8_A
; then echo armv8-a
3544 [ "$cpu" = generic
] && cpu
=$
(probe_arm_arch
)
3548 cpuflags
="-march=$cpu"
3549 subarch
=$
(echo $cpu |
sed 's/[^a-z0-9]//g')
3552 cpuflags
="-mcpu=$cpu"
3554 cortex-a
*) subarch
=armv7a
;;
3555 cortex-r
*) subarch
=armv7r
;;
3556 cortex-m
*) enable thumb
; subarch
=armv7m
;;
3557 arm11
*) subarch
=armv6
;;
3558 arm
[79]*e
*|arm9
[24]6*|arm96
*|arm102
[26]) subarch
=armv5te
;;
3559 armv4
*|arm7
*|arm9
[24]*) subarch
=armv4
;;
3560 *) subarch
=$
(probe_arm_arch
) ;;
3566 armv5t
*) enable fast_clz
;;
3567 armv
[6-8]*) enable fast_clz fast_unaligned
;;
3570 elif enabled avr32
; then
3575 cpuflags
="-mpart=$cpu"
3579 cpuflags
="-march=$cpu"
3583 cpuflags
="-mcpu=$cpu"
3587 cpuflags
="-march=$cpu"
3591 elif enabled bfin
; then
3593 cpuflags
="-mcpu=$cpu"
3595 elif enabled mips
; then
3597 cpuflags
="-march=$cpu"
3599 elif enabled ppc
; then
3603 case $
(tolower
$cpu) in
3604 601|ppc601|powerpc601
)
3605 cpuflags
="-mcpu=601"
3608 603*|ppc603
*|powerpc603
*)
3609 cpuflags
="-mcpu=603"
3612 604*|ppc604
*|powerpc604
*)
3613 cpuflags
="-mcpu=604"
3616 g3|
75*|ppc75
*|powerpc75
*)
3617 cpuflags
="-mcpu=750"
3620 g4|
745*|ppc745
*|powerpc745
*)
3621 cpuflags
="-mcpu=7450"
3624 74*|ppc74
*|powerpc74
*)
3625 cpuflags
="-mcpu=7400"
3628 g5|
970|ppc970|powerpc970
)
3629 cpuflags
="-mcpu=970"
3633 cpuflags
="-mcpu=$cpu"
3637 cpuflags
="-mcpu=$cpu"
3641 cpuflags
="-mcpu=cell"
3646 cpuflags
="-mcpu=e500mc"
3650 cpuflags
="-mcpu=8548 -mhard-float -mfloat-gprs=double"
3655 cpuflags
="-mcpu=8540 -mhard-float"
3661 elif enabled sparc
; then
3664 cypress|f93
[04]|tsc701|sparcl
*|supersparc|hypersparc|niagara|v
[789])
3665 cpuflags
="-mcpu=$cpu"
3667 ultrasparc
*|niagara
[234])
3668 cpuflags
="-mcpu=$cpu"
3672 elif enabled x86
; then
3676 cpuflags
="-march=$cpu"
3680 # targets that do NOT support nopl and conditional mov (cmov)
3681 pentium-mmx|k6|k6-
[23]|winchip-c6|winchip2|c3
)
3682 cpuflags
="-march=$cpu"
3685 # targets that do support nopl and conditional mov (cmov)
3686 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
*)
3687 cpuflags
="-march=$cpu"
3691 # targets that do support conditional mov but on which it's slow
3692 pentium4|pentium4m|prescott|nocona
)
3693 cpuflags
="-march=$cpu"
3701 if [ "$cpu" != generic
]; then
3702 add_cflags
$cpuflags
3703 add_asflags
$cpuflags
3704 test "$cc_type" = "$ld_type" && add_ldflags
$cpuflags
3707 # compiler sanity check
3709 int main(void){ return 0; }
3711 if test "$?" != 0; then
3712 echo "$cc is unable to create an executable file."
3713 if test -z
"$cross_prefix" && ! enabled cross_compile
; then
3714 echo "If $cc is a cross-compiler, use the --enable-cross-compile option."
3715 echo "Only do this if you know what cross compiling means."
3717 die
"C compiler test failed."
3720 add_cppflags
-D_ISOC99_SOURCE
3722 # some compilers silently accept -std=c11, so we also need to check that the
3723 # version macro is defined properly
3724 if test_cflags_cpp
-std
=c11
"__STDC_VERSION__ >= 201112L"; then
3727 check_cflags
-std
=c99
3730 check_cc
-D_FILE_OFFSET_BITS
=64 <<EOF && add_cppflags -D_FILE_OFFSET_BITS=64
3733 check_cc
-D_LARGEFILE_SOURCE
<<EOF && add_cppflags -D_LARGEFILE_SOURCE
3737 add_host_cppflags
-D_ISOC99_SOURCE
3738 check_host_cflags
-std
=c99
3739 check_host_cflags
-Wall
3740 check_host_cflags
-O3
3746 check_code cc
"" "int test[2*($expr) - 1]" &&
3747 subarch
=$arch64 || subarch
=$arch32
3755 check_64bit mips mips64
'_MIPS_SIM > 1'
3759 check_64bit parisc parisc64
'sizeof(void *) > 4'
3763 check_64bit ppc ppc64
'sizeof(void *) > 4'
3767 check_64bit s390 s390x
'sizeof(void *) > 4'
3771 check_64bit sparc sparc64
'sizeof(void *) > 4'
3775 check_64bit x86_32 x86_64
'sizeof(void *) > 4'
3776 if test "$subarch" = "x86_64"; then
3783 enabled spic
&& enable_weak pic
3789 add_cppflags
'-I\$(SRC_PATH)/compat/aix'
3790 enabled shared
&& add_ldflags
-Wl
,-brtl
3794 enable section_data_rel_ro
3795 SLIB_INSTALL_NAME
='$(SLIBNAME)'
3797 SHFLAGS
='-shared -Wl,-soname,$(SLIBNAME)'
3800 prefix_default
="/boot/common"
3801 network_extralibs
="-lnetwork"
3805 SHFLAGS
='-shared -Wl,-h,$$(@F)'
3806 enabled x86
&& SHFLAGS
="-mimpure-text $SHFLAGS"
3807 network_extralibs
="-lsocket -lnsl"
3808 # When using suncc to build, the Solaris linker will mark
3809 # an executable with each instruction set encountered by
3810 # the Solaris assembler. As our libraries contain their own
3811 # guards for processor-specific code, instead suppress
3812 # generation of the HWCAPS ELF section on Solaris x86 only.
3813 enabled_all suncc x86
&&
3814 echo "hwcap_1 = OVERRIDE;" > mapfile
&&
3815 add_ldflags
-Wl
,-M
,mapfile
3816 nm_default
='nm -P -g'
3818 VERSION_SCRIPT_POSTPROCESS_CMD
='perl $(SRC_PATH)/compat/solaris/make_sunver.pl - $(OBJS)'
3822 oss_indev_extralibs
="-lossaudio"
3823 oss_outdev_extralibs
="-lossaudio"
3828 SLIB_INSTALL_NAME
='$(SLIBNAME).$(LIBMAJOR).$(LIBMINOR)'
3830 oss_indev_extralibs
="-lossaudio"
3831 oss_outdev_extralibs
="-lossaudio"
3839 add_extralibs
-lpoll
-lgnugetopt
3842 enabled ppc
&& add_asflags
-force_cpusubtype_ALL
3843 SHFLAGS
='-dynamiclib -Wl,-single_module -Wl,-install_name,$(SHLIBDIR)/$(SLIBNAME_WITH_MAJOR),-current_version,$(LIBVERSION),-compatibility_version,$(LIBMAJOR)'
3844 enabled x86_32
&& append SHFLAGS
-Wl
,-read_only_relocs
,suppress
3845 add_ldflags
-Wl
,-dynamic
,-search_paths_first
3847 SLIBNAME_WITH_VERSION
='$(SLIBPREF)$(NAME).$(LIBVERSION)$(SLIBSUF)'
3848 SLIBNAME_WITH_MAJOR
='$(SLIBPREF)$(NAME).$(LIBMAJOR)$(SLIBSUF)'
3850 enabled x86_64
&& objformat
="macho64"
3851 enabled_any pic shared ||
3852 { check_cflags
-mdynamic-no-pic
&& add_asflags
-mdynamic-no-pic
; }
3853 check_header dispatch
/dispatch.h
&&
3854 add_cppflags
'-I\$(SRC_PATH)/compat/dispatch_semaphore'
3857 die
"Native MSYS builds are discouraged, please use the MINGW environment."
3860 if test $target_os = "mingw32ce"; then
3866 if enabled x86_64
; then
3867 LIBTARGET
="i386:x86-64"
3868 elif enabled arm
; then
3871 check_ldflags
-Wl
,--nxcompat
3872 check_ldflags
-Wl
,--dynamicbase
3873 shlibdir_default
="$bindir_default"
3876 SLIBNAME_WITH_VERSION
='$(SLIBPREF)$(NAME)-$(LIBVERSION)$(SLIBSUF)'
3877 SLIBNAME_WITH_MAJOR
='$(SLIBPREF)$(NAME)-$(LIBMAJOR)$(SLIBSUF)'
3878 SLIB_EXTRA_CMD
=-'sed -e "s/ @[^ ]*//" $$(@:$(SLIBSUF)=.orig.def) > $$(@:$(SLIBSUF)=.def); $(DLLTOOL) -m $(LIBTARGET) -d $$(@:$(SLIBSUF)=.def) -l $(SUBDIR)$(SLIBNAME:$(SLIBSUF)=.lib) -D $(SLIBNAME_WITH_MAJOR)'
3879 SLIB_INSTALL_NAME
='$(SLIBNAME_WITH_MAJOR)'
3881 SLIB_INSTALL_EXTRA_SHLIB
='$(SLIBNAME:$(SLIBSUF)=.lib)'
3882 SLIB_INSTALL_EXTRA_LIB
='lib$(SLIBNAME:$(SLIBSUF)=.dll.a) $(SLIBNAME_WITH_MAJOR:$(SLIBSUF)=.def)'
3883 SHFLAGS
='-shared -Wl,--output-def,$$(@:$(SLIBSUF)=.orig.def) -Wl,--out-implib,$(SUBDIR)lib$(SLIBNAME:$(SLIBSUF)=.dll.a) -Wl,--enable-runtime-pseudo-reloc -Wl,--enable-auto-image-base'
3885 dlltool
="${cross_prefix}dlltool"
3891 if enabled shared
; then
3892 # Link to the import library instead of the normal static library
3895 # Cannot build both shared and static libs with MSVC or icl.
3898 shlibdir_default
="$bindir_default"
3901 SLIBNAME_WITH_VERSION
='$(SLIBPREF)$(NAME)-$(LIBVERSION)$(SLIBSUF)'
3902 SLIBNAME_WITH_MAJOR
='$(SLIBPREF)$(NAME)-$(LIBMAJOR)$(SLIBSUF)'
3903 SLIB_CREATE_DEF_CMD
='$(SRC_PATH)/compat/windows/makedef $(SUBDIR)lib$(NAME).ver $(OBJS) > $$(@:$(SLIBSUF)=.def)'
3904 SLIB_INSTALL_NAME
='$(SLIBNAME_WITH_MAJOR)'
3906 SLIB_INSTALL_EXTRA_SHLIB
='$(SLIBNAME:$(SLIBSUF)=.lib)'
3907 SLIB_INSTALL_EXTRA_LIB
='$(SLIBNAME_WITH_MAJOR:$(SLIBSUF)=.def)'
3908 SHFLAGS
='-dll -def:$$(@:$(SLIBSUF)=.def) -implib:$(SUBDIR)$(SLIBNAME:$(SLIBSUF)=.lib)'
3915 shlibdir_default
="$bindir_default"
3918 SLIBNAME_WITH_VERSION
='$(SLIBPREF)$(NAME)-$(LIBVERSION)$(SLIBSUF)'
3919 SLIBNAME_WITH_MAJOR
='$(SLIBPREF)$(NAME)-$(LIBMAJOR)$(SLIBSUF)'
3920 SLIB_INSTALL_NAME
='$(SLIBNAME_WITH_MAJOR)'
3922 SLIB_INSTALL_EXTRA_LIB
='lib$(NAME).dll.a'
3923 SHFLAGS
='-shared -Wl,--out-implib,$(SUBDIR)lib$(NAME).dll.a'
3927 *-dos|freedos|opendos
)
3928 network_extralibs
="-lsocket"
3931 add_cppflags
-U__STRICT_ANSI__
3935 enable section_data_rel_ro
3939 ranlib
="echo ignoring ranlib"
3944 add_cppflags
-D_GNU_SOURCE
3945 add_ldflags
-Zomf
-Zbin-files
-Zargs-wild
-Zmap
3946 SHFLAGS
='$(SUBDIR)$(NAME).def -Zdll -Zomf'
3950 SLIBNAME_WITH_VERSION
='$(SLIBPREF)$(NAME)-$(LIBVERSION)$(SLIBSUF)'
3951 SLIBNAME_WITH_MAJOR
='$(SLIBPREF)$(shell echo $(NAME) | cut -c1-6)$(LIBMAJOR)$(SLIBSUF)'
3952 SLIB_CREATE_DEF_CMD
='echo LIBRARY $(SLIBNAME_WITH_MAJOR) INITINSTANCE TERMINSTANCE > $(SUBDIR)$(NAME).def; \
3953 echo CODE PRELOAD MOVEABLE DISCARDABLE >> $(SUBDIR)$(NAME).def; \
3954 echo DATA PRELOAD MOVEABLE MULTIPLE NONSHARED >> $(SUBDIR)$(NAME).def; \
3955 echo EXPORTS >> $(SUBDIR)$(NAME).def; \
3956 emxexp $(OBJS) >> $(SUBDIR)$(NAME).def'
3957 SLIB_EXTRA_CMD
='emximp -o $(SUBDIR)$(LIBPREF)$(NAME)_dll.a $(SUBDIR)$(NAME).def; \
3958 emximp -o $(SUBDIR)$(LIBPREF)$(NAME)_dll.lib $(SUBDIR)$(NAME).def;'
3959 SLIB_INSTALL_EXTRA_LIB
='$(LIBPREF)$(NAME)_dll.a $(LIBPREF)$(NAME)_dll.lib'
3963 add_cppflags
-D_BSD_SOURCE
3968 add_cppflags
-D_QNX_SOURCE
3969 network_extralibs
="-lsocket"
3974 add_cflags
--include
=$sysinclude/gcce
/gcce.h
-fvisibility
=default
3975 add_cppflags
-D__GCCE__
-D__SYMBIAN32__
-DSYMBIAN_OE_POSIX_SIGNALS
3976 add_ldflags
-Wl
,--target1-abs
,--no-undefined \
3977 -Wl
,-Ttext
,0x80000,-Tdata
,0x1000000 -shared \
3978 -Wl
,--entry
=_E32Startup
-Wl
,-u
,_E32Startup
3979 add_extralibs
-l
:eexe.lib
-l
:usrt2_2.lib
-l
:dfpaeabi.dso \
3980 -l
:drtaeabi.dso
-l
:scppnwdl.dso
-lsupc
++ -lgcc \
3981 -l
:libc.dso
-l
:libm.dso
-l
:euser.dso
-l
:libcrt0.lib
3984 add_cppflags
-D_OSF_SOURCE
-D_POSIX_PII
-D_REENTRANT
3991 die
"Unknown OS '$target_os'."
3995 # determine libc flavour
4000 # uclibc defines __GLIBC__, so it needs to be checked before glibc.
4001 if check_
${pfx}cpp_condition features.h
"defined __UCLIBC__"; then
4002 eval ${pfx}libc_type
=uclibc
4003 add_
${pfx}cppflags
-D_POSIX_C_SOURCE
=200112 -D_XOPEN_SOURCE
=600
4004 elif check_
${pfx}cpp_condition features.h
"defined __GLIBC__"; then
4005 eval ${pfx}libc_type
=glibc
4006 add_
${pfx}cppflags
-D_POSIX_C_SOURCE
=200112 -D_XOPEN_SOURCE
=600
4007 # MinGW headers can be installed on Cygwin, so check for newlib first.
4008 elif check_
${pfx}cpp_condition newlib.h
"defined _NEWLIB_VERSION"; then
4009 eval ${pfx}libc_type
=newlib
4010 add_
${pfx}cppflags
-U__STRICT_ANSI__
4011 # MinGW64 is backwards compatible with MinGW32, so check for it first.
4012 elif check_
${pfx}cpp_condition _mingw.h
"defined __MINGW64_VERSION_MAJOR"; then
4013 eval ${pfx}libc_type
=mingw64
4014 add_
${pfx}cppflags
-U__STRICT_ANSI__
-D__USE_MINGW_ANSI_STDIO
=1
4015 eval test \$
${pfx_no_}cc_type
= "gcc" &&
4016 add_
${pfx}cppflags
-D__printf__
=__gnu_printf__
4017 elif check_
${pfx}cpp_condition _mingw.h
"defined __MINGW_VERSION" ||
4018 check_
${pfx}cpp_condition _mingw.h
"defined __MINGW32_VERSION"; then
4019 eval ${pfx}libc_type
=mingw32
4020 check_
${pfx}cpp_condition _mingw.h
"__MINGW32_MAJOR_VERSION > 3 || \
4021 (__MINGW32_MAJOR_VERSION == 3 && __MINGW32_MINOR_VERSION >= 15)" ||
4022 die
"ERROR: MinGW32 runtime version must be >= 3.15."
4023 add_
${pfx}cppflags
-U__STRICT_ANSI__
-D__USE_MINGW_ANSI_STDIO
=1
4024 check_
${pfx}cpp_condition _mingw.h
"__MSVCRT_VERSION__ < 0x0700__" &&
4025 add_
${pfx}cppflags
-D__MSVCRT_VERSION__
=0x0700
4026 eval test \$
${pfx_no_}cc_type
= "gcc" &&
4027 add_
${pfx}cppflags
-D__printf__
=__gnu_printf__
4028 elif check_
${pfx}cpp_condition crtversion.h
"defined _VC_CRT_MAJOR_VERSION"; then
4029 eval ${pfx}libc_type
=msvcrt
4030 if check_
${pfx}cpp_condition crtversion.h
"_VC_CRT_MAJOR_VERSION < 14"; then
4031 if [ "$pfx" = host_
]; then
4032 add_host_cppflags
-Dsnprintf
=_snprintf
4034 add_compat strtod.o strtod
=avpriv_strtod
4035 add_compat msvcrt
/snprintf.o snprintf
=avpriv_snprintf \
4036 _snprintf
=avpriv_snprintf \
4037 vsnprintf
=avpriv_vsnprintf
4040 add_
${pfx}cppflags
-D_USE_MATH_DEFINES
-D_CRT_SECURE_NO_WARNINGS
-D_CRT_NONSTDC_NO_WARNINGS
4041 # The MSVC 2010 headers (Win 7.0 SDK) set _WIN32_WINNT to
4042 # 0x601 by default unless something else is set by the user.
4043 # This can easily lead to us detecting functions only present
4044 # in such new versions and producing binaries requiring windows 7.0.
4045 # Therefore explicitly set the default to XP unless the user has
4046 # set something else on the command line.
4047 # Don't do this if WINAPI_FAMILY is set and is set to a non-desktop
4048 # family. For these cases, configure is free to use any functions
4049 # found in the SDK headers by default. (Alternatively, we could force
4050 # _WIN32_WINNT to 0x0602 in that case.)
4051 check_
${pfx}cpp_condition stdlib.h
"defined(_WIN32_WINNT)" ||
4052 { check_
${pfx}cpp
<<EOF && add_${pfx}cppflags -D_WIN32_WINNT=0x0502; }
4053 #ifdef WINAPI_FAMILY
4054 #include <winapifamily.h>
4055 #if !WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP)
4060 if [ "$pfx" = "" ]; then
4061 check_func strtoll || add_cflags
-Dstrtoll
=_strtoi64
4063 elif check_
${pfx}cpp_condition stddef.h
"defined __KLIBC__"; then
4064 eval ${pfx}libc_type
=klibc
4065 elif check_
${pfx}cpp_condition sys
/cdefs.h
"defined __BIONIC__"; then
4066 eval ${pfx}libc_type
=bionic
4067 elif check_
${pfx}cpp_condition sys
/brand.h
"defined LABELED_BRAND_NAME"; then
4068 eval ${pfx}libc_type
=solaris
4069 add_
${pfx}cppflags
-D__EXTENSIONS__
-D_XOPEN_SOURCE
=600
4071 eval ${pfx}libc_type
=default
4072 add_
${pfx}cppflags
-D_DEFAULT_SOURCE
4077 test -n
"$libc_type" && enable libc_
$libc_type
4079 test -n
"$host_libc_type" && enable host_libc_
$host_libc_type
4083 add_compat strtod.o strtod
=avpriv_strtod
4087 # hacks for compiler/libc/os combinations
4089 if enabled_all tms470 libc_glibc
; then
4090 CPPFLAGS
="-I${source_path}/compat/tms470 ${CPPFLAGS}"
4091 add_cppflags
-D__USER_LABEL_PREFIX__
=
4092 add_cppflags
-D__builtin_memset
=memset
4093 add_cppflags
-D__gnuc_va_list
=va_list
-D_VA_LIST_DEFINED
4094 add_cflags
-pds
=48 # incompatible redefinition of macro
4097 if enabled_all ccc libc_glibc
; then
4098 add_ldflags
-Wl
,-z
,now
# calls to libots crash without this
4101 check_compile_assert flt_lim
"float.h limits.h" "DBL_MAX == (double)DBL_MAX" ||
4102 add_cppflags
'-I\$(SRC_PATH)/compat/float'
4105 echo "$*" |
sed 's/%/%25/g;s/:/%3a/g'
4108 echo "config:$arch:$subarch:$cpu:$target_os:$(esc $cc_ident):$(esc $LIBAV_CONFIGURATION)" >config.fate
4110 check_cpp_condition stdlib.h
"defined(__PIC__) || defined(__pic__) || defined(PIC)" && enable_weak pic
4112 set_default
$PATHS_LIST
4115 # we need to build at least one lib type
4116 if ! enabled_any static shared
; then
4118 At least one library type must be built.
4119 Specify --enable-static to build the static libraries or --enable-shared to
4120 build the shared libraries as well. To only build the shared libraries specify
4121 --disable-static in addition to --enable-shared.
4126 disabled optimizations || check_cflags
-fomit-frame-pointer
4129 disabled pic
&& return
4132 case "$target_os" in
4142 enabled pic
&& enable_weak_pic
4144 check_cc
<<EOF || die "Symbol mangling check failed."
4147 sym
=$
($nm $TMPO |
awk '/ff_extern/{ print substr($0, match($0, /[^ \t]*ff_extern/)) }')
4148 extern_prefix
=${sym%%ff_extern*}
4150 check_cc
<<EOF && enable_weak inline_asm
4151 void foo(void) { __asm__ volatile ("" ::); }
4155 for restrict_keyword
in restrict __restrict__ __restrict
; do
4156 check_cc
<<EOF && _restrict=$restrict_keyword && break
4157 void foo(char * $restrict_keyword p);
4161 check_cc
<<EOF && enable pragma_deprecated
4162 void foo(void) { _Pragma("GCC diagnostic ignored \"-Wdeprecated-declarations\"") }
4165 check_cc
<<EOF && enable attribute_packed
4166 struct { int x; } __attribute__((packed)) x;
4169 check_cc
<<EOF && enable attribute_may_alias
4170 union { int x; } __attribute__((may_alias)) x;
4173 check_cc
<<EOF || die "endian test failed"
4174 unsigned int endian = 'B' << 24 | 'I' << 16 | 'G' << 8 | 'E';
4176 od -t x1
$TMPO |
grep -q
'42 *49 *47 *45' && enable bigendian
4179 log
"check_gas using '$as' as AS"
4180 # :vararg is used on aarch64, arm and ppc altivec
4181 check_as
<<EOF || return 1
4182 .macro m n, y:vararg=0
4187 # .altmacro is only used in arm asm
4188 ! enabled arm || check_as
<<EOF || return 1
4195 if enabled_any arm aarch64 || enabled_all ppc altivec
&& enabled asm
; then
4197 enabled_any arm aarch64
&& nogas
=die
4198 enabled_all ppc altivec
&& nogas
=warn
4202 arm
*) gaspp_as_type
=armasm
; as_noop
=-h
;;
4203 gcc
) gaspp_as_type
=gas
;;
4204 *) gaspp_as_type
=$as_type ;;
4207 [ $target_os = "darwin" ] && gaspp_as_type
="apple-$gaspp_as_type"
4209 check_cmd gas-preprocessor.pl
-arch
$arch -as-type
$gaspp_as_type -- $as $as_noop &&
4210 gas
="gas-preprocessor.pl -arch $arch -as-type $gaspp_as_type -- $as"
4212 if ! check_gas
; then
4215 $nogas "GNU assembler not found, install/update gas-preprocessor"
4218 check_as
<<EOF && enable as_func
4224 check_inline_asm inline_asm_labels
'"1:\n"'
4226 if enabled aarch64
; then
4227 enabled armv8
&& check_insn armv8
'prfm pldl1strm, [x0]'
4228 # internal assembler in clang 3.3 does not support this instruction
4229 enabled neon
&& check_insn neon
'ext v0.8B, v0.8B, v1.8B, #1'
4230 enabled vfp
&& check_insn vfp
'fmadd d0, d0, d1, d2'
4232 map
'enabled_any ${v}_external ${v}_inline || disable $v' $ARCH_EXT_LIST_ARM
4234 elif enabled alpha
; then
4238 elif enabled arm
; then
4240 enabled msvc
&& check_cpp_condition stddef.h
"defined _M_ARMT" && enable thumb
4241 check_cpp_condition stddef.h
"defined __thumb__" && enable_weak thumb
4242 enabled thumb
&& check_cflags
-mthumb || check_cflags
-marm
4244 if check_cpp_condition stddef.h
"defined __ARM_PCS_VFP"; then
4246 elif check_cpp_condition stddef.h
"defined _M_ARM_FP && _M_ARM_FP >= 30"; then
4248 elif ! check_cpp_condition stddef.h
"defined __ARM_PCS || defined __SOFTFP__" && [ $target_os != darwin
]; then
4249 case "${cross_prefix:-$cc}" in
4250 *hardfloat
*) enable vfp_args
; fpabi
=vfp
;;
4251 *) check_ld
<<EOF && enable vfp_args && fpabi=vfp || fpabi=soft ;;
4252 __asm__ (".eabi_attribute 28, 1");
4253 int main(void) { return 0; }
4256 warn
"Compiler does not indicate floating-point ABI, guessing $fpabi."
4259 enabled armv5te
&& check_insn armv5te
'qadd r0, r0, r0'
4260 enabled armv6
&& check_insn armv6
'sadd16 r0, r0, r0'
4261 enabled armv6t2
&& check_insn armv6t2
'movt r0, #0'
4262 enabled neon
&& check_insn neon
'vadd.i16 q0, q0, q0'
4263 enabled vfp
&& check_insn vfp
'fadds s0, s0, s0'
4264 enabled vfpv3
&& check_insn vfpv3
'vmov.f32 s0, #1.0'
4266 [ $target_os = linux
] ||
[ $target_os = android
] ||
4267 map
'enabled_any ${v}_external ${v}_inline || disable $v' \
4270 check_inline_asm asm_mod_q
'"add r0, %Q0, %R0" :: "r"((long long)0)'
4272 check_as
<<EOF && enable as_dn_directive
4276 check_as
<<EOF && enable as_fpu_directive
4280 # llvm's integrated assembler supports .object_arch from llvm 3.5
4281 [ "$objformat" = elf
] && check_as
<<EOF && enable as_object_arch
4285 [ $target_os != win32
] && enabled_all armv6t2 shared
!pic
&& enable_weak_pic
4287 elif enabled mips
; then
4289 check_inline_asm loongson
'"dmult.g $1, $2, $3"'
4291 # make sure that only an instruction set is enabled
4292 disable mips64r6 mips32r6 mips64r2 mips32r2 mips64r1 mips32r1
4294 if enabled mips64
; then
4295 check_inline_asm mips64r6
'"dlsa $0, $0, $0, 1"' ||
4296 check_inline_asm mips64r2
'"dext $0, $0, 0, 1"' ||
4297 check_inline_asm mips64r1
'"daddi $0, $0, 0"'
4299 check_inline_asm mips32r6
'"aui $0, $0, 0"' ||
4300 check_inline_asm mips32r2
'"ext $0, $0, 0, 1"' ||
4301 check_inline_asm mips32r1
'"addi $0, $0, 0"'
4304 elif enabled parisc
; then
4306 if enabled gcc
; then
4307 case $
($cc -dumpversion
) in
4308 4.
[3-8].
*) check_cflags
-fno-optimize-sibling-calls
;;
4312 elif enabled ppc
; then
4314 enable local_aligned_8 local_aligned_16 local_aligned_32
4316 check_inline_asm dcbzl
'"dcbzl 0, %0" :: "r"(0)'
4317 check_inline_asm ibm_asm
'"add 0, 0, 0"'
4318 check_inline_asm ppc4xx
'"maclhw r10, r11, r12"'
4319 check_inline_asm xform_asm
'"lwzx %1, %y0" :: "Z"(*(int*)0), "r"(0)'
4321 # AltiVec flags: The FSF version of GCC differs from the Apple version
4322 if enabled altivec
; then
4323 check_cflags
-maltivec
-mabi
=altivec
&&
4324 { check_header altivec.h
&& inc_altivec_h
="#include <altivec.h>" ; } ||
4325 check_cflags
-faltivec
4327 # check if our compiler supports Motorola AltiVec C API
4328 check_cc
<<EOF || disable altivec
4331 vector signed int v1 = (vector signed int) { 0 };
4332 vector signed int v2 = (vector signed int) { 1 };
4333 v1 = vec_add(v1, v2);
4338 enabled altivec || warn
"Altivec disabled, possibly missing --cpu flag"
4341 if enabled vsx
; then
4342 check_cflags
-mvsx
&&
4343 check_builtin vec_vsx_ld
"altivec.h" "__builtin_vec_vsx_ld" || disable vsx
4346 if enabled power8
; then
4347 check_cpp_condition
"altivec.h" "defined(_ARCH_PWR8)" || disable power8
4350 elif enabled x86
; then
4352 check_builtin rdtsc intrin.h
"__rdtsc()"
4353 check_builtin mm_empty mmintrin.h
"_mm_empty()"
4355 enable local_aligned_8 local_aligned_16 local_aligned_32
4357 # check whether EBP is available on x86
4358 # As 'i' is stored on the stack, this program will crash
4359 # if the base pointer is used to access it because the
4360 # base pointer is cleared in the inline assembly code.
4361 check_exec_crash
<<EOF && enable ebp_available
4363 __asm__ volatile ("xorl %%ebp, %%ebp" ::: "%ebp");
4367 # check whether EBX is available on x86
4368 check_inline_asm ebx_available
'""::"b"(0)' &&
4369 check_inline_asm ebx_available
'"":::"%ebx"'
4371 # check whether xmm clobbers are supported
4372 check_inline_asm xmm_clobbers
'"":::"%xmm0"'
4374 # check whether binutils is new enough to compile SSSE3/MMXEXT
4375 enabled ssse3
&& check_inline_asm ssse3_inline
'"pabsw %xmm0, %xmm0"'