Go to most recent revision | Details | Last modification | View Log | RSS feed
Rev | Author | Line No. | Line |
---|---|---|---|
4349 | Serge | 1 | #!/bin/sh |
2 | # |
||
3 | # FFmpeg configure script |
||
4 | # |
||
5 | # Copyright (c) 2000-2002 Fabrice Bellard |
||
6 | # Copyright (c) 2005-2008 Diego Biurrun |
||
7 | # Copyright (c) 2005-2008 Mans Rullgard |
||
8 | # |
||
9 | |||
10 | # Prevent locale nonsense from breaking basic text processing. |
||
11 | LC_ALL=C |
||
12 | export LC_ALL |
||
13 | |||
14 | # make sure we are running under a compatible shell |
||
15 | # try to make this part work with most shells |
||
16 | |||
17 | try_exec(){ |
||
18 | echo "Trying shell $1" |
||
19 | type "$1" > /dev/null 2>&1 && exec "$@" |
||
20 | } |
||
21 | |||
22 | unset foo |
||
23 | (: ${foo%%bar}) 2> /dev/null |
||
24 | E1="$?" |
||
25 | |||
26 | (: ${foo?}) 2> /dev/null |
||
27 | E2="$?" |
||
28 | |||
29 | if test "$E1" != 0 || test "$E2" = 0; then |
||
30 | echo "Broken shell detected. Trying alternatives." |
||
31 | export FF_CONF_EXEC |
||
32 | if test "0$FF_CONF_EXEC" -lt 1; then |
||
33 | FF_CONF_EXEC=1 |
||
34 | try_exec bash "$0" "$@" |
||
35 | fi |
||
36 | if test "0$FF_CONF_EXEC" -lt 2; then |
||
37 | FF_CONF_EXEC=2 |
||
38 | try_exec ksh "$0" "$@" |
||
39 | fi |
||
40 | if test "0$FF_CONF_EXEC" -lt 3; then |
||
41 | FF_CONF_EXEC=3 |
||
42 | try_exec /usr/xpg4/bin/sh "$0" "$@" |
||
43 | fi |
||
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 FFMPEG, 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 FFmpeg." |
||
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." |
||
53 | fi |
||
54 | exit 1 |
||
55 | fi |
||
56 | |||
57 | test -d /usr/xpg4/bin && PATH=/usr/xpg4/bin:$PATH |
||
58 | |||
59 | show_help(){ |
||
60 | cat < |
||
61 | Usage: configure [options] |
||
62 | Options: [defaults in brackets after descriptions] |
||
63 | |||
64 | Help options: |
||
65 | --help print this message |
||
66 | --list-decoders show all available decoders |
||
67 | --list-encoders show all available encoders |
||
68 | --list-hwaccels show all available hardware accelerators |
||
69 | --list-demuxers show all available demuxers |
||
70 | --list-muxers show all available muxers |
||
71 | --list-parsers show all available parsers |
||
72 | --list-protocols show all available protocols |
||
73 | --list-bsfs show all available bitstream filters |
||
74 | --list-indevs show all available input devices |
||
75 | --list-outdevs show all available output devices |
||
76 | --list-filters show all available filters |
||
77 | |||
78 | Standard options: |
||
79 | --logfile=FILE log tests and output to FILE [config.log] |
||
80 | --disable-logging do not log configure debug information |
||
81 | --fatal-warnings fail if any configure warning is generated |
||
82 | --prefix=PREFIX install in PREFIX [$prefix] |
||
83 | --bindir=DIR install binaries in DIR [PREFIX/bin] |
||
84 | --datadir=DIR install data files in DIR [PREFIX/share/ffmpeg] |
||
85 | --docdir=DIR install documentation in DIR [PREFIX/share/doc/ffmpeg] |
||
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 | |||
91 | Licensing options: |
||
92 | --enable-gpl allow use of GPL code, the resulting libs |
||
93 | and binaries will be under GPL [no] |
||
94 | --enable-version3 upgrade (L)GPL to version 3 [no] |
||
95 | --enable-nonfree allow use of nonfree code, the resulting libs |
||
96 | and binaries will be unredistributable [no] |
||
97 | |||
98 | Configuration options: |
||
99 | --disable-static do not build static libraries [no] |
||
100 | --enable-shared build shared libraries [no] |
||
101 | --enable-small optimize for size instead of speed |
||
102 | --disable-runtime-cpudetect disable detecting cpu capabilities at runtime (smaller binary) |
||
103 | --enable-gray enable full grayscale support (slower color) |
||
104 | --disable-swscale-alpha disable alpha channel support in swscale |
||
105 | --disable-all disable building components, libraries and programs |
||
106 | --enable-incompatible-libav-abi enable incompatible Libav fork ABI [no] |
||
107 | --enable-incompatible-fork-abi enable incompatible Libav fork ABI (deprecated) [no] |
||
108 | |||
109 | Program options: |
||
110 | --disable-programs do not build command line programs |
||
111 | --disable-ffmpeg disable ffmpeg build |
||
112 | --disable-ffplay disable ffplay build |
||
113 | --disable-ffprobe disable ffprobe build |
||
114 | --disable-ffserver disable ffserver build |
||
115 | |||
116 | Documentation options: |
||
117 | --disable-doc do not build documentation |
||
118 | --disable-htmlpages do not build HTML documentation pages |
||
119 | --disable-manpages do not build man documentation pages |
||
120 | --disable-podpages do not build POD documentation pages |
||
121 | --disable-txtpages do not build text documentation pages |
||
122 | |||
123 | Component options: |
||
124 | --disable-avdevice disable libavdevice build |
||
125 | --disable-avcodec disable libavcodec build |
||
126 | --disable-avformat disable libavformat build |
||
127 | --disable-avutil disable libavutil build |
||
128 | --disable-swresample disable libswresample build |
||
129 | --disable-swscale disable libswscale build |
||
130 | --disable-postproc disable libpostproc build |
||
131 | --disable-avfilter disable libavfilter build |
||
132 | --enable-avresample enable libavresample build [no] |
||
133 | --disable-pthreads disable pthreads [auto] |
||
134 | --disable-w32threads disable Win32 threads [auto] |
||
135 | --disable-os2threads disable OS/2 threads [auto] |
||
136 | --disable-network disable network support [no] |
||
137 | --disable-dct disable DCT code |
||
138 | --disable-dwt disable DWT code |
||
139 | --disable-error-resilience disable error resilience code |
||
140 | --disable-lsp disable LSP code |
||
141 | --disable-lzo disable LZO decoder code |
||
142 | --disable-mdct disable MDCT code |
||
143 | --disable-rdft disable RDFT code |
||
144 | --disable-fft disable FFT code |
||
145 | |||
146 | Hardware accelerators: |
||
147 | --disable-dxva2 disable DXVA2 code [autodetect] |
||
148 | --disable-vaapi disable VAAPI code [autodetect] |
||
149 | --enable-vda enable VDA code |
||
150 | --disable-vdpau disable VDPAU code [autodetect] |
||
151 | |||
152 | Individual component options: |
||
153 | --disable-everything disable all components listed below |
||
154 | --disable-encoder=NAME disable encoder NAME |
||
155 | --enable-encoder=NAME enable encoder NAME |
||
156 | --disable-encoders disable all encoders |
||
157 | --disable-decoder=NAME disable decoder NAME |
||
158 | --enable-decoder=NAME enable decoder NAME |
||
159 | --disable-decoders disable all decoders |
||
160 | --disable-hwaccel=NAME disable hwaccel NAME |
||
161 | --enable-hwaccel=NAME enable hwaccel NAME |
||
162 | --disable-hwaccels disable all hwaccels |
||
163 | --disable-muxer=NAME disable muxer NAME |
||
164 | --enable-muxer=NAME enable muxer NAME |
||
165 | --disable-muxers disable all muxers |
||
166 | --disable-demuxer=NAME disable demuxer NAME |
||
167 | --enable-demuxer=NAME enable demuxer NAME |
||
168 | --disable-demuxers disable all demuxers |
||
169 | --enable-parser=NAME enable parser NAME |
||
170 | --disable-parser=NAME disable parser NAME |
||
171 | --disable-parsers disable all parsers |
||
172 | --enable-bsf=NAME enable bitstream filter NAME |
||
173 | --disable-bsf=NAME disable bitstream filter NAME |
||
174 | --disable-bsfs disable all bitstream filters |
||
175 | --enable-protocol=NAME enable protocol NAME |
||
176 | --disable-protocol=NAME disable protocol NAME |
||
177 | --disable-protocols disable all protocols |
||
178 | --enable-indev=NAME enable input device NAME |
||
179 | --disable-indev=NAME disable input device NAME |
||
180 | --disable-indevs disable input devices |
||
181 | --enable-outdev=NAME enable output device NAME |
||
182 | --disable-outdev=NAME disable output device NAME |
||
183 | --disable-outdevs disable output devices |
||
184 | --disable-devices disable all devices |
||
185 | --enable-filter=NAME enable filter NAME |
||
186 | --disable-filter=NAME disable filter NAME |
||
187 | --disable-filters disable all filters |
||
188 | |||
189 | External library support: |
||
190 | --enable-avisynth enable reading of AviSynth script files [no] |
||
191 | --disable-bzlib disable bzlib [autodetect] |
||
192 | --enable-fontconfig enable fontconfig |
||
193 | --enable-frei0r enable frei0r video filtering |
||
194 | --enable-gnutls enable gnutls [no] |
||
195 | --disable-iconv disable iconv [autodetect] |
||
196 | --enable-ladspa enable LADSPA audio filtering |
||
197 | --enable-libaacplus enable AAC+ encoding via libaacplus [no] |
||
198 | --enable-libass enable libass subtitles rendering [no] |
||
199 | --enable-libbluray enable BluRay reading using libbluray [no] |
||
200 | --enable-libcaca enable textual display using libcaca |
||
201 | --enable-libcelt enable CELT decoding via libcelt [no] |
||
202 | --enable-libcdio enable audio CD grabbing with libcdio |
||
203 | --enable-libdc1394 enable IIDC-1394 grabbing using libdc1394 |
||
204 | and libraw1394 [no] |
||
205 | --enable-libfaac enable AAC encoding via libfaac [no] |
||
206 | --enable-libfdk-aac enable AAC de/encoding via libfdk-aac [no] |
||
207 | --enable-libflite enable flite (voice synthesis) support via libflite [no] |
||
208 | --enable-libfreetype enable libfreetype [no] |
||
209 | --enable-libgme enable Game Music Emu via libgme [no] |
||
210 | --enable-libgsm enable GSM de/encoding via libgsm [no] |
||
211 | --enable-libiec61883 enable iec61883 via libiec61883 [no] |
||
212 | --enable-libilbc enable iLBC de/encoding via libilbc [no] |
||
213 | --enable-libmodplug enable ModPlug via libmodplug [no] |
||
214 | --enable-libmp3lame enable MP3 encoding via libmp3lame [no] |
||
215 | --enable-libnut enable NUT (de)muxing via libnut, |
||
216 | native (de)muxer exists [no] |
||
217 | --enable-libopencore-amrnb enable AMR-NB de/encoding via libopencore-amrnb [no] |
||
218 | --enable-libopencore-amrwb enable AMR-WB decoding via libopencore-amrwb [no] |
||
219 | --enable-libopencv enable video filtering via libopencv [no] |
||
220 | --enable-libopenjpeg enable JPEG 2000 de/encoding via OpenJPEG [no] |
||
221 | --enable-libopus enable Opus decoding via libopus [no] |
||
222 | --enable-libpulse enable Pulseaudio input via libpulse [no] |
||
223 | --enable-libquvi enable quvi input via libquvi [no] |
||
224 | --enable-librtmp enable RTMP[E] support via librtmp [no] |
||
225 | --enable-libschroedinger enable Dirac de/encoding via libschroedinger [no] |
||
226 | --enable-libshine enable fixed-point MP3 encoding via libshine [no] |
||
227 | --enable-libsoxr enable Include libsoxr resampling [no] |
||
228 | --enable-libspeex enable Speex de/encoding via libspeex [no] |
||
229 | --enable-libssh enable SFTP protocol via libssh [no] |
||
230 | --enable-libstagefright-h264 enable H.264 decoding via libstagefright [no] |
||
231 | --enable-libtheora enable Theora encoding via libtheora [no] |
||
232 | --enable-libtwolame enable MP2 encoding via libtwolame [no] |
||
233 | --enable-libutvideo enable Ut Video encoding and decoding via libutvideo [no] |
||
234 | --enable-libv4l2 enable libv4l2/v4l-utils [no] |
||
235 | --enable-libvidstab enable video stabilization using vid.stab [no] |
||
236 | --enable-libvo-aacenc enable AAC encoding via libvo-aacenc [no] |
||
237 | --enable-libvo-amrwbenc enable AMR-WB encoding via libvo-amrwbenc [no] |
||
238 | --enable-libvorbis enable Vorbis en/decoding via libvorbis, |
||
239 | native implementation exists [no] |
||
240 | --enable-libvpx enable VP8 and VP9 de/encoding via libvpx [no] |
||
241 | --enable-libwavpack enable wavpack encoding via libwavpack [no] |
||
242 | --enable-libx264 enable H.264 encoding via x264 [no] |
||
243 | --enable-libxavs enable AVS encoding via xavs [no] |
||
244 | --enable-libxvid enable Xvid encoding via xvidcore, |
||
245 | native MPEG-4/Xvid encoder exists [no] |
||
246 | --enable-libzmq enable message passing via libzmq [no] |
||
247 | --enable-libzvbi enable teletext support via libzvbi [no] |
||
248 | --enable-openal enable OpenAL 1.1 capture support [no] |
||
249 | --enable-opencl enable OpenCL code |
||
250 | --enable-openssl enable openssl [no] |
||
251 | --enable-x11grab enable X11 grabbing [no] |
||
252 | --disable-zlib disable zlib [autodetect] |
||
253 | |||
254 | Advanced options (experts only): |
||
255 | --cross-prefix=PREFIX use PREFIX for compilation tools [$cross_prefix] |
||
256 | --enable-cross-compile assume a cross-compiler is used |
||
257 | --sysroot=PATH root of cross-build tree |
||
258 | --sysinclude=PATH location of cross-build system headers |
||
259 | --target-os=OS compiler targets OS [$target_os] |
||
260 | --target-exec=CMD command to run executables on target |
||
261 | --target-path=DIR path to view of build directory on target |
||
262 | --target-samples=DIR path to samples directory on target |
||
263 | --tempprefix=PATH force fixed dir/prefix instead of mktemp for checks |
||
264 | --toolchain=NAME set tool defaults according to NAME |
||
265 | --nm=NM use nm tool NM [$nm_default] |
||
266 | --ar=AR use archive tool AR [$ar_default] |
||
267 | --as=AS use assembler AS [$as_default] |
||
268 | --yasmexe=EXE use yasm-compatible assembler EXE [$yasmexe_default] |
||
269 | --cc=CC use C compiler CC [$cc_default] |
||
270 | --cxx=CXX use C compiler CXX [$cxx_default] |
||
271 | --dep-cc=DEPCC use dependency generator DEPCC [$cc_default] |
||
272 | --ld=LD use linker LD [$ld_default] |
||
273 | --host-cc=HOSTCC use host C compiler HOSTCC |
||
274 | --host-cflags=HCFLAGS use HCFLAGS when compiling for host |
||
275 | --host-cppflags=HCPPFLAGS use HCPPFLAGS when compiling for host |
||
276 | --host-ld=HOSTLD use host linker HOSTLD |
||
277 | --host-ldflags=HLDFLAGS use HLDFLAGS when linking for host |
||
278 | --host-libs=HLIBS use libs HLIBS when linking for host |
||
279 | --host-os=OS compiler host OS [$target_os] |
||
280 | --extra-cflags=ECFLAGS add ECFLAGS to CFLAGS [$CFLAGS] |
||
281 | --extra-cxxflags=ECFLAGS add ECFLAGS to CXXFLAGS [$CXXFLAGS] |
||
282 | --extra-ldflags=ELDFLAGS add ELDFLAGS to LDFLAGS [$LDFLAGS] |
||
283 | --extra-libs=ELIBS add ELIBS [$ELIBS] |
||
284 | --extra-version=STRING version string suffix [] |
||
285 | --optflags=OPTFLAGS override optimization-related compiler flags |
||
286 | --build-suffix=SUFFIX library name suffix [] |
||
287 | --malloc-prefix=PREFIX prefix malloc and related names with PREFIX |
||
288 | --progs-suffix=SUFFIX program name suffix [] |
||
289 | --arch=ARCH select architecture [$arch] |
||
290 | --cpu=CPU select the minimum required CPU (affects |
||
291 | instruction selection, may crash on older CPUs) |
||
292 | --enable-pic build position-independent code |
||
293 | --enable-sram allow use of on-chip SRAM |
||
294 | --enable-thumb compile for Thumb instruction set |
||
295 | --disable-symver disable symbol versioning |
||
296 | --enable-hardcoded-tables use hardcoded tables instead of runtime generation |
||
297 | --disable-safe-bitstream-reader |
||
298 | disable buffer boundary checking in bitreaders |
||
299 | (faster, but may crash) |
||
300 | --enable-memalign-hack emulate memalign, interferes with memory debuggers |
||
301 | --enable-lto use link-time optimization |
||
302 | |||
303 | Optimization options (experts only): |
||
304 | --disable-asm disable all assembler optimizations |
||
305 | --disable-altivec disable AltiVec 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-fma4 disable FMA4 optimizations |
||
318 | --disable-avx2 disable AVX2 optimizations |
||
319 | --disable-armv5te disable armv5te optimizations |
||
320 | --disable-armv6 disable armv6 optimizations |
||
321 | --disable-armv6t2 disable armv6t2 optimizations |
||
322 | --disable-vfp disable VFP optimizations |
||
323 | --disable-neon disable NEON optimizations |
||
324 | --disable-vis disable VIS optimizations |
||
325 | --disable-inline-asm disable use of inline assembler |
||
326 | --disable-yasm disable use of yasm assembler |
||
327 | --disable-mips32r2 disable MIPS32R2 optimizations |
||
328 | --disable-mipsdspr1 disable MIPS DSP ASE R1 optimizations |
||
329 | --disable-mipsdspr2 disable MIPS DSP ASE R2 optimizations |
||
330 | --disable-mipsfpu disable floating point MIPS optimizations |
||
331 | --disable-fast-unaligned consider unaligned accesses slow |
||
332 | |||
333 | Developer options (useful when working on FFmpeg itself): |
||
334 | --disable-debug disable debugging symbols |
||
335 | --enable-debug=LEVEL set the debug level [$debuglevel] |
||
336 | --disable-optimizations disable compiler optimizations |
||
337 | --enable-extra-warnings enable more compiler warnings |
||
338 | --disable-stripping disable stripping of executables and shared libraries |
||
339 | --assert-level=level 0(default), 1 or 2, amount of assertion testing, |
||
340 | 2 causes a slowdown at runtime. |
||
341 | --enable-memory-poisoning fill heap uninitialized allocated space with arbitrary data |
||
342 | --valgrind=VALGRIND run "make fate" tests through valgrind to detect memory |
||
343 | leaks and errors, using the specified valgrind binary. |
||
344 | Cannot be combined with --target-exec |
||
345 | --enable-ftrapv Trap arithmetic overflows |
||
346 | --samples=PATH location of test samples for FATE, if not set use |
||
347 | \$FATE_SAMPLES at make invocation time. |
||
348 | --enable-xmm-clobber-test check XMM registers for clobbering (Win64-only; |
||
349 | should be used only for debugging purposes) |
||
350 | --enable-random randomly enable/disable components |
||
351 | --disable-random |
||
352 | --enable-random=LIST randomly enable/disable specific components or |
||
353 | --disable-random=LIST component groups. LIST is a comma-separated list |
||
354 | of NAME[:PROB] entries where NAME is a component |
||
355 | (group) and PROB the probability associated with |
||
356 | NAME (default 0.5). |
||
357 | --random-seed=VALUE seed value for --enable/disable-random |
||
358 | |||
359 | NOTE: Object files are built at the place where configure is launched. |
||
360 | EOF |
||
361 | exit 0 |
||
362 | } |
||
363 | |||
364 | quotes='""' |
||
365 | |||
366 | log(){ |
||
367 | echo "$@" >> $logfile |
||
368 | } |
||
369 | |||
370 | log_file(){ |
||
371 | log BEGIN $1 |
||
372 | pr -n -t $1 >> $logfile |
||
373 | log END $1 |
||
374 | } |
||
375 | |||
376 | echolog(){ |
||
377 | log "$@" |
||
378 | echo "$@" |
||
379 | } |
||
380 | |||
381 | warn(){ |
||
382 | log "WARNING: $*" |
||
383 | WARNINGS="${WARNINGS}WARNING: $*\n" |
||
384 | } |
||
385 | |||
386 | die(){ |
||
387 | echolog "$@" |
||
388 | cat < |
||
389 | |||
390 | If you think configure made a mistake, make sure you are using the latest |
||
391 | version from Git. If the latest version fails, report the problem to the |
||
392 | ffmpeg-user@ffmpeg.org mailing list or IRC #ffmpeg on irc.freenode.net. |
||
393 | EOF |
||
394 | if disabled logging; then |
||
395 | cat < |
||
396 | Rerun configure with logging enabled (do not use --disable-logging), and |
||
397 | include the log this produces with your report. |
||
398 | EOF |
||
399 | else |
||
400 | cat < |
||
401 | Include the log file "$logfile" produced by configure as this will help |
||
402 | solving the problem. |
||
403 | EOF |
||
404 | fi |
||
405 | exit 1 |
||
406 | } |
||
407 | |||
408 | # Avoid locale weirdness, besides we really just want to translate ASCII. |
||
409 | toupper(){ |
||
410 | echo "$@" | tr abcdefghijklmnopqrstuvwxyz ABCDEFGHIJKLMNOPQRSTUVWXYZ |
||
411 | } |
||
412 | |||
413 | tolower(){ |
||
414 | echo "$@" | tr ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyz |
||
415 | } |
||
416 | |||
417 | c_escape(){ |
||
418 | echo "$*" | sed 's/["\\]/\\\0/g' |
||
419 | } |
||
420 | |||
421 | sh_quote(){ |
||
422 | v=$(echo "$1" | sed "s/'/'\\\\''/g") |
||
423 | test "x$v" = "x${v#*[!A-Za-z0-9_/.+-]}" || v="'$v'" |
||
424 | echo "$v" |
||
425 | } |
||
426 | |||
427 | cleanws(){ |
||
428 | echo "$@" | sed 's/^ *//;s/ */ /g;s/ *$//;s/\r//g' |
||
429 | } |
||
430 | |||
431 | filter(){ |
||
432 | pat=$1 |
||
433 | shift |
||
434 | for v; do |
||
435 | eval "case $v in $pat) echo $v ;; esac" |
||
436 | done |
||
437 | } |
||
438 | |||
439 | filter_out(){ |
||
440 | pat=$1 |
||
441 | shift |
||
442 | for v; do |
||
443 | eval "case $v in $pat) ;; *) echo $v ;; esac" |
||
444 | done |
||
445 | } |
||
446 | |||
447 | map(){ |
||
448 | m=$1 |
||
449 | shift |
||
450 | for v; do eval $m; done |
||
451 | } |
||
452 | |||
453 | add_suffix(){ |
||
454 | suffix=$1 |
||
455 | shift |
||
456 | for v; do echo ${v}${suffix}; done |
||
457 | } |
||
458 | |||
459 | set_all(){ |
||
460 | value=$1 |
||
461 | shift |
||
462 | for var in $*; do |
||
463 | eval $var=$value |
||
464 | done |
||
465 | } |
||
466 | |||
467 | set_weak(){ |
||
468 | value=$1 |
||
469 | shift |
||
470 | for var; do |
||
471 | eval : \${$var:=$value} |
||
472 | done |
||
473 | } |
||
474 | |||
475 | sanitize_var_name(){ |
||
476 | echo $@ | sed 's/[^A-Za-z0-9_]/_/g' |
||
477 | } |
||
478 | |||
479 | set_safe(){ |
||
480 | var=$1 |
||
481 | shift |
||
482 | eval $(sanitize_var_name "$var")='$*' |
||
483 | } |
||
484 | |||
485 | get_safe(){ |
||
486 | eval echo \$$(sanitize_var_name "$1") |
||
487 | } |
||
488 | |||
489 | pushvar(){ |
||
490 | for pvar in $*; do |
||
491 | eval level=\${${pvar}_level:=0} |
||
492 | eval ${pvar}_${level}="\$$pvar" |
||
493 | eval ${pvar}_level=$(($level+1)) |
||
494 | done |
||
495 | } |
||
496 | |||
497 | popvar(){ |
||
498 | for pvar in $*; do |
||
499 | eval level=\${${pvar}_level:-0} |
||
500 | test $level = 0 && continue |
||
501 | eval level=$(($level-1)) |
||
502 | eval $pvar="\${${pvar}_${level}}" |
||
503 | eval ${pvar}_level=$level |
||
504 | eval unset ${pvar}_${level} |
||
505 | done |
||
506 | } |
||
507 | |||
508 | enable(){ |
||
509 | set_all yes $* |
||
510 | } |
||
511 | |||
512 | disable(){ |
||
513 | set_all no $* |
||
514 | } |
||
515 | |||
516 | enable_weak(){ |
||
517 | set_weak yes $* |
||
518 | } |
||
519 | |||
520 | disable_weak(){ |
||
521 | set_weak no $* |
||
522 | } |
||
523 | |||
524 | enable_safe(){ |
||
525 | for var; do |
||
526 | enable $(echo "$var" | sed 's/[^A-Za-z0-9_]/_/g') |
||
527 | done |
||
528 | } |
||
529 | |||
530 | disable_safe(){ |
||
531 | for var; do |
||
532 | disable $(echo "$var" | sed 's/[^A-Za-z0-9_]/_/g') |
||
533 | done |
||
534 | } |
||
535 | |||
536 | do_enable_deep(){ |
||
537 | for var; do |
||
538 | enabled $var && continue |
||
539 | eval sel="\$${var}_select" |
||
540 | eval sgs="\$${var}_suggest" |
||
541 | pushvar var sgs |
||
542 | enable_deep $sel |
||
543 | popvar sgs |
||
544 | enable_deep_weak $sgs |
||
545 | popvar var |
||
546 | done |
||
547 | } |
||
548 | |||
549 | enable_deep(){ |
||
550 | do_enable_deep $* |
||
551 | enable $* |
||
552 | } |
||
553 | |||
554 | enable_deep_weak(){ |
||
555 | for var; do |
||
556 | disabled $var && continue |
||
557 | pushvar var |
||
558 | do_enable_deep $var |
||
559 | popvar var |
||
560 | enable_weak $var |
||
561 | done |
||
562 | } |
||
563 | |||
564 | enabled(){ |
||
565 | test "${1#!}" = "$1" && op== || op=!= |
||
566 | eval test "x\$${1#!}" $op "xyes" |
||
567 | } |
||
568 | |||
569 | disabled(){ |
||
570 | test "${1#!}" = "$1" && op== || op=!= |
||
571 | eval test "x\$${1#!}" $op "xno" |
||
572 | } |
||
573 | |||
574 | enabled_all(){ |
||
575 | for opt; do |
||
576 | enabled $opt || return 1 |
||
577 | done |
||
578 | } |
||
579 | |||
580 | disabled_all(){ |
||
581 | for opt; do |
||
582 | disabled $opt || return 1 |
||
583 | done |
||
584 | } |
||
585 | |||
586 | enabled_any(){ |
||
587 | for opt; do |
||
588 | enabled $opt && return 0 |
||
589 | done |
||
590 | } |
||
591 | |||
592 | disabled_any(){ |
||
593 | for opt; do |
||
594 | disabled $opt && return 0 |
||
595 | done |
||
596 | return 1 |
||
597 | } |
||
598 | |||
599 | set_default(){ |
||
600 | for opt; do |
||
601 | eval : \${$opt:=\$${opt}_default} |
||
602 | done |
||
603 | } |
||
604 | |||
605 | is_in(){ |
||
606 | value=$1 |
||
607 | shift |
||
608 | for var in $*; do |
||
609 | [ $var = $value ] && return 0 |
||
610 | done |
||
611 | return 1 |
||
612 | } |
||
613 | |||
614 | do_check_deps(){ |
||
615 | for cfg; do |
||
616 | cfg="${cfg#!}" |
||
617 | enabled ${cfg}_checking && die "Circular dependency for $cfg." |
||
618 | disabled ${cfg}_checking && continue |
||
619 | enable ${cfg}_checking |
||
620 | append allopts $cfg |
||
621 | |||
622 | eval dep_all="\$${cfg}_deps" |
||
623 | eval dep_any="\$${cfg}_deps_any" |
||
624 | eval dep_sel="\$${cfg}_select" |
||
625 | eval dep_sgs="\$${cfg}_suggest" |
||
626 | eval dep_ifa="\$${cfg}_if" |
||
627 | eval dep_ifn="\$${cfg}_if_any" |
||
628 | |||
629 | pushvar cfg dep_all dep_any dep_sel dep_sgs dep_ifa dep_ifn |
||
630 | do_check_deps $dep_all $dep_any $dep_sel $dep_sgs $dep_ifa $dep_ifn |
||
631 | popvar cfg dep_all dep_any dep_sel dep_sgs dep_ifa dep_ifn |
||
632 | |||
633 | [ -n "$dep_ifa" ] && { enabled_all $dep_ifa && enable_weak $cfg; } |
||
634 | [ -n "$dep_ifn" ] && { enabled_any $dep_ifn && enable_weak $cfg; } |
||
635 | enabled_all $dep_all || disable $cfg |
||
636 | enabled_any $dep_any || disable $cfg |
||
637 | disabled_any $dep_sel && disable $cfg |
||
638 | |||
639 | if enabled $cfg; then |
||
640 | enable_deep $dep_sel |
||
641 | enable_deep_weak $dep_sgs |
||
642 | fi |
||
643 | |||
644 | disable ${cfg}_checking |
||
645 | done |
||
646 | } |
||
647 | |||
648 | check_deps(){ |
||
649 | unset allopts |
||
650 | |||
651 | do_check_deps "$@" |
||
652 | |||
653 | for cfg in $allopts; do |
||
654 | enabled $cfg || continue |
||
655 | eval dep_extralibs="\$${cfg}_extralibs" |
||
656 | test -n "$dep_extralibs" && add_extralibs $dep_extralibs |
||
657 | done |
||
658 | } |
||
659 | |||
660 | print_config(){ |
||
661 | pfx=$1 |
||
662 | files=$2 |
||
663 | shift 2 |
||
664 | map 'eval echo "$v \${$v:-no}"' "$@" | |
||
665 | awk "BEGIN { split(\"$files\", files) } |
||
666 | { |
||
667 | c = \"$pfx\" toupper(\$1); |
||
668 | v = \$2; |
||
669 | sub(/yes/, 1, v); |
||
670 | sub(/no/, 0, v); |
||
671 | for (f in files) { |
||
672 | file = files[f]; |
||
673 | if (file ~ /\\.h\$/) { |
||
674 | printf(\"#define %s %d\\n\", c, v) >>file; |
||
675 | } else if (file ~ /\\.asm\$/) { |
||
676 | printf(\"%%define %s %d\\n\", c, v) >>file; |
||
677 | } else if (file ~ /\\.mak\$/) { |
||
678 | n = -v ? \"\" : \"!\"; |
||
679 | printf(\"%s%s=yes\\n\", n, c) >>file; |
||
680 | } else if (file ~ /\\.texi\$/) { |
||
681 | pre = -v ? \"\" : \"@c \"; |
||
682 | yesno = \$2; |
||
683 | c2 = tolower(c); |
||
684 | gsub(/_/, \"-\", c2); |
||
685 | printf(\"%s@set %s %s\\n\", pre, c2, yesno) >>file; |
||
686 | } |
||
687 | } |
||
688 | }" |
||
689 | } |
||
690 | |||
691 | print_enabled(){ |
||
692 | suf=$1 |
||
693 | shift |
||
694 | for v; do |
||
695 | enabled $v && printf "%s\n" ${v%$suf}; |
||
696 | done |
||
697 | } |
||
698 | |||
699 | append(){ |
||
700 | var=$1 |
||
701 | shift |
||
702 | eval "$var=\"\$$var $*\"" |
||
703 | } |
||
704 | |||
705 | prepend(){ |
||
706 | var=$1 |
||
707 | shift |
||
708 | eval "$var=\"$* \$$var\"" |
||
709 | } |
||
710 | |||
711 | add_cppflags(){ |
||
712 | append CPPFLAGS "$@" |
||
713 | } |
||
714 | |||
715 | add_cflags(){ |
||
716 | append CFLAGS $($cflags_filter "$@") |
||
717 | } |
||
718 | |||
719 | add_cxxflags(){ |
||
720 | append CXXFLAGS $($cflags_filter "$@") |
||
721 | } |
||
722 | |||
723 | add_asflags(){ |
||
724 | append ASFLAGS $($asflags_filter "$@") |
||
725 | } |
||
726 | |||
727 | add_ldflags(){ |
||
728 | append LDFLAGS $($ldflags_filter "$@") |
||
729 | } |
||
730 | |||
731 | add_extralibs(){ |
||
732 | prepend extralibs $($ldflags_filter "$@") |
||
733 | } |
||
734 | |||
735 | add_host_cppflags(){ |
||
736 | append host_cppflags "$@" |
||
737 | } |
||
738 | |||
739 | add_host_cflags(){ |
||
740 | append host_cflags $($host_cflags_filter "$@") |
||
741 | } |
||
742 | |||
743 | add_host_ldflags(){ |
||
744 | append host_ldflags $($host_ldflags_filter "$@") |
||
745 | } |
||
746 | |||
747 | add_compat(){ |
||
748 | append compat_objs $1 |
||
749 | shift |
||
750 | map 'add_cppflags -D$v' "$@" |
||
751 | } |
||
752 | |||
753 | check_cmd(){ |
||
754 | log "$@" |
||
755 | "$@" >> $logfile 2>&1 |
||
756 | } |
||
757 | |||
758 | cc_o(){ |
||
759 | eval printf '%s\\n' $CC_O |
||
760 | } |
||
761 | |||
762 | cc_e(){ |
||
763 | eval printf '%s\\n' $CC_E |
||
764 | } |
||
765 | |||
766 | check_cc(){ |
||
767 | log check_cc "$@" |
||
768 | cat > $TMPC |
||
769 | log_file $TMPC |
||
770 | check_cmd $cc $CPPFLAGS $CFLAGS "$@" $CC_C $(cc_o $TMPO) $TMPC |
||
771 | } |
||
772 | |||
773 | check_cxx(){ |
||
774 | log check_cxx "$@" |
||
775 | cat > $TMPCPP |
||
776 | log_file $TMPCPP |
||
777 | check_cmd $cxx $CPPFLAGS $CFLAGS $CXXFLAGS "$@" $CXX_C -o $TMPO $TMPCPP |
||
778 | } |
||
779 | |||
780 | check_cpp(){ |
||
781 | log check_cpp "$@" |
||
782 | cat > $TMPC |
||
783 | log_file $TMPC |
||
784 | check_cmd $cc $CPPFLAGS $CFLAGS "$@" $(cc_e $TMPO) $TMPC |
||
785 | } |
||
786 | |||
787 | as_o(){ |
||
788 | eval printf '%s\\n' $AS_O |
||
789 | } |
||
790 | |||
791 | check_as(){ |
||
792 | log check_as "$@" |
||
793 | cat > $TMPS |
||
794 | log_file $TMPS |
||
795 | check_cmd $as $CPPFLAGS $ASFLAGS "$@" $AS_C $(as_o $TMPO) $TMPS |
||
796 | } |
||
797 | |||
798 | check_inline_asm(){ |
||
799 | log check_inline_asm "$@" |
||
800 | name="$1" |
||
801 | code="$2" |
||
802 | shift 2 |
||
803 | disable $name |
||
804 | check_cc "$@" < |
||
805 | void foo(void){ __asm__ volatile($code); } |
||
806 | EOF |
||
807 | } |
||
808 | |||
809 | check_insn(){ |
||
810 | log check_insn "$@" |
||
811 | check_inline_asm ${1}_inline "\"$2\"" |
||
812 | echo "$2" | check_as && enable ${1}_external || disable ${1}_external |
||
813 | } |
||
814 | |||
815 | check_yasm(){ |
||
816 | log check_yasm "$@" |
||
817 | echo "$1" > $TMPS |
||
818 | log_file $TMPS |
||
819 | shift 1 |
||
820 | check_cmd $yasmexe $YASMFLAGS -Werror "$@" -o $TMPO $TMPS |
||
821 | } |
||
822 | |||
823 | ld_o(){ |
||
824 | eval printf '%s\\n' $LD_O |
||
825 | } |
||
826 | |||
827 | check_ld(){ |
||
828 | log check_ld "$@" |
||
829 | type=$1 |
||
830 | shift 1 |
||
831 | flags=$(filter_out '-l*|*.so' $@) |
||
832 | libs=$(filter '-l*|*.so' $@) |
||
833 | check_$type $($cflags_filter $flags) || return |
||
834 | flags=$($ldflags_filter $flags) |
||
835 | libs=$($ldflags_filter $libs) |
||
836 | check_cmd $ld $LDFLAGS $flags $(ld_o $TMPE) $TMPO $libs $extralibs |
||
837 | } |
||
838 | |||
839 | check_code(){ |
||
840 | log check_code "$@" |
||
841 | check=$1 |
||
842 | headers=$2 |
||
843 | code=$3 |
||
844 | shift 3 |
||
845 | { |
||
846 | for hdr in $headers; do |
||
847 | echo "#include <$hdr>" |
||
848 | done |
||
849 | echo "int main(void) { $code; return 0; }" |
||
850 | } | check_$check "$@" |
||
851 | } |
||
852 | |||
853 | check_cppflags(){ |
||
854 | log check_cppflags "$@" |
||
855 | check_cc "$@" < |
||
856 | int x; |
||
857 | EOF |
||
858 | } |
||
859 | |||
860 | check_cflags(){ |
||
861 | log check_cflags "$@" |
||
862 | set -- $($cflags_filter "$@") |
||
863 | check_cc "$@" < |
||
864 | int x; |
||
865 | EOF |
||
866 | } |
||
867 | |||
868 | check_cxxflags(){ |
||
869 | log check_cxxflags "$@" |
||
870 | set -- $($cflags_filter "$@") |
||
871 | check_cxx "$@" < |
||
872 | int x; |
||
873 | EOF |
||
874 | } |
||
875 | |||
876 | test_ldflags(){ |
||
877 | log test_ldflags "$@" |
||
878 | check_ld "cc" "$@" < |
||
879 | int main(void){ return 0; } |
||
880 | EOF |
||
881 | } |
||
882 | |||
883 | check_ldflags(){ |
||
884 | log check_ldflags "$@" |
||
885 | test_ldflags "$@" && add_ldflags "$@" |
||
886 | } |
||
887 | |||
888 | check_header(){ |
||
889 | log check_header "$@" |
||
890 | header=$1 |
||
891 | shift |
||
892 | disable_safe $header |
||
893 | check_cpp "$@" < |
||
894 | #include <$header> |
||
895 | int x; |
||
896 | EOF |
||
897 | } |
||
898 | |||
899 | check_func(){ |
||
900 | log check_func "$@" |
||
901 | func=$1 |
||
902 | shift |
||
903 | disable $func |
||
904 | check_ld "cc" "$@" < |
||
905 | extern int $func(); |
||
906 | int main(void){ $func(); } |
||
907 | EOF |
||
908 | } |
||
909 | |||
910 | check_mathfunc(){ |
||
911 | log check_mathfunc "$@" |
||
912 | func=$1 |
||
913 | narg=$2 |
||
914 | shift 2 |
||
915 | test $narg = 2 && args="f, g" || args="f" |
||
916 | disable $func |
||
917 | check_ld "cc" "$@" < |
||
918 | #include |
||
919 | float foo(float f, float g) { return $func($args); } |
||
920 | int main(void){ return (int) foo; } |
||
921 | EOF |
||
922 | } |
||
923 | |||
924 | check_func_headers(){ |
||
925 | log check_func_headers "$@" |
||
926 | headers=$1 |
||
927 | funcs=$2 |
||
928 | shift 2 |
||
929 | { |
||
930 | for hdr in $headers; do |
||
931 | echo "#include <$hdr>" |
||
932 | done |
||
933 | for func in $funcs; do |
||
934 | echo "long check_$func(void) { return (long) $func; }" |
||
935 | done |
||
936 | echo "int main(void) { return 0; }" |
||
937 | } | check_ld "cc" "$@" && enable $funcs && enable_safe $headers |
||
938 | } |
||
939 | |||
940 | check_class_headers_cpp(){ |
||
941 | log check_class_headers_cpp "$@" |
||
942 | headers=$1 |
||
943 | classes=$2 |
||
944 | shift 2 |
||
945 | { |
||
946 | for hdr in $headers; do |
||
947 | echo "#include <$hdr>" |
||
948 | done |
||
949 | echo "int main(void) { " |
||
950 | i=1 |
||
951 | for class in $classes; do |
||
952 | echo "$class obj$i;" |
||
953 | i=$(expr $i + 1) |
||
954 | done |
||
955 | echo "return 0; }" |
||
956 | } | check_ld "cxx" "$@" && enable $funcs && enable_safe $headers |
||
957 | } |
||
958 | |||
959 | check_cpp_condition(){ |
||
960 | log check_cpp_condition "$@" |
||
961 | header=$1 |
||
962 | condition=$2 |
||
963 | shift 2 |
||
964 | check_cpp "$@" < |
||
965 | #include <$header> |
||
966 | #if !($condition) |
||
967 | #error "unsatisfied condition: $condition" |
||
968 | #endif |
||
969 | EOF |
||
970 | } |
||
971 | |||
972 | check_lib(){ |
||
973 | log check_lib "$@" |
||
974 | header="$1" |
||
975 | func="$2" |
||
976 | shift 2 |
||
977 | check_header $header && check_func $func "$@" && add_extralibs "$@" |
||
978 | } |
||
979 | |||
980 | check_lib2(){ |
||
981 | log check_lib2 "$@" |
||
982 | headers="$1" |
||
983 | funcs="$2" |
||
984 | shift 2 |
||
985 | check_func_headers "$headers" "$funcs" "$@" && add_extralibs "$@" |
||
986 | } |
||
987 | |||
988 | check_lib_cpp(){ |
||
989 | log check_lib_cpp "$@" |
||
990 | headers="$1" |
||
991 | classes="$2" |
||
992 | shift 2 |
||
993 | check_class_headers_cpp "$headers" "$classes" "$@" && add_extralibs "$@" |
||
994 | } |
||
995 | |||
996 | check_pkg_config(){ |
||
997 | log check_pkg_config "$@" |
||
998 | pkg="$1" |
||
999 | headers="$2" |
||
1000 | funcs="$3" |
||
1001 | shift 3 |
||
1002 | check_cmd $pkg_config --exists --print-errors $pkg || return |
||
1003 | pkg_cflags=$($pkg_config --cflags $pkg) |
||
1004 | pkg_libs=$($pkg_config --libs $pkg) |
||
1005 | check_func_headers "$headers" "$funcs" $pkg_cflags $pkg_libs "$@" && |
||
1006 | set_safe ${pkg}_cflags $pkg_cflags && |
||
1007 | set_safe ${pkg}_libs $pkg_libs |
||
1008 | } |
||
1009 | |||
1010 | check_exec(){ |
||
1011 | check_ld "cc" "$@" && { enabled cross_compile || $TMPE >> $logfile 2>&1; } |
||
1012 | } |
||
1013 | |||
1014 | check_exec_crash(){ |
||
1015 | code=$(cat) |
||
1016 | |||
1017 | # exit() is not async signal safe. _Exit (C99) and _exit (POSIX) |
||
1018 | # are safe but may not be available everywhere. Thus we use |
||
1019 | # raise(SIGTERM) instead. The check is run in a subshell so we |
||
1020 | # can redirect the "Terminated" message from the shell. SIGBUS |
||
1021 | # is not defined by standard C so it is used conditionally. |
||
1022 | |||
1023 | (check_exec "$@") >> $logfile 2>&1 < |
||
1024 | #include |
||
1025 | static void sighandler(int sig){ |
||
1026 | raise(SIGTERM); |
||
1027 | } |
||
1028 | int foo(void){ |
||
1029 | $code |
||
1030 | } |
||
1031 | int (*func_ptr)(void) = foo; |
||
1032 | int main(void){ |
||
1033 | signal(SIGILL, sighandler); |
||
1034 | signal(SIGFPE, sighandler); |
||
1035 | signal(SIGSEGV, sighandler); |
||
1036 | #ifdef SIGBUS |
||
1037 | signal(SIGBUS, sighandler); |
||
1038 | #endif |
||
1039 | return func_ptr(); |
||
1040 | } |
||
1041 | EOF |
||
1042 | } |
||
1043 | |||
1044 | check_type(){ |
||
1045 | log check_type "$@" |
||
1046 | headers=$1 |
||
1047 | type=$2 |
||
1048 | shift 2 |
||
1049 | disable_safe "$type" |
||
1050 | check_code cc "$headers" "$type v" "$@" && enable_safe "$type" |
||
1051 | } |
||
1052 | |||
1053 | check_struct(){ |
||
1054 | log check_struct "$@" |
||
1055 | headers=$1 |
||
1056 | struct=$2 |
||
1057 | member=$3 |
||
1058 | shift 3 |
||
1059 | disable_safe "${struct}_${member}" |
||
1060 | check_code cc "$headers" "const void *p = &(($struct *)0)->$member" "$@" && |
||
1061 | enable_safe "${struct}_${member}" |
||
1062 | } |
||
1063 | |||
1064 | check_builtin(){ |
||
1065 | log check_builtin "$@" |
||
1066 | name=$1 |
||
1067 | headers=$2 |
||
1068 | builtin=$3 |
||
1069 | shift 3 |
||
1070 | disable "$name" |
||
1071 | check_code ld "$headers" "$builtin" "cc" "$@" && enable "$name" |
||
1072 | } |
||
1073 | |||
1074 | require(){ |
||
1075 | name="$1" |
||
1076 | header="$2" |
||
1077 | func="$3" |
||
1078 | shift 3 |
||
1079 | check_lib $header $func "$@" || die "ERROR: $name not found" |
||
1080 | } |
||
1081 | |||
1082 | require2(){ |
||
1083 | name="$1" |
||
1084 | headers="$2" |
||
1085 | func="$3" |
||
1086 | shift 3 |
||
1087 | check_lib2 "$headers" $func "$@" || die "ERROR: $name not found" |
||
1088 | } |
||
1089 | |||
1090 | require_cpp(){ |
||
1091 | name="$1" |
||
1092 | headers="$2" |
||
1093 | classes="$3" |
||
1094 | shift 3 |
||
1095 | check_lib_cpp "$headers" "$classes" "$@" || die "ERROR: $name not found" |
||
1096 | } |
||
1097 | |||
1098 | require_pkg_config(){ |
||
1099 | pkg="$1" |
||
1100 | check_pkg_config "$@" || die "ERROR: $pkg not found" |
||
1101 | add_cflags $(get_safe ${pkg}_cflags) |
||
1102 | add_extralibs $(get_safe ${pkg}_libs) |
||
1103 | } |
||
1104 | |||
1105 | hostcc_o(){ |
||
1106 | eval printf '%s\\n' $HOSTCC_O |
||
1107 | } |
||
1108 | |||
1109 | check_host_cc(){ |
||
1110 | log check_host_cc "$@" |
||
1111 | cat > $TMPC |
||
1112 | log_file $TMPC |
||
1113 | check_cmd $host_cc $host_cflags "$@" $HOSTCC_C $(hostcc_o $TMPO) $TMPC |
||
1114 | } |
||
1115 | |||
1116 | check_host_cppflags(){ |
||
1117 | log check_host_cppflags "$@" |
||
1118 | check_host_cc "$@" < |
||
1119 | int x; |
||
1120 | EOF |
||
1121 | } |
||
1122 | |||
1123 | check_host_cflags(){ |
||
1124 | log check_host_cflags "$@" |
||
1125 | set -- $($host_cflags_filter "$@") |
||
1126 | check_host_cc "$@" < |
||
1127 | int x; |
||
1128 | EOF |
||
1129 | } |
||
1130 | |||
1131 | apply(){ |
||
1132 | file=$1 |
||
1133 | shift |
||
1134 | "$@" < "$file" > "$file.tmp" && mv "$file.tmp" "$file" || rm "$file.tmp" |
||
1135 | } |
||
1136 | |||
1137 | cp_if_changed(){ |
||
1138 | cmp -s "$1" "$2" && echo "$2 is unchanged" && return |
||
1139 | mkdir -p "$(dirname $2)" |
||
1140 | $cp_f "$1" "$2" |
||
1141 | } |
||
1142 | |||
1143 | # CONFIG_LIST contains configurable options, while HAVE_LIST is for |
||
1144 | # system-dependent things. |
||
1145 | |||
1146 | COMPONENT_LIST=" |
||
1147 | bsfs |
||
1148 | decoders |
||
1149 | demuxers |
||
1150 | encoders |
||
1151 | filters |
||
1152 | hwaccels |
||
1153 | indevs |
||
1154 | muxers |
||
1155 | outdevs |
||
1156 | parsers |
||
1157 | protocols |
||
1158 | " |
||
1159 | |||
1160 | EXTERNAL_LIBRARY_LIST=" |
||
1161 | avisynth |
||
1162 | bzlib |
||
1163 | crystalhd |
||
1164 | fontconfig |
||
1165 | frei0r |
||
1166 | gnutls |
||
1167 | iconv |
||
1168 | ladspa |
||
1169 | libaacplus |
||
1170 | libass |
||
1171 | libbluray |
||
1172 | libcaca |
||
1173 | libcdio |
||
1174 | libcelt |
||
1175 | libdc1394 |
||
1176 | libfaac |
||
1177 | libfdk_aac |
||
1178 | libflite |
||
1179 | libfreetype |
||
1180 | libgme |
||
1181 | libgsm |
||
1182 | libiec61883 |
||
1183 | libilbc |
||
1184 | libmodplug |
||
1185 | libmp3lame |
||
1186 | libnut |
||
1187 | libopencore_amrnb |
||
1188 | libopencore_amrwb |
||
1189 | libopencv |
||
1190 | libopenjpeg |
||
1191 | libopus |
||
1192 | libpulse |
||
1193 | libquvi |
||
1194 | librtmp |
||
1195 | libschroedinger |
||
1196 | libshine |
||
1197 | libsoxr |
||
1198 | libspeex |
||
1199 | libssh |
||
1200 | libstagefright_h264 |
||
1201 | libtheora |
||
1202 | libtwolame |
||
1203 | libutvideo |
||
1204 | libv4l2 |
||
1205 | libvidstab |
||
1206 | libvo_aacenc |
||
1207 | libvo_amrwbenc |
||
1208 | libvorbis |
||
1209 | libvpx |
||
1210 | libwavpack |
||
1211 | libx264 |
||
1212 | libxavs |
||
1213 | libxvid |
||
1214 | libzmq |
||
1215 | libzvbi |
||
1216 | openal |
||
1217 | opencl |
||
1218 | openssl |
||
1219 | x11grab |
||
1220 | zlib |
||
1221 | " |
||
1222 | |||
1223 | DOCUMENT_LIST=" |
||
1224 | doc |
||
1225 | htmlpages |
||
1226 | manpages |
||
1227 | podpages |
||
1228 | txtpages |
||
1229 | " |
||
1230 | |||
1231 | HWACCEL_LIST=" |
||
1232 | dxva2 |
||
1233 | vaapi |
||
1234 | vda |
||
1235 | vdpau |
||
1236 | " |
||
1237 | |||
1238 | LIBRARY_LIST=" |
||
1239 | avcodec |
||
1240 | avdevice |
||
1241 | avfilter |
||
1242 | avformat |
||
1243 | avresample |
||
1244 | avutil |
||
1245 | postproc |
||
1246 | swresample |
||
1247 | swscale |
||
1248 | " |
||
1249 | |||
1250 | PROGRAM_LIST=" |
||
1251 | ffplay |
||
1252 | ffprobe |
||
1253 | ffserver |
||
1254 | ffmpeg |
||
1255 | " |
||
1256 | |||
1257 | CONFIG_LIST=" |
||
1258 | $COMPONENT_LIST |
||
1259 | $DOCUMENT_LIST |
||
1260 | $EXTERNAL_LIBRARY_LIST |
||
1261 | $HWACCEL_LIST |
||
1262 | $LIBRARY_LIST |
||
1263 | $PROGRAM_LIST |
||
1264 | dct |
||
1265 | dwt |
||
1266 | error_resilience |
||
1267 | fast_unaligned |
||
1268 | fft |
||
1269 | ftrapv |
||
1270 | gpl |
||
1271 | gray |
||
1272 | hardcoded_tables |
||
1273 | incompatible_libav_abi |
||
1274 | incompatible_fork_abi |
||
1275 | lsp |
||
1276 | lzo |
||
1277 | mdct |
||
1278 | memalign_hack |
||
1279 | memory_poisoning |
||
1280 | network |
||
1281 | nonfree |
||
1282 | pic |
||
1283 | rdft |
||
1284 | runtime_cpudetect |
||
1285 | safe_bitstream_reader |
||
1286 | shared |
||
1287 | small |
||
1288 | sram |
||
1289 | static |
||
1290 | swscale_alpha |
||
1291 | thumb |
||
1292 | version3 |
||
1293 | xmm_clobber_test |
||
1294 | " |
||
1295 | |||
1296 | THREADS_LIST=' |
||
1297 | pthreads |
||
1298 | w32threads |
||
1299 | os2threads |
||
1300 | ' |
||
1301 | |||
1302 | ATOMICS_LIST=' |
||
1303 | atomics_gcc |
||
1304 | atomics_suncc |
||
1305 | atomics_win32 |
||
1306 | ' |
||
1307 | |||
1308 | ARCH_LIST=' |
||
1309 | aarch64 |
||
1310 | alpha |
||
1311 | arm |
||
1312 | avr32 |
||
1313 | avr32_ap |
||
1314 | avr32_uc |
||
1315 | bfin |
||
1316 | ia64 |
||
1317 | m68k |
||
1318 | mips |
||
1319 | mips64 |
||
1320 | parisc |
||
1321 | ppc |
||
1322 | ppc64 |
||
1323 | s390 |
||
1324 | sh4 |
||
1325 | sparc |
||
1326 | sparc64 |
||
1327 | tilegx |
||
1328 | tilepro |
||
1329 | tomi |
||
1330 | x86 |
||
1331 | x86_32 |
||
1332 | x86_64 |
||
1333 | ' |
||
1334 | |||
1335 | ARCH_EXT_LIST_ARM=' |
||
1336 | armv5te |
||
1337 | armv6 |
||
1338 | armv6t2 |
||
1339 | neon |
||
1340 | vfp |
||
1341 | vfpv3 |
||
1342 | ' |
||
1343 | |||
1344 | ARCH_EXT_LIST_X86=' |
||
1345 | amd3dnow |
||
1346 | amd3dnowext |
||
1347 | avx |
||
1348 | avx2 |
||
1349 | fma4 |
||
1350 | i686 |
||
1351 | mmx |
||
1352 | mmxext |
||
1353 | sse |
||
1354 | sse2 |
||
1355 | sse3 |
||
1356 | sse4 |
||
1357 | sse42 |
||
1358 | ssse3 |
||
1359 | ' |
||
1360 | |||
1361 | ARCH_EXT_LIST=" |
||
1362 | $ARCH_EXT_LIST_ARM |
||
1363 | $ARCH_EXT_LIST_X86 |
||
1364 | altivec |
||
1365 | ppc4xx |
||
1366 | vis |
||
1367 | mipsfpu |
||
1368 | mips32r2 |
||
1369 | mipsdspr1 |
||
1370 | mipsdspr2 |
||
1371 | " |
||
1372 | |||
1373 | HAVE_LIST_CMDLINE=' |
||
1374 | inline_asm |
||
1375 | symver |
||
1376 | yasm |
||
1377 | ' |
||
1378 | |||
1379 | HAVE_LIST_PUB=' |
||
1380 | bigendian |
||
1381 | fast_unaligned |
||
1382 | incompatible_libav_abi |
||
1383 | incompatible_fork_abi |
||
1384 | ' |
||
1385 | |||
1386 | MATH_FUNCS=" |
||
1387 | atanf |
||
1388 | atan2f |
||
1389 | cbrt |
||
1390 | cbrtf |
||
1391 | cosf |
||
1392 | exp2 |
||
1393 | exp2f |
||
1394 | expf |
||
1395 | isinf |
||
1396 | isnan |
||
1397 | ldexpf |
||
1398 | llrint |
||
1399 | llrintf |
||
1400 | log2 |
||
1401 | log2f |
||
1402 | log10f |
||
1403 | lrint |
||
1404 | lrintf |
||
1405 | powf |
||
1406 | rint |
||
1407 | round |
||
1408 | roundf |
||
1409 | sinf |
||
1410 | trunc |
||
1411 | truncf |
||
1412 | " |
||
1413 | |||
1414 | HAVE_LIST=" |
||
1415 | $ARCH_EXT_LIST |
||
1416 | $(add_suffix _external $ARCH_EXT_LIST) |
||
1417 | $(add_suffix _inline $ARCH_EXT_LIST) |
||
1418 | $HAVE_LIST_CMDLINE |
||
1419 | $HAVE_LIST_PUB |
||
1420 | $THREADS_LIST |
||
1421 | $ATOMICS_LIST |
||
1422 | $MATH_FUNCS |
||
1423 | access |
||
1424 | aligned_malloc |
||
1425 | aligned_stack |
||
1426 | alsa_asoundlib_h |
||
1427 | altivec_h |
||
1428 | arpa_inet_h |
||
1429 | asm_mod_q |
||
1430 | asm_mod_y |
||
1431 | asm_types_h |
||
1432 | atomic_cas_ptr |
||
1433 | atomics_native |
||
1434 | attribute_may_alias |
||
1435 | attribute_packed |
||
1436 | cdio_paranoia_h |
||
1437 | cdio_paranoia_paranoia_h |
||
1438 | CL_cl_h |
||
1439 | clock_gettime |
||
1440 | closesocket |
||
1441 | CommandLineToArgvW |
||
1442 | cpunop |
||
1443 | CryptGenRandom |
||
1444 | dcbzl |
||
1445 | dev_bktr_ioctl_bt848_h |
||
1446 | dev_bktr_ioctl_meteor_h |
||
1447 | dev_ic_bt8xx_h |
||
1448 | dev_video_bktr_ioctl_bt848_h |
||
1449 | dev_video_meteor_ioctl_meteor_h |
||
1450 | direct_h |
||
1451 | dlfcn_h |
||
1452 | dlopen |
||
1453 | dos_paths |
||
1454 | dxva_h |
||
1455 | ebp_available |
||
1456 | ebx_available |
||
1457 | fast_64bit |
||
1458 | fast_clz |
||
1459 | fast_cmov |
||
1460 | fcntl |
||
1461 | fork |
||
1462 | getaddrinfo |
||
1463 | gethrtime |
||
1464 | getrusage |
||
1465 | glob |
||
1466 | gnu_as |
||
1467 | ibm_asm |
||
1468 | inet_aton |
||
1469 | io_h |
||
1470 | inline_asm_labels |
||
1471 | isatty |
||
1472 | jack_port_get_latency_range |
||
1473 | kbhit |
||
1474 | ldbrx |
||
1475 | libdc1394_1 |
||
1476 | libdc1394_2 |
||
1477 | local_aligned_16 |
||
1478 | local_aligned_8 |
||
1479 | localtime_r |
||
1480 | loongson |
||
1481 | lzo1x_999_compress |
||
1482 | machine_ioctl_bt848_h |
||
1483 | machine_ioctl_meteor_h |
||
1484 | machine_rw_barrier |
||
1485 | makeinfo |
||
1486 | malloc_h |
||
1487 | memalign |
||
1488 | mkstemp |
||
1489 | mm_empty |
||
1490 | mmap |
||
1491 | msvcrt |
||
1492 | nanosleep |
||
1493 | openjpeg_1_5_openjpeg_h |
||
1494 | PeekNamedPipe |
||
1495 | perl |
||
1496 | pod2man |
||
1497 | poll_h |
||
1498 | posix_memalign |
||
1499 | pragma_deprecated |
||
1500 | pthread_cancel |
||
1501 | rdtsc |
||
1502 | rsync_contimeout |
||
1503 | sarestart |
||
1504 | sched_getaffinity |
||
1505 | sdl |
||
1506 | SetConsoleTextAttribute |
||
1507 | setmode |
||
1508 | setrlimit |
||
1509 | Sleep |
||
1510 | sndio_h |
||
1511 | socklen_t |
||
1512 | soundcard_h |
||
1513 | strerror_r |
||
1514 | struct_addrinfo |
||
1515 | struct_group_source_req |
||
1516 | struct_ip_mreq_source |
||
1517 | struct_ipv6_mreq |
||
1518 | struct_pollfd |
||
1519 | struct_rusage_ru_maxrss |
||
1520 | struct_sctp_event_subscribe |
||
1521 | struct_sockaddr_in6 |
||
1522 | struct_sockaddr_sa_len |
||
1523 | struct_sockaddr_storage |
||
1524 | struct_stat_st_mtim_tv_nsec |
||
1525 | struct_v4l2_frmivalenum_discrete |
||
1526 | symver_asm_label |
||
1527 | symver_gnu_asm |
||
1528 | sync_val_compare_and_swap |
||
1529 | sysconf |
||
1530 | sysctl |
||
1531 | sys_mman_h |
||
1532 | sys_param_h |
||
1533 | sys_resource_h |
||
1534 | sys_select_h |
||
1535 | sys_soundcard_h |
||
1536 | sys_time_h |
||
1537 | sys_un_h |
||
1538 | sys_videoio_h |
||
1539 | termios_h |
||
1540 | texi2html |
||
1541 | threads |
||
1542 | unistd_h |
||
1543 | usleep |
||
1544 | vfp_args |
||
1545 | winsock2_h |
||
1546 | xform_asm |
||
1547 | xmm_clobbers |
||
1548 | " |
||
1549 | |||
1550 | # options emitted with CONFIG_ prefix but not available on the command line |
||
1551 | CONFIG_EXTRA=" |
||
1552 | aandcttables |
||
1553 | ac3dsp |
||
1554 | audio_frame_queue |
||
1555 | dsputil |
||
1556 | exif |
||
1557 | frame_thread_encoder |
||
1558 | gcrypt |
||
1559 | golomb |
||
1560 | gplv3 |
||
1561 | h264chroma |
||
1562 | h264dsp |
||
1563 | h264pred |
||
1564 | h264qpel |
||
1565 | hpeldsp |
||
1566 | huffman |
||
1567 | lgplv3 |
||
1568 | lpc |
||
1569 | mpegaudio |
||
1570 | mpegaudiodsp |
||
1571 | mpegvideo |
||
1572 | mpegvideoenc |
||
1573 | nettle |
||
1574 | rangecoder |
||
1575 | riffdec |
||
1576 | riffenc |
||
1577 | rtpdec |
||
1578 | rtpenc_chain |
||
1579 | sinewin |
||
1580 | videodsp |
||
1581 | vp3dsp |
||
1582 | " |
||
1583 | |||
1584 | CMDLINE_SELECT=" |
||
1585 | $ARCH_EXT_LIST |
||
1586 | $CONFIG_LIST |
||
1587 | $HAVE_LIST_CMDLINE |
||
1588 | $THREADS_LIST |
||
1589 | asm |
||
1590 | cross_compile |
||
1591 | debug |
||
1592 | extra_warnings |
||
1593 | logging |
||
1594 | lto |
||
1595 | optimizations |
||
1596 | stripping |
||
1597 | " |
||
1598 | |||
1599 | PATHS_LIST=' |
||
1600 | bindir |
||
1601 | datadir |
||
1602 | docdir |
||
1603 | incdir |
||
1604 | libdir |
||
1605 | mandir |
||
1606 | prefix |
||
1607 | shlibdir |
||
1608 | ' |
||
1609 | |||
1610 | CMDLINE_SET=" |
||
1611 | $PATHS_LIST |
||
1612 | ar |
||
1613 | arch |
||
1614 | as |
||
1615 | assert_level |
||
1616 | build_suffix |
||
1617 | cc |
||
1618 | cpu |
||
1619 | cross_prefix |
||
1620 | cxx |
||
1621 | dep_cc |
||
1622 | extra_version |
||
1623 | host_cc |
||
1624 | host_cflags |
||
1625 | host_ld |
||
1626 | host_ldflags |
||
1627 | host_libs |
||
1628 | host_os |
||
1629 | install |
||
1630 | ld |
||
1631 | logfile |
||
1632 | malloc_prefix |
||
1633 | nm |
||
1634 | optflags |
||
1635 | pkg_config |
||
1636 | progs_suffix |
||
1637 | random_seed |
||
1638 | samples |
||
1639 | strip |
||
1640 | sysinclude |
||
1641 | sysroot |
||
1642 | target_exec |
||
1643 | target_os |
||
1644 | target_path |
||
1645 | target_samples |
||
1646 | tempprefix |
||
1647 | toolchain |
||
1648 | valgrind |
||
1649 | yasmexe |
||
1650 | " |
||
1651 | |||
1652 | CMDLINE_APPEND=" |
||
1653 | extra_cflags |
||
1654 | extra_cxxflags |
||
1655 | host_cppflags |
||
1656 | " |
||
1657 | |||
1658 | # code dependency declarations |
||
1659 | |||
1660 | # architecture extensions |
||
1661 | |||
1662 | armv5te_deps="arm" |
||
1663 | armv6_deps="arm" |
||
1664 | armv6t2_deps="arm" |
||
1665 | neon_deps="arm" |
||
1666 | vfp_deps="arm" |
||
1667 | vfpv3_deps="vfp" |
||
1668 | |||
1669 | map 'eval ${v}_inline_deps=inline_asm' $ARCH_EXT_LIST_ARM |
||
1670 | |||
1671 | mipsfpu_deps="mips" |
||
1672 | mips32r2_deps="mips" |
||
1673 | mipsdspr1_deps="mips" |
||
1674 | mipsdspr2_deps="mips" |
||
1675 | |||
1676 | altivec_deps="ppc" |
||
1677 | ppc4xx_deps="ppc" |
||
1678 | |||
1679 | vis_deps="sparc" |
||
1680 | |||
1681 | cpunop_deps="i686" |
||
1682 | x86_64_select="i686" |
||
1683 | x86_64_suggest="fast_cmov" |
||
1684 | |||
1685 | amd3dnow_deps="mmx" |
||
1686 | amd3dnowext_deps="amd3dnow" |
||
1687 | mmx_deps="x86" |
||
1688 | mmxext_deps="mmx" |
||
1689 | sse_deps="mmxext" |
||
1690 | sse2_deps="sse" |
||
1691 | sse3_deps="sse2" |
||
1692 | ssse3_deps="sse3" |
||
1693 | sse4_deps="ssse3" |
||
1694 | sse42_deps="sse4" |
||
1695 | avx_deps="sse42" |
||
1696 | fma4_deps="avx" |
||
1697 | avx2_deps="avx" |
||
1698 | |||
1699 | mmx_external_deps="yasm" |
||
1700 | mmx_inline_deps="inline_asm" |
||
1701 | mmx_suggest="mmx_external mmx_inline" |
||
1702 | |||
1703 | for ext in $(filter_out mmx $ARCH_EXT_LIST_X86); do |
||
1704 | eval dep=\$${ext}_deps |
||
1705 | eval ${ext}_external_deps='"${dep}_external"' |
||
1706 | eval ${ext}_inline_deps='"${dep}_inline"' |
||
1707 | eval ${ext}_suggest='"${ext}_external ${ext}_inline"' |
||
1708 | done |
||
1709 | |||
1710 | aligned_stack_if_any="ppc x86" |
||
1711 | fast_64bit_if_any="alpha ia64 mips64 parisc64 ppc64 sparc64 x86_64" |
||
1712 | fast_clz_if_any="alpha avr32 mips ppc x86" |
||
1713 | fast_unaligned_if_any="ppc x86" |
||
1714 | |||
1715 | inline_asm_deps="!tms470" |
||
1716 | need_memalign="altivec neon sse" |
||
1717 | |||
1718 | symver_if_any="symver_asm_label symver_gnu_asm" |
||
1719 | |||
1720 | log2_deps="!msvcrt" |
||
1721 | |||
1722 | # subsystems |
||
1723 | dct_select="rdft" |
||
1724 | error_resilience_select="dsputil" |
||
1725 | frame_thread_encoder_deps="encoders threads" |
||
1726 | lpc_select="dsputil" |
||
1727 | mdct_select="fft" |
||
1728 | rdft_select="fft" |
||
1729 | mpegaudio_select="mpegaudiodsp" |
||
1730 | mpegaudiodsp_select="dct" |
||
1731 | mpegvideo_select="dsputil h264chroma hpeldsp videodsp" |
||
1732 | mpegvideoenc_select="mpegvideo" |
||
1733 | |||
1734 | # decoders / encoders |
||
1735 | aac_decoder_select="mdct sinewin" |
||
1736 | aac_encoder_select="audio_frame_queue mdct sinewin" |
||
1737 | aac_latm_decoder_select="aac_decoder aac_latm_parser" |
||
1738 | ac3_decoder_select="mdct ac3dsp ac3_parser dsputil" |
||
1739 | ac3_encoder_select="mdct ac3dsp dsputil" |
||
1740 | ac3_fixed_encoder_select="mdct ac3dsp dsputil" |
||
1741 | aic_decoder_select="dsputil golomb" |
||
1742 | alac_encoder_select="lpc" |
||
1743 | als_decoder_select="dsputil" |
||
1744 | amrnb_decoder_select="lsp" |
||
1745 | amrwb_decoder_select="lsp" |
||
1746 | amv_decoder_select="dsputil hpeldsp exif" |
||
1747 | amv_encoder_select="aandcttables" |
||
1748 | ape_decoder_select="dsputil" |
||
1749 | asv1_decoder_select="dsputil" |
||
1750 | asv1_encoder_select="dsputil" |
||
1751 | asv2_decoder_select="dsputil" |
||
1752 | asv2_encoder_select="dsputil" |
||
1753 | atrac1_decoder_select="mdct sinewin" |
||
1754 | atrac3_decoder_select="mdct" |
||
1755 | avrn_decoder_select="exif" |
||
1756 | bink_decoder_select="dsputil hpeldsp" |
||
1757 | binkaudio_dct_decoder_select="mdct rdft dct sinewin" |
||
1758 | binkaudio_rdft_decoder_select="mdct rdft sinewin" |
||
1759 | cavs_decoder_select="dsputil golomb h264chroma videodsp" |
||
1760 | cllc_decoder_select="dsputil" |
||
1761 | comfortnoise_encoder_select="lpc" |
||
1762 | cook_decoder_select="dsputil mdct sinewin" |
||
1763 | cscd_decoder_select="lzo" |
||
1764 | cscd_decoder_suggest="zlib" |
||
1765 | dca_decoder_select="mdct" |
||
1766 | dirac_decoder_select="dsputil dwt golomb videodsp" |
||
1767 | dnxhd_decoder_select="dsputil" |
||
1768 | dnxhd_encoder_select="aandcttables dsputil mpegvideoenc" |
||
1769 | dvvideo_decoder_select="dsputil" |
||
1770 | dvvideo_encoder_select="dsputil" |
||
1771 | dxa_decoder_select="zlib" |
||
1772 | eac3_decoder_select="ac3_decoder" |
||
1773 | eac3_encoder_select="ac3_encoder" |
||
1774 | eamad_decoder_select="aandcttables dsputil mpegvideo" |
||
1775 | eatgq_decoder_select="aandcttables" |
||
1776 | eatqi_decoder_select="aandcttables error_resilience mpegvideo" |
||
1777 | exr_decoder_select="zlib" |
||
1778 | ffv1_decoder_select="dsputil golomb rangecoder" |
||
1779 | ffv1_encoder_select="dsputil rangecoder" |
||
1780 | ffvhuff_decoder_select="dsputil" |
||
1781 | ffvhuff_encoder_select="dsputil huffman" |
||
1782 | flac_decoder_select="golomb" |
||
1783 | flac_encoder_select="dsputil golomb lpc" |
||
1784 | flashsv_decoder_select="zlib" |
||
1785 | flashsv_encoder_select="zlib" |
||
1786 | flashsv2_encoder_select="zlib" |
||
1787 | flashsv2_decoder_select="zlib" |
||
1788 | flv_decoder_select="h263_decoder" |
||
1789 | flv_encoder_select="h263_encoder" |
||
1790 | fourxm_decoder_select="dsputil" |
||
1791 | fraps_decoder_select="dsputil huffman" |
||
1792 | g2m_decoder_select="dsputil zlib" |
||
1793 | g729_decoder_select="dsputil" |
||
1794 | h261_decoder_select="error_resilience mpegvideo" |
||
1795 | h261_encoder_select="aandcttables mpegvideoenc" |
||
1796 | h263_decoder_select="error_resilience h263_parser mpegvideo" |
||
1797 | h263_encoder_select="aandcttables mpegvideoenc" |
||
1798 | h263i_decoder_select="h263_decoder" |
||
1799 | h263p_encoder_select="h263_encoder" |
||
1800 | h264_decoder_select="golomb h264chroma h264dsp h264pred h264qpel videodsp" |
||
1801 | h264_decoder_suggest="error_resilience" |
||
1802 | hevc_decoder_select="dsputil golomb videodsp" |
||
1803 | huffyuv_decoder_select="dsputil" |
||
1804 | huffyuv_encoder_select="dsputil huffman" |
||
1805 | iac_decoder_select="dsputil fft mdct sinewin" |
||
1806 | imc_decoder_select="dsputil fft mdct sinewin" |
||
1807 | indeo3_decoder_select="hpeldsp" |
||
1808 | interplay_video_decoder_select="hpeldsp" |
||
1809 | jpegls_decoder_select="dsputil golomb hpeldsp exif" |
||
1810 | jpegls_encoder_select="golomb" |
||
1811 | jv_decoder_select="dsputil" |
||
1812 | lagarith_decoder_select="dsputil" |
||
1813 | ljpeg_encoder_select="aandcttables mpegvideoenc" |
||
1814 | loco_decoder_select="golomb" |
||
1815 | mdec_decoder_select="dsputil error_resilience mpegvideo" |
||
1816 | metasound_decoder_select="lsp mdct sinewin" |
||
1817 | mimic_decoder_select="dsputil hpeldsp" |
||
1818 | mjpeg_decoder_select="dsputil hpeldsp exif" |
||
1819 | mjpegb_decoder_select="dsputil hpeldsp exif" |
||
1820 | mjpeg_encoder_select="aandcttables dsputil mpegvideoenc" |
||
1821 | mlp_decoder_select="dsputil mlp_parser" |
||
1822 | motionpixels_decoder_select="dsputil" |
||
1823 | mp1_decoder_select="mpegaudio" |
||
1824 | mp1float_decoder_select="mpegaudio" |
||
1825 | mp2_decoder_select="mpegaudio" |
||
1826 | mp2float_decoder_select="mpegaudio" |
||
1827 | mp3_decoder_select="mpegaudio" |
||
1828 | mp3adu_decoder_select="mpegaudio" |
||
1829 | mp3adufloat_decoder_select="mpegaudio" |
||
1830 | mp3float_decoder_select="mpegaudio" |
||
1831 | mp3on4_decoder_select="mpegaudio" |
||
1832 | mp3on4float_decoder_select="mpegaudio" |
||
1833 | mpc7_decoder_select="dsputil mpegaudiodsp" |
||
1834 | mpc8_decoder_select="dsputil mpegaudiodsp" |
||
1835 | mpeg_xvmc_decoder_deps="X11_extensions_XvMClib_h" |
||
1836 | mpeg_xvmc_decoder_select="mpeg2video_decoder" |
||
1837 | mpeg1video_decoder_select="error_resilience mpegvideo" |
||
1838 | mpeg1video_encoder_select="aandcttables mpegvideoenc" |
||
1839 | mpeg2video_decoder_select="error_resilience mpegvideo" |
||
1840 | mpeg2video_encoder_select="aandcttables mpegvideoenc" |
||
1841 | mpeg4_decoder_select="h263_decoder mpeg4video_parser" |
||
1842 | mpeg4_encoder_select="h263_encoder" |
||
1843 | msmpeg4v1_decoder_select="h263_decoder" |
||
1844 | msmpeg4v2_decoder_select="h263_decoder" |
||
1845 | msmpeg4v2_encoder_select="h263_encoder" |
||
1846 | msmpeg4v3_decoder_select="h263_decoder" |
||
1847 | msmpeg4v3_encoder_select="h263_encoder" |
||
1848 | mss2_decoder_select="error_resilience vc1_decoder" |
||
1849 | mxpeg_decoder_select="dsputil hpeldsp exif" |
||
1850 | nellymoser_decoder_select="mdct sinewin" |
||
1851 | nellymoser_encoder_select="audio_frame_queue mdct sinewin" |
||
1852 | nuv_decoder_select="dsputil lzo" |
||
1853 | png_decoder_select="zlib" |
||
1854 | png_encoder_select="dsputil zlib" |
||
1855 | prores_decoder_select="dsputil" |
||
1856 | prores_encoder_select="dsputil" |
||
1857 | qcelp_decoder_select="lsp" |
||
1858 | qdm2_decoder_select="mdct rdft mpegaudiodsp" |
||
1859 | ra_144_encoder_select="audio_frame_queue lpc" |
||
1860 | ralf_decoder_select="golomb" |
||
1861 | rtjpeg_decoder_select="dsputil" |
||
1862 | rv10_decoder_select="error_resilience h263_decoder" |
||
1863 | rv10_encoder_select="h263_encoder" |
||
1864 | rv20_decoder_select="error_resilience h263_decoder" |
||
1865 | rv20_encoder_select="h263_encoder" |
||
1866 | rv30_decoder_select="error_resilience golomb h264chroma h264pred h264qpel mpegvideo videodsp" |
||
1867 | rv40_decoder_select="error_resilience golomb h264chroma h264pred h264qpel mpegvideo videodsp" |
||
1868 | shorten_decoder_select="golomb" |
||
1869 | sipr_decoder_select="lsp" |
||
1870 | snow_decoder_select="dsputil dwt h264qpel hpeldsp rangecoder" |
||
1871 | snow_encoder_select="aandcttables dsputil dwt h264qpel hpeldsp mpegvideoenc rangecoder" |
||
1872 | sonic_decoder_select="golomb" |
||
1873 | sonic_encoder_select="golomb" |
||
1874 | sonic_ls_encoder_select="golomb" |
||
1875 | sp5x_decoder_select="dsputil hpeldsp exif" |
||
1876 | svq1_decoder_select="hpeldsp" |
||
1877 | svq1_encoder_select="aandcttables dsputil hpeldsp mpegvideoenc" |
||
1878 | svq3_decoder_select="golomb h264chroma h264dsp h264pred h264qpel hpeldsp mpegvideo videodsp" |
||
1879 | svq3_decoder_suggest="error_resilience zlib" |
||
1880 | tak_decoder_select="dsputil" |
||
1881 | theora_decoder_select="vp3_decoder" |
||
1882 | tiff_decoder_suggest="zlib" |
||
1883 | tiff_encoder_suggest="zlib" |
||
1884 | thp_decoder_select="dsputil hpeldsp exif" |
||
1885 | truehd_decoder_select="mlp_parser" |
||
1886 | truemotion2_decoder_select="dsputil" |
||
1887 | truespeech_decoder_select="dsputil" |
||
1888 | tscc_decoder_select="zlib" |
||
1889 | twinvq_decoder_select="mdct lsp sinewin" |
||
1890 | utvideo_decoder_select="dsputil" |
||
1891 | utvideo_encoder_select="dsputil huffman" |
||
1892 | vble_decoder_select="dsputil" |
||
1893 | vc1_decoder_select="error_resilience h263_decoder h264chroma h264qpel" |
||
1894 | vc1image_decoder_select="vc1_decoder" |
||
1895 | vorbis_decoder_select="mdct" |
||
1896 | vorbis_encoder_select="mdct" |
||
1897 | vp3_decoder_select="hpeldsp vp3dsp videodsp" |
||
1898 | vp5_decoder_select="h264chroma hpeldsp videodsp vp3dsp" |
||
1899 | vp6_decoder_select="h264chroma hpeldsp huffman videodsp vp3dsp" |
||
1900 | vp6a_decoder_select="vp6_decoder" |
||
1901 | vp6f_decoder_select="vp6_decoder" |
||
1902 | vp8_decoder_select="h264pred videodsp" |
||
1903 | vp9_decoder_select="videodsp" |
||
1904 | webp_decoder_select="vp8_decoder" |
||
1905 | wmapro_decoder_select="mdct sinewin" |
||
1906 | wmav1_decoder_select="mdct sinewin" |
||
1907 | wmav1_encoder_select="mdct sinewin" |
||
1908 | wmav2_decoder_select="mdct sinewin" |
||
1909 | wmav2_encoder_select="mdct sinewin" |
||
1910 | wmavoice_decoder_select="lsp rdft dct mdct sinewin" |
||
1911 | wmv1_decoder_select="h263_decoder" |
||
1912 | wmv1_encoder_select="h263_encoder" |
||
1913 | wmv2_decoder_select="h263_decoder videodsp" |
||
1914 | wmv2_encoder_select="h263_encoder" |
||
1915 | wmv3_decoder_select="vc1_decoder" |
||
1916 | wmv3image_decoder_select="wmv3_decoder" |
||
1917 | zerocodec_decoder_select="zlib" |
||
1918 | zlib_decoder_select="zlib" |
||
1919 | zlib_encoder_select="zlib" |
||
1920 | zmbv_decoder_select="zlib" |
||
1921 | zmbv_encoder_select="zlib" |
||
1922 | |||
1923 | # hardware accelerators |
||
1924 | crystalhd_deps="libcrystalhd_libcrystalhd_if_h" |
||
1925 | dxva2_deps="dxva2api_h" |
||
1926 | vaapi_deps="va_va_h" |
||
1927 | vda_deps="VideoDecodeAcceleration_VDADecoder_h pthreads" |
||
1928 | vda_extralibs="-framework CoreFoundation -framework VideoDecodeAcceleration -framework QuartzCore" |
||
1929 | vdpau_deps="vdpau_vdpau_h vdpau_vdpau_x11_h" |
||
1930 | |||
1931 | h263_vaapi_hwaccel_deps="vaapi" |
||
1932 | h263_vaapi_hwaccel_select="h263_decoder" |
||
1933 | h263_vdpau_hwaccel_deps="vdpau" |
||
1934 | h263_vdpau_hwaccel_select="h263_decoder" |
||
1935 | h264_crystalhd_decoder_select="crystalhd h264_mp4toannexb_bsf h264_parser" |
||
1936 | h264_dxva2_hwaccel_deps="dxva2" |
||
1937 | h264_dxva2_hwaccel_select="h264_decoder" |
||
1938 | h264_vaapi_hwaccel_deps="vaapi" |
||
1939 | h264_vaapi_hwaccel_select="h264_decoder" |
||
1940 | h264_vda_decoder_deps="vda" |
||
1941 | h264_vda_decoder_select="h264_decoder" |
||
1942 | h264_vda_hwaccel_deps="vda" |
||
1943 | h264_vda_hwaccel_select="h264_decoder" |
||
1944 | h264_vdpau_decoder_deps="vdpau" |
||
1945 | h264_vdpau_decoder_select="h264_decoder" |
||
1946 | h264_vdpau_hwaccel_deps="vdpau" |
||
1947 | h264_vdpau_hwaccel_select="h264_decoder" |
||
1948 | mpeg_vdpau_decoder_deps="vdpau" |
||
1949 | mpeg_vdpau_decoder_select="mpeg2video_decoder" |
||
1950 | mpeg1_vdpau_decoder_deps="vdpau" |
||
1951 | mpeg1_vdpau_decoder_select="mpeg1video_decoder" |
||
1952 | mpeg1_vdpau_hwaccel_deps="vdpau" |
||
1953 | mpeg1_vdpau_hwaccel_select="mpeg1video_decoder" |
||
1954 | mpeg2_crystalhd_decoder_select="crystalhd" |
||
1955 | mpeg2_dxva2_hwaccel_deps="dxva2" |
||
1956 | mpeg2_dxva2_hwaccel_select="mpeg2video_decoder" |
||
1957 | mpeg2_vaapi_hwaccel_deps="vaapi" |
||
1958 | mpeg2_vaapi_hwaccel_select="mpeg2video_decoder" |
||
1959 | mpeg2_vdpau_hwaccel_deps="vdpau" |
||
1960 | mpeg2_vdpau_hwaccel_select="mpeg2video_decoder" |
||
1961 | mpeg4_crystalhd_decoder_select="crystalhd" |
||
1962 | mpeg4_vaapi_hwaccel_deps="vaapi" |
||
1963 | mpeg4_vaapi_hwaccel_select="mpeg4_decoder" |
||
1964 | mpeg4_vdpau_decoder_deps="vdpau" |
||
1965 | mpeg4_vdpau_decoder_select="mpeg4_decoder" |
||
1966 | mpeg4_vdpau_hwaccel_deps="vdpau" |
||
1967 | mpeg4_vdpau_hwaccel_select="mpeg4_decoder" |
||
1968 | msmpeg4_crystalhd_decoder_select="crystalhd" |
||
1969 | vc1_crystalhd_decoder_select="crystalhd" |
||
1970 | vc1_dxva2_hwaccel_deps="dxva2" |
||
1971 | vc1_dxva2_hwaccel_select="vc1_decoder" |
||
1972 | vc1_vaapi_hwaccel_deps="vaapi" |
||
1973 | vc1_vaapi_hwaccel_select="vc1_decoder" |
||
1974 | vc1_vdpau_decoder_deps="vdpau" |
||
1975 | vc1_vdpau_decoder_select="vc1_decoder" |
||
1976 | vc1_vdpau_hwaccel_deps="vdpau" |
||
1977 | vc1_vdpau_hwaccel_select="vc1_decoder" |
||
1978 | wmv3_crystalhd_decoder_select="crystalhd" |
||
1979 | wmv3_dxva2_hwaccel_select="vc1_dxva2_hwaccel" |
||
1980 | wmv3_vaapi_hwaccel_select="vc1_vaapi_hwaccel" |
||
1981 | wmv3_vdpau_decoder_select="vc1_vdpau_decoder" |
||
1982 | wmv3_vdpau_hwaccel_select="vc1_vdpau_hwaccel" |
||
1983 | |||
1984 | # parsers |
||
1985 | h264_parser_select="golomb h264chroma h264dsp h264pred h264qpel videodsp" |
||
1986 | mpeg4video_parser_select="error_resilience mpegvideo" |
||
1987 | mpegvideo_parser_select="error_resilience mpegvideo" |
||
1988 | vc1_parser_select="mpegvideo" |
||
1989 | |||
1990 | # external libraries |
||
1991 | libaacplus_encoder_deps="libaacplus" |
||
1992 | libcelt_decoder_deps="libcelt" |
||
1993 | libfaac_encoder_deps="libfaac" |
||
1994 | libfaac_encoder_select="audio_frame_queue" |
||
1995 | libfdk_aac_decoder_deps="libfdk_aac" |
||
1996 | libfdk_aac_encoder_deps="libfdk_aac" |
||
1997 | libfdk_aac_encoder_select="audio_frame_queue" |
||
1998 | libgme_demuxer_deps="libgme" |
||
1999 | libgsm_decoder_deps="libgsm" |
||
2000 | libgsm_encoder_deps="libgsm" |
||
2001 | libgsm_ms_decoder_deps="libgsm" |
||
2002 | libgsm_ms_encoder_deps="libgsm" |
||
2003 | libilbc_decoder_deps="libilbc" |
||
2004 | libilbc_encoder_deps="libilbc" |
||
2005 | libmodplug_demuxer_deps="libmodplug" |
||
2006 | libmp3lame_encoder_deps="libmp3lame" |
||
2007 | libmp3lame_encoder_select="audio_frame_queue" |
||
2008 | libopencore_amrnb_decoder_deps="libopencore_amrnb" |
||
2009 | libopencore_amrnb_encoder_deps="libopencore_amrnb" |
||
2010 | libopencore_amrnb_encoder_select="audio_frame_queue" |
||
2011 | libopencore_amrwb_decoder_deps="libopencore_amrwb" |
||
2012 | libopenjpeg_decoder_deps="libopenjpeg" |
||
2013 | libopenjpeg_encoder_deps="libopenjpeg" |
||
2014 | libopus_decoder_deps="libopus" |
||
2015 | libopus_encoder_deps="libopus" |
||
2016 | libopus_encoder_select="audio_frame_queue" |
||
2017 | libquvi_demuxer_deps="libquvi" |
||
2018 | libschroedinger_decoder_deps="libschroedinger" |
||
2019 | libschroedinger_encoder_deps="libschroedinger" |
||
2020 | libshine_encoder_deps="libshine" |
||
2021 | libshine_encoder_select="audio_frame_queue" |
||
2022 | libspeex_decoder_deps="libspeex" |
||
2023 | libspeex_encoder_deps="libspeex" |
||
2024 | libspeex_encoder_select="audio_frame_queue" |
||
2025 | libstagefright_h264_decoder_deps="libstagefright_h264" |
||
2026 | libtheora_encoder_deps="libtheora" |
||
2027 | libtwolame_encoder_deps="libtwolame" |
||
2028 | libvo_aacenc_encoder_deps="libvo_aacenc" |
||
2029 | libvo_aacenc_encoder_select="audio_frame_queue" |
||
2030 | libvo_amrwbenc_encoder_deps="libvo_amrwbenc" |
||
2031 | libvorbis_decoder_deps="libvorbis" |
||
2032 | libvorbis_encoder_deps="libvorbis" |
||
2033 | libvorbis_encoder_select="audio_frame_queue" |
||
2034 | libvpx_vp8_decoder_deps="libvpx" |
||
2035 | libvpx_vp8_encoder_deps="libvpx" |
||
2036 | libvpx_vp9_decoder_deps="libvpx" |
||
2037 | libvpx_vp9_encoder_deps="libvpx" |
||
2038 | libwavpack_encoder_deps="libwavpack" |
||
2039 | libx264_encoder_deps="libx264" |
||
2040 | libx264rgb_encoder_deps="libx264" |
||
2041 | libxavs_encoder_deps="libxavs" |
||
2042 | libxvid_encoder_deps="libxvid" |
||
2043 | libutvideo_decoder_deps="libutvideo" |
||
2044 | libutvideo_encoder_deps="libutvideo" |
||
2045 | libzvbi_teletext_decoder_deps="libzvbi" |
||
2046 | |||
2047 | # demuxers / muxers |
||
2048 | ac3_demuxer_select="ac3_parser" |
||
2049 | asf_demuxer_select="riffdec" |
||
2050 | asf_muxer_select="riffenc" |
||
2051 | asf_stream_muxer_select="asf_muxer" |
||
2052 | avi_demuxer_select="riffdec" |
||
2053 | avi_muxer_select="riffenc" |
||
2054 | avisynth_demuxer_deps="avisynth" |
||
2055 | avisynth_demuxer_select="riffdec" |
||
2056 | caf_demuxer_select="riffdec" |
||
2057 | dirac_demuxer_select="dirac_parser" |
||
2058 | dts_demuxer_select="dca_parser" |
||
2059 | dtshd_demuxer_select="dca_parser" |
||
2060 | dxa_demuxer_select="riffdec" |
||
2061 | eac3_demuxer_select="ac3_parser" |
||
2062 | f4v_muxer_select="mov_muxer" |
||
2063 | flac_demuxer_select="flac_parser" |
||
2064 | hls_muxer_select="mpegts_muxer" |
||
2065 | ipod_muxer_select="mov_muxer" |
||
2066 | ismv_muxer_select="mov_muxer" |
||
2067 | libnut_demuxer_deps="libnut" |
||
2068 | libnut_muxer_deps="libnut" |
||
2069 | matroska_audio_muxer_select="matroska_muxer" |
||
2070 | matroska_demuxer_select="riffdec" |
||
2071 | matroska_demuxer_suggest="bzlib lzo zlib" |
||
2072 | matroska_muxer_select="riffenc" |
||
2073 | mmf_muxer_select="riffenc" |
||
2074 | mov_demuxer_select="riffdec" |
||
2075 | mov_demuxer_suggest="zlib" |
||
2076 | mov_muxer_select="riffenc rtpenc_chain" |
||
2077 | mp3_demuxer_select="mpegaudio_parser" |
||
2078 | mp4_muxer_select="mov_muxer" |
||
2079 | mpegts_muxer_select="adts_muxer latm_muxer" |
||
2080 | mpegtsraw_demuxer_select="mpegts_demuxer" |
||
2081 | mxf_d10_muxer_select="mxf_muxer" |
||
2082 | nut_muxer_select="riffenc" |
||
2083 | nuv_demuxer_select="riffdec" |
||
2084 | ogg_demuxer_select="golomb" |
||
2085 | psp_muxer_select="mov_muxer" |
||
2086 | rtp_demuxer_select="sdp_demuxer" |
||
2087 | rtpdec_select="asf_demuxer rm_demuxer rtp_protocol mpegts_demuxer mov_demuxer" |
||
2088 | rtsp_demuxer_select="http_protocol rtpdec" |
||
2089 | rtsp_muxer_select="rtp_muxer http_protocol rtp_protocol rtpenc_chain" |
||
2090 | sap_demuxer_select="sdp_demuxer" |
||
2091 | sap_muxer_select="rtp_muxer rtp_protocol rtpenc_chain" |
||
2092 | sdp_demuxer_select="rtpdec" |
||
2093 | smoothstreaming_muxer_select="ismv_muxer" |
||
2094 | spdif_muxer_select="aac_parser" |
||
2095 | tak_demuxer_select="tak_parser" |
||
2096 | tg2_muxer_select="mov_muxer" |
||
2097 | tgp_muxer_select="mov_muxer" |
||
2098 | vobsub_demuxer_select="mpegps_demuxer" |
||
2099 | w64_demuxer_select="wav_demuxer" |
||
2100 | w64_muxer_select="wav_muxer" |
||
2101 | wav_demuxer_select="riffdec" |
||
2102 | wav_muxer_select="riffenc" |
||
2103 | webm_muxer_select="riffenc" |
||
2104 | wtv_demuxer_select="riffdec" |
||
2105 | xmv_demuxer_select="riffdec" |
||
2106 | xwma_demuxer_select="riffdec" |
||
2107 | |||
2108 | # indevs / outdevs |
||
2109 | alsa_indev_deps="alsa_asoundlib_h snd_pcm_htimestamp" |
||
2110 | alsa_outdev_deps="alsa_asoundlib_h" |
||
2111 | bktr_indev_deps_any="dev_bktr_ioctl_bt848_h machine_ioctl_bt848_h dev_video_bktr_ioctl_bt848_h dev_ic_bt8xx_h" |
||
2112 | caca_outdev_deps="libcaca" |
||
2113 | dshow_indev_deps="IBaseFilter" |
||
2114 | dshow_indev_extralibs="-lpsapi -lole32 -lstrmiids -luuid" |
||
2115 | dv1394_indev_deps="dv1394" |
||
2116 | dv1394_indev_select="dv_demuxer" |
||
2117 | fbdev_indev_deps="linux_fb_h" |
||
2118 | fbdev_outdev_deps="linux_fb_h" |
||
2119 | iec61883_indev_deps="libiec61883" |
||
2120 | jack_indev_deps="jack_jack_h sem_timedwait" |
||
2121 | lavfi_indev_deps="avfilter" |
||
2122 | libcdio_indev_deps="libcdio" |
||
2123 | libdc1394_indev_deps="libdc1394" |
||
2124 | libv4l2_indev_deps="libv4l2" |
||
2125 | openal_indev_deps="openal" |
||
2126 | oss_indev_deps_any="soundcard_h sys_soundcard_h" |
||
2127 | oss_outdev_deps_any="soundcard_h sys_soundcard_h" |
||
2128 | pulse_indev_deps="libpulse" |
||
2129 | pulse_outdev_deps="libpulse" |
||
2130 | sdl_outdev_deps="sdl" |
||
2131 | sndio_indev_deps="sndio_h" |
||
2132 | sndio_outdev_deps="sndio_h" |
||
2133 | v4l_indev_deps="linux_videodev_h" |
||
2134 | v4l2_indev_deps_any="linux_videodev2_h sys_videoio_h" |
||
2135 | v4l2_outdev_deps_any="linux_videodev2_h sys_videoio_h" |
||
2136 | vfwcap_indev_deps="capCreateCaptureWindow vfwcap_defines" |
||
2137 | vfwcap_indev_extralibs="-lavicap32" |
||
2138 | xv_outdev_deps="X11_extensions_Xvlib_h XvGetPortAttribute" |
||
2139 | xv_outdev_extralibs="-lXv -lX11 -lXext" |
||
2140 | x11grab_indev_deps="x11grab" |
||
2141 | |||
2142 | # protocols |
||
2143 | bluray_protocol_deps="libbluray" |
||
2144 | ffrtmpcrypt_protocol_deps="!librtmp_protocol" |
||
2145 | ffrtmpcrypt_protocol_deps_any="gcrypt nettle openssl" |
||
2146 | ffrtmpcrypt_protocol_select="tcp_protocol" |
||
2147 | ffrtmphttp_protocol_deps="!librtmp_protocol" |
||
2148 | ffrtmphttp_protocol_select="http_protocol" |
||
2149 | ftp_protocol_select="tcp_protocol" |
||
2150 | gopher_protocol_select="network" |
||
2151 | httpproxy_protocol_select="tcp_protocol" |
||
2152 | http_protocol_select="tcp_protocol" |
||
2153 | https_protocol_select="tls_protocol" |
||
2154 | librtmp_protocol_deps="librtmp" |
||
2155 | librtmpe_protocol_deps="librtmp" |
||
2156 | librtmps_protocol_deps="librtmp" |
||
2157 | librtmpt_protocol_deps="librtmp" |
||
2158 | librtmpte_protocol_deps="librtmp" |
||
2159 | libssh_protocol_deps="libssh" |
||
2160 | mmsh_protocol_select="http_protocol" |
||
2161 | mmst_protocol_select="network" |
||
2162 | rtmp_protocol_deps="!librtmp_protocol" |
||
2163 | rtmp_protocol_select="tcp_protocol" |
||
2164 | rtmpe_protocol_select="ffrtmpcrypt_protocol" |
||
2165 | rtmps_protocol_deps="!librtmp_protocol" |
||
2166 | rtmps_protocol_select="tls_protocol" |
||
2167 | rtmpt_protocol_select="ffrtmphttp_protocol" |
||
2168 | rtmpte_protocol_select="ffrtmpcrypt_protocol ffrtmphttp_protocol" |
||
2169 | rtmpts_protocol_select="ffrtmphttp_protocol https_protocol" |
||
2170 | rtp_protocol_select="udp_protocol" |
||
2171 | sctp_protocol_deps="struct_sctp_event_subscribe" |
||
2172 | sctp_protocol_select="network" |
||
2173 | srtp_protocol_select="rtp_protocol" |
||
2174 | tcp_protocol_select="network" |
||
2175 | tls_protocol_deps_any="openssl gnutls" |
||
2176 | tls_protocol_select="tcp_protocol" |
||
2177 | udp_protocol_select="network" |
||
2178 | unix_protocol_deps="sys_un_h" |
||
2179 | unix_protocol_select="network" |
||
2180 | |||
2181 | # filters |
||
2182 | aconvert_filter_deps="swresample" |
||
2183 | amovie_filter_deps="avcodec avformat" |
||
2184 | aresample_filter_deps="swresample" |
||
2185 | ass_filter_deps="libass" |
||
2186 | asyncts_filter_deps="avresample" |
||
2187 | atempo_filter_deps="avcodec" |
||
2188 | atempo_filter_select="rdft" |
||
2189 | azmq_filter_deps="libzmq" |
||
2190 | blackframe_filter_deps="gpl" |
||
2191 | boxblur_filter_deps="gpl" |
||
2192 | colormatrix_filter_deps="gpl" |
||
2193 | cropdetect_filter_deps="gpl" |
||
2194 | dctdnoiz_filter_deps="avcodec" |
||
2195 | dctdnoiz_filter_select="fft" |
||
2196 | delogo_filter_deps="gpl" |
||
2197 | deshake_filter_deps="avcodec" |
||
2198 | deshake_filter_select="dsputil" |
||
2199 | drawtext_filter_deps="libfreetype" |
||
2200 | ebur128_filter_deps="gpl" |
||
2201 | flite_filter_deps="libflite" |
||
2202 | frei0r_filter_deps="frei0r dlopen" |
||
2203 | frei0r_filter_extralibs='$ldl' |
||
2204 | frei0r_src_filter_deps="frei0r dlopen" |
||
2205 | frei0r_src_filter_extralibs='$ldl' |
||
2206 | geq_filter_deps="gpl" |
||
2207 | histeq_filter_deps="gpl" |
||
2208 | hqdn3d_filter_deps="gpl" |
||
2209 | interlace_filter_deps="gpl" |
||
2210 | kerndeint_filter_deps="gpl" |
||
2211 | ladspa_filter_deps="ladspa dlopen" |
||
2212 | mcdeint_filter_deps="avcodec gpl" |
||
2213 | movie_filter_deps="avcodec avformat" |
||
2214 | mp_filter_deps="gpl avcodec swscale inline_asm" |
||
2215 | mpdecimate_filter_deps="gpl avcodec" |
||
2216 | mptestsrc_filter_deps="gpl" |
||
2217 | negate_filter_deps="lut_filter" |
||
2218 | perspective_filter_deps="gpl" |
||
2219 | resample_filter_deps="avresample" |
||
2220 | ocv_filter_deps="libopencv" |
||
2221 | owdenoise_filter_deps="gpl" |
||
2222 | pan_filter_deps="swresample" |
||
2223 | phase_filter_deps="gpl" |
||
2224 | pp_filter_deps="gpl postproc" |
||
2225 | pullup_filter_deps="gpl" |
||
2226 | removelogo_filter_deps="avcodec avformat swscale" |
||
2227 | sab_filter_deps="gpl swscale" |
||
2228 | scale_filter_deps="swscale" |
||
2229 | smartblur_filter_deps="gpl swscale" |
||
2230 | showspectrum_filter_deps="avcodec" |
||
2231 | showspectrum_filter_select="rdft" |
||
2232 | spp_filter_deps="gpl avcodec" |
||
2233 | spp_filter_select="fft" |
||
2234 | stereo3d_filter_deps="gpl" |
||
2235 | subtitles_filter_deps="avformat avcodec libass" |
||
2236 | super2xsai_filter_deps="gpl" |
||
2237 | tinterlace_filter_deps="gpl" |
||
2238 | vidstabdetect_filter_deps="libvidstab" |
||
2239 | vidstabtransform_filter_deps="libvidstab" |
||
2240 | yadif_filter_deps="gpl" |
||
2241 | pixfmts_super2xsai_test_deps="super2xsai_filter" |
||
2242 | tinterlace_merge_test_deps="tinterlace_filter" |
||
2243 | tinterlace_pad_test_deps="tinterlace_filter" |
||
2244 | zmq_filter_deps="libzmq" |
||
2245 | |||
2246 | # libraries |
||
2247 | avcodec_deps="avutil" |
||
2248 | avdevice_deps="avutil avcodec avformat" |
||
2249 | avfilter_deps="avutil" |
||
2250 | avformat_deps="avutil avcodec" |
||
2251 | avresample_deps="avutil" |
||
2252 | postproc_deps="avutil gpl" |
||
2253 | swscale_deps="avutil" |
||
2254 | |||
2255 | # programs |
||
2256 | ffmpeg_deps="avcodec avfilter avformat swresample" |
||
2257 | ffmpeg_select="aformat_filter anull_filter atrim_filter format_filter |
||
2258 | null_filter |
||
2259 | setpts_filter trim_filter" |
||
2260 | ffplay_deps="avcodec avformat swscale swresample sdl" |
||
2261 | ffplay_select="rdft crop_filter" |
||
2262 | ffprobe_deps="avcodec avformat" |
||
2263 | ffserver_deps="avformat fork sarestart" |
||
2264 | ffserver_select="ffm_muxer rtp_protocol rtsp_demuxer" |
||
2265 | ffserver_extralibs='$ldl' |
||
2266 | |||
2267 | # documentation |
||
2268 | podpages_deps="perl" |
||
2269 | manpages_deps="perl pod2man" |
||
2270 | htmlpages_deps="texi2html" |
||
2271 | txtpages_deps="makeinfo" |
||
2272 | doc_deps_any="manpages htmlpages podpages txtpages" |
||
2273 | |||
2274 | # default parameters |
||
2275 | |||
2276 | logfile="config.log" |
||
2277 | |||
2278 | # installation paths |
||
2279 | prefix_default="/usr/local" |
||
2280 | bindir_default='${prefix}/bin' |
||
2281 | datadir_default='${prefix}/share/ffmpeg' |
||
2282 | docdir_default='${prefix}/share/doc/ffmpeg' |
||
2283 | incdir_default='${prefix}/include' |
||
2284 | libdir_default='${prefix}/lib' |
||
2285 | mandir_default='${prefix}/share/man' |
||
2286 | shlibdir_default="$libdir_default" |
||
2287 | |||
2288 | # toolchain |
||
2289 | ar_default="ar" |
||
2290 | cc_default="gcc" |
||
2291 | cxx_default="g++" |
||
2292 | host_cc_default="gcc" |
||
2293 | cp_f="cp -f" |
||
2294 | install="install" |
||
2295 | ln_s="ln -s -f" |
||
2296 | nm_default="nm -g" |
||
2297 | objformat="elf" |
||
2298 | pkg_config_default=pkg-config |
||
2299 | ranlib="ranlib" |
||
2300 | strip_default="strip" |
||
2301 | yasmexe_default="yasm" |
||
2302 | |||
2303 | nogas=":" |
||
2304 | |||
2305 | # machine |
||
2306 | arch_default=$(uname -m) |
||
2307 | cpu="generic" |
||
2308 | |||
2309 | # OS |
||
2310 | target_os_default=$(tolower $(uname -s)) |
||
2311 | host_os=$target_os_default |
||
2312 | |||
2313 | # configurable options |
||
2314 | enable $PROGRAM_LIST |
||
2315 | enable $DOCUMENT_LIST |
||
2316 | enable $(filter_out avresample $LIBRARY_LIST) |
||
2317 | enable stripping |
||
2318 | |||
2319 | enable asm |
||
2320 | enable debug |
||
2321 | enable doc |
||
2322 | enable optimizations |
||
2323 | enable runtime_cpudetect |
||
2324 | enable safe_bitstream_reader |
||
2325 | enable static |
||
2326 | enable swscale_alpha |
||
2327 | |||
2328 | # Enable hwaccels by default. |
||
2329 | enable dxva2 vaapi vdpau |
||
2330 | |||
2331 | # build settings |
||
2332 | SHFLAGS='-shared -Wl,-soname,$$(@F)' |
||
2333 | LIBPREF="lib" |
||
2334 | LIBSUF=".a" |
||
2335 | FULLNAME='$(NAME)$(BUILDSUF)' |
||
2336 | LIBNAME='$(LIBPREF)$(FULLNAME)$(LIBSUF)' |
||
2337 | SLIBPREF="lib" |
||
2338 | SLIBSUF=".so" |
||
2339 | SLIBNAME='$(SLIBPREF)$(FULLNAME)$(SLIBSUF)' |
||
2340 | SLIBNAME_WITH_VERSION='$(SLIBNAME).$(LIBVERSION)' |
||
2341 | SLIBNAME_WITH_MAJOR='$(SLIBNAME).$(LIBMAJOR)' |
||
2342 | LIB_INSTALL_EXTRA_CMD='$$(RANLIB) "$(LIBDIR)/$(LIBNAME)"' |
||
2343 | SLIB_INSTALL_NAME='$(SLIBNAME_WITH_VERSION)' |
||
2344 | SLIB_INSTALL_LINKS='$(SLIBNAME_WITH_MAJOR) $(SLIBNAME)' |
||
2345 | |||
2346 | asflags_filter=echo |
||
2347 | cflags_filter=echo |
||
2348 | ldflags_filter=echo |
||
2349 | |||
2350 | AS_C='-c' |
||
2351 | AS_O='-o $@' |
||
2352 | CC_C='-c' |
||
2353 | CC_E='-E -o $@' |
||
2354 | CC_O='-o $@' |
||
2355 | CXX_C='-c' |
||
2356 | CXX_O='-o $@' |
||
2357 | LD_O='-o $@' |
||
2358 | LD_LIB='-l%' |
||
2359 | LD_PATH='-L' |
||
2360 | HOSTCC_C='-c' |
||
2361 | HOSTCC_O='-o $@' |
||
2362 | HOSTLD_O='-o $@' |
||
2363 | |||
2364 | host_cflags='-O3 -g' |
||
2365 | host_cppflags='-D_ISOC99_SOURCE -D_XOPEN_SOURCE=600' |
||
2366 | host_libs='-lm' |
||
2367 | host_cflags_filter=echo |
||
2368 | host_ldflags_filter=echo |
||
2369 | |||
2370 | target_path='$(CURDIR)' |
||
2371 | |||
2372 | # since the object filename is not given with the -MM flag, the compiler |
||
2373 | # is only able to print the basename, and we must add the path ourselves |
||
2374 | DEPCMD='$(DEP$(1)) $(DEP$(1)FLAGS) $($(1)DEP_FLAGS) $< | sed -e "/^\#.*/d" -e "s,^[[:space:]]*$(*F)\\.o,$(@D)/$(*F).o," > $(@:.o=.d)' |
||
2375 | DEPFLAGS='-MM' |
||
2376 | |||
2377 | # find source path |
||
2378 | if test -f configure; then |
||
2379 | source_path=. |
||
2380 | else |
||
2381 | source_path=$(cd $(dirname "$0"); pwd) |
||
2382 | echo "$source_path" | grep -q '[[:blank:]]' && |
||
2383 | die "Out of tree builds are impossible with whitespace in source path." |
||
2384 | test -e "$source_path/config.h" && |
||
2385 | die "Out of tree builds are impossible with config.h in source dir." |
||
2386 | fi |
||
2387 | |||
2388 | for v in "$@"; do |
||
2389 | r=${v#*=} |
||
2390 | l=${v%"$r"} |
||
2391 | r=$(sh_quote "$r") |
||
2392 | FFMPEG_CONFIGURATION="${FFMPEG_CONFIGURATION# } ${l}${r}" |
||
2393 | done |
||
2394 | |||
2395 | find_things(){ |
||
2396 | thing=$1 |
||
2397 | pattern=$2 |
||
2398 | file=$source_path/$3 |
||
2399 | sed -n "s/^[^#]*$pattern.*([^,]*, *\([^,]*\)\(,.*\)*).*/\1_$thing/p" "$file" |
||
2400 | } |
||
2401 | |||
2402 | ENCODER_LIST=$(find_things encoder ENC libavcodec/allcodecs.c) |
||
2403 | DECODER_LIST=$(find_things decoder DEC libavcodec/allcodecs.c) |
||
2404 | HWACCEL_LIST=$(find_things hwaccel HWACCEL libavcodec/allcodecs.c) |
||
2405 | PARSER_LIST=$(find_things parser PARSER libavcodec/allcodecs.c) |
||
2406 | BSF_LIST=$(find_things bsf BSF libavcodec/allcodecs.c) |
||
2407 | MUXER_LIST=$(find_things muxer _MUX libavformat/allformats.c) |
||
2408 | DEMUXER_LIST=$(find_things demuxer DEMUX libavformat/allformats.c) |
||
2409 | OUTDEV_LIST=$(find_things outdev OUTDEV libavdevice/alldevices.c) |
||
2410 | INDEV_LIST=$(find_things indev _IN libavdevice/alldevices.c) |
||
2411 | PROTOCOL_LIST=$(find_things protocol PROTOCOL libavformat/allformats.c) |
||
2412 | FILTER_LIST=$(find_things filter FILTER libavfilter/allfilters.c) |
||
2413 | |||
2414 | ALL_COMPONENTS=" |
||
2415 | $BSF_LIST |
||
2416 | $DECODER_LIST |
||
2417 | $DEMUXER_LIST |
||
2418 | $ENCODER_LIST |
||
2419 | $FILTER_LIST |
||
2420 | $HWACCEL_LIST |
||
2421 | $INDEV_LIST |
||
2422 | $MUXER_LIST |
||
2423 | $OUTDEV_LIST |
||
2424 | $PARSER_LIST |
||
2425 | $PROTOCOL_LIST |
||
2426 | " |
||
2427 | |||
2428 | for n in $COMPONENT_LIST; do |
||
2429 | v=$(toupper ${n%s})_LIST |
||
2430 | eval enable \$$v |
||
2431 | eval ${n}_if_any="\$$v" |
||
2432 | done |
||
2433 | |||
2434 | enable $ARCH_EXT_LIST |
||
2435 | |||
2436 | die_unknown(){ |
||
2437 | echo "Unknown option \"$1\"." |
||
2438 | echo "See $0 --help for available options." |
||
2439 | exit 1 |
||
2440 | } |
||
2441 | |||
2442 | print_3_columns() { |
||
2443 | cat | tr ' ' '\n' | sort | pr -r -3 -t |
||
2444 | } |
||
2445 | |||
2446 | show_list() { |
||
2447 | suffix=_$1 |
||
2448 | shift |
||
2449 | echo $* | sed s/$suffix//g | print_3_columns |
||
2450 | exit 0 |
||
2451 | } |
||
2452 | |||
2453 | rand_list(){ |
||
2454 | IFS=', ' |
||
2455 | set -- $* |
||
2456 | unset IFS |
||
2457 | for thing; do |
||
2458 | comp=${thing%:*} |
||
2459 | prob=${thing#$comp} |
||
2460 | prob=${prob#:} |
||
2461 | is_in ${comp} $COMPONENT_LIST && eval comp=\$$(toupper ${comp%s})_LIST |
||
2462 | echo "prob ${prob:-0.5}" |
||
2463 | printf '%s\n' $comp |
||
2464 | done |
||
2465 | } |
||
2466 | |||
2467 | do_random(){ |
||
2468 | action=$1 |
||
2469 | shift |
||
2470 | random_seed=$(awk "BEGIN { srand($random_seed); print srand() }") |
||
2471 | $action $(rand_list "$@" | awk "BEGIN { srand($random_seed) } \$1 == \"prob\" { prob = \$2; next } rand() < prob { print }") |
||
2472 | } |
||
2473 | |||
2474 | for opt do |
||
2475 | optval="${opt#*=}" |
||
2476 | case "$opt" in |
||
2477 | --extra-ldflags=*) |
||
2478 | add_ldflags $optval |
||
2479 | ;; |
||
2480 | --extra-libs=*) |
||
2481 | add_extralibs $optval |
||
2482 | ;; |
||
2483 | --disable-devices) |
||
2484 | disable $INDEV_LIST $OUTDEV_LIST |
||
2485 | ;; |
||
2486 | --enable-debug=*) |
||
2487 | debuglevel="$optval" |
||
2488 | ;; |
||
2489 | --disable-programs) |
||
2490 | disable $PROGRAM_LIST |
||
2491 | ;; |
||
2492 | --disable-everything) |
||
2493 | map 'eval unset \${$(toupper ${v%s})_LIST}' $COMPONENT_LIST |
||
2494 | ;; |
||
2495 | --disable-all) |
||
2496 | map 'eval unset \${$(toupper ${v%s})_LIST}' $COMPONENT_LIST |
||
2497 | disable $LIBRARY_LIST $PROGRAM_LIST doc |
||
2498 | ;; |
||
2499 | --enable-random|--disable-random) |
||
2500 | action=${opt%%-random} |
||
2501 | do_random ${action#--} $COMPONENT_LIST |
||
2502 | ;; |
||
2503 | --enable-random=*|--disable-random=*) |
||
2504 | action=${opt%%-random=*} |
||
2505 | do_random ${action#--} $optval |
||
2506 | ;; |
||
2507 | --enable-*=*|--disable-*=*) |
||
2508 | eval $(echo "${opt%%=*}" | sed 's/--/action=/;s/-/ thing=/') |
||
2509 | is_in "${thing}s" $COMPONENT_LIST || die_unknown "$opt" |
||
2510 | eval list=\$$(toupper $thing)_LIST |
||
2511 | name=$(echo "${optval}" | sed "s/,/_${thing}|/g")_${thing} |
||
2512 | list=$(filter "$name" $list) |
||
2513 | [ "$list" = "" ] && warn "Option $opt did not match anything" |
||
2514 | $action $list |
||
2515 | ;; |
||
2516 | --enable-?*|--disable-?*) |
||
2517 | eval $(echo "$opt" | sed 's/--/action=/;s/-/ option=/;s/-/_/g') |
||
2518 | if is_in $option $COMPONENT_LIST; then |
||
2519 | test $action = disable && action=unset |
||
2520 | eval $action \$$(toupper ${option%s})_LIST |
||
2521 | elif is_in $option $CMDLINE_SELECT; then |
||
2522 | $action $option |
||
2523 | else |
||
2524 | die_unknown $opt |
||
2525 | fi |
||
2526 | ;; |
||
2527 | --list-*) |
||
2528 | NAME="${opt#--list-}" |
||
2529 | is_in $NAME $COMPONENT_LIST || die_unknown $opt |
||
2530 | NAME=${NAME%s} |
||
2531 | eval show_list $NAME \$$(toupper $NAME)_LIST |
||
2532 | ;; |
||
2533 | --help|-h) show_help |
||
2534 | ;; |
||
2535 | --fatal-warnings) enable fatal_warnings |
||
2536 | ;; |
||
2537 | *) |
||
2538 | optname="${opt%%=*}" |
||
2539 | optname="${optname#--}" |
||
2540 | optname=$(echo "$optname" | sed 's/-/_/g') |
||
2541 | if is_in $optname $CMDLINE_SET; then |
||
2542 | eval $optname='$optval' |
||
2543 | elif is_in $optname $CMDLINE_APPEND; then |
||
2544 | append $optname "$optval" |
||
2545 | else |
||
2546 | die_unknown $opt |
||
2547 | fi |
||
2548 | ;; |
||
2549 | esac |
||
2550 | done |
||
2551 | |||
2552 | disabled logging && logfile=/dev/null |
||
2553 | |||
2554 | echo "# $0 $FFMPEG_CONFIGURATION" > $logfile |
||
2555 | set >> $logfile |
||
2556 | |||
2557 | test -n "$cross_prefix" && enable cross_compile |
||
2558 | |||
2559 | if enabled cross_compile; then |
||
2560 | test -n "$arch" && test -n "$target_os" || |
||
2561 | die "Must specify target arch and OS when cross-compiling" |
||
2562 | fi |
||
2563 | |||
2564 | ar_default="${cross_prefix}${ar_default}" |
||
2565 | cc_default="${cross_prefix}${cc_default}" |
||
2566 | cxx_default="${cross_prefix}${cxx_default}" |
||
2567 | nm_default="${cross_prefix}${nm_default}" |
||
2568 | pkg_config_default="${cross_prefix}${pkg_config_default}" |
||
2569 | ranlib="${cross_prefix}${ranlib}" |
||
2570 | strip_default="${cross_prefix}${strip_default}" |
||
2571 | |||
2572 | sysinclude_default="${sysroot}/usr/include" |
||
2573 | |||
2574 | test -n "$valgrind" && toolchain="valgrind-memcheck" |
||
2575 | |||
2576 | case "$toolchain" in |
||
2577 | clang-asan) |
||
2578 | cc_default="clang" |
||
2579 | add_cflags -fsanitize=address |
||
2580 | add_ldflags -fsanitize=address |
||
2581 | ;; |
||
2582 | clang-tsan) |
||
2583 | cc_default="clang" |
||
2584 | add_cflags -fsanitize=thread -pie |
||
2585 | add_ldflags -fsanitize=thread -pie |
||
2586 | ;; |
||
2587 | gcc-asan) |
||
2588 | cc_default="gcc" |
||
2589 | add_cflags -fsanitize=address |
||
2590 | add_ldflags -fsanitize=address |
||
2591 | ;; |
||
2592 | gcc-tsan) |
||
2593 | cc_default="gcc" |
||
2594 | add_cflags -fsanitize=thread -pie -fPIC |
||
2595 | add_ldflags -fsanitize=thread -pie -fPIC |
||
2596 | ;; |
||
2597 | valgrind-massif) |
||
2598 | target_exec_default=${valgrind:-"valgrind"} |
||
2599 | target_exec_args="--tool=massif --alloc-fn=av_malloc --alloc-fn=av_mallocz --alloc-fn=av_calloc --alloc-fn=av_fast_padded_malloc --alloc-fn=av_fast_malloc --alloc-fn=av_realloc_f --alloc-fn=av_fast_realloc --alloc-fn=av_realloc" |
||
2600 | ;; |
||
2601 | valgrind-memcheck) |
||
2602 | target_exec_default=${valgrind:-"valgrind"} |
||
2603 | target_exec_args="--error-exitcode=1 --malloc-fill=0x2a --track-origins=yes --leak-check=full --gen-suppressions=all --suppressions=$source_path/tests/fate-valgrind.supp" |
||
2604 | ;; |
||
2605 | msvc) |
||
2606 | cc_default="c99wrap cl" |
||
2607 | ld_default="c99wrap link" |
||
2608 | nm_default="dumpbin -symbols" |
||
2609 | ar_default="lib" |
||
2610 | target_os_default="win32" |
||
2611 | ;; |
||
2612 | icl) |
||
2613 | cc_default="c99wrap -noconv icl" |
||
2614 | ld_default="c99wrap xilink" |
||
2615 | nm_default="dumpbin -symbols" |
||
2616 | ar_default="xilib" |
||
2617 | target_os_default="win32" |
||
2618 | ;; |
||
2619 | gcov) |
||
2620 | add_cflags -fprofile-arcs -ftest-coverage |
||
2621 | add_ldflags -fprofile-arcs -ftest-coverage |
||
2622 | ;; |
||
2623 | ?*) |
||
2624 | die "Unknown toolchain $toolchain" |
||
2625 | ;; |
||
2626 | esac |
||
2627 | |||
2628 | set_default arch cc cxx pkg_config strip sysinclude target_exec target_os yasmexe |
||
2629 | enabled cross_compile || host_cc_default=$cc |
||
2630 | set_default host_cc |
||
2631 | |||
2632 | if ! $pkg_config --version >/dev/null 2>&1; then |
||
2633 | warn "$pkg_config not found, library detection may fail." |
||
2634 | pkg_config=false |
||
2635 | fi |
||
2636 | |||
2637 | exesuf() { |
||
2638 | case $1 in |
||
2639 | mingw32*|win32|win64|cygwin*|*-dos|freedos|opendos|os/2*|symbian) echo .exe ;; |
||
2640 | esac |
||
2641 | } |
||
2642 | |||
2643 | EXESUF=$(exesuf $target_os) |
||
2644 | HOSTEXESUF=$(exesuf $host_os) |
||
2645 | |||
2646 | # set temporary file name |
||
2647 | : ${TMPDIR:=$TEMPDIR} |
||
2648 | : ${TMPDIR:=$TMP} |
||
2649 | : ${TMPDIR:=/tmp} |
||
2650 | |||
2651 | if [ -n "$tempprefix" ] ; then |
||
2652 | mktemp(){ |
||
2653 | echo $tempprefix.${HOSTNAME}.${UID} |
||
2654 | } |
||
2655 | elif ! check_cmd mktemp -u XXXXXX; then |
||
2656 | # simple replacement for missing mktemp |
||
2657 | # NOT SAFE FOR GENERAL USE |
||
2658 | mktemp(){ |
||
2659 | echo "${2%%XXX*}.${HOSTNAME}.${UID}.$$" |
||
2660 | } |
||
2661 | fi |
||
2662 | |||
2663 | tmpfile(){ |
||
2664 | tmp=$(mktemp -u "${TMPDIR}/ffconf.XXXXXXXX")$2 && |
||
2665 | (set -C; exec > $tmp) 2>/dev/null || |
||
2666 | die "Unable to create temporary file in $TMPDIR." |
||
2667 | append TMPFILES $tmp |
||
2668 | eval $1=$tmp |
||
2669 | } |
||
2670 | |||
2671 | trap 'rm -f -- $TMPFILES' EXIT |
||
2672 | |||
2673 | tmpfile TMPASM .asm |
||
2674 | tmpfile TMPC .c |
||
2675 | tmpfile TMPCPP .cpp |
||
2676 | tmpfile TMPE $EXESUF |
||
2677 | tmpfile TMPH .h |
||
2678 | tmpfile TMPO .o |
||
2679 | tmpfile TMPS .S |
||
2680 | tmpfile TMPSH .sh |
||
2681 | tmpfile TMPV .ver |
||
2682 | |||
2683 | unset -f mktemp |
||
2684 | |||
2685 | chmod +x $TMPE |
||
2686 | |||
2687 | # make sure we can execute files in $TMPDIR |
||
2688 | cat > $TMPSH 2>> $logfile < |
||
2689 | #! /bin/sh |
||
2690 | EOF |
||
2691 | chmod +x $TMPSH >> $logfile 2>&1 |
||
2692 | if ! $TMPSH >> $logfile 2>&1; then |
||
2693 | cat < |
||
2694 | Unable to create and execute files in $TMPDIR. Set the TMPDIR environment |
||
2695 | variable to another directory and make sure that it is not mounted noexec. |
||
2696 | EOF |
||
2697 | die "Sanity test failed." |
||
2698 | fi |
||
2699 | |||
2700 | ccc_flags(){ |
||
2701 | for flag; do |
||
2702 | case $flag in |
||
2703 | -std=c99) echo -c99 ;; |
||
2704 | -mcpu=*) echo -arch ${flag#*=} ;; |
||
2705 | -mieee) echo -ieee ;; |
||
2706 | -O*|-fast) echo $flag ;; |
||
2707 | -fno-math-errno) echo -assume nomath_errno ;; |
||
2708 | -g) echo -g3 ;; |
||
2709 | -Wall) echo -msg_enable level2 ;; |
||
2710 | -Wno-pointer-sign) echo -msg_disable ptrmismatch1 ;; |
||
2711 | -Wl,*) echo $flag ;; |
||
2712 | -f*|-W*) ;; |
||
2713 | *) echo $flag ;; |
||
2714 | esac |
||
2715 | done |
||
2716 | } |
||
2717 | |||
2718 | cparser_flags(){ |
||
2719 | for flag; do |
||
2720 | case $flag in |
||
2721 | -Wno-switch) echo -Wno-switch-enum ;; |
||
2722 | -Wno-format-zero-length) ;; |
||
2723 | -Wdisabled-optimization) ;; |
||
2724 | -Wno-pointer-sign) echo -Wno-other ;; |
||
2725 | *) echo $flag ;; |
||
2726 | esac |
||
2727 | done |
||
2728 | } |
||
2729 | |||
2730 | msvc_common_flags(){ |
||
2731 | for flag; do |
||
2732 | case $flag in |
||
2733 | # In addition to specifying certain flags under the compiler |
||
2734 | # specific filters, they must be specified here as well or else the |
||
2735 | # generic catch all at the bottom will print the original flag. |
||
2736 | -Wall) ;; |
||
2737 | -std=c99) ;; |
||
2738 | # Common flags |
||
2739 | -fomit-frame-pointer) ;; |
||
2740 | -g) echo -Z7 ;; |
||
2741 | -fno-math-errno) ;; |
||
2742 | -fno-common) ;; |
||
2743 | -fno-signed-zeros) ;; |
||
2744 | -fPIC) ;; |
||
2745 | -mthumb) ;; |
||
2746 | -march=*) ;; |
||
2747 | -lz) echo zlib.lib ;; |
||
2748 | -lavifil32) echo vfw32.lib ;; |
||
2749 | -lavicap32) echo vfw32.lib user32.lib ;; |
||
2750 | -l*) echo ${flag#-l}.lib ;; |
||
2751 | *) echo $flag ;; |
||
2752 | esac |
||
2753 | done |
||
2754 | } |
||
2755 | |||
2756 | msvc_flags(){ |
||
2757 | msvc_common_flags "$@" |
||
2758 | for flag; do |
||
2759 | case $flag in |
||
2760 | -Wall) echo -W4 -wd4244 -wd4127 -wd4018 -wd4389 \ |
||
2761 | -wd4146 -wd4057 -wd4204 -wd4706 -wd4305 \ |
||
2762 | -wd4152 -wd4324 -we4013 -wd4100 -wd4214 \ |
||
2763 | -wd4554 \ |
||
2764 | -wd4273 ;; |
||
2765 | esac |
||
2766 | done |
||
2767 | } |
||
2768 | |||
2769 | icl_flags(){ |
||
2770 | msvc_common_flags "$@" |
||
2771 | for flag; do |
||
2772 | case $flag in |
||
2773 | # Despite what Intel's documentation says -Wall, which is supported |
||
2774 | # on Windows, does enable remarks so disable them here. |
||
2775 | -Wall) echo $flag -Qdiag-disable:remark ;; |
||
2776 | -std=c99) echo -Qstd=c99 ;; |
||
2777 | esac |
||
2778 | done |
||
2779 | } |
||
2780 | |||
2781 | pgi_flags(){ |
||
2782 | for flag; do |
||
2783 | case $flag in |
||
2784 | -flto) echo -Mipa=fast,libopt,libinline,vestigial ;; |
||
2785 | -fomit-frame-pointer) echo -Mnoframe ;; |
||
2786 | -g) echo -gopt ;; |
||
2787 | *) echo $flag ;; |
||
2788 | esac |
||
2789 | done |
||
2790 | } |
||
2791 | |||
2792 | suncc_flags(){ |
||
2793 | for flag; do |
||
2794 | case $flag in |
||
2795 | -march=*|-mcpu=*) |
||
2796 | case "${flag#*=}" in |
||
2797 | native) echo -xtarget=native ;; |
||
2798 | v9|niagara) echo -xarch=sparc ;; |
||
2799 | ultrasparc) echo -xarch=sparcvis ;; |
||
2800 | ultrasparc3|niagara2) echo -xarch=sparcvis2 ;; |
||
2801 | i586|pentium) echo -xchip=pentium ;; |
||
2802 | i686|pentiumpro|pentium2) echo -xtarget=pentium_pro ;; |
||
2803 | pentium3*|c3-2) echo -xtarget=pentium3 ;; |
||
2804 | pentium-m) echo -xarch=sse2 -xchip=pentium3 ;; |
||
2805 | pentium4*) echo -xtarget=pentium4 ;; |
||
2806 | prescott|nocona) echo -xarch=sse3 -xchip=pentium4 ;; |
||
2807 | *-sse3) echo -xarch=sse3 ;; |
||
2808 | core2) echo -xarch=ssse3 -xchip=core2 ;; |
||
2809 | corei7) echo -xarch=sse4_2 -xchip=nehalem ;; |
||
2810 | corei7-avx) echo -xarch=avx -xchip=sandybridge ;; |
||
2811 | amdfam10|barcelona) echo -xtarget=barcelona ;; |
||
2812 | bdver*) echo -xarch=avx ;; |
||
2813 | athlon-4|athlon-[mx]p) echo -xarch=ssea ;; |
||
2814 | k8|opteron|athlon64|athlon-fx) |
||
2815 | echo -xarch=sse2a ;; |
||
2816 | athlon*) echo -xarch=pentium_proa ;; |
||
2817 | esac |
||
2818 | ;; |
||
2819 | -std=c99) echo -xc99 ;; |
||
2820 | -fomit-frame-pointer) echo -xregs=frameptr ;; |
||
2821 | -fPIC) echo -KPIC -xcode=pic32 ;; |
||
2822 | -W*,*) echo $flag ;; |
||
2823 | -f*-*|-W*|-mimpure-text) ;; |
||
2824 | -shared) echo -G ;; |
||
2825 | *) echo $flag ;; |
||
2826 | esac |
||
2827 | done |
||
2828 | } |
||
2829 | |||
2830 | tms470_flags(){ |
||
2831 | for flag; do |
||
2832 | case $flag in |
||
2833 | -march=*|-mcpu=*) |
||
2834 | case "${flag#*=}" in |
||
2835 | armv7-a|cortex-a*) echo -mv=7a8 ;; |
||
2836 | armv7-r|cortex-r*) echo -mv=7r4 ;; |
||
2837 | armv7-m|cortex-m*) echo -mv=7m3 ;; |
||
2838 | armv6*|arm11*) echo -mv=6 ;; |
||
2839 | armv5*e|arm[79]*e*|arm9[24]6*|arm96*|arm102[26]) |
||
2840 | echo -mv=5e ;; |
||
2841 | armv4*|arm7*|arm9[24]*) echo -mv=4 ;; |
||
2842 | esac |
||
2843 | ;; |
||
2844 | -mfpu=neon) echo --float_support=vfpv3 --neon ;; |
||
2845 | -mfpu=vfp) echo --float_support=vfpv2 ;; |
||
2846 | -mfpu=vfpv3) echo --float_support=vfpv3 ;; |
||
2847 | -mfpu=vfpv3-d16) echo --float_support=vfpv3d16 ;; |
||
2848 | -msoft-float) echo --float_support=vfplib ;; |
||
2849 | -O[0-3]|-mf=*) echo $flag ;; |
||
2850 | -g) echo -g -mn ;; |
||
2851 | -pds=*) echo $flag ;; |
||
2852 | -D*|-I*) echo $flag ;; |
||
2853 | --gcc|--abi=*) echo $flag ;; |
||
2854 | -me) echo $flag ;; |
||
2855 | esac |
||
2856 | done |
||
2857 | } |
||
2858 | |||
2859 | probe_cc(){ |
||
2860 | pfx=$1 |
||
2861 | _cc=$2 |
||
2862 | |||
2863 | unset _type _ident _cc_c _cc_e _cc_o _flags _cflags |
||
2864 | unset _ld_o _ldflags _ld_lib _ld_path |
||
2865 | unset _depflags _DEPCMD _DEPFLAGS |
||
2866 | _flags_filter=echo |
||
2867 | |||
2868 | if $_cc --version 2>&1 | grep -q '^GNU assembler'; then |
||
2869 | true # no-op to avoid reading stdin in following checks |
||
2870 | elif $_cc -v 2>&1 | grep -q '^gcc.*LLVM'; then |
||
2871 | _type=llvm_gcc |
||
2872 | gcc_extra_ver=$(expr "$($_cc --version | head -n1)" : '.*\((.*)\)') |
||
2873 | _ident="llvm-gcc $($_cc -dumpversion) $gcc_extra_ver" |
||
2874 | _depflags='-MMD -MF $(@:.o=.d) -MT $@' |
||
2875 | _cflags_speed='-O3' |
||
2876 | _cflags_size='-Os' |
||
2877 | elif $_cc -v 2>&1 | grep -qi ^gcc; then |
||
2878 | _type=gcc |
||
2879 | gcc_version=$($_cc --version | head -n1) |
||
2880 | gcc_basever=$($_cc -dumpversion) |
||
2881 | gcc_pkg_ver=$(expr "$gcc_version" : '[^ ]* \(([^)]*)\)') |
||
2882 | gcc_ext_ver=$(expr "$gcc_version" : ".*$gcc_pkg_ver $gcc_basever \\(.*\\)") |
||
2883 | _ident=$(cleanws "gcc $gcc_basever $gcc_pkg_ver $gcc_ext_ver") |
||
2884 | if ! $_cc -dumpversion | grep -q '^2\.'; then |
||
2885 | _depflags='-MMD -MF $(@:.o=.d) -MT $@' |
||
2886 | fi |
||
2887 | _cflags_speed='-O3' |
||
2888 | _cflags_size='-Os' |
||
2889 | elif $_cc --version 2>/dev/null | grep -q ^icc; then |
||
2890 | _type=icc |
||
2891 | _ident=$($_cc --version | head -n1) |
||
2892 | _depflags='-MMD' |
||
2893 | _cflags_speed='-O3' |
||
2894 | _cflags_size='-Os' |
||
2895 | _cflags_noopt='-O1' |
||
2896 | elif $_cc -v 2>&1 | grep -q xlc; then |
||
2897 | _type=xlc |
||
2898 | _ident=$($_cc -qversion 2>/dev/null | head -n1) |
||
2899 | _cflags_speed='-O5' |
||
2900 | _cflags_size='-O5 -qcompact' |
||
2901 | elif $_cc -V 2>/dev/null | grep -q Compaq; then |
||
2902 | _type=ccc |
||
2903 | _ident=$($_cc -V | head -n1 | cut -d' ' -f1-3) |
||
2904 | _DEPFLAGS='-M' |
||
2905 | _cflags_speed='-fast' |
||
2906 | _cflags_size='-O1' |
||
2907 | _flags_filter=ccc_flags |
||
2908 | elif $_cc --vsn 2>/dev/null | grep -q "ARM C/C++ Compiler"; then |
||
2909 | test -d "$sysroot" || die "No valid sysroot specified." |
||
2910 | _type=armcc |
||
2911 | _ident=$($_cc --vsn | head -n1) |
||
2912 | armcc_conf="$PWD/armcc.conf" |
||
2913 | $_cc --arm_linux_configure \ |
||
2914 | --arm_linux_config_file="$armcc_conf" \ |
||
2915 | --configure_sysroot="$sysroot" \ |
||
2916 | --configure_cpp_headers="$sysinclude" >>$logfile 2>&1 || |
||
2917 | die "Error creating armcc configuration file." |
||
2918 | $_cc --vsn | grep -q RVCT && armcc_opt=rvct || armcc_opt=armcc |
||
2919 | _flags="--arm_linux_config_file=$armcc_conf --translate_gcc" |
||
2920 | as_default="${cross_prefix}gcc" |
||
2921 | _depflags='-MMD' |
||
2922 | _cflags_speed='-O3' |
||
2923 | _cflags_size='-Os' |
||
2924 | elif $_cc -version 2>/dev/null | grep -Eq 'TMS470|TI ARM'; then |
||
2925 | _type=tms470 |
||
2926 | _ident=$($_cc -version | head -n1 | tr -s ' ') |
||
2927 | _flags='--gcc --abi=eabi -me' |
||
2928 | _cc_e='-ppl -fe=$@' |
||
2929 | _cc_o='-fe=$@' |
||
2930 | _depflags='-ppa -ppd=$(@:.o=.d)' |
||
2931 | _cflags_speed='-O3 -mf=5' |
||
2932 | _cflags_size='-O3 -mf=2' |
||
2933 | _flags_filter=tms470_flags |
||
2934 | elif $_cc -v 2>&1 | grep -q clang; then |
||
2935 | _type=clang |
||
2936 | _ident=$($_cc --version | head -n1) |
||
2937 | _depflags='-MMD' |
||
2938 | _cflags_speed='-O3' |
||
2939 | _cflags_size='-Os' |
||
2940 | elif $_cc -V 2>&1 | grep -q Sun; then |
||
2941 | _type=suncc |
||
2942 | _ident=$($_cc -V 2>&1 | head -n1 | cut -d' ' -f 2-) |
||
2943 | _DEPCMD='$(DEP$(1)) $(DEP$(1)FLAGS) $($(1)DEP_FLAGS) $< | sed -e "1s,^.*: ,$@: ," -e "\$$!s,\$$, \\\," -e "1!s,^.*: , ," > $(@:.o=.d)' |
||
2944 | _DEPFLAGS='-xM1 -xc99' |
||
2945 | _ldflags='-std=c99' |
||
2946 | _cflags_speed='-O5' |
||
2947 | _cflags_size='-O5 -xspace' |
||
2948 | _flags_filter=suncc_flags |
||
2949 | elif $_cc -v 2>&1 | grep -q 'PathScale\|Path64'; then |
||
2950 | _type=pathscale |
||
2951 | _ident=$($_cc -v 2>&1 | head -n1 | tr -d :) |
||
2952 | _depflags='-MMD -MF $(@:.o=.d) -MT $@' |
||
2953 | _cflags_speed='-O2' |
||
2954 | _cflags_size='-Os' |
||
2955 | _flags_filter='filter_out -Wdisabled-optimization' |
||
2956 | elif $_cc -v 2>&1 | grep -q Open64; then |
||
2957 | _type=open64 |
||
2958 | _ident=$($_cc -v 2>&1 | head -n1 | tr -d :) |
||
2959 | _depflags='-MMD -MF $(@:.o=.d) -MT $@' |
||
2960 | _cflags_speed='-O2' |
||
2961 | _cflags_size='-Os' |
||
2962 | _flags_filter='filter_out -Wdisabled-optimization|-Wtype-limits|-fno-signed-zeros' |
||
2963 | elif $_cc -V 2>&1 | grep -q Portland; then |
||
2964 | _type=pgi |
||
2965 | _ident="PGI $($_cc -V 2>&1 | awk '/^pgcc/ { print $2; exit }')" |
||
2966 | opt_common='-alias=ansi -Mdse -Mlre -Mpre' |
||
2967 | _cflags_speed="-O3 -Mautoinline -Munroll=c:4 $opt_common" |
||
2968 | _cflags_size="-O2 -Munroll=c:1 $opt_common" |
||
2969 | _cflags_noopt="-O" |
||
2970 | _flags_filter=pgi_flags |
||
2971 | elif $_cc 2>&1 | grep -q Microsoft; then |
||
2972 | _type=msvc |
||
2973 | _ident=$($cc 2>&1 | head -n1) |
||
2974 | _DEPCMD='$(DEP$(1)) $(DEP$(1)FLAGS) $($(1)DEP_FLAGS) $< 2>&1 | awk '\''/including/ { sub(/^.*file: */, ""); gsub(/\\/, "/"); if (!match($$0, / /)) print "$@:", $$0 }'\'' > $(@:.o=.d)' |
||
2975 | _DEPFLAGS='$(CPPFLAGS) $(CFLAGS) -showIncludes -Zs' |
||
2976 | _cflags_speed="-O2" |
||
2977 | _cflags_size="-O1" |
||
2978 | # Nonstandard output options, to avoid msys path conversion issues. |
||
2979 | # Relies on wrapper to remap it. |
||
2980 | if $_cc 2>&1 | grep -q Linker; then |
||
2981 | _ld_o='-out $@' |
||
2982 | else |
||
2983 | _ld_o='-Fe$@' |
||
2984 | fi |
||
2985 | _cc_o='-Fo $@' |
||
2986 | _cc_e='-P -Fi $@' |
||
2987 | _flags_filter=msvc_flags |
||
2988 | _ld_lib='lib%.a' |
||
2989 | _ld_path='-libpath:' |
||
2990 | _flags='-nologo' |
||
2991 | _cflags='-D_USE_MATH_DEFINES -D_CRT_SECURE_NO_WARNINGS -Dinline=__inline -FIstdlib.h -Dstrtoll=_strtoi64' |
||
2992 | if [ $pfx = hostcc ]; then |
||
2993 | append _cflags -Dsnprintf=_snprintf |
||
2994 | fi |
||
2995 | disable stripping |
||
2996 | elif $_cc 2>&1 | grep -q Intel; then |
||
2997 | _type=icl |
||
2998 | _ident=$($cc 2>&1 | head -n1) |
||
2999 | _depflags='-QMMD -QMF$(@:.o=.d) -QMT$@' |
||
3000 | # Not only is O3 broken on 13.x+ but it is slower on all previous |
||
3001 | # versions (tested) as well. |
||
3002 | _cflags_speed="-O2" |
||
3003 | _cflags_size="-O1 -Oi" # -O1 without -Oi miscompiles stuff |
||
3004 | # Nonstandard output options, to avoid msys path conversion issues. |
||
3005 | # Relies on wrapper to remap it. |
||
3006 | if $_cc 2>&1 | grep -q Linker; then |
||
3007 | _ld_o='-out $@' |
||
3008 | else |
||
3009 | _ld_o='-Fe$@' |
||
3010 | fi |
||
3011 | _cc_o='-Fo $@' |
||
3012 | _cc_e='-P' |
||
3013 | _flags_filter=icl_flags |
||
3014 | _ld_lib='lib%.a' |
||
3015 | _ld_path='-libpath:' |
||
3016 | # -Qdiag-error to make icl error when seeing certain unknown arguments |
||
3017 | _flags='-nologo -Qdiag-error:4044,10157' |
||
3018 | # -Qvec- -Qsimd- to prevent miscompilation, -GS for consistency |
||
3019 | # with MSVC which enables it by default. |
||
3020 | _cflags='-D_USE_MATH_DEFINES -FIstdlib.h -Dstrtoll=_strtoi64 -Qms0 -Qvec- -Qsimd- -GS' |
||
3021 | if [ $pfx = hostcc ]; then |
||
3022 | append _cflags -Dsnprintf=_snprintf |
||
3023 | fi |
||
3024 | elif $_cc --version 2>/dev/null | grep -q ^cparser; then |
||
3025 | _type=cparser |
||
3026 | _ident=$($_cc --version | head -n1) |
||
3027 | _depflags='-MMD' |
||
3028 | _cflags_speed='-O4' |
||
3029 | _cflags_size='-O2' |
||
3030 | _flags_filter=cparser_flags |
||
3031 | fi |
||
3032 | |||
3033 | eval ${pfx}_type=\$_type |
||
3034 | eval ${pfx}_ident=\$_ident |
||
3035 | } |
||
3036 | |||
3037 | set_ccvars(){ |
||
3038 | eval ${1}_C=\${_cc_c-\${${1}_C}} |
||
3039 | eval ${1}_E=\${_cc_e-\${${1}_E}} |
||
3040 | eval ${1}_O=\${_cc_o-\${${1}_O}} |
||
3041 | |||
3042 | if [ -n "$_depflags" ]; then |
||
3043 | eval ${1}_DEPFLAGS=\$_depflags |
||
3044 | else |
||
3045 | eval ${1}DEP=\${_DEPCMD:-\$DEPCMD} |
||
3046 | eval ${1}DEP_FLAGS=\${_DEPFLAGS:-\$DEPFLAGS} |
||
3047 | eval DEP${1}FLAGS=\$_flags |
||
3048 | fi |
||
3049 | } |
||
3050 | |||
3051 | probe_cc cc "$cc" |
||
3052 | cflags_filter=$_flags_filter |
||
3053 | cflags_speed=$_cflags_speed |
||
3054 | cflags_size=$_cflags_size |
||
3055 | cflags_noopt=$_cflags_noopt |
||
3056 | add_cflags $_flags $_cflags |
||
3057 | cc_ldflags=$_ldflags |
||
3058 | set_ccvars CC |
||
3059 | |||
3060 | probe_cc hostcc "$host_cc" |
||
3061 | host_cflags_filter=$_flags_filter |
||
3062 | add_host_cflags $_flags $_cflags |
||
3063 | set_ccvars HOSTCC |
||
3064 | |||
3065 | test -n "$cc_type" && enable $cc_type || |
||
3066 | warn "Unknown C compiler $cc, unable to select optimal CFLAGS" |
||
3067 | |||
3068 | : ${as_default:=$cc} |
||
3069 | : ${dep_cc_default:=$cc} |
||
3070 | : ${ld_default:=$cc} |
||
3071 | : ${host_ld_default:=$host_cc} |
||
3072 | set_default ar as dep_cc ld host_ld |
||
3073 | |||
3074 | probe_cc as "$as" |
||
3075 | asflags_filter=$_flags_filter |
||
3076 | add_asflags $_flags $_cflags |
||
3077 | set_ccvars AS |
||
3078 | |||
3079 | probe_cc ld "$ld" |
||
3080 | ldflags_filter=$_flags_filter |
||
3081 | add_ldflags $_flags $_ldflags |
||
3082 | test "$cc_type" != "$ld_type" && add_ldflags $cc_ldflags |
||
3083 | LD_O=${_ld_o-$LD_O} |
||
3084 | LD_LIB=${_ld_lib-$LD_LIB} |
||
3085 | LD_PATH=${_ld_path-$LD_PATH} |
||
3086 | |||
3087 | probe_cc hostld "$host_ld" |
||
3088 | host_ldflags_filter=$_flags_filter |
||
3089 | add_host_ldflags $_flags $_ldflags |
||
3090 | HOSTLD_O=${_ld_o-$HOSTLD_O} |
||
3091 | |||
3092 | if [ -z "$CC_DEPFLAGS" ] && [ "$dep_cc" != "$cc" ]; then |
||
3093 | probe_cc depcc "$dep_cc" |
||
3094 | CCDEP=${_DEPCMD:-$DEPCMD} |
||
3095 | CCDEP_FLAGS=${_DEPFLAGS:=$DEPFLAGS} |
||
3096 | DEPCCFLAGS=$_flags |
||
3097 | fi |
||
3098 | |||
3099 | if $ar 2>&1 | grep -q Microsoft; then |
||
3100 | arflags="-nologo" |
||
3101 | ar_o='-out:$@' |
||
3102 | elif $ar 2>&1 | grep -q 'Texas Instruments'; then |
||
3103 | arflags="rq" |
||
3104 | ar_o='$@' |
||
3105 | elif $ar 2>&1 | grep -q 'Usage: ar.*-X.*any'; then |
||
3106 | arflags='-Xany -r -c' |
||
3107 | ar_o='$@' |
||
3108 | else |
||
3109 | arflags="rc" |
||
3110 | ar_o='$@' |
||
3111 | fi |
||
3112 | |||
3113 | add_cflags $extra_cflags |
||
3114 | add_cxxflags $extra_cxxflags |
||
3115 | add_asflags $extra_cflags |
||
3116 | |||
3117 | if test -n "$sysroot"; then |
||
3118 | case "$cc_type" in |
||
3119 | gcc|llvm_gcc|clang) |
||
3120 | add_cppflags --sysroot="$sysroot" |
||
3121 | add_ldflags --sysroot="$sysroot" |
||
3122 | ;; |
||
3123 | tms470) |
||
3124 | add_cppflags -I"$sysinclude" |
||
3125 | add_ldflags --sysroot="$sysroot" |
||
3126 | ;; |
||
3127 | esac |
||
3128 | fi |
||
3129 | |||
3130 | if test "$cpu" = host; then |
||
3131 | enabled cross_compile && |
||
3132 | die "--cpu=host makes no sense when cross-compiling." |
||
3133 | |||
3134 | case "$cc_type" in |
||
3135 | gcc|llvm_gcc) |
||
3136 | check_native(){ |
||
3137 | $cc $1=native -v -c -o $TMPO $TMPC >$TMPE 2>&1 || return |
||
3138 | sed -n "/cc1.*$1=/{ |
||
3139 | s/.*$1=\\([^ ]*\\).*/\\1/ |
||
3140 | p |
||
3141 | q |
||
3142 | }" $TMPE |
||
3143 | } |
||
3144 | cpu=$(check_native -march || check_native -mcpu) |
||
3145 | ;; |
||
3146 | esac |
||
3147 | |||
3148 | test "${cpu:-host}" = host && |
||
3149 | die "--cpu=host not supported with compiler $cc" |
||
3150 | fi |
||
3151 | |||
3152 | # Deal with common $arch aliases |
||
3153 | case "$arch" in |
||
3154 | aarch64|arm64) |
||
3155 | arch="aarch64" |
||
3156 | ;; |
||
3157 | arm*|iPad*|iPhone*) |
||
3158 | arch="arm" |
||
3159 | ;; |
||
3160 | mips*|IP*) |
||
3161 | arch="mips" |
||
3162 | ;; |
||
3163 | parisc*|hppa*) |
||
3164 | arch="parisc" |
||
3165 | ;; |
||
3166 | "Power Macintosh"|ppc*|powerpc*) |
||
3167 | arch="ppc" |
||
3168 | ;; |
||
3169 | s390|s390x) |
||
3170 | arch="s390" |
||
3171 | ;; |
||
3172 | sh4|sh) |
||
3173 | arch="sh4" |
||
3174 | ;; |
||
3175 | sun4u|sparc*) |
||
3176 | arch="sparc" |
||
3177 | ;; |
||
3178 | tilegx|tile-gx) |
||
3179 | arch="tilegx" |
||
3180 | ;; |
||
3181 | i[3-6]86|i86pc|BePC|x86pc|x86_64|x86_32|amd64) |
||
3182 | arch="x86" |
||
3183 | ;; |
||
3184 | esac |
||
3185 | |||
3186 | is_in $arch $ARCH_LIST || warn "unknown architecture $arch" |
||
3187 | enable $arch |
||
3188 | |||
3189 | # Add processor-specific flags |
||
3190 | if enabled aarch64; then |
||
3191 | |||
3192 | case $cpu in |
||
3193 | armv*) |
||
3194 | cpuflags="-march=$cpu" |
||
3195 | ;; |
||
3196 | *) |
||
3197 | cpuflags="-mcpu=$cpu" |
||
3198 | ;; |
||
3199 | esac |
||
3200 | |||
3201 | elif enabled alpha; then |
||
3202 | |||
3203 | cpuflags="-mcpu=$cpu" |
||
3204 | |||
3205 | elif enabled arm; then |
||
3206 | |||
3207 | check_arm_arch() { |
||
3208 | check_cpp_condition stddef.h \ |
||
3209 | "defined __ARM_ARCH_${1}__ || defined __TARGET_ARCH_${2:-$1}" \ |
||
3210 | $cpuflags |
||
3211 | } |
||
3212 | |||
3213 | probe_arm_arch() { |
||
3214 | if check_arm_arch 4; then echo armv4; |
||
3215 | elif check_arm_arch 4T; then echo armv4t; |
||
3216 | elif check_arm_arch 5; then echo armv5; |
||
3217 | elif check_arm_arch 5E; then echo armv5e; |
||
3218 | elif check_arm_arch 5T; then echo armv5t; |
||
3219 | elif check_arm_arch 5TE; then echo armv5te; |
||
3220 | elif check_arm_arch 5TEJ; then echo armv5te; |
||
3221 | elif check_arm_arch 6; then echo armv6; |
||
3222 | elif check_arm_arch 6J; then echo armv6j; |
||
3223 | elif check_arm_arch 6K; then echo armv6k; |
||
3224 | elif check_arm_arch 6Z; then echo armv6z; |
||
3225 | elif check_arm_arch 6ZK; then echo armv6zk; |
||
3226 | elif check_arm_arch 6T2; then echo armv6t2; |
||
3227 | elif check_arm_arch 7; then echo armv7; |
||
3228 | elif check_arm_arch 7A 7_A; then echo armv7-a; |
||
3229 | elif check_arm_arch 7R 7_R; then echo armv7-r; |
||
3230 | elif check_arm_arch 7M 7_M; then echo armv7-m; |
||
3231 | elif check_arm_arch 7EM 7E_M; then echo armv7-m; |
||
3232 | elif check_arm_arch 8A 8_A; then echo armv8-a; |
||
3233 | fi |
||
3234 | } |
||
3235 | |||
3236 | [ "$cpu" = generic ] && cpu=$(probe_arm_arch) |
||
3237 | |||
3238 | case $cpu in |
||
3239 | armv*) |
||
3240 | cpuflags="-march=$cpu" |
||
3241 | subarch=$(echo $cpu | sed 's/[^a-z0-9]//g') |
||
3242 | ;; |
||
3243 | *) |
||
3244 | cpuflags="-mcpu=$cpu" |
||
3245 | case $cpu in |
||
3246 | cortex-a*) subarch=armv7a ;; |
||
3247 | cortex-r*) subarch=armv7r ;; |
||
3248 | cortex-m*) enable thumb; subarch=armv7m ;; |
||
3249 | arm11*) subarch=armv6 ;; |
||
3250 | arm[79]*e*|arm9[24]6*|arm96*|arm102[26]) subarch=armv5te ;; |
||
3251 | armv4*|arm7*|arm9[24]*) subarch=armv4 ;; |
||
3252 | *) subarch=$(probe_arm_arch) ;; |
||
3253 | esac |
||
3254 | ;; |
||
3255 | esac |
||
3256 | |||
3257 | case "$subarch" in |
||
3258 | armv5t*) enable fast_clz ;; |
||
3259 | armv[6-8]*) enable fast_clz fast_unaligned ;; |
||
3260 | esac |
||
3261 | |||
3262 | elif enabled avr32; then |
||
3263 | |||
3264 | case $cpu in |
||
3265 | ap7[02]0[0-2]) |
||
3266 | subarch="avr32_ap" |
||
3267 | cpuflags="-mpart=$cpu" |
||
3268 | ;; |
||
3269 | ap) |
||
3270 | subarch="avr32_ap" |
||
3271 | cpuflags="-march=$cpu" |
||
3272 | ;; |
||
3273 | uc3[ab]*) |
||
3274 | subarch="avr32_uc" |
||
3275 | cpuflags="-mcpu=$cpu" |
||
3276 | ;; |
||
3277 | uc) |
||
3278 | subarch="avr32_uc" |
||
3279 | cpuflags="-march=$cpu" |
||
3280 | ;; |
||
3281 | esac |
||
3282 | |||
3283 | elif enabled bfin; then |
||
3284 | |||
3285 | cpuflags="-mcpu=$cpu" |
||
3286 | |||
3287 | elif enabled mips; then |
||
3288 | |||
3289 | cpuflags="-march=$cpu" |
||
3290 | |||
3291 | case $cpu in |
||
3292 | 24kc) |
||
3293 | disable mipsfpu |
||
3294 | disable mipsdspr1 |
||
3295 | disable mipsdspr2 |
||
3296 | ;; |
||
3297 | 24kf*) |
||
3298 | disable mipsdspr1 |
||
3299 | disable mipsdspr2 |
||
3300 | ;; |
||
3301 | 24kec|34kc|1004kc) |
||
3302 | disable mipsfpu |
||
3303 | disable mipsdspr2 |
||
3304 | ;; |
||
3305 | 24kef*|34kf*|1004kf*) |
||
3306 | disable mipsdspr2 |
||
3307 | ;; |
||
3308 | 74kc) |
||
3309 | disable mipsfpu |
||
3310 | ;; |
||
3311 | esac |
||
3312 | |||
3313 | elif enabled ppc; then |
||
3314 | |||
3315 | case $(tolower $cpu) in |
||
3316 | 601|ppc601|powerpc601) |
||
3317 | cpuflags="-mcpu=601" |
||
3318 | disable altivec |
||
3319 | ;; |
||
3320 | 603*|ppc603*|powerpc603*) |
||
3321 | cpuflags="-mcpu=603" |
||
3322 | disable altivec |
||
3323 | ;; |
||
3324 | 604*|ppc604*|powerpc604*) |
||
3325 | cpuflags="-mcpu=604" |
||
3326 | disable altivec |
||
3327 | ;; |
||
3328 | g3|75*|ppc75*|powerpc75*) |
||
3329 | cpuflags="-mcpu=750" |
||
3330 | disable altivec |
||
3331 | ;; |
||
3332 | g4|745*|ppc745*|powerpc745*) |
||
3333 | cpuflags="-mcpu=7450" |
||
3334 | ;; |
||
3335 | 74*|ppc74*|powerpc74*) |
||
3336 | cpuflags="-mcpu=7400" |
||
3337 | ;; |
||
3338 | g5|970|ppc970|powerpc970) |
||
3339 | cpuflags="-mcpu=970" |
||
3340 | ;; |
||
3341 | power[3-7]*) |
||
3342 | cpuflags="-mcpu=$cpu" |
||
3343 | ;; |
||
3344 | cell) |
||
3345 | cpuflags="-mcpu=cell" |
||
3346 | enable ldbrx |
||
3347 | ;; |
||
3348 | e500mc) |
||
3349 | cpuflags="-mcpu=e500mc" |
||
3350 | disable altivec |
||
3351 | ;; |
||
3352 | e500v2) |
||
3353 | cpuflags="-mcpu=8548 -mhard-float -mfloat-gprs=double" |
||
3354 | disable altivec |
||
3355 | ;; |
||
3356 | e500) |
||
3357 | cpuflags="-mcpu=8540 -mhard-float" |
||
3358 | disable altivec |
||
3359 | ;; |
||
3360 | esac |
||
3361 | |||
3362 | elif enabled sparc; then |
||
3363 | |||
3364 | case $cpu in |
||
3365 | cypress|f93[04]|tsc701|sparcl*|supersparc|hypersparc|niagara|v[789]) |
||
3366 | cpuflags="-mcpu=$cpu" |
||
3367 | disable vis |
||
3368 | ;; |
||
3369 | ultrasparc*|niagara[234]) |
||
3370 | cpuflags="-mcpu=$cpu" |
||
3371 | ;; |
||
3372 | esac |
||
3373 | |||
3374 | elif enabled x86; then |
||
3375 | |||
3376 | case $cpu in |
||
3377 | i[345]86|pentium) |
||
3378 | cpuflags="-march=$cpu" |
||
3379 | disable mmx |
||
3380 | ;; |
||
3381 | # targets that do NOT support nopl and conditional mov (cmov) |
||
3382 | pentium-mmx|k6|k6-[23]|winchip-c6|winchip2|c3) |
||
3383 | cpuflags="-march=$cpu" |
||
3384 | disable i686 |
||
3385 | ;; |
||
3386 | # targets that do support nopl and conditional mov (cmov) |
||
3387 | 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*) |
||
3388 | cpuflags="-march=$cpu" |
||
3389 | enable i686 |
||
3390 | enable fast_cmov |
||
3391 | ;; |
||
3392 | # targets that do support conditional mov but on which it's slow |
||
3393 | pentium4|pentium4m|prescott|nocona) |
||
3394 | cpuflags="-march=$cpu" |
||
3395 | enable i686 |
||
3396 | disable fast_cmov |
||
3397 | ;; |
||
3398 | esac |
||
3399 | |||
3400 | fi |
||
3401 | |||
3402 | if [ "$cpu" != generic ]; then |
||
3403 | add_cflags $cpuflags |
||
3404 | add_asflags $cpuflags |
||
3405 | fi |
||
3406 | |||
3407 | # compiler sanity check |
||
3408 | check_exec < |
||
3409 | int main(void){ return 0; } |
||
3410 | EOF |
||
3411 | if test "$?" != 0; then |
||
3412 | echo "$cc is unable to create an executable file." |
||
3413 | if test -z "$cross_prefix" && ! enabled cross_compile ; then |
||
3414 | echo "If $cc is a cross-compiler, use the --enable-cross-compile option." |
||
3415 | echo "Only do this if you know what cross compiling means." |
||
3416 | fi |
||
3417 | die "C compiler test failed." |
||
3418 | fi |
||
3419 | |||
3420 | add_cppflags -D_ISOC99_SOURCE |
||
3421 | add_cxxflags -D__STDC_CONSTANT_MACROS |
||
3422 | check_cflags -std=c99 |
||
3423 | check_cc -D_FILE_OFFSET_BITS=64 < |
||
3424 | #include |
||
3425 | EOF |
||
3426 | check_cc -D_LARGEFILE_SOURCE < |
||
3427 | #include |
||
3428 | EOF |
||
3429 | |||
3430 | check_host_cflags -std=c99 |
||
3431 | check_host_cflags -Wall |
||
3432 | |||
3433 | check_64bit(){ |
||
3434 | arch32=$1 |
||
3435 | arch64=$2 |
||
3436 | expr=$3 |
||
3437 | check_code cc "" "int test[2*($expr) - 1]" && |
||
3438 | subarch=$arch64 || subarch=$arch32 |
||
3439 | } |
||
3440 | |||
3441 | case "$arch" in |
||
3442 | aarch64|alpha|ia64) |
||
3443 | spic=$shared |
||
3444 | ;; |
||
3445 | mips) |
||
3446 | check_64bit mips mips64 '_MIPS_SIM > 1' |
||
3447 | spic=$shared |
||
3448 | ;; |
||
3449 | parisc) |
||
3450 | check_64bit parisc parisc64 'sizeof(void *) > 4' |
||
3451 | spic=$shared |
||
3452 | ;; |
||
3453 | ppc) |
||
3454 | check_64bit ppc ppc64 'sizeof(void *) > 4' |
||
3455 | spic=$shared |
||
3456 | ;; |
||
3457 | sparc) |
||
3458 | check_64bit sparc sparc64 'sizeof(void *) > 4' |
||
3459 | spic=$shared |
||
3460 | ;; |
||
3461 | x86) |
||
3462 | check_64bit x86_32 x86_64 'sizeof(void *) > 4' |
||
3463 | if test "$subarch" = "x86_64"; then |
||
3464 | spic=$shared |
||
3465 | fi |
||
3466 | ;; |
||
3467 | ppc) |
||
3468 | check_cc < |
||
3469 | int test[(int)sizeof(char*) - 7]; |
||
3470 | EOF |
||
3471 | ;; |
||
3472 | esac |
||
3473 | |||
3474 | enable $subarch |
||
3475 | enabled spic && enable_weak pic |
||
3476 | |||
3477 | # OS specific |
||
3478 | case $target_os in |
||
3479 | aix) |
||
3480 | SHFLAGS=-shared |
||
3481 | add_cppflags '-I\$(SRC_PATH)/compat/aix' |
||
3482 | enabled shared && add_ldflags -Wl,-brtl |
||
3483 | ;; |
||
3484 | haiku) |
||
3485 | prefix_default="/boot/common" |
||
3486 | network_extralibs="-lnetwork" |
||
3487 | host_libs= |
||
3488 | ;; |
||
3489 | sunos) |
||
3490 | SHFLAGS='-shared -Wl,-h,$$(@F)' |
||
3491 | enabled x86 && SHFLAGS="-mimpure-text $SHFLAGS" |
||
3492 | network_extralibs="-lsocket -lnsl" |
||
3493 | add_cppflags -D__EXTENSIONS__ -D_XOPEN_SOURCE=600 |
||
3494 | # When using suncc to build, the Solaris linker will mark |
||
3495 | # an executable with each instruction set encountered by |
||
3496 | # the Solaris assembler. As our libraries contain their own |
||
3497 | # guards for processor-specific code, instead suppress |
||
3498 | # generation of the HWCAPS ELF section on Solaris x86 only. |
||
3499 | enabled_all suncc x86 && |
||
3500 | echo "hwcap_1 = OVERRIDE;" > mapfile && |
||
3501 | add_ldflags -Wl,-M,mapfile |
||
3502 | nm_default='nm -P -g' |
||
3503 | ;; |
||
3504 | netbsd) |
||
3505 | disable symver |
||
3506 | oss_indev_extralibs="-lossaudio" |
||
3507 | oss_outdev_extralibs="-lossaudio" |
||
3508 | enabled gcc || check_ldflags -Wl,-zmuldefs |
||
3509 | ;; |
||
3510 | openbsd|bitrig) |
||
3511 | disable symver |
||
3512 | SHFLAGS='-shared' |
||
3513 | SLIB_INSTALL_NAME='$(SLIBNAME).$(LIBMAJOR).$(LIBMINOR)' |
||
3514 | SLIB_INSTALL_LINKS= |
||
3515 | oss_indev_extralibs="-lossaudio" |
||
3516 | oss_outdev_extralibs="-lossaudio" |
||
3517 | ;; |
||
3518 | dragonfly) |
||
3519 | disable symver |
||
3520 | ;; |
||
3521 | freebsd) |
||
3522 | ;; |
||
3523 | bsd/os) |
||
3524 | add_extralibs -lpoll -lgnugetopt |
||
3525 | strip="strip -d" |
||
3526 | ;; |
||
3527 | darwin) |
||
3528 | gas="gas-preprocessor.pl $cc" |
||
3529 | enabled ppc && add_asflags -force_cpusubtype_ALL |
||
3530 | SHFLAGS='-dynamiclib -Wl,-single_module -Wl,-install_name,$(SHLIBDIR)/$(SLIBNAME_WITH_MAJOR),-current_version,$(LIBVERSION),-compatibility_version,$(LIBMAJOR)' |
||
3531 | enabled x86_32 && append SHFLAGS -Wl,-read_only_relocs,suppress |
||
3532 | strip="${strip} -x" |
||
3533 | add_ldflags -Wl,-dynamic,-search_paths_first |
||
3534 | SLIBSUF=".dylib" |
||
3535 | SLIBNAME_WITH_VERSION='$(SLIBPREF)$(FULLNAME).$(LIBVERSION)$(SLIBSUF)' |
||
3536 | SLIBNAME_WITH_MAJOR='$(SLIBPREF)$(FULLNAME).$(LIBMAJOR)$(SLIBSUF)' |
||
3537 | objformat="macho" |
||
3538 | enabled x86_64 && objformat="macho64" |
||
3539 | enabled_any pic shared || |
||
3540 | { check_cflags -mdynamic-no-pic && add_asflags -mdynamic-no-pic; } |
||
3541 | ;; |
||
3542 | mingw32*) |
||
3543 | if test $target_os = "mingw32ce"; then |
||
3544 | disable network |
||
3545 | else |
||
3546 | target_os=mingw32 |
||
3547 | fi |
||
3548 | LIBTARGET=i386 |
||
3549 | if enabled x86_64; then |
||
3550 | LIBTARGET="i386:x86-64" |
||
3551 | elif enabled arm; then |
||
3552 | LIBTARGET=arm-wince |
||
3553 | fi |
||
3554 | check_ldflags -Wl,--nxcompat |
||
3555 | check_ldflags -Wl,--dynamicbase |
||
3556 | shlibdir_default="$bindir_default" |
||
3557 | SLIBPREF="" |
||
3558 | SLIBSUF=".dll" |
||
3559 | SLIBNAME_WITH_VERSION='$(SLIBPREF)$(FULLNAME)-$(LIBVERSION)$(SLIBSUF)' |
||
3560 | SLIBNAME_WITH_MAJOR='$(SLIBPREF)$(FULLNAME)-$(LIBMAJOR)$(SLIBSUF)' |
||
3561 | dlltool="${cross_prefix}dlltool" |
||
3562 | if check_cmd lib.exe -list; then |
||
3563 | SLIB_EXTRA_CMD=-'sed -e "s/ @[^ ]*//" $$(@:$(SLIBSUF)=.orig.def) > $$(@:$(SLIBSUF)=.def); lib.exe /machine:$(LIBTARGET) /def:$$(@:$(SLIBSUF)=.def) /out:$(SUBDIR)$(SLIBNAME:$(SLIBSUF)=.lib)' |
||
3564 | if enabled x86_64; then |
||
3565 | LIBTARGET=x64 |
||
3566 | fi |
||
3567 | elif check_cmd $dlltool --version; then |
||
3568 | 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)' |
||
3569 | fi |
||
3570 | SLIB_INSTALL_NAME='$(SLIBNAME_WITH_MAJOR)' |
||
3571 | SLIB_INSTALL_LINKS= |
||
3572 | SLIB_INSTALL_EXTRA_SHLIB='$(SLIBNAME:$(SLIBSUF)=.lib)' |
||
3573 | SLIB_INSTALL_EXTRA_LIB='lib$(SLIBNAME:$(SLIBSUF)=.dll.a) $(SLIBNAME_WITH_MAJOR:$(SLIBSUF)=.def)' |
||
3574 | 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' |
||
3575 | objformat="win32" |
||
3576 | ranlib=: |
||
3577 | enable dos_paths |
||
3578 | ;; |
||
3579 | win32|win64) |
||
3580 | if enabled shared; then |
||
3581 | # Link to the import library instead of the normal static library |
||
3582 | # for shared libs. |
||
3583 | LD_LIB='%.lib' |
||
3584 | # Cannot build both shared and static libs with MSVC or icl. |
||
3585 | disable static |
||
3586 | fi |
||
3587 | shlibdir_default="$bindir_default" |
||
3588 | SLIBPREF="" |
||
3589 | SLIBSUF=".dll" |
||
3590 | SLIBNAME_WITH_VERSION='$(SLIBPREF)$(FULLNAME)-$(LIBVERSION)$(SLIBSUF)' |
||
3591 | SLIBNAME_WITH_MAJOR='$(SLIBPREF)$(FULLNAME)-$(LIBMAJOR)$(SLIBSUF)' |
||
3592 | SLIB_CREATE_DEF_CMD='makedef $(SUBDIR)lib$(NAME).ver $(OBJS) > $$(@:$(SLIBSUF)=.def)' |
||
3593 | SLIB_INSTALL_NAME='$(SLIBNAME_WITH_MAJOR)' |
||
3594 | SLIB_INSTALL_LINKS= |
||
3595 | SLIB_INSTALL_EXTRA_SHLIB='$(SLIBNAME:$(SLIBSUF)=.lib)' |
||
3596 | SLIB_INSTALL_EXTRA_LIB='$(SLIBNAME_WITH_MAJOR:$(SLIBSUF)=.def)' |
||
3597 | SHFLAGS='-dll -def:$$(@:$(SLIBSUF)=.def) -implib:$(SUBDIR)$(SLIBNAME:$(SLIBSUF)=.lib)' |
||
3598 | objformat="win32" |
||
3599 | ranlib=: |
||
3600 | enable dos_paths |
||
3601 | ;; |
||
3602 | cygwin*) |
||
3603 | target_os=cygwin |
||
3604 | shlibdir_default="$bindir_default" |
||
3605 | SLIBPREF="cyg" |
||
3606 | SLIBSUF=".dll" |
||
3607 | SLIBNAME_WITH_VERSION='$(SLIBPREF)$(FULLNAME)-$(LIBVERSION)$(SLIBSUF)' |
||
3608 | SLIBNAME_WITH_MAJOR='$(SLIBPREF)$(FULLNAME)-$(LIBMAJOR)$(SLIBSUF)' |
||
3609 | SLIB_INSTALL_NAME='$(SLIBNAME_WITH_MAJOR)' |
||
3610 | SLIB_INSTALL_LINKS= |
||
3611 | SLIB_INSTALL_EXTRA_LIB='lib$(FULLNAME).dll.a' |
||
3612 | SHFLAGS='-shared -Wl,--out-implib,$(SUBDIR)lib$(FULLNAME).dll.a' |
||
3613 | objformat="win32" |
||
3614 | enable dos_paths |
||
3615 | ;; |
||
3616 | *-dos|freedos|opendos) |
||
3617 | network_extralibs="-lsocket" |
||
3618 | objformat="coff" |
||
3619 | enable dos_paths |
||
3620 | add_cppflags -U__STRICT_ANSI__ |
||
3621 | ;; |
||
3622 | linux) |
||
3623 | enable dv1394 |
||
3624 | ;; |
||
3625 | irix*) |
||
3626 | target_os=irix |
||
3627 | ranlib="echo ignoring ranlib" |
||
3628 | ;; |
||
3629 | os/2*) |
||
3630 | strip="lxlite -CS" |
||
3631 | ln_s="cp -f" |
||
3632 | objformat="aout" |
||
3633 | add_cppflags -D_GNU_SOURCE |
||
3634 | add_ldflags -Zomf -Zbin-files -Zargs-wild -Zmap |
||
3635 | SHFLAGS='$(SUBDIR)$(NAME).def -Zdll -Zomf' |
||
3636 | LIBSUF="_s.a" |
||
3637 | SLIBPREF="" |
||
3638 | SLIBSUF=".dll" |
||
3639 | SLIBNAME_WITH_VERSION='$(SLIBPREF)$(NAME)-$(LIBVERSION)$(SLIBSUF)' |
||
3640 | SLIBNAME_WITH_MAJOR='$(SLIBPREF)$(shell echo $(NAME) | cut -c1-6)$(LIBMAJOR)$(SLIBSUF)' |
||
3641 | SLIB_CREATE_DEF_CMD='echo LIBRARY $(SLIBNAME_WITH_MAJOR) INITINSTANCE TERMINSTANCE > $(SUBDIR)$(NAME).def; \ |
||
3642 | echo PROTMODE >> $(SUBDIR)$(NAME).def; \ |
||
3643 | echo CODE PRELOAD MOVEABLE DISCARDABLE >> $(SUBDIR)$(NAME).def; \ |
||
3644 | echo DATA PRELOAD MOVEABLE MULTIPLE NONSHARED >> $(SUBDIR)$(NAME).def; \ |
||
3645 | echo EXPORTS >> $(SUBDIR)$(NAME).def; \ |
||
3646 | emxexp -o $(OBJS) >> $(SUBDIR)$(NAME).def' |
||
3647 | SLIB_EXTRA_CMD='emximp -o $(SUBDIR)$(LIBPREF)$(NAME)_dll.a $(SUBDIR)$(NAME).def; \ |
||
3648 | emximp -o $(SUBDIR)$(LIBPREF)$(NAME)_dll.lib $(SUBDIR)$(NAME).def;' |
||
3649 | SLIB_INSTALL_EXTRA_LIB='$(LIBPREF)$(NAME)_dll.a $(LIBPREF)$(NAME)_dll.lib' |
||
3650 | enable dos_paths |
||
3651 | enable_weak os2threads |
||
3652 | ;; |
||
3653 | gnu/kfreebsd) |
||
3654 | add_cppflags -D_BSD_SOURCE |
||
3655 | ;; |
||
3656 | gnu) |
||
3657 | ;; |
||
3658 | qnx) |
||
3659 | add_cppflags -D_QNX_SOURCE |
||
3660 | network_extralibs="-lsocket" |
||
3661 | ;; |
||
3662 | symbian) |
||
3663 | SLIBSUF=".dll" |
||
3664 | enable dos_paths |
||
3665 | add_cflags --include=$sysinclude/gcce/gcce.h -fvisibility=default |
||
3666 | add_cppflags -D__GCCE__ -D__SYMBIAN32__ -DSYMBIAN_OE_POSIX_SIGNALS |
||
3667 | add_ldflags -Wl,--target1-abs,--no-undefined \ |
||
3668 | -Wl,-Ttext,0x80000,-Tdata,0x1000000 -shared \ |
||
3669 | -Wl,--entry=_E32Startup -Wl,-u,_E32Startup |
||
3670 | add_extralibs -l:eexe.lib -l:usrt2_2.lib -l:dfpaeabi.dso \ |
||
3671 | -l:drtaeabi.dso -l:scppnwdl.dso -lsupc++ -lgcc \ |
||
3672 | -l:libc.dso -l:libm.dso -l:euser.dso -l:libcrt0.lib |
||
3673 | ;; |
||
3674 | osf1) |
||
3675 | add_cppflags -D_OSF_SOURCE -D_POSIX_PII -D_REENTRANT |
||
3676 | ;; |
||
3677 | minix) |
||
3678 | ;; |
||
3679 | plan9) |
||
3680 | add_cppflags -D_C99_SNPRINTF_EXTENSION \ |
||
3681 | -D_REENTRANT_SOURCE \ |
||
3682 | -D_RESEARCH_SOURCE \ |
||
3683 | -DFD_SETSIZE=96 \ |
||
3684 | -DHAVE_SOCK_OPTS |
||
3685 | add_compat strtod.o strtod=avpriv_strtod |
||
3686 | network_extralibs='-lbsd' |
||
3687 | exeobjs=compat/plan9/main.o |
||
3688 | disable ffserver |
||
3689 | cp_f='cp' |
||
3690 | ;; |
||
3691 | none) |
||
3692 | ;; |
||
3693 | *) |
||
3694 | die "Unknown OS '$target_os'." |
||
3695 | ;; |
||
3696 | esac |
||
3697 | |||
3698 | # determine libc flavour |
||
3699 | |||
3700 | # uclibc defines __GLIBC__, so it needs to be checked before glibc. |
||
3701 | if check_cpp_condition features.h "defined __UCLIBC__"; then |
||
3702 | libc_type=uclibc |
||
3703 | add_cppflags -D_POSIX_C_SOURCE=200112 -D_XOPEN_SOURCE=600 |
||
3704 | elif check_cpp_condition features.h "defined __GLIBC__"; then |
||
3705 | libc_type=glibc |
||
3706 | add_cppflags -D_POSIX_C_SOURCE=200112 -D_XOPEN_SOURCE=600 |
||
3707 | # MinGW headers can be installed on Cygwin, so check for newlib first. |
||
3708 | elif check_cpp_condition newlib.h "defined _NEWLIB_VERSION"; then |
||
3709 | libc_type=newlib |
||
3710 | add_cppflags -U__STRICT_ANSI__ |
||
3711 | elif check_header _mingw.h; then |
||
3712 | libc_type=mingw |
||
3713 | check_cpp_condition _mingw.h \ |
||
3714 | "defined (__MINGW64_VERSION_MAJOR) || (__MINGW32_MAJOR_VERSION > 3) || \ |
||
3715 | (__MINGW32_MAJOR_VERSION == 3 && __MINGW32_MINOR_VERSION >= 15)" || |
||
3716 | die "ERROR: MinGW runtime version must be >= 3.15." |
||
3717 | add_cppflags -U__STRICT_ANSI__ |
||
3718 | if check_cpp_condition _mingw.h "defined(__MINGW64_VERSION_MAJOR) && \ |
||
3719 | __MINGW64_VERSION_MAJOR < 3"; then |
||
3720 | add_compat msvcrt/snprintf.o |
||
3721 | add_cflags "-include $source_path/compat/msvcrt/snprintf.h" |
||
3722 | else |
||
3723 | add_cppflags -D__USE_MINGW_ANSI_STDIO=1 |
||
3724 | fi |
||
3725 | elif check_func_headers stdlib.h _get_doserrno; then |
||
3726 | libc_type=msvcrt |
||
3727 | add_compat strtod.o strtod=avpriv_strtod |
||
3728 | add_compat msvcrt/snprintf.o snprintf=avpriv_snprintf \ |
||
3729 | _snprintf=avpriv_snprintf \ |
||
3730 | vsnprintf=avpriv_vsnprintf |
||
3731 | # The MSVC 2010 headers (Win 7.0 SDK) set _WIN32_WINNT to |
||
3732 | # 0x601 by default unless something else is set by the user. |
||
3733 | # This can easily lead to us detecting functions only present |
||
3734 | # in such new versions and producing binaries requiring windows 7.0. |
||
3735 | # Therefore explicitly set the default to XP unless the user has |
||
3736 | # set something else on the command line. |
||
3737 | check_cpp_condition stdlib.h "defined(_WIN32_WINNT)" || add_cppflags -D_WIN32_WINNT=0x0502 |
||
3738 | elif check_cpp_condition stddef.h "defined __KLIBC__"; then |
||
3739 | libc_type=klibc |
||
3740 | elif check_cpp_condition sys/cdefs.h "defined __BIONIC__"; then |
||
3741 | libc_type=bionic |
||
3742 | add_compat strtod.o strtod=avpriv_strtod |
||
3743 | fi |
||
3744 | |||
3745 | test -n "$libc_type" && enable $libc_type |
||
3746 | |||
3747 | # hacks for compiler/libc/os combinations |
||
3748 | |||
3749 | if enabled_all tms470 glibc; then |
||
3750 | CPPFLAGS="-I${source_path}/compat/tms470 ${CPPFLAGS}" |
||
3751 | add_cppflags -D__USER_LABEL_PREFIX__= |
||
3752 | add_cppflags -D__builtin_memset=memset |
||
3753 | add_cppflags -D__gnuc_va_list=va_list -D_VA_LIST_DEFINED |
||
3754 | add_cflags -pds=48 # incompatible redefinition of macro |
||
3755 | fi |
||
3756 | |||
3757 | if enabled_all ccc glibc; then |
||
3758 | add_ldflags -Wl,-z,now # calls to libots crash without this |
||
3759 | fi |
||
3760 | |||
3761 | esc(){ |
||
3762 | echo "$*" | sed 's/%/%25/g;s/:/%3a/g' |
||
3763 | } |
||
3764 | |||
3765 | echo "config:$arch:$subarch:$cpu:$target_os:$(esc $cc_ident):$(esc $FFMPEG_CONFIGURATION)" >config.fate |
||
3766 | |||
3767 | check_cpp_condition stdlib.h "defined(__PIC__) || defined(__pic__) || defined(PIC)" && enable_weak pic |
||
3768 | |||
3769 | set_default $PATHS_LIST |
||
3770 | set_default nm |
||
3771 | |||
3772 | # we need to build at least one lib type |
||
3773 | if ! enabled_any static shared; then |
||
3774 | cat < |
||
3775 | At least one library type must be built. |
||
3776 | Specify --enable-static to build the static libraries or --enable-shared to |
||
3777 | build the shared libraries as well. To only build the shared libraries specify |
||
3778 | --disable-static in addition to --enable-shared. |
||
3779 | EOF |
||
3780 | exit 1; |
||
3781 | fi |
||
3782 | |||
3783 | # backward compatibility layer for incompatible_libav/fork_abi |
||
3784 | enabled incompatible_fork_abi && enable incompatible_libav_abi |
||
3785 | enabled incompatible_libav_abi && enable incompatible_fork_abi |
||
3786 | |||
3787 | die_license_disabled() { |
||
3788 | enabled $1 || { enabled $2 && die "$2 is $1 and --enable-$1 is not specified."; } |
||
3789 | } |
||
3790 | |||
3791 | die_license_disabled_gpl() { |
||
3792 | enabled $1 || { enabled $2 && die "$2 is incompatible with the gpl and --enable-$1 is not specified."; } |
||
3793 | } |
||
3794 | |||
3795 | die_license_disabled gpl frei0r |
||
3796 | die_license_disabled gpl libcdio |
||
3797 | die_license_disabled gpl libutvideo |
||
3798 | die_license_disabled gpl libvidstab |
||
3799 | die_license_disabled gpl libx264 |
||
3800 | die_license_disabled gpl libxavs |
||
3801 | die_license_disabled gpl libxvid |
||
3802 | die_license_disabled gpl libzvbi |
||
3803 | die_license_disabled gpl x11grab |
||
3804 | |||
3805 | die_license_disabled nonfree libaacplus |
||
3806 | die_license_disabled nonfree libfaac |
||
3807 | enabled gpl && die_license_disabled_gpl nonfree libfdk_aac |
||
3808 | enabled gpl && die_license_disabled_gpl nonfree openssl |
||
3809 | |||
3810 | die_license_disabled version3 libopencore_amrnb |
||
3811 | die_license_disabled version3 libopencore_amrwb |
||
3812 | die_license_disabled version3 libvo_aacenc |
||
3813 | die_license_disabled version3 libvo_amrwbenc |
||
3814 | |||
3815 | enabled version3 && { enabled gpl && enable gplv3 || enable lgplv3; } |
||
3816 | |||
3817 | disabled optimizations || check_cflags -fomit-frame-pointer |
||
3818 | |||
3819 | enable_weak_pic() { |
||
3820 | disabled pic && return |
||
3821 | enable pic |
||
3822 | add_cppflags -DPIC |
||
3823 | case "$target_os" in |
||
3824 | mingw*|cygwin*) |
||
3825 | ;; |
||
3826 | *) |
||
3827 | add_cflags -fPIC |
||
3828 | ;; |
||
3829 | esac |
||
3830 | add_asflags -fPIC |
||
3831 | } |
||
3832 | |||
3833 | enabled pic && enable_weak_pic |
||
3834 | |||
3835 | check_cc < |
||
3836 | int ff_extern; |
||
3837 | EOF |
||
3838 | sym=$($nm $TMPO | awk '/ff_extern/{ print substr($0, match($0, /[^ \t]*ff_extern/)) }') |
||
3839 | extern_prefix=${sym%%ff_extern*} |
||
3840 | |||
3841 | check_cc < |
||
3842 | void foo(void) { __asm__ volatile ("" ::); } |
||
3843 | EOF |
||
3844 | |||
3845 | _restrict= |
||
3846 | for restrict_keyword in restrict __restrict__ __restrict; do |
||
3847 | check_cc < |
||
3848 | void foo(char * $restrict_keyword p); |
||
3849 | EOF |
||
3850 | done |
||
3851 | |||
3852 | check_cc < |
||
3853 | void foo(void) { _Pragma("GCC diagnostic ignored \"-Wdeprecated-declarations\"") } |
||
3854 | EOF |
||
3855 | |||
3856 | check_cc < |
||
3857 | struct { int x; } __attribute__((packed)) x; |
||
3858 | EOF |
||
3859 | |||
3860 | check_cc < |
||
3861 | union { int x; } __attribute__((may_alias)) x; |
||
3862 | EOF |
||
3863 | |||
3864 | check_cc < |
||
3865 | unsigned int endian = 'B' << 24 | 'I' << 16 | 'G' << 8 | 'E'; |
||
3866 | EOF |
||
3867 | od -t x1 $TMPO | grep -q '42 *49 *47 *45' && enable bigendian |
||
3868 | |||
3869 | check_inline_asm inline_asm_labels '"1:\n"' |
||
3870 | |||
3871 | if enabled alpha; then |
||
3872 | |||
3873 | check_cflags -mieee |
||
3874 | |||
3875 | elif enabled arm; then |
||
3876 | |||
3877 | check_cpp_condition stddef.h "defined __thumb__" && check_cc < |
||
3878 | float func(float a, float b){ return a+b; } |
||
3879 | EOF |
||
3880 | |||
3881 | enabled thumb && check_cflags -mthumb || check_cflags -marm |
||
3882 | nogas=die |
||
3883 | |||
3884 | if check_cpp_condition stddef.h "defined __ARM_PCS_VFP"; then |
||
3885 | enable vfp_args |
||
3886 | elif ! check_cpp_condition stddef.h "defined __ARM_PCS || defined __SOFTFP__"; then |
||
3887 | case "${cross_prefix:-$cc}" in |
||
3888 | *hardfloat*) enable vfp_args; fpabi=vfp ;; |
||
3889 | *) check_ld "cc" < |
||
3890 | __asm__ (".eabi_attribute 28, 1"); |
||
3891 | int main(void) { return 0; } |
||
3892 | EOF |
||
3893 | esac |
||
3894 | warn "Compiler does not indicate floating-point ABI, guessing $fpabi." |
||
3895 | fi |
||
3896 | |||
3897 | enabled armv5te && check_insn armv5te 'qadd r0, r0, r0' |
||
3898 | enabled armv6 && check_insn armv6 'sadd16 r0, r0, r0' |
||
3899 | enabled armv6t2 && check_insn armv6t2 'movt r0, #0' |
||
3900 | enabled neon && check_insn neon 'vadd.i16 q0, q0, q0' |
||
3901 | enabled vfp && check_insn vfp 'fadds s0, s0, s0' |
||
3902 | enabled vfpv3 && check_insn vfpv3 'vmov.f32 s0, #1.0' |
||
3903 | |||
3904 | [ $target_os = linux ] || |
||
3905 | map 'enabled_any ${v}_external ${v}_inline || disable $v' \ |
||
3906 | $ARCH_EXT_LIST_ARM |
||
3907 | |||
3908 | check_inline_asm asm_mod_q '"add r0, %Q0, %R0" :: "r"((long long)0)' |
||
3909 | check_inline_asm asm_mod_y '"vmul.i32 d0, d0, %y0" :: "x"(0)' |
||
3910 | |||
3911 | [ $target_os != win32 ] && enabled_all armv6t2 shared !pic && enable_weak_pic |
||
3912 | |||
3913 | elif enabled mips; then |
||
3914 | |||
3915 | check_inline_asm loongson '"dmult.g $1, $2, $3"' |
||
3916 | enabled mips32r2 && add_cflags "-mips32r2" && add_asflags "-mips32r2" && |
||
3917 | check_inline_asm mips32r2 '"rotr $t0, $t1, 1"' |
||
3918 | enabled mipsdspr1 && add_cflags "-mdsp" && add_asflags "-mdsp" && |
||
3919 | check_inline_asm mipsdspr1 '"addu.qb $t0, $t1, $t2"' |
||
3920 | enabled mipsdspr2 && add_cflags "-mdspr2" && add_asflags "-mdspr2" && |
||
3921 | check_inline_asm mipsdspr2 '"absq_s.qb $t0, $t1"' |
||
3922 | enabled mipsfpu && add_cflags "-mhard-float" && add_asflags "-mhard-float" && |
||
3923 | check_inline_asm mipsfpu '"madd.d $f0, $f2, $f4, $f6"' |
||
3924 | |||
3925 | elif enabled parisc; then |
||
3926 | |||
3927 | if enabled gcc; then |
||
3928 | case $($cc -dumpversion) in |
||
3929 | 4.[3-8].*) check_cflags -fno-optimize-sibling-calls ;; |
||
3930 | esac |
||
3931 | fi |
||
3932 | |||
3933 | elif enabled ppc; then |
||
3934 | |||
3935 | enable local_aligned_8 local_aligned_16 |
||
3936 | |||
3937 | check_inline_asm dcbzl '"dcbzl 0, %0" :: "r"(0)' |
||
3938 | check_inline_asm ibm_asm '"add 0, 0, 0"' |
||
3939 | check_inline_asm ppc4xx '"maclhw r10, r11, r12"' |
||
3940 | check_inline_asm xform_asm '"lwzx %1, %y0" :: "Z"(*(int*)0), "r"(0)' |
||
3941 | |||
3942 | # AltiVec flags: The FSF version of GCC differs from the Apple version |
||
3943 | if enabled altivec; then |
||
3944 | if ! enabled_any pic ppc64; then |
||
3945 | nogas=warn |
||
3946 | fi |
||
3947 | check_cflags -maltivec -mabi=altivec && |
||
3948 | { check_header altivec.h && inc_altivec_h="#include |
||
3949 | check_cflags -faltivec |
||
3950 | |||
3951 | # check if our compiler supports Motorola AltiVec C API |
||
3952 | check_cc < |
||
3953 | $inc_altivec_h |
||
3954 | int main(void) { |
||
3955 | vector signed int v1 = (vector signed int) { 0 }; |
||
3956 | vector signed int v2 = (vector signed int) { 1 }; |
||
3957 | v1 = vec_add(v1, v2); |
||
3958 | return 0; |
||
3959 | } |
||
3960 | EOF |
||
3961 | |||
3962 | enabled altivec || warn "Altivec disabled, possibly missing --cpu flag" |
||
3963 | fi |
||
3964 | |||
3965 | elif enabled sparc; then |
||
3966 | |||
3967 | enabled vis && check_inline_asm vis '"pdist %f0, %f0, %f0"' |
||
3968 | |||
3969 | elif enabled x86; then |
||
3970 | |||
3971 | check_builtin rdtsc intrin.h "__rdtsc()" |
||
3972 | check_builtin mm_empty mmintrin.h "_mm_empty()" |
||
3973 | |||
3974 | enable local_aligned_8 local_aligned_16 |
||
3975 | |||
3976 | # check whether EBP is available on x86 |
||
3977 | # As 'i' is stored on the stack, this program will crash |
||
3978 | # if the base pointer is used to access it because the |
||
3979 | # base pointer is cleared in the inline assembly code. |
||
3980 | check_exec_crash < |
||
3981 | volatile int i=0; |
||
3982 | __asm__ volatile ("xorl %%ebp, %%ebp" ::: "%ebp"); |
||
3983 | return i; |
||
3984 | EOF |
||
3985 | |||
3986 | # check whether EBX is available on x86 |
||
3987 | check_inline_asm ebx_available '""::"b"(0)' && |
||
3988 | check_inline_asm ebx_available '"":::"%ebx"' |
||
3989 | |||
3990 | # check whether xmm clobbers are supported |
||
3991 | check_inline_asm xmm_clobbers '"":::"%xmm0"' |
||
3992 | |||
3993 | # check whether binutils is new enough to compile SSSE3/MMXEXT |
||
3994 | enabled ssse3 && check_inline_asm ssse3_inline '"pabsw %xmm0, %xmm0"' |
||
3995 | enabled mmxext && check_inline_asm mmxext_inline '"pmaxub %mm0, %mm1"' |
||
3996 | |||
3997 | if ! disabled_any asm mmx yasm; then |
||
3998 | if check_cmd $yasmexe --version; then |
||
3999 | enabled x86_64 && yasm_extra="-m amd64" |
||
4000 | yasm_debug="-g dwarf2" |
||
4001 | elif check_cmd nasm -v; then |
||
4002 | yasmexe=nasm |
||
4003 | yasm_debug="-g -F dwarf" |
||
4004 | enabled x86_64 && test "$objformat" = elf && objformat=elf64 |
||
4005 | fi |
||
4006 | |||
4007 | YASMFLAGS="-f $objformat $yasm_extra" |
||
4008 | enabled pic && append YASMFLAGS "-DPIC" |
||
4009 | test -n "$extern_prefix" && append YASMFLAGS "-DPREFIX" |
||
4010 | case "$objformat" in |
||
4011 | elf*) enabled debug && append YASMFLAGS $yasm_debug ;; |
||
4012 | esac |
||
4013 | |||
4014 | check_yasm "movbe ecx, [5]" && enable yasm || |
||
4015 | die "yasm/nasm not found or too old. Use --disable-yasm for a crippled build." |
||
4016 | check_yasm "vextractf128 xmm0, ymm0, 0" || disable avx_external avresample |
||
4017 | check_yasm "vfmaddps ymm0, ymm1, ymm2, ymm3" || disable fma4_external |
||
4018 | check_yasm "CPU amdnop" && enable cpunop |
||
4019 | fi |
||
4020 | |||
4021 | case "$cpu" in |
||
4022 | athlon*|opteron*|k8*|pentium|pentium-mmx|prescott|nocona|atom|geode) |
||
4023 | disable fast_clz |
||
4024 | ;; |
||
4025 | esac |
||
4026 | |||
4027 | fi |
||
4028 | |||
4029 | if enabled asm; then |
||
4030 | as=${gas:=$as} |
||
4031 | check_as < |
||
4032 | $nogas "GNU assembler not found, install gas-preprocessor" |
||
4033 | .macro m n |
||
4034 | \n: .int 0 |
||
4035 | .endm |
||
4036 | m x |
||
4037 | EOF |
||
4038 | fi |
||
4039 | |||
4040 | check_ldflags -Wl,--as-needed |
||
4041 | |||
4042 | if check_func dlopen; then |
||
4043 | ldl= |
||
4044 | elif check_func dlopen -ldl; then |
||
4045 | ldl=-ldl |
||
4046 | fi |
||
4047 | |||
4048 | if ! disabled network; then |
||
4049 | check_type "sys/types.h sys/socket.h" socklen_t |
||
4050 | check_type netdb.h "struct addrinfo" |
||
4051 | check_type netinet/in.h "struct group_source_req" -D_BSD_SOURCE |
||
4052 | check_type netinet/in.h "struct ip_mreq_source" -D_BSD_SOURCE |
||
4053 | check_type netinet/in.h "struct ipv6_mreq" -D_DARWIN_C_SOURCE |
||
4054 | check_type netinet/in.h "struct sockaddr_in6" |
||
4055 | check_type poll.h "struct pollfd" |
||
4056 | check_type "sys/types.h sys/socket.h" "struct sockaddr_storage" |
||
4057 | check_struct "sys/types.h sys/socket.h" "struct sockaddr" sa_len |
||
4058 | check_type netinet/sctp.h "struct sctp_event_subscribe" |
||
4059 | check_func getaddrinfo $network_extralibs |
||
4060 | check_func getservbyport $network_extralibs |
||
4061 | # Prefer arpa/inet.h over winsock2 |
||
4062 | if check_header arpa/inet.h ; then |
||
4063 | check_func closesocket |
||
4064 | elif check_header winsock2.h ; then |
||
4065 | check_func_headers winsock2.h closesocket -lws2 && |
||
4066 | network_extralibs="-lws2" || |
||
4067 | { check_func_headers winsock2.h closesocket -lws2_32 && |
||
4068 | network_extralibs="-lws2_32"; } |
||
4069 | check_func_headers ws2tcpip.h getaddrinfo $network_extralibs |
||
4070 | check_type ws2tcpip.h socklen_t |
||
4071 | check_type ws2tcpip.h "struct addrinfo" |
||
4072 | check_type ws2tcpip.h "struct group_source_req" |
||
4073 | check_type ws2tcpip.h "struct ip_mreq_source" |
||
4074 | check_type ws2tcpip.h "struct ipv6_mreq" |
||
4075 | check_type winsock2.h "struct pollfd" |
||
4076 | check_type ws2tcpip.h "struct sockaddr_in6" |
||
4077 | check_type ws2tcpip.h "struct sockaddr_storage" |
||
4078 | check_struct winsock2.h "struct sockaddr" sa_len |
||
4079 | else |
||
4080 | disable network |
||
4081 | fi |
||
4082 | fi |
||
4083 | |||
4084 | # Solaris has nanosleep in -lrt, OpenSolaris no longer needs that |
||
4085 | check_func nanosleep || { check_func nanosleep -lrt && add_extralibs -lrt; } |
||
4086 | |||
4087 | check_func access |
||
4088 | check_func clock_gettime || { check_func clock_gettime -lrt && add_extralibs -lrt; } |
||
4089 | check_func fcntl |
||
4090 | check_func fork |
||
4091 | check_func_headers stdlib.h getenv |
||
4092 | check_func gethrtime |
||
4093 | check_func getopt |
||
4094 | check_func getrusage |
||
4095 | check_struct "sys/time.h sys/resource.h" "struct rusage" ru_maxrss |
||
4096 | check_func gettimeofday |
||
4097 | check_func inet_aton $network_extralibs |
||
4098 | check_func isatty |
||
4099 | check_func localtime_r |
||
4100 | check_func ${malloc_prefix}memalign && enable memalign |
||
4101 | check_func mkstemp |
||
4102 | check_func mmap |
||
4103 | check_func mprotect |
||
4104 | check_func ${malloc_prefix}posix_memalign && enable posix_memalign |
||
4105 | check_func_headers malloc.h _aligned_malloc && enable aligned_malloc |
||
4106 | check_func setrlimit |
||
4107 | check_struct "sys/stat.h" "struct stat" st_mtim.tv_nsec -D_BSD_SOURCE |
||
4108 | check_func strerror_r |
||
4109 | check_func sched_getaffinity |
||
4110 | check_builtin sync_val_compare_and_swap "" "int *ptr; int oldval, newval; __sync_val_compare_and_swap(ptr, oldval, newval)" |
||
4111 | check_builtin machine_rw_barrier mbarrier.h "__machine_rw_barrier()" |
||
4112 | check_builtin atomic_cas_ptr atomic.h "void **ptr; void *oldval, *newval; atomic_cas_ptr(ptr, oldval, newval)" |
||
4113 | check_builtin MemoryBarrier windows.h "MemoryBarrier()" |
||
4114 | check_builtin sarestart signal.h "SA_RESTART" |
||
4115 | check_func sysconf |
||
4116 | check_func sysctl |
||
4117 | check_func usleep |
||
4118 | check_func_headers conio.h kbhit |
||
4119 | check_func_headers windows.h PeekNamedPipe |
||
4120 | check_func_headers io.h setmode |
||
4121 | check_func_headers lzo/lzo1x.h lzo1x_999_compress |
||
4122 | check_lib2 "windows.h shellapi.h" CommandLineToArgvW -lshell32 |
||
4123 | check_lib2 "windows.h wincrypt.h" CryptGenRandom -ladvapi32 |
||
4124 | check_lib2 "windows.h psapi.h" GetProcessMemoryInfo -lpsapi |
||
4125 | check_func_headers windows.h GetProcessAffinityMask |
||
4126 | check_func_headers windows.h GetProcessTimes |
||
4127 | check_func_headers windows.h GetSystemTimeAsFileTime |
||
4128 | check_func_headers windows.h MapViewOfFile |
||
4129 | check_func_headers windows.h SetConsoleTextAttribute |
||
4130 | check_func_headers windows.h Sleep |
||
4131 | check_func_headers windows.h VirtualAlloc |
||
4132 | check_func_headers glob.h glob |
||
4133 | check_func_headers "X11/Xlib.h X11/extensions/Xvlib.h" XvGetPortAttribute -lXv -lX11 -lXext |
||
4134 | |||
4135 | check_header cl/cl.h |
||
4136 | check_header direct.h |
||
4137 | check_header dlfcn.h |
||
4138 | check_header dxva.h |
||
4139 | check_header dxva2api.h -D_WIN32_WINNT=0x0600 |
||
4140 | check_header io.h |
||
4141 | check_header libcrystalhd/libcrystalhd_if.h |
||
4142 | check_header malloc.h |
||
4143 | check_header poll.h |
||
4144 | check_header sys/mman.h |
||
4145 | check_header sys/param.h |
||
4146 | check_header sys/resource.h |
||
4147 | check_header sys/select.h |
||
4148 | check_header sys/time.h |
||
4149 | check_header sys/un.h |
||
4150 | check_header termios.h |
||
4151 | check_header unistd.h |
||
4152 | check_header vdpau/vdpau.h |
||
4153 | check_header vdpau/vdpau_x11.h |
||
4154 | check_header VideoDecodeAcceleration/VDADecoder.h |
||
4155 | check_header windows.h |
||
4156 | check_header X11/extensions/XvMClib.h |
||
4157 | check_header asm/types.h |
||
4158 | |||
4159 | disabled zlib || check_lib zlib.h zlibVersion -lz || disable zlib |
||
4160 | disabled bzlib || check_lib2 bzlib.h BZ2_bzlibVersion -lbz2 || disable bzlib |
||
4161 | |||
4162 | if ! disabled w32threads && ! enabled pthreads; then |
||
4163 | check_func_headers "windows.h process.h" _beginthreadex && enable w32threads |
||
4164 | fi |
||
4165 | |||
4166 | # check for some common methods of building with pthread support |
||
4167 | # do this before the optional library checks as some of them require pthreads |
||
4168 | if ! disabled pthreads && ! enabled w32threads && ! enabled os2threads; then |
||
4169 | enable pthreads |
||
4170 | if check_func pthread_create; then |
||
4171 | : |
||
4172 | elif check_func pthread_create -pthread; then |
||
4173 | add_cflags -pthread |
||
4174 | add_extralibs -pthread |
||
4175 | elif check_func pthread_create -pthreads; then |
||
4176 | add_cflags -pthreads |
||
4177 | add_extralibs -pthreads |
||
4178 | elif check_func pthread_create -lpthreadGC2; then |
||
4179 | add_extralibs -lpthreadGC2 |
||
4180 | elif ! check_lib pthread.h pthread_create -lpthread; then |
||
4181 | disable pthreads |
||
4182 | fi |
||
4183 | fi |
||
4184 | |||
4185 | for thread in $THREADS_LIST; do |
||
4186 | if enabled $thread; then |
||
4187 | test -n "$thread_type" && |
||
4188 | die "ERROR: Only one thread type must be selected." || |
||
4189 | thread_type="$thread" |
||
4190 | fi |
||
4191 | done |
||
4192 | |||
4193 | if enabled pthreads; then |
||
4194 | check_func pthread_cancel |
||
4195 | fi |
||
4196 | |||
4197 | enabled sync_val_compare_and_swap && enable atomics_gcc |
||
4198 | enabled_all atomic_cas_ptr machine_rw_barrier && enable atomics_suncc |
||
4199 | enabled MemoryBarrier && enable atomics_win32 |
||
4200 | |||
4201 | check_lib math.h sin -lm && LIBM="-lm" |
||
4202 | disabled crystalhd || check_lib libcrystalhd/libcrystalhd_if.h DtsCrystalHDVersion -lcrystalhd || disable crystalhd |
||
4203 | |||
4204 | atan2f_args=2 |
||
4205 | ldexpf_args=2 |
||
4206 | powf_args=2 |
||
4207 | |||
4208 | for func in $MATH_FUNCS; do |
||
4209 | eval check_mathfunc $func \${${func}_args:-1} |
||
4210 | done |
||
4211 | |||
4212 | # these are off by default, so fail if requested and not available |
||
4213 | enabled avisynth && { { check_lib2 "windows.h" LoadLibrary; } || |
||
4214 | { check_lib2 "dlfcn.h" dlopen -ldl; } || |
||
4215 | die "ERROR: LoadLibrary/dlopen not found for avisynth"; } |
||
4216 | enabled fontconfig && require_pkg_config fontconfig "fontconfig/fontconfig.h" FcInit |
||
4217 | enabled frei0r && { check_header frei0r.h || die "ERROR: frei0r.h header not found"; } |
||
4218 | enabled gnutls && require_pkg_config gnutls gnutls/gnutls.h gnutls_global_init |
||
4219 | enabled ladspa && { check_header ladspa.h || die "ERROR: ladspa.h header not found"; } |
||
4220 | enabled libiec61883 && require libiec61883 libiec61883/iec61883.h iec61883_cmp_connect -lraw1394 -lavc1394 -lrom1394 -liec61883 |
||
4221 | enabled libaacplus && require "libaacplus >= 2.0.0" aacplus.h aacplusEncOpen -laacplus |
||
4222 | enabled libass && require_pkg_config libass ass/ass.h ass_library_init |
||
4223 | enabled libbluray && require libbluray libbluray/bluray.h bd_open -lbluray |
||
4224 | enabled libcelt && require libcelt celt/celt.h celt_decode -lcelt0 && |
||
4225 | { check_lib celt/celt.h celt_decoder_create_custom -lcelt0 || |
||
4226 | die "ERROR: libcelt must be installed and version must be >= 0.11.0."; } |
||
4227 | enabled libcaca && require_pkg_config caca caca.h caca_create_canvas |
||
4228 | enabled libfaac && require2 libfaac "stdint.h faac.h" faacEncGetVersion -lfaac |
||
4229 | enabled libfdk_aac && require libfdk_aac fdk-aac/aacenc_lib.h aacEncOpen -lfdk-aac |
||
4230 | flite_libs="-lflite_cmu_time_awb -lflite_cmu_us_awb -lflite_cmu_us_kal -lflite_cmu_us_kal16 -lflite_cmu_us_rms -lflite_cmu_us_slt -lflite_usenglish -lflite_cmulex -lflite" |
||
4231 | enabled libflite && require2 libflite "flite/flite.h" flite_init $flite_libs |
||
4232 | enabled libfreetype && require_pkg_config freetype2 "ft2build.h freetype/freetype.h" FT_Init_FreeType |
||
4233 | enabled libgme && require libgme gme/gme.h gme_new_emu -lgme -lstdc++ |
||
4234 | enabled libgsm && { for gsm_hdr in "gsm.h" "gsm/gsm.h"; do |
||
4235 | check_lib "${gsm_hdr}" gsm_create -lgsm && break; |
||
4236 | done || die "ERROR: libgsm not found"; } |
||
4237 | enabled libilbc && require libilbc ilbc.h WebRtcIlbcfix_InitDecode -lilbc |
||
4238 | enabled libmodplug && require libmodplug libmodplug/modplug.h ModPlug_Load -lmodplug |
||
4239 | enabled libmp3lame && require "libmp3lame >= 3.98.3" lame/lame.h lame_set_VBR_quality -lmp3lame |
||
4240 | enabled libnut && require libnut libnut.h nut_demuxer_init -lnut |
||
4241 | enabled libopencore_amrnb && require libopencore_amrnb opencore-amrnb/interf_dec.h Decoder_Interface_init -lopencore-amrnb |
||
4242 | enabled libopencore_amrwb && require libopencore_amrwb opencore-amrwb/dec_if.h D_IF_init -lopencore-amrwb |
||
4243 | enabled libopencv && require_pkg_config opencv opencv/cxcore.h cvCreateImageHeader |
||
4244 | enabled libopenjpeg && { check_lib openjpeg-1.5/openjpeg.h opj_version -lopenjpeg || |
||
4245 | check_lib openjpeg.h opj_version -lopenjpeg || |
||
4246 | die "ERROR: libopenjpeg not found"; } |
||
4247 | enabled libopus && require_pkg_config opus opus_multistream.h opus_multistream_decoder_create |
||
4248 | enabled libpulse && require_pkg_config libpulse-simple pulse/simple.h pa_simple_new |
||
4249 | enabled libquvi && require_pkg_config libquvi quvi/quvi.h quvi_init |
||
4250 | enabled librtmp && require_pkg_config librtmp librtmp/rtmp.h RTMP_Socket |
||
4251 | enabled libschroedinger && require_pkg_config schroedinger-1.0 schroedinger/schro.h schro_init |
||
4252 | enabled libshine && require_pkg_config shine shine/layer3.h shine_encode_buffer |
||
4253 | enabled libsoxr && require libsoxr soxr.h soxr_create -lsoxr |
||
4254 | enabled libssh && require_pkg_config libssh libssh/sftp.h sftp_init |
||
4255 | enabled libspeex && require libspeex speex/speex.h speex_decoder_init -lspeex |
||
4256 | enabled libstagefright_h264 && require_cpp libstagefright_h264 "binder/ProcessState.h media/stagefright/MetaData.h |
||
4257 | media/stagefright/MediaBufferGroup.h media/stagefright/MediaDebug.h media/stagefright/MediaDefs.h |
||
4258 | media/stagefright/OMXClient.h media/stagefright/OMXCodec.h" android::OMXClient -lstagefright -lmedia -lutils -lbinder -lgnustl_static |
||
4259 | enabled libtheora && require libtheora theora/theoraenc.h th_info_init -ltheoraenc -ltheoradec -logg |
||
4260 | enabled libtwolame && require libtwolame twolame.h twolame_init -ltwolame && |
||
4261 | { check_lib twolame.h twolame_encode_buffer_float32_interleaved -ltwolame || |
||
4262 | die "ERROR: libtwolame must be installed and version must be >= 0.3.10"; } |
||
4263 | enabled libutvideo && require_cpp utvideo "stdint.h stdlib.h utvideo/utvideo.h utvideo/Codec.h" 'CCodec*' -lutvideo -lstdc++ |
||
4264 | enabled libv4l2 && require_pkg_config libv4l2 libv4l2.h v4l2_ioctl |
||
4265 | enabled libvidstab && require_pkg_config vidstab vid.stab/libvidstab.h vsMotionDetectInit |
||
4266 | enabled libvo_aacenc && require libvo_aacenc vo-aacenc/voAAC.h voGetAACEncAPI -lvo-aacenc |
||
4267 | enabled libvo_amrwbenc && require libvo_amrwbenc vo-amrwbenc/enc_if.h E_IF_init -lvo-amrwbenc |
||
4268 | enabled libvorbis && require libvorbis vorbis/vorbisenc.h vorbis_info_init -lvorbisenc -lvorbis -logg |
||
4269 | enabled libvpx && { |
||
4270 | enabled libvpx_vp8_decoder && { check_lib2 "vpx/vpx_decoder.h vpx/vp8dx.h" vpx_codec_dec_init_ver -lvpx || |
||
4271 | die "ERROR: libvpx decoder version must be >=0.9.1"; } |
||
4272 | enabled libvpx_vp8_encoder && { check_lib2 "vpx/vpx_encoder.h vpx/vp8cx.h" "vpx_codec_enc_init_ver VP8E_SET_MAX_INTRA_BITRATE_PCT" -lvpx || |
||
4273 | die "ERROR: libvpx encoder version must be >=0.9.7"; } |
||
4274 | enabled libvpx_vp9_decoder && { check_lib2 "vpx/vpx_decoder.h vpx/vp8dx.h" "vpx_codec_vp9_dx" -lvpx || disable libvpx_vp9_decoder; } |
||
4275 | enabled libvpx_vp9_encoder && { check_lib2 "vpx/vpx_encoder.h vpx/vp8cx.h" "vpx_codec_vp9_cx" -lvpx || disable libvpx_vp9_encoder; } } |
||
4276 | enabled libwavpack && require libwavpack wavpack/wavpack.h WavpackOpenFileOutput -lwavpack |
||
4277 | enabled libx264 && require libx264 x264.h x264_encoder_encode -lx264 && |
||
4278 | { check_cpp_condition x264.h "X264_BUILD >= 118" || |
||
4279 | die "ERROR: libx264 must be installed and version must be >= 0.118."; } |
||
4280 | enabled libxavs && require libxavs xavs.h xavs_encoder_encode -lxavs |
||
4281 | enabled libxvid && require libxvid xvid.h xvid_global -lxvidcore |
||
4282 | enabled libzmq && require_pkg_config libzmq zmq.h zmq_ctx_new |
||
4283 | enabled libzvbi && require libzvbi libzvbi.h vbi_decoder_new -lzvbi |
||
4284 | enabled openal && { { for al_libs in "${OPENAL_LIBS}" "-lopenal" "-lOpenAL32"; do |
||
4285 | check_lib 'AL/al.h' alGetError "${al_libs}" && break; done } || |
||
4286 | die "ERROR: openal not found"; } && |
||
4287 | { check_cpp_condition "AL/al.h" "defined(AL_VERSION_1_1)" || |
||
4288 | die "ERROR: openal must be installed and version must be 1.1 or compatible"; } |
||
4289 | enabled opencl && { check_lib2 OpenCL/cl.h clEnqueueNDRangeKernel -Wl,-framework,OpenCL || |
||
4290 | check_lib2 CL/cl.h clEnqueueNDRangeKernel -lOpenCL || |
||
4291 | die "ERROR: opencl not found"; } && |
||
4292 | { ! enabled_any w32threads os2threads || |
||
4293 | die "opencl currently needs --enable-pthreads or --disable-w32threads"; } && |
||
4294 | { check_cpp_condition "OpenCL/cl.h" "defined(CL_VERSION_1_2)" || |
||
4295 | check_cpp_condition "CL/cl.h" "defined(CL_VERSION_1_2)" || |
||
4296 | die "ERROR: opencl must be installed and version must be 1.2 or compatible"; } |
||
4297 | enabled openssl && { check_lib openssl/ssl.h SSL_library_init -lssl -lcrypto || |
||
4298 | check_lib openssl/ssl.h SSL_library_init -lssl32 -leay32 || |
||
4299 | check_lib openssl/ssl.h SSL_library_init -lssl -lcrypto -lws2_32 -lgdi32 || |
||
4300 | die "ERROR: openssl not found"; } |
||
4301 | |||
4302 | if enabled gnutls; then |
||
4303 | { check_lib nettle/bignum.h nettle_mpz_get_str_256 -lnettle -lhogweed -lgmp && enable nettle; } || |
||
4304 | { check_lib gcrypt.h gcry_mpi_new -lgcrypt && enable gcrypt; } |
||
4305 | fi |
||
4306 | |||
4307 | # libdc1394 check |
||
4308 | if enabled libdc1394; then |
||
4309 | { check_lib dc1394/dc1394.h dc1394_new -ldc1394 -lraw1394 && |
||
4310 | enable libdc1394_2; } || |
||
4311 | { check_lib libdc1394/dc1394_control.h dc1394_create_handle -ldc1394_control -lraw1394 && |
||
4312 | enable libdc1394_1; } || |
||
4313 | die "ERROR: No version of libdc1394 found " |
||
4314 | fi |
||
4315 | |||
4316 | SDL_CONFIG="${cross_prefix}sdl-config" |
||
4317 | if check_pkg_config sdl SDL_events.h SDL_PollEvent; then |
||
4318 | check_cpp_condition SDL.h "(SDL_MAJOR_VERSION<<16 | SDL_MINOR_VERSION<<8 | SDL_PATCHLEVEL) >= 0x010201" $sdl_cflags && |
||
4319 | check_cpp_condition SDL.h "(SDL_MAJOR_VERSION<<16 | SDL_MINOR_VERSION<<8 | SDL_PATCHLEVEL) < 0x010300" $sdl_cflags && |
||
4320 | enable sdl |
||
4321 | else |
||
4322 | if "${SDL_CONFIG}" --version > /dev/null 2>&1; then |
||
4323 | sdl_cflags=$("${SDL_CONFIG}" --cflags) |
||
4324 | sdl_libs=$("${SDL_CONFIG}" --libs) |
||
4325 | check_func_headers SDL_version.h SDL_Linked_Version $sdl_cflags $sdl_libs && |
||
4326 | check_cpp_condition SDL.h "(SDL_MAJOR_VERSION<<16 | SDL_MINOR_VERSION<<8 | SDL_PATCHLEVEL) >= 0x010201" $sdl_cflags && |
||
4327 | check_cpp_condition SDL.h "(SDL_MAJOR_VERSION<<16 | SDL_MINOR_VERSION<<8 | SDL_PATCHLEVEL) < 0x010300" $sdl_cflags && |
||
4328 | enable sdl |
||
4329 | fi |
||
4330 | fi |
||
4331 | enabled sdl && add_cflags $sdl_cflags && add_extralibs $sdl_libs |
||
4332 | |||
4333 | texi2html --help 2> /dev/null | grep -q 'init-file' && enable texi2html || disable texi2html |
||
4334 | makeinfo --version > /dev/null 2>&1 && enable makeinfo || disable makeinfo |
||
4335 | perl --version > /dev/null 2>&1 && enable perl || disable perl |
||
4336 | pod2man --help > /dev/null 2>&1 && enable pod2man || disable pod2man |
||
4337 | rsync --help 2> /dev/null | grep -q 'contimeout' && enable rsync_contimeout || disable rsync_contimeout |
||
4338 | |||
4339 | check_header linux/fb.h |
||
4340 | check_header linux/videodev.h |
||
4341 | check_header linux/videodev2.h |
||
4342 | check_code cc linux/videodev2.h "struct v4l2_frmsizeenum vfse; vfse.discrete.width = 0;" && enable_safe struct_v4l2_frmivalenum_discrete |
||
4343 | |||
4344 | check_header sys/videoio.h |
||
4345 | |||
4346 | check_func_headers "windows.h vfw.h" capCreateCaptureWindow "$vfwcap_indev_extralibs" |
||
4347 | # check that WM_CAP_DRIVER_CONNECT is defined to the proper value |
||
4348 | # w32api 3.12 had it defined wrong |
||
4349 | check_cpp_condition vfw.h "WM_CAP_DRIVER_CONNECT > WM_USER" && enable vfwcap_defines |
||
4350 | |||
4351 | check_type "dshow.h" IBaseFilter |
||
4352 | |||
4353 | # check for ioctl_meteor.h, ioctl_bt848.h and alternatives |
||
4354 | { check_header dev/bktr/ioctl_meteor.h && |
||
4355 | check_header dev/bktr/ioctl_bt848.h; } || |
||
4356 | { check_header machine/ioctl_meteor.h && |
||
4357 | check_header machine/ioctl_bt848.h; } || |
||
4358 | { check_header dev/video/meteor/ioctl_meteor.h && |
||
4359 | check_header dev/video/bktr/ioctl_bt848.h; } || |
||
4360 | check_header dev/ic/bt8xx.h |
||
4361 | |||
4362 | check_header sndio.h |
||
4363 | if check_struct sys/soundcard.h audio_buf_info bytes; then |
||
4364 | enable_safe sys/soundcard.h |
||
4365 | else |
||
4366 | check_cc -D__BSD_VISIBLE -D__XSI_VISIBLE < |
||
4367 | #include |
||
4368 | audio_buf_info abc; |
||
4369 | EOF |
||
4370 | fi |
||
4371 | check_header soundcard.h |
||
4372 | |||
4373 | enabled_any alsa_indev alsa_outdev && |
||
4374 | check_lib2 alsa/asoundlib.h snd_pcm_htimestamp -lasound |
||
4375 | |||
4376 | enabled jack_indev && check_lib2 jack/jack.h jack_client_open -ljack && check_func sem_timedwait && |
||
4377 | check_func jack_port_get_latency_range -ljack |
||
4378 | |||
4379 | enabled_any sndio_indev sndio_outdev && check_lib2 sndio.h sio_open -lsndio |
||
4380 | |||
4381 | if enabled libcdio; then |
||
4382 | check_lib2 "cdio/cdda.h cdio/paranoia.h" cdio_cddap_open -lcdio_paranoia -lcdio_cdda -lcdio || |
||
4383 | check_lib2 "cdio/paranoia/cdda.h cdio/paranoia/paranoia.h" cdio_cddap_open -lcdio_paranoia -lcdio_cdda -lcdio || |
||
4384 | die "ERROR: libcdio-paranoia not found" |
||
4385 | fi |
||
4386 | |||
4387 | enabled x11grab && |
||
4388 | require X11 X11/Xlib.h XOpenDisplay -lX11 && |
||
4389 | require Xext X11/extensions/XShm.h XShmCreateImage -lXext && |
||
4390 | require Xfixes X11/extensions/Xfixes.h XFixesGetCursorImage -lXfixes |
||
4391 | |||
4392 | enabled vaapi && |
||
4393 | check_lib va/va.h vaInitialize -lva || |
||
4394 | disable vaapi |
||
4395 | |||
4396 | enabled vdpau && |
||
4397 | check_cpp_condition vdpau/vdpau.h "defined VDP_DECODER_PROFILE_MPEG4_PART2_ASP" || |
||
4398 | disable vdpau |
||
4399 | |||
4400 | # Funny iconv installations are not unusual, so check it after all flags have been set |
||
4401 | disabled iconv || check_func_headers iconv.h iconv || check_lib2 iconv.h iconv -liconv || disable iconv |
||
4402 | |||
4403 | enabled debug && add_cflags -g"$debuglevel" && add_asflags -g"$debuglevel" |
||
4404 | |||
4405 | # add some useful compiler flags if supported |
||
4406 | check_cflags -Wdeclaration-after-statement |
||
4407 | check_cflags -Wall |
||
4408 | check_cflags -Wno-parentheses |
||
4409 | check_cflags -Wno-switch |
||
4410 | check_cflags -Wno-format-zero-length |
||
4411 | check_cflags -Wdisabled-optimization |
||
4412 | check_cflags -Wpointer-arith |
||
4413 | check_cflags -Wredundant-decls |
||
4414 | check_cflags -Wno-pointer-sign |
||
4415 | check_cflags -Wwrite-strings |
||
4416 | check_cflags -Wtype-limits |
||
4417 | check_cflags -Wundef |
||
4418 | check_cflags -Wmissing-prototypes |
||
4419 | check_cflags -Wno-pointer-to-int-cast |
||
4420 | check_cflags -Wstrict-prototypes |
||
4421 | enabled extra_warnings && check_cflags -Winline |
||
4422 | |||
4423 | # add some linker flags |
||
4424 | check_ldflags -Wl,--warn-common |
||
4425 | check_ldflags -Wl,-rpath-link=libpostproc:libswresample:libswscale:libavfilter:libavdevice:libavformat:libavcodec:libavutil:libavresample |
||
4426 | test_ldflags -Wl,-Bsymbolic && append SHFLAGS -Wl,-Bsymbolic |
||
4427 | |||
4428 | enabled xmm_clobber_test && |
||
4429 | check_ldflags -Wl,--wrap,avcodec_open2 \ |
||
4430 | -Wl,--wrap,avcodec_decode_audio4 \ |
||
4431 | -Wl,--wrap,avcodec_decode_video2 \ |
||
4432 | -Wl,--wrap,avcodec_decode_subtitle2 \ |
||
4433 | -Wl,--wrap,avcodec_encode_audio2 \ |
||
4434 | -Wl,--wrap,avcodec_encode_video \ |
||
4435 | -Wl,--wrap,avcodec_encode_video2 \ |
||
4436 | -Wl,--wrap,avcodec_encode_subtitle \ |
||
4437 | -Wl,--wrap,sws_scale || |
||
4438 | disable xmm_clobber_test |
||
4439 | |||
4440 | echo "X{};" > $TMPV |
||
4441 | if test_ldflags -Wl,--version-script,$TMPV; then |
||
4442 | append SHFLAGS '-Wl,--version-script,\$(SUBDIR)lib\$(NAME).ver' |
||
4443 | check_cc < |
||
4444 | void ff_foo(void) __asm__ ("av_foo@VERSION"); |
||
4445 | void ff_foo(void) { ${inline_asm+__asm__($quotes);} } |
||
4446 | EOF |
||
4447 | check_cc < |
||
4448 | __asm__(".symver ff_foo,av_foo@VERSION"); |
||
4449 | void ff_foo(void) {} |
||
4450 | EOF |
||
4451 | fi |
||
4452 | |||
4453 | if [ -z "$optflags" ]; then |
||
4454 | if enabled small; then |
||
4455 | optflags=$cflags_size |
||
4456 | elif enabled optimizations; then |
||
4457 | optflags=$cflags_speed |
||
4458 | else |
||
4459 | optflags=$cflags_noopt |
||
4460 | fi |
||
4461 | fi |
||
4462 | |||
4463 | check_optflags(){ |
||
4464 | check_cflags "$@" |
||
4465 | enabled lto && check_ldflags "$@" |
||
4466 | } |
||
4467 | |||
4468 | |||
4469 | if enabled lto; then |
||
4470 | test "$cc_type" != "$ld_type" && die "LTO requires same compiler and linker" |
||
4471 | check_cflags -flto |
||
4472 | check_ldflags -flto $cpuflags |
||
4473 | fi |
||
4474 | |||
4475 | check_optflags $optflags |
||
4476 | check_optflags -fno-math-errno |
||
4477 | check_optflags -fno-signed-zeros |
||
4478 | |||
4479 | enabled ftrapv && check_cflags -ftrapv |
||
4480 | |||
4481 | check_cc -mno-red-zone < |
||
4482 | int x; |
||
4483 | EOF |
||
4484 | |||
4485 | |||
4486 | if enabled icc; then |
||
4487 | # Just warnings, no remarks |
||
4488 | check_cflags -w1 |
||
4489 | # -wd: Disable following warnings |
||
4490 | # 144, 167, 556: -Wno-pointer-sign |
||
4491 | # 188: enumerated type mixed with another type |
||
4492 | # 1292: attribute "foo" ignored |
||
4493 | # 1419: external declaration in primary source file |
||
4494 | # 10006: ignoring unknown option -fno-signed-zeros |
||
4495 | # 10148: ignoring unknown option -Wno-parentheses |
||
4496 | # 10156: ignoring option '-W'; no argument required |
||
4497 | check_cflags -wd144,167,188,556,1292,1419,10006,10148,10156 |
||
4498 | # 11030: Warning unknown option --as-needed |
||
4499 | # 10156: ignoring option '-export'; no argument required |
||
4500 | check_ldflags -wd10156,11030 |
||
4501 | # icc 11.0 and 11.1 work with ebp_available, but don't pass the test |
||
4502 | enable ebp_available |
||
4503 | if enabled x86_32; then |
||
4504 | icc_version=$($cc -dumpversion) |
||
4505 | test ${icc_version%%.*} -ge 11 && |
||
4506 | check_cflags -falign-stack=maintain-16-byte || |
||
4507 | disable aligned_stack |
||
4508 | fi |
||
4509 | elif enabled ccc; then |
||
4510 | # disable some annoying warnings |
||
4511 | add_cflags -msg_disable bitnotint |
||
4512 | add_cflags -msg_disable mixfuncvoid |
||
4513 | add_cflags -msg_disable nonstandcast |
||
4514 | add_cflags -msg_disable unsupieee |
||
4515 | elif enabled gcc; then |
||
4516 | check_optflags -fno-tree-vectorize |
||
4517 | check_cflags -Werror=implicit-function-declaration |
||
4518 | check_cflags -Werror=missing-prototypes |
||
4519 | check_cflags -Werror=return-type |
||
4520 | check_cflags -Werror=vla |
||
4521 | elif enabled llvm_gcc; then |
||
4522 | check_cflags -mllvm -stack-alignment=16 |
||
4523 | elif enabled clang; then |
||
4524 | check_cflags -mllvm -stack-alignment=16 |
||
4525 | check_cflags -Qunused-arguments |
||
4526 | check_cflags -Werror=implicit-function-declaration |
||
4527 | check_cflags -Werror=missing-prototypes |
||
4528 | check_cflags -Werror=return-type |
||
4529 | elif enabled cparser; then |
||
4530 | add_cflags -Wno-missing-variable-declarations |
||
4531 | add_cflags -Wno-empty-statement |
||
4532 | elif enabled armcc; then |
||
4533 | # 2523: use of inline assembler is deprecated |
||
4534 | add_cflags -W${armcc_opt},--diag_suppress=2523 |
||
4535 | add_cflags -W${armcc_opt},--diag_suppress=1207 |
||
4536 | add_cflags -W${armcc_opt},--diag_suppress=1293 # assignment in condition |
||
4537 | add_cflags -W${armcc_opt},--diag_suppress=3343 # hardfp compat |
||
4538 | add_cflags -W${armcc_opt},--diag_suppress=167 # pointer sign |
||
4539 | add_cflags -W${armcc_opt},--diag_suppress=513 # pointer sign |
||
4540 | elif enabled tms470; then |
||
4541 | add_cflags -pds=824 -pds=837 |
||
4542 | elif enabled pathscale; then |
||
4543 | add_cflags -fstrict-overflow -OPT:wrap_around_unsafe_opt=OFF |
||
4544 | elif enabled_any msvc icl; then |
||
4545 | enabled x86_32 && disable aligned_stack |
||
4546 | enabled_all x86_32 debug && add_cflags -Oy- |
||
4547 | enabled debug && add_ldflags -debug |
||
4548 | enable pragma_deprecated |
||
4549 | if enabled icl; then |
||
4550 | # -Qansi-alias is basically -fstrict-aliasing, but does not work |
||
4551 | # (correctly) on icl 13.x. |
||
4552 | check_cpp_condition "windows.h" "__ICL < 1300 || __ICL >= 1400" && |
||
4553 | add_cflags -Qansi-alias |
||
4554 | # icl will pass the inline asm tests but inline asm is currently |
||
4555 | # not supported (build will fail) |
||
4556 | disabled inline_asm || warn "inline asm disabled due to issues with it in ICL" |
||
4557 | disable inline_asm |
||
4558 | fi |
||
4559 | fi |
||
4560 | |||
4561 | case $target_os in |
||
4562 | osf1) |
||
4563 | enabled ccc && add_ldflags '-Wl,-expect_unresolved,*' |
||
4564 | ;; |
||
4565 | plan9) |
||
4566 | add_cppflags -Dmain=plan9_main |
||
4567 | ;; |
||
4568 | esac |
||
4569 | |||
4570 | enable frame_thread_encoder |
||
4571 | enabled_any $THREADS_LIST && enable threads |
||
4572 | enabled_any $ATOMICS_LIST && enable atomics_native |
||
4573 | |||
4574 | enabled threads && ! enabled pthreads && ! enabled atomics_native && die "non pthread threading without atomics not supported, try adding --enable-pthreads or --cpu=i486 or higher if you are on x86" |
||
4575 | |||
4576 | enabled asm || { arch=c; disable $ARCH_LIST $ARCH_EXT_LIST; } |
||
4577 | |||
4578 | check_deps $CONFIG_LIST \ |
||
4579 | $CONFIG_EXTRA \ |
||
4580 | $HAVE_LIST \ |
||
4581 | $ALL_COMPONENTS \ |
||
4582 | |||
4583 | |||
4584 | if test $target_os = "haiku"; then |
||
4585 | disable memalign |
||
4586 | disable posix_memalign |
||
4587 | fi |
||
4588 | |||
4589 | ! enabled_any memalign posix_memalign aligned_malloc && |
||
4590 | enabled_any $need_memalign && enable memalign_hack |
||
4591 | |||
4592 | # add_dep lib dep |
||
4593 | # -> enable ${lib}_deps_${dep} |
||
4594 | # -> add $dep to ${lib}_deps only once |
||
4595 | add_dep() { |
||
4596 | lib=$1 |
||
4597 | dep=$2 |
||
4598 | enabled "${lib}_deps_${dep}" && return 0 |
||
4599 | enable "${lib}_deps_${dep}" |
||
4600 | prepend "${lib}_deps" $dep |
||
4601 | } |
||
4602 | |||
4603 | # merge deps lib components |
||
4604 | # merge all ${component}_deps into ${lib}_deps and ${lib}_deps_* |
||
4605 | merge_deps() { |
||
4606 | lib=$1 |
||
4607 | shift |
||
4608 | for comp in $*; do |
||
4609 | enabled $comp || continue |
||
4610 | eval "dep=\"\$${comp}_deps\"" |
||
4611 | for d in $dep; do |
||
4612 | add_dep $lib $d |
||
4613 | done |
||
4614 | done |
||
4615 | } |
||
4616 | |||
4617 | merge_deps libavfilter $FILTER_LIST |
||
4618 | |||
4619 | echo "install prefix $prefix" |
||
4620 | echo "source path $source_path" |
||
4621 | echo "C compiler $cc" |
||
4622 | echo "ARCH $arch ($cpu)" |
||
4623 | if test "$build_suffix" != ""; then |
||
4624 | echo "build suffix $build_suffix" |
||
4625 | fi |
||
4626 | if test "$progs_suffix" != ""; then |
||
4627 | echo "progs suffix $progs_suffix" |
||
4628 | fi |
||
4629 | if test "$extra_version" != ""; then |
||
4630 | echo "version string suffix $extra_version" |
||
4631 | fi |
||
4632 | echo "big-endian ${bigendian-no}" |
||
4633 | echo "runtime cpu detection ${runtime_cpudetect-no}" |
||
4634 | if enabled x86; then |
||
4635 | echo "${yasmexe} ${yasm-no}" |
||
4636 | echo "MMX enabled ${mmx-no}" |
||
4637 | echo "MMXEXT enabled ${mmxext-no}" |
||
4638 | echo "3DNow! enabled ${amd3dnow-no}" |
||
4639 | echo "3DNow! extended enabled ${amd3dnowext-no}" |
||
4640 | echo "SSE enabled ${sse-no}" |
||
4641 | echo "SSSE3 enabled ${ssse3-no}" |
||
4642 | echo "AVX enabled ${avx-no}" |
||
4643 | echo "FMA4 enabled ${fma4-no}" |
||
4644 | echo "i686 features enabled ${i686-no}" |
||
4645 | echo "CMOV is fast ${fast_cmov-no}" |
||
4646 | echo "EBX available ${ebx_available-no}" |
||
4647 | echo "EBP available ${ebp_available-no}" |
||
4648 | fi |
||
4649 | if enabled arm; then |
||
4650 | echo "ARMv5TE enabled ${armv5te-no}" |
||
4651 | echo "ARMv6 enabled ${armv6-no}" |
||
4652 | echo "ARMv6T2 enabled ${armv6t2-no}" |
||
4653 | echo "VFP enabled ${vfp-no}" |
||
4654 | echo "NEON enabled ${neon-no}" |
||
4655 | echo "THUMB enabled ${thumb-no}" |
||
4656 | fi |
||
4657 | if enabled mips; then |
||
4658 | echo "MIPS FPU enabled ${mipsfpu-no}" |
||
4659 | echo "MIPS32R2 enabled ${mips32r2-no}" |
||
4660 | echo "MIPS DSP R1 enabled ${mipsdspr1-no}" |
||
4661 | echo "MIPS DSP R2 enabled ${mipsdspr2-no}" |
||
4662 | fi |
||
4663 | if enabled ppc; then |
||
4664 | echo "AltiVec enabled ${altivec-no}" |
||
4665 | echo "PPC 4xx optimizations ${ppc4xx-no}" |
||
4666 | echo "dcbzl available ${dcbzl-no}" |
||
4667 | fi |
||
4668 | if enabled sparc; then |
||
4669 | echo "VIS enabled ${vis-no}" |
||
4670 | fi |
||
4671 | echo "debug symbols ${debug-no}" |
||
4672 | echo "strip symbols ${stripping-no}" |
||
4673 | echo "optimize for size ${small-no}" |
||
4674 | echo "optimizations ${optimizations-no}" |
||
4675 | echo "static ${static-no}" |
||
4676 | echo "shared ${shared-no}" |
||
4677 | echo "postprocessing support ${postproc-no}" |
||
4678 | echo "new filter support ${avfilter-no}" |
||
4679 | echo "network support ${network-no}" |
||
4680 | echo "threading support ${thread_type-no}" |
||
4681 | echo "safe bitstream reader ${safe_bitstream_reader-no}" |
||
4682 | echo "SDL support ${sdl-no}" |
||
4683 | echo "opencl enabled ${opencl-no}" |
||
4684 | echo "libzvbi enabled ${libzvbi-no}" |
||
4685 | echo "texi2html enabled ${texi2html-no}" |
||
4686 | echo "perl enabled ${perl-no}" |
||
4687 | echo "pod2man enabled ${pod2man-no}" |
||
4688 | echo "makeinfo enabled ${makeinfo-no}" |
||
4689 | test -n "$random_seed" && |
||
4690 | echo "random seed ${random_seed}" |
||
4691 | echo |
||
4692 | |||
4693 | echo "External libraries:" |
||
4694 | print_enabled '' $EXTERNAL_LIBRARY_LIST | print_3_columns |
||
4695 | echo |
||
4696 | |||
4697 | for type in decoder encoder hwaccel parser demuxer muxer protocol filter bsf indev outdev; do |
||
4698 | echo "Enabled ${type}s:" |
||
4699 | eval list=\$$(toupper $type)_LIST |
||
4700 | print_enabled '_*' $list | print_3_columns |
||
4701 | echo |
||
4702 | done |
||
4703 | |||
4704 | license="LGPL version 2.1 or later" |
||
4705 | if enabled nonfree; then |
||
4706 | license="nonfree and unredistributable" |
||
4707 | elif enabled gplv3; then |
||
4708 | license="GPL version 3 or later" |
||
4709 | elif enabled lgplv3; then |
||
4710 | license="LGPL version 3 or later" |
||
4711 | elif enabled gpl; then |
||
4712 | license="GPL version 2 or later" |
||
4713 | fi |
||
4714 | |||
4715 | echo "License: $license" |
||
4716 | |||
4717 | echo "Creating config.mak, config.h, and doc/config.texi..." |
||
4718 | |||
4719 | test -e Makefile || $ln_s "$source_path/Makefile" . |
||
4720 | |||
4721 | enabled stripping || strip="echo skipping strip" |
||
4722 | |||
4723 | config_files="$TMPH config.mak doc/config.texi" |
||
4724 | |||
4725 | cat > config.mak < |
||
4726 | # Automatically generated by configure - do not modify! |
||
4727 | ifndef FFMPEG_CONFIG_MAK |
||
4728 | FFMPEG_CONFIG_MAK=1 |
||
4729 | FFMPEG_CONFIGURATION=$FFMPEG_CONFIGURATION |
||
4730 | prefix=$prefix |
||
4731 | LIBDIR=\$(DESTDIR)$libdir |
||
4732 | SHLIBDIR=\$(DESTDIR)$shlibdir |
||
4733 | INCDIR=\$(DESTDIR)$incdir |
||
4734 | BINDIR=\$(DESTDIR)$bindir |
||
4735 | DATADIR=\$(DESTDIR)$datadir |
||
4736 | DOCDIR=\$(DESTDIR)$docdir |
||
4737 | MANDIR=\$(DESTDIR)$mandir |
||
4738 | SRC_PATH=$source_path |
||
4739 | ifndef MAIN_MAKEFILE |
||
4740 | SRC_PATH:=\$(SRC_PATH:.%=..%) |
||
4741 | endif |
||
4742 | CC_IDENT=$cc_ident |
||
4743 | ARCH=$arch |
||
4744 | CC=$cc |
||
4745 | CXX=$cxx |
||
4746 | AS=$as |
||
4747 | LD=$ld |
||
4748 | DEPCC=$dep_cc |
||
4749 | DEPCCFLAGS=$DEPCCFLAGS \$(CPPFLAGS) |
||
4750 | DEPAS=$as |
||
4751 | DEPASFLAGS=$DEPASFLAGS \$(CPPFLAGS) |
||
4752 | YASM=$yasmexe |
||
4753 | DEPYASM=$yasmexe |
||
4754 | AR=$ar |
||
4755 | ARFLAGS=$arflags |
||
4756 | AR_O=$ar_o |
||
4757 | RANLIB=$ranlib |
||
4758 | STRIP=$strip |
||
4759 | CP=cp -p |
||
4760 | LN_S=$ln_s |
||
4761 | CPPFLAGS=$CPPFLAGS |
||
4762 | CFLAGS=$CFLAGS |
||
4763 | CXXFLAGS=$CXXFLAGS |
||
4764 | ASFLAGS=$ASFLAGS |
||
4765 | AS_C=$AS_C |
||
4766 | AS_O=$AS_O |
||
4767 | CC_C=$CC_C |
||
4768 | CC_E=$CC_E |
||
4769 | CC_O=$CC_O |
||
4770 | CXX_C=$CXX_C |
||
4771 | CXX_O=$CXX_O |
||
4772 | LD_O=$LD_O |
||
4773 | LD_LIB=$LD_LIB |
||
4774 | LD_PATH=$LD_PATH |
||
4775 | DLLTOOL=$dlltool |
||
4776 | LDFLAGS=$LDFLAGS |
||
4777 | SHFLAGS=$(echo $($ldflags_filter $SHFLAGS)) |
||
4778 | YASMFLAGS=$YASMFLAGS |
||
4779 | BUILDSUF=$build_suffix |
||
4780 | PROGSSUF=$progs_suffix |
||
4781 | FULLNAME=$FULLNAME |
||
4782 | LIBPREF=$LIBPREF |
||
4783 | LIBSUF=$LIBSUF |
||
4784 | LIBNAME=$LIBNAME |
||
4785 | SLIBPREF=$SLIBPREF |
||
4786 | SLIBSUF=$SLIBSUF |
||
4787 | EXESUF=$EXESUF |
||
4788 | EXTRA_VERSION=$extra_version |
||
4789 | CCDEP=$CCDEP |
||
4790 | CXXDEP=$CXXDEP |
||
4791 | CCDEP_FLAGS=$CCDEP_FLAGS |
||
4792 | ASDEP=$ASDEP |
||
4793 | ASDEP_FLAGS=$ASDEP_FLAGS |
||
4794 | CC_DEPFLAGS=$CC_DEPFLAGS |
||
4795 | AS_DEPFLAGS=$AS_DEPFLAGS |
||
4796 | HOSTCC=$host_cc |
||
4797 | HOSTLD=$host_ld |
||
4798 | HOSTCFLAGS=$host_cflags |
||
4799 | HOSTCPPFLAGS=$host_cppflags |
||
4800 | HOSTEXESUF=$HOSTEXESUF |
||
4801 | HOSTLDFLAGS=$host_ldflags |
||
4802 | HOSTLIBS=$host_libs |
||
4803 | DEPHOSTCC=$host_cc |
||
4804 | DEPHOSTCCFLAGS=$DEPHOSTCCFLAGS \$(HOSTCCFLAGS) |
||
4805 | HOSTCCDEP=$HOSTCCDEP |
||
4806 | HOSTCCDEP_FLAGS=$HOSTCCDEP_FLAGS |
||
4807 | HOSTCC_DEPFLAGS=$HOSTCC_DEPFLAGS |
||
4808 | HOSTCC_C=$HOSTCC_C |
||
4809 | HOSTCC_O=$HOSTCC_O |
||
4810 | HOSTLD_O=$HOSTLD_O |
||
4811 | TARGET_EXEC=$target_exec $target_exec_args |
||
4812 | TARGET_PATH=$target_path |
||
4813 | TARGET_SAMPLES=${target_samples:-\$(SAMPLES)} |
||
4814 | LIBS-ffplay=$sdl_libs |
||
4815 | CFLAGS-ffplay=$sdl_cflags |
||
4816 | ZLIB=$($ldflags_filter -lz) |
||
4817 | LIB_INSTALL_EXTRA_CMD=$LIB_INSTALL_EXTRA_CMD |
||
4818 | EXTRALIBS=$extralibs |
||
4819 | COMPAT_OBJS=$compat_objs |
||
4820 | EXEOBJS=$exeobjs |
||
4821 | INSTALL=$install |
||
4822 | LIBTARGET=${LIBTARGET} |
||
4823 | SLIBNAME=${SLIBNAME} |
||
4824 | SLIBNAME_WITH_VERSION=${SLIBNAME_WITH_VERSION} |
||
4825 | SLIBNAME_WITH_MAJOR=${SLIBNAME_WITH_MAJOR} |
||
4826 | SLIB_CREATE_DEF_CMD=${SLIB_CREATE_DEF_CMD} |
||
4827 | SLIB_EXTRA_CMD=${SLIB_EXTRA_CMD} |
||
4828 | SLIB_INSTALL_NAME=${SLIB_INSTALL_NAME} |
||
4829 | SLIB_INSTALL_LINKS=${SLIB_INSTALL_LINKS} |
||
4830 | SLIB_INSTALL_EXTRA_LIB=${SLIB_INSTALL_EXTRA_LIB} |
||
4831 | SLIB_INSTALL_EXTRA_SHLIB=${SLIB_INSTALL_EXTRA_SHLIB} |
||
4832 | SAMPLES:=${samples:-\$(FATE_SAMPLES)} |
||
4833 | NOREDZONE_FLAGS=$noredzone_flags |
||
4834 | EOF |
||
4835 | |||
4836 | get_version(){ |
||
4837 | lcname=lib${1} |
||
4838 | name=$(toupper $lcname) |
||
4839 | file=$source_path/$lcname/version.h |
||
4840 | eval $(awk "/#define ${name}_VERSION_M/ { print \$2 \"=\" \$3 }" "$file") |
||
4841 | eval ${name}_VERSION=\$${name}_VERSION_MAJOR.\$${name}_VERSION_MINOR.\$${name}_VERSION_MICRO |
||
4842 | eval echo "${lcname}_VERSION=\$${name}_VERSION" >> config.mak |
||
4843 | eval echo "${lcname}_VERSION_MAJOR=\$${name}_VERSION_MAJOR" >> config.mak |
||
4844 | eval echo "${lcname}_VERSION_MINOR=\$${name}_VERSION_MINOR" >> config.mak |
||
4845 | } |
||
4846 | |||
4847 | map 'get_version $v' $LIBRARY_LIST |
||
4848 | |||
4849 | cat > $TMPH < |
||
4850 | /* Automatically generated by configure - do not modify! */ |
||
4851 | #ifndef FFMPEG_CONFIG_H |
||
4852 | #define FFMPEG_CONFIG_H |
||
4853 | #define FFMPEG_CONFIGURATION "$(c_escape $FFMPEG_CONFIGURATION)" |
||
4854 | #define FFMPEG_LICENSE "$(c_escape $license)" |
||
4855 | #define FFMPEG_DATADIR "$(eval c_escape $datadir)" |
||
4856 | #define AVCONV_DATADIR "$(eval c_escape $datadir)" |
||
4857 | #define CC_IDENT "$(c_escape ${cc_ident:-Unknown compiler})" |
||
4858 | #define av_restrict $_restrict |
||
4859 | #define EXTERN_PREFIX "${extern_prefix}" |
||
4860 | #define EXTERN_ASM ${extern_prefix} |
||
4861 | #define SLIBSUF "$SLIBSUF" |
||
4862 | #define HAVE_MMX2 HAVE_MMXEXT |
||
4863 | EOF |
||
4864 | |||
4865 | test -n "$assert_level" && |
||
4866 | echo "#define ASSERT_LEVEL $assert_level" >>$TMPH |
||
4867 | |||
4868 | test -n "$malloc_prefix" && |
||
4869 | echo "#define MALLOC_PREFIX $malloc_prefix" >>$TMPH |
||
4870 | |||
4871 | if enabled yasm; then |
||
4872 | append config_files $TMPASM |
||
4873 | printf '' >$TMPASM |
||
4874 | fi |
||
4875 | |||
4876 | enabled getenv || echo "#define getenv(x) NULL" >> $TMPH |
||
4877 | |||
4878 | |||
4879 | mkdir -p doc |
||
4880 | echo "@c auto-generated by configure" > doc/config.texi |
||
4881 | |||
4882 | print_config ARCH_ "$config_files" $ARCH_LIST |
||
4883 | print_config HAVE_ "$config_files" $HAVE_LIST |
||
4884 | print_config CONFIG_ "$config_files" $CONFIG_LIST \ |
||
4885 | $CONFIG_EXTRA \ |
||
4886 | $ALL_COMPONENTS \ |
||
4887 | |||
4888 | echo "#endif /* FFMPEG_CONFIG_H */" >> $TMPH |
||
4889 | echo "endif # FFMPEG_CONFIG_MAK" >> config.mak |
||
4890 | |||
4891 | # Do not overwrite an unchanged config.h to avoid superfluous rebuilds. |
||
4892 | cp_if_changed $TMPH config.h |
||
4893 | touch .config |
||
4894 | |||
4895 | enabled yasm && cp_if_changed $TMPASM config.asm |
||
4896 | |||
4897 | cat > $TMPH < |
||
4898 | /* Generated by ffconf */ |
||
4899 | #ifndef AVUTIL_AVCONFIG_H |
||
4900 | #define AVUTIL_AVCONFIG_H |
||
4901 | EOF |
||
4902 | |||
4903 | print_config AV_HAVE_ $TMPH $HAVE_LIST_PUB |
||
4904 | |||
4905 | echo "#endif /* AVUTIL_AVCONFIG_H */" >> $TMPH |
||
4906 | |||
4907 | cp_if_changed $TMPH libavutil/avconfig.h |
||
4908 | |||
4909 | if test -n "$WARNINGS"; then |
||
4910 | printf "\n$WARNINGS" |
||
4911 | enabled fatal_warnings && exit 1 |
||
4912 | fi |
||
4913 | |||
4914 | # build pkg-config files |
||
4915 | |||
4916 | pkgconfig_generate(){ |
||
4917 | name=$1 |
||
4918 | shortname=${name#lib}${build_suffix} |
||
4919 | comment=$2 |
||
4920 | version=$3 |
||
4921 | libs=$4 |
||
4922 | requires=$5 |
||
4923 | enabled ${name#lib} || return 0 |
||
4924 | mkdir -p $name |
||
4925 | cat < |
||
4926 | prefix=$prefix |
||
4927 | exec_prefix=\${prefix} |
||
4928 | libdir=$libdir |
||
4929 | includedir=$incdir |
||
4930 | |||
4931 | Name: $name |
||
4932 | Description: $comment |
||
4933 | Version: $version |
||
4934 | Requires: $(enabled shared || echo $requires) |
||
4935 | Requires.private: $(enabled shared && echo $requires) |
||
4936 | Conflicts: |
||
4937 | Libs: -L\${libdir} -l${shortname} $(enabled shared || echo $libs) |
||
4938 | Libs.private: $(enabled shared && echo $libs) |
||
4939 | Cflags: -I\${includedir} |
||
4940 | EOF |
||
4941 | |||
4942 | mkdir -p doc/examples/pc-uninstalled |
||
4943 | includedir=${source_path} |
||
4944 | [ "$includedir" = . ] && includedir="\${pcfiledir}/../../.." |
||
4945 | cat < |
||
4946 | prefix= |
||
4947 | exec_prefix= |
||
4948 | libdir=\${pcfiledir}/../../../$name |
||
4949 | includedir=${includedir} |
||
4950 | |||
4951 | Name: $name |
||
4952 | Description: $comment |
||
4953 | Version: $version |
||
4954 | Requires: $requires |
||
4955 | Conflicts: |
||
4956 | Libs: -L\${libdir} -Wl,-rpath,\${libdir} -l${shortname} $(enabled shared || echo $libs) |
||
4957 | Cflags: -I\${includedir} |
||
4958 | EOF |
||
4959 | } |
||
4960 | |||
4961 | lavfi_libs="libavutil${build_suffix} = $LIBAVUTIL_VERSION" |
||
4962 | enabled libavfilter_deps_avcodec && prepend lavfi_libs "libavcodec${build_suffix} = $LIBAVCODEC_VERSION," |
||
4963 | enabled libavfilter_deps_avformat && prepend lavfi_libs "libavformat${build_suffix} = $LIBAVFORMAT_VERSION," |
||
4964 | enabled libavfilter_deps_avresample && prepend lavfi_libs "libavresample${build_suffix} = $LIBAVRESAMPLE_VERSION," |
||
4965 | enabled libavfilter_deps_swscale && prepend lavfi_libs "libswscale${build_suffix} = $LIBSWSCALE_VERSION," |
||
4966 | enabled libavfilter_deps_swresample && prepend lavfi_libs "libswresample${build_suffix} = $LIBSWRESAMPLE_VERSION," |
||
4967 | enabled libavfilter_deps_postproc && prepend lavfi_libs "libpostproc${build_suffix} = $LIBPOSTPROC_VERSION," |
||
4968 | lavfi_libs=${lavfi_libs%, } |
||
4969 | |||
4970 | lavd_libs="libavformat${build_suffix} = $LIBAVFORMAT_VERSION" |
||
4971 | enabled lavfi_indev && prepend lavd_libs "libavfilter${build_suffix} = $LIBAVFILTER_VERSION," |
||
4972 | |||
4973 | pkgconfig_generate libavutil "FFmpeg utility library" "$LIBAVUTIL_VERSION" "$LIBM" |
||
4974 | pkgconfig_generate libavcodec "FFmpeg codec library" "$LIBAVCODEC_VERSION" "$extralibs" "libavutil${build_suffix} = $LIBAVUTIL_VERSION" |
||
4975 | pkgconfig_generate libavformat "FFmpeg container format library" "$LIBAVFORMAT_VERSION" "$extralibs" "libavcodec${build_suffix} = $LIBAVCODEC_VERSION" |
||
4976 | pkgconfig_generate libavdevice "FFmpeg device handling library" "$LIBAVDEVICE_VERSION" "$extralibs" "$lavd_libs" |
||
4977 | pkgconfig_generate libavfilter "FFmpeg audio/video filtering library" "$LIBAVFILTER_VERSION" "$extralibs" "$lavfi_libs" |
||
4978 | pkgconfig_generate libpostproc "FFmpeg postprocessing library" "$LIBPOSTPROC_VERSION" "" "libavutil${build_suffix} = $LIBAVUTIL_VERSION" |
||
4979 | pkgconfig_generate libavresample "Libav audio resampling library" "$LIBAVRESAMPLE_VERSION" "$extralibs" "libavutil${build_suffix} = $LIBAVUTIL_VERSION" |
||
4980 | pkgconfig_generate libswscale "FFmpeg image rescaling library" "$LIBSWSCALE_VERSION" "$LIBM" "libavutil${build_suffix} = $LIBAVUTIL_VERSION" |
||
4981 | pkgconfig_generate libswresample "FFmpeg audio resampling library" "$LIBSWRESAMPLE_VERSION" "$LIBM" "libavutil${build_suffix} = $LIBAVUTIL_VERSION" |
||
4982 | |||
4983 | fix_ffmpeg_remote(){ |
||
4984 | git_remote_from=$1 |
||
4985 | git_remote_to=$2 |
||
4986 | fixme_remote=$(git --git-dir=$source_path/.git --work-tree=$source_path remote -v | grep $git_remote_from | cut -f 1 | sort | uniq) |
||
4987 | if [ "$fixme_remote" != "" ]; then |
||
4988 | echolog " |
||
4989 | Outdated domain in git config, the official domain for ffmpeg git is since |
||
4990 | November 2011, source.ffmpeg.org, both the old and the new point to the same |
||
4991 | repository and server. To update it enter the following commands: |
||
4992 | " |
||
4993 | for remote in $fixme_remote; do |
||
4994 | echolog "git remote set-url $remote $git_remote_to" |
||
4995 | done |
||
4996 | fi |
||
4997 | } |
||
4998 | |||
4999 | if test -f "$source_path/.git/config"; then |
||
5000 | remote_from=git.videolan.org |
||
5001 | remote_to=source.ffmpeg.org |
||
5002 | fix_ffmpeg_remote git@$remote_from:ffmpeg git@$remote_to:ffmpeg |
||
5003 | fix_ffmpeg_remote git://$remote_from/ffmpeg git://$remote_to/ffmpeg |
||
5004 | fi |