configure: Fix reading the branch control file for FFmpeg
[mplayer.git] / configure
1 #! /bin/sh
2 #
3 # Original version (C) 2000 Pontscho/fresh!mindworkz
4 #                      pontscho@makacs.poliod.hu
5 #
6 # History / Contributors: Check the Subversion log.
7 #
8 # Cleanups all over the place (c) 2001 pl
9 #
10 #
11 # This configure script is *not* autoconf-based and has different semantics.
12 # It attempts to autodetect all settings and options where possible. It is
13 # possible to override autodetection with the --enable-option/--disable-option
14 # command line parameters.  --enable-option forces the option on skipping
15 # autodetection. Yes, this means that compilation may fail and yes, this is not
16 # how autoconf-based configure scripts behave.
17 #
18 # configure generates a series of configuration files:
19 #  - config.h contains #defines that are used in the C code.
20 #  - config.mak is included from the Makefiles.
21 #
22 # If you want to add a new check for $feature, look at the existing checks
23 # and try to use helper functions where you can.
24 #
25 # Furthermore you need to add the variable _feature to the list of default
26 # settings and set it to one of yes/no/auto. Also add appropriate
27 # --enable-feature/--disable-feature command line options.
28 # The results of the check should be written to config.h and config.mak
29 # at the end of this script. The variable names used for this should be
30 # uniform, i.e. if the option is named 'feature':
31 #
32 # _feature     : should have a value of yes/no/auto
33 # def_feature  : '#define ... 1' or '#undef ...' for conditional compilation
34 # ld_feature   : '-L/path/dir -lfeature' GCC options
35 #
36 #############################################################################
37
38 # Prevent locale nonsense from breaking basic text processing utilities
39 export LC_ALL=C
40
41 # Store the configure line that was used
42 configuration="$*"
43
44 # utility functions
45 tolower() {
46   tr '[A-Z]' '[a-z]'
47 }
48
49 toupper() {
50   tr '[a-z]' '[A-Z]'
51 }
52
53 # Prefer these macros to full length text !
54 # These macros only return an error code - NO display is done
55 compile_check() {
56   source="$1"
57   shift
58   echo >> "$TMPLOG"
59   cat "$source" >> "$TMPLOG"
60   echo >> "$TMPLOG"
61   echo "$_cc $WARNFLAGS $WARN_CFLAGS $CFLAGS $source $extra_cflags $ld_static $extra_ldflags $libs_mplayer $libs_mencoder -o $TMPEXE $@ $libm" >> "$TMPLOG"
62   rm -f "$TMPEXE"
63   $_cc $WARNFLAGS $WARN_CFLAGS $CFLAGS "$source" $extra_cflags $ld_static $extra_ldflags $libs_mplayer $libs_mencoder -o "$TMPEXE" "$@" $libm >> "$TMPLOG" 2>&1
64   TMPRES="$?"
65   echo >> "$TMPLOG"
66   echo >> "$TMPLOG"
67   return "$TMPRES"
68 }
69
70 cc_check() {
71   compile_check $TMPC $@
72 }
73
74 cxx_check() {
75   compile_check $TMPCPP $@ -lstdc++
76 }
77
78 cpp_condition_check() {
79   inc=""
80   if test -n "$1" ; then
81     inc="#include <$1>"
82   fi
83   cat > $TMPC << EOF
84 $inc
85 #if !($2)
86 #error condition not true: $2
87 #endif
88 int main(void) { return 0; }
89 EOF
90   shift 2
91   compile_check $TMPC $@
92 }
93
94 cflag_check() {
95   cat > $TMPC << EOF
96 int main(void) { return 0; }
97 EOF
98   compile_check $TMPC $@
99 }
100
101 header_check() {
102   cat > $TMPC << EOF
103 #include <$1>
104 int main(void) { return 0; }
105 EOF
106   shift
107   compile_check $TMPC $@
108 }
109
110 return_check() {
111   cat > $TMPC << EOF
112 #include <$1>
113 int main(void) { return $2; }
114 EOF
115   shift 2
116   compile_check $TMPC $@
117 }
118
119 statement_check() {
120   cat > $TMPC << EOF
121 #include <$1>
122 int main(void) { $2; return 0; }
123 EOF
124   shift
125   shift
126   compile_check $TMPC $@
127 }
128
129 define_statement_check() {
130   cat > $TMPC << EOF
131 #define $1
132 #include <$2>
133 int main(void) { $3; return 0; }
134 EOF
135   shift 3
136   compile_check $TMPC $@
137 }
138
139 return_statement_check() {
140   cat > $TMPC << EOF
141 #include <$1>
142 int main(void) { $2; return $3; }
143 EOF
144   shift 3
145   compile_check $TMPC $@
146 }
147
148 inline_asm_check() {
149   cat > $TMPC << EOF
150 int main(void) { __asm__ volatile ($1); return 0; }
151 EOF
152   shift
153   compile_check $TMPC $@
154 }
155
156 # The following checks are special and should only be used with broken and
157 # non-self-sufficient headers that do not include all of their dependencies.
158
159 header_check_broken() {
160   cat > $TMPC << EOF
161 #include <$1>
162 #include <$2>
163 int main(void) { return 0; }
164 EOF
165   shift
166   shift
167   compile_check $TMPC $@
168 }
169
170 statement_check_broken() {
171   cat > $TMPC << EOF
172 #include <$1>
173 #include <$2>
174 int main(void) { $3; return 0; }
175 EOF
176   shift 3
177   compile_check $TMPC $@
178 }
179
180 yasm_check() {
181   echo >> "$TMPLOG"
182   cat "$TMPS" >> "$TMPLOG"
183   echo >> "$TMPLOG"
184   echo "$_yasm $YASMFLAGS -o $TMPEXE $TMPS $@" >> "$TMPLOG"
185   rm -f "$TMPEXE"
186   $_yasm $YASMFLAGS -o "$TMPEXE" "$TMPS" "$@" >> "$TMPLOG" 2>&1
187   TMPRES="$?"
188   echo >> "$TMPLOG"
189   echo >> "$TMPLOG"
190   return "$TMPRES"
191 }
192
193 tmp_run() {
194   "$TMPEXE" >> "$TMPLOG" 2>&1
195 }
196
197 # Display error message, flush temporary file, exit.
198 die () {
199   echo
200   echo "Error: $@" >&2
201   echo >&2
202   rm -f "$TMPEXE" "$TMPC" "$TMPS" "$TMPCPP"
203   echo "Check \"$TMPLOG\" if you do not understand why it failed."
204   exit 1
205 }
206
207 # OS test booleans functions
208 issystem() {
209   test "$(echo $system_name | tolower)" = "$(echo $1 | tolower)"
210 }
211 aix()       { issystem "AIX"; }
212 amigaos()   { issystem "AmigaOS"; }
213 bsdos()     { issystem "BSD/OS"; }
214 cygwin()    { issystem "CYGWIN"; }
215 darwin()    { issystem "Darwin"; }
216 dragonfly() { issystem "DragonFly"; }
217 freebsd()   { issystem "FreeBSD" || issystem "GNU/kFreeBSD"; }
218 gnu()       { issystem "GNU"; }
219 hpux()      { issystem "HP-UX"; }
220 irix()      { issystem "IRIX"; }
221 linux()     { issystem "Linux"; }
222 mingw32()   { issystem "MINGW32"; }
223 morphos()   { issystem "MorphOS"; }
224 netbsd()    { issystem "NetBSD"; }
225 openbsd()   { issystem "OpenBSD"; }
226 os2()       { issystem "OS/2"; }
227 qnx()       { issystem "QNX"; }
228 sunos()     { issystem "SunOS"; }
229 wine()      { issystem "Wine"; }
230 win32()     { cygwin || mingw32 || wine; }
231
232 # arch test boolean functions
233 # x86/x86pc is used by QNX
234 x86_32() {
235   case "$host_arch" in
236     i[3-9]86|x86|x86pc|k5|k6|k6-2|k6-3|pentium*|athlon*|i586-i686) return 0 ;;
237     *) return 1 ;;
238   esac
239 }
240
241 x86_64() {
242   case "$host_arch" in
243     x86_64|amd64) return 0 ;;
244     *) return 1 ;;
245   esac
246 }
247
248 x86() {
249   x86_32 || x86_64
250 }
251
252 ppc() {
253   case "$host_arch" in
254     ppc*|powerpc*) return 0;;
255     *) return 1;;
256   esac
257 }
258
259 sparc() {
260   case "$host_arch" in
261     sparc*) return 0;;
262     *) return 1;;
263   esac
264 }
265
266 alpha() {
267   case "$host_arch" in
268     alpha*) return 0;;
269     *) return 1;;
270   esac
271 }
272
273 arm() {
274   case "$host_arch" in
275     arm*) return 0;;
276     *) return 1;;
277   esac
278 }
279
280 # Use this before starting a check
281 echocheck() {
282   echo "============ Checking for $@ ============" >> "$TMPLOG"
283   echo ${_echo_n} "Checking for $@ ... ${_echo_c}"
284 }
285
286 # Use this to echo the results of a check
287 echores() {
288   if test "$res_comment" ; then
289     res_comment="($res_comment)"
290   fi
291   echo "Result is: $@ $res_comment" >> "$TMPLOG"
292   echo "##########################################" >> "$TMPLOG"
293   echo "" >> "$TMPLOG"
294   echo "$@ $res_comment"
295   res_comment=""
296 }
297 #############################################################################
298
299 # Check how echo works in this /bin/sh
300 case $(echo -n) in
301   -n)   _echo_n=        _echo_c='\c'    ;;      # SysV echo
302   *)    _echo_n='-n '   _echo_c=        ;;      # BSD echo
303 esac
304
305 msg_lang_all=$(echo help/help_mp-??.h help/help_mp-??_??.h | sed -e "s:help/help_mp-\(..\).h:\1:g" -e "s:help/help_mp-\(.....\).h:\1:g")
306 man_lang_all=$(echo DOCS/man/??/mplayer.1 DOCS/man/??_??/mplayer.1 | sed -e "s:DOCS/man/\(..\)/mplayer.1:\1:g" -e "s:DOCS/man/\(.._..\)/mplayer.1:\1:g")
307 doc_lang_all=$(echo DOCS/xml/??/ DOCS/xml/??_??/ | sed -e "s:DOCS/xml/\(..\)/:\1:g" -e "s:DOCS/xml/\(.._..\)/:\1:g")
308
309 show_help(){
310 cat << EOF
311 Usage: $0 [OPTIONS]...
312
313 Configuration:
314   -h, --help             display this help and exit
315
316 Installation directories:
317   --prefix=DIR           prefix directory for installation [/usr/local]
318   --bindir=DIR           directory for installing binaries [PREFIX/bin]
319   --datadir=DIR          directory for installing machine independent
320                          data files (skins, etc) [PREFIX/share/mplayer]
321   --mandir=DIR           directory for installing man pages [PREFIX/share/man]
322   --confdir=DIR          directory for installing configuration files
323                          [PREFIX/etc/mplayer]
324   --libdir=DIR           directory for object code libraries [PREFIX/lib]
325   --codecsdir=DIR        directory for binary codecs [LIBDIR/codecs]
326
327 Optional features:
328   --disable-mencoder     disable MEncoder (A/V encoder) compilation [enable]
329   --disable-mplayer      disable MPlayer compilation [enable]
330   --enable-gui           enable GMPlayer compilation (GTK+ GUI) [disable]
331   --enable-termcap       use termcap database for key codes [autodetect]
332   --enable-termios       use termios database for key codes [autodetect]
333   --disable-iconv        disable iconv for encoding conversion [autodetect]
334   --disable-langinfo     do not use langinfo [autodetect]
335   --enable-lirc          enable LIRC (remote control) support [autodetect]
336   --enable-lircc         enable LIRCCD (LIRC client daemon) input [autodetect]
337   --enable-joystick      enable joystick support [disable]
338   --enable-apple-remote  enable Apple Remote input (Mac OS X only) [autodetect]
339   --enable-apple-ir      enable Apple IR Remote input (Linux only) [autodetect]
340   --disable-vm           disable X video mode extensions [autodetect]
341   --disable-xf86keysym   disable support for multimedia keys [autodetect]
342   --enable-radio         enable radio interface [disable]
343   --enable-radio-capture enable radio capture (through PCI/line-in) [disable]
344   --disable-radio-v4l2   disable Video4Linux2 radio interface [autodetect]
345   --disable-radio-bsdbt848   disable BSD BT848 radio interface [autodetect]
346   --disable-tv           disable TV interface (TV/DVB grabbers) [enable]
347   --disable-tv-v4l1      disable Video4Linux TV interface [autodetect]
348   --disable-tv-v4l2      disable Video4Linux2 TV interface [autodetect]
349   --disable-tv-bsdbt848  disable BSD BT848 interface [autodetect]
350   --disable-pvr          disable Video4Linux2 MPEG PVR [autodetect]
351   --disable-rtc          disable RTC (/dev/rtc) on Linux [autodetect]
352   --disable-networking   disable networking [enable]
353   --enable-winsock2_h    enable winsock2_h [autodetect]
354   --enable-smb           enable Samba (SMB) input [autodetect]
355   --enable-live          enable LIVE555 Streaming Media [autodetect]
356   --enable-nemesi        enable Nemesi Streaming Media [autodetect]
357   --enable-librtmp       enable RTMPDump Streaming Media [autodetect]
358   --disable-vcd          disable VCD support [autodetect]
359   --disable-bluray       disable Blu-ray support [autodetect]
360   --disable-dvdnav       disable libdvdnav [autodetect]
361   --disable-dvdread      disable libdvdread [autodetect]
362   --disable-cdparanoia   disable cdparanoia [autodetect]
363   --disable-cddb         disable cddb [autodetect]
364   --disable-bitmap-font  disable bitmap font support [enable]
365   --disable-freetype     disable FreeType 2 font rendering [autodetect]
366   --disable-fontconfig   disable fontconfig font lookup [autodetect]
367   --disable-unrarexec    disable using of UnRAR executable [enabled]
368   --enable-menu          enable OSD menu (not DVD menu) [disabled]
369   --disable-sortsub      disable subtitle sorting [enabled]
370   --enable-fribidi       enable the FriBiDi libs [autodetect]
371   --disable-enca         disable ENCA charset oracle library [autodetect]
372   --disable-maemo        disable maemo specific features [autodetect]
373   --enable-macosx-finder enable Mac OS X Finder invocation parameter
374                          parsing [disabled]
375   --enable-macosx-bundle enable Mac OS X bundle file locations [autodetect]
376   --disable-inet6        disable IPv6 support [autodetect]
377   --disable-sctp         disable SCTP support [autodetect]
378   --disable-gethostbyname2  gethostbyname2 part of the C library [autodetect]
379   --disable-ftp          disable FTP support [enabled]
380   --disable-vstream      disable TiVo vstream client support [autodetect]
381   --disable-pthreads     disable Posix threads support [autodetect]
382   --disable-w32threads   disable Win32 threads support [autodetect]
383   --disable-os2threads   disable OS/2 threads support [autodetect]
384   --enable-ass-internal  enable internal SSA/ASS subtitle support [autodetect]
385   --disable-ass          disable SSA/ASS subtitle support [autodetect]
386   --enable-rpath         enable runtime linker path for extra libs [disabled]
387   --disable-gnutls       disable GnuTLS [autodetect]
388   --enable-openssl-nondistributable  enable OpenSSL [disable]
389                          due to conflicting MPlayer and OpenSSL licenses, the
390                          resulting binary may be non-distributable.
391
392 Codecs:
393   --enable-gif              enable GIF support [autodetect]
394   --enable-png              enable PNG input/output support [autodetect]
395   --enable-mng              enable MNG input/output support [autodetect]
396   --enable-jpeg             enable JPEG input/output support [autodetect]
397   --enable-libcdio          enable libcdio support [autodetect]
398   --enable-liblzo           enable liblzo support [autodetect]
399   --disable-win32dll        disable Win32 DLL support [autodetect]
400   --disable-qtx             disable QuickTime codecs support [enabled]
401   --disable-xanim           disable XAnim codecs support [enabled]
402   --disable-real            disable RealPlayer codecs support [enabled]
403   --disable-xvid            disable Xvid [autodetect]
404   --disable-xvid-lavc       disable Xvid in libavcodec [autodetect]
405   --disable-x264            disable x264 [autodetect]
406   --disable-x264-lavc       disable x264 in libavcodec [autodetect]
407   --disable-libvpx-lavc     disable libvpx in libavcodec [autodetect]
408   --disable-libnut          disable libnut [autodetect]
409   --disable-ffmpeg_a        disable static FFmpeg [autodetect]
410   --disable-ffmpeg_so       disable shared FFmpeg [autodetect]
411   --disable-postproc        disable libpostproc [autodetect]
412   --enable-vf-lavfi         enable libavfilter wrapper [disabled]
413   --disable-libavcodec_mpegaudio_hp disable high precision audio decoding
414                                     in libavcodec [enabled]
415   --enable-tremor           enable integer libvorbis [autodetect]
416   --disable-libvorbis       disable libvorbis support [autodetect]
417   --disable-speex           disable Speex support [autodetect]
418   --disable-libgsm          disable libgsm support [autodetect]
419   --enable-theora           enable OggTheora libraries [autodetect]
420   --enable-faad             enable FAAD2 (AAC) [autodetect]
421   --disable-faac            disable support for FAAC (AAC encoder) [autodetect]
422   --disable-faac-lavc       disable support for FAAC in libavcodec [autodetect]
423   --disable-ladspa          disable LADSPA plugin support [autodetect]
424   --disable-libbs2b         disable libbs2b audio filter support [autodetect]
425   --disable-libdv           disable libdv 0.9.5 en/decoding support [autodetect]
426   --disable-libilbc         disable libilbc decoding support [autodetect]
427   --disable-libopus         disable libopus decoding support [autodetect]
428   --disable-mpg123          disable libmpg123 MP3 decoding support [autodetect]
429   --disable-mad             disable libmad (MPEG audio) support [autodetect]
430   --disable-mp3lame         disable LAME MP3 encoding support [autodetect]
431   --disable-mp3lame-lavc    disable LAME in libavcodec [autodetect]
432   --disable-toolame         disable Toolame (MPEG layer 2) encoding [autodetect]
433   --disable-twolame         disable Twolame (MPEG layer 2) encoding [autodetect]
434   --enable-xmms             enable XMMS input plugin support [disabled]
435   --enable-libdca           enable libdca support [autodetect]
436   --disable-liba52          disable liba52 [autodetect]
437   --disable-libmpeg2        disable libmpeg2 [autodetect]
438   --enable-libmpeg2-internal enable builtin libmpeg2 [disabled]
439   --enable-musepack         enable libmpcdec support (deprecated in favour of libavcodec) [disabled]
440   --disable-libopencore_amrnb disable libopencore_amr narrowband [autodetect]
441   --disable-libopencore_amrwb disable libopencore_amr wideband [autodetect]
442   --disable-libopenjpeg     disable OpenJPEG (JPEG 2000) input/output support [autodetect]
443   --disable-crystalhd       disable CrystalHD support [autodetect]
444   --disable-decoder=DECODER disable specified FFmpeg decoder
445   --enable-decoder=DECODER  enable specified FFmpeg decoder
446   --disable-encoder=ENCODER disable specified FFmpeg encoder
447   --enable-encoder=ENCODER  enable specified FFmpeg encoder
448   --disable-parser=PARSER   disable specified FFmpeg parser
449   --enable-parser=PARSER    enable specified FFmpeg parser
450   --disable-protocol=PROTO  disable specified FFmpeg protocol
451   --enable-protocol=PROTO   enable specified FFmpeg protocol
452   --disable-demuxer=DEMUXER disable specified FFmpeg demuxer
453   --enable-demuxer=DEMUXER  enable specified FFmpeg demuxer
454   --disable-muxer=MUXER     disable specified FFmpeg muxer
455   --enable-muxer=MUXER      enable specified FFmpeg muxer
456
457 Video output:
458   --disable-vidix          disable VIDIX [for x86 *nix]
459   --with-vidix-drivers[=*] list of VIDIX drivers to be compiled in
460                            Available: cyberblade, ivtv, mach64, mga, mga_crtc2,
461                            nvidia, pm2, pm3, radeon, rage128, s3, sis, unichrome
462   --disable-vidix-pcidb    disable VIDIX PCI device name database
463   --enable-dhahelper       enable VIDIX dhahelper support
464   --enable-svgalib_helper  enable VIDIX svgalib_helper support
465   --enable-gl              enable OpenGL video output [autodetect]
466   --disable-matrixview     disable OpenGL MatrixView video output [autodetect]
467   --enable-dga2            enable DGA 2 support [autodetect]
468   --enable-dga1            enable DGA 1 support [autodetect]
469   --enable-vesa            enable VESA video output [autodetect]
470   --enable-svga            enable SVGAlib video output [autodetect]
471   --enable-sdl             enable SDL video output [autodetect]
472   --enable-kva             enable KVA video output [autodetect]
473   --enable-aa              enable AAlib video output [autodetect]
474   --enable-caca            enable CACA  video output [autodetect]
475   --enable-ggi             enable GGI video output [autodetect]
476   --enable-ggiwmh          enable GGI libggiwmh extension [autodetect]
477   --enable-direct3d        enable Direct3D video output [autodetect]
478   --enable-directx         enable DirectX video output [autodetect]
479   --enable-dxr2            enable DXR2 video output [autodetect]
480   --enable-dxr3            enable DXR3/H+ video output [autodetect]
481   --enable-ivtv            enable IVTV TV-Out video output [autodetect]
482   --enable-v4l2            enable V4L2 Decoder audio/video output [autodetect]
483   --enable-dvb             enable DVB video output [autodetect]
484   --enable-mga             enable mga_vid video output [autodetect]
485   --enable-xmga            enable mga_vid X11 video output [autodetect]
486   --enable-xv              enable Xv video output [autodetect]
487   --enable-xvmc            enable XvMC acceleration [disable]
488   --enable-vda             enable VDA acceleration [autodetect]
489   --enable-vdpau           enable VDPAU acceleration [autodetect]
490   --enable-vm              enable XF86VidMode support [autodetect]
491   --enable-xinerama        enable Xinerama support [autodetect]
492   --enable-x11             enable X11 video output [autodetect]
493   --enable-xshape          enable XShape support [autodetect]
494   --disable-xss            disable screensaver support via xss [autodetect]
495   --enable-fbdev           enable FBDev video output [autodetect]
496   --enable-mlib            enable mediaLib video output (Solaris) [disable]
497   --enable-3dfx            enable obsolete /dev/3dfx video output [disable]
498   --enable-tdfxfb          enable tdfxfb video output [disable]
499   --enable-s3fb            enable s3fb (S3 ViRGE) video output [disable]
500   --enable-wii             enable Nintendo Wii/GameCube video output [disable]
501   --enable-directfb        enable DirectFB video output [autodetect]
502   --enable-zr              enable ZR360[56]7/ZR36060 video output [autodetect]
503   --enable-bl              enable Blinkenlights video output [disable]
504   --enable-tdfxvid         enable tdfx_vid video output [disable]
505   --enable-xvr100          enable SUN XVR-100 video output [autodetect]
506   --disable-tga            disable Targa video output [enable]
507   --disable-pnm            disable PNM video output [enable]
508   --disable-md5sum         disable md5sum video output [enable]
509   --disable-yuv4mpeg       disable yuv4mpeg video output [enable]
510   --disable-corevideo      disable CoreVideo video output [autodetect]
511   --disable-quartz         disable Quartz video output [autodetect]
512
513 Audio output:
514   --disable-alsa         disable ALSA audio output [autodetect]
515   --disable-ossaudio     disable OSS audio output [autodetect]
516   --disable-arts         disable aRts audio output [autodetect]
517   --disable-esd          disable esd audio output [autodetect]
518   --disable-pulse        disable Pulseaudio audio output [autodetect]
519   --disable-jack         disable JACK audio output [autodetect]
520   --disable-openal       disable OpenAL audio output [autodetect]
521   --disable-nas          disable NAS audio output [autodetect]
522   --disable-sgiaudio     disable SGI audio output [autodetect]
523   --disable-sndio        disable sndio audio output [autodetect]
524   --disable-sunaudio     disable Sun audio output [autodetect]
525   --disable-kai          disable KAI audio output [autodetect]
526   --disable-dart         disable DART audio output [autodetect]
527   --disable-win32waveout disable Windows waveout audio output [autodetect]
528   --disable-coreaudio    disable CoreAudio audio output [autodetect]
529   --disable-select       disable using select() on the audio device [enable]
530
531 Language options:
532   --charset=charset      convert the console messages to this character set
533   --language-doc=lang    language to use for the documentation [en]
534   --language-man=lang    language to use for the man pages [en]
535   --language-msg=lang    language to use for the messages and the GUI [en]
536   --language=lang        default language to use [en]
537 Specific options override --language. You can pass a list of languages separated
538 by whitespace or commas instead of a single language. Nonexisting translations
539 will be dropped from each list. All documentation and man page translations
540 available in the list will be installed, for the messages the first available
541 translation will be used. The value "all" will activate all translations. The
542 LINGUAS environment variable is honored. In all cases the fallback is English.
543 Available values are: all $msg_lang_all
544
545 Miscellaneous options:
546   --enable-runtime-cpudetection    enable runtime CPU detection [disable]
547   --enable-cross-compile enable cross-compilation [autodetect]
548   --cc=COMPILER          C compiler to build MPlayer [gcc]
549   --host-cc=COMPILER     C compiler for tools needed while building [gcc]
550   --as=ASSEMBLER         assembler to build MPlayer [as]
551   --nm=NM                nm tool to build MPlayer [nm]
552   --yasm=YASM            Yasm assembler to build MPlayer [yasm]
553   --ar=AR                librarian to build MPlayer [ar]
554   --ranlib=RANLIB        ranlib to build MPlayer [ranlib]
555   --windres=WINDRES      windres to build MPlayer [windres]
556   --target=PLATFORM      target platform (i386-linux, arm-linux, etc)
557   --enable-static        build a statically linked binary
558   --with-install=PATH    path to a custom install program
559
560 Advanced options:
561   --enable-mmx              enable MMX [autodetect]
562   --enable-mmxext           enable MMX2 (Pentium III, Athlon) [autodetect]
563   --enable-3dnow            enable 3DNow! [autodetect]
564   --enable-3dnowext         enable extended 3DNow! [autodetect]
565   --enable-sse              enable SSE [autodetect]
566   --enable-sse2             enable SSE2 [autodetect]
567   --enable-sse3             enable SSE3 [autodetect]
568   --enable-ssse3            enable SSSE3 [autodetect]
569   --enable-sse4             enable SSE4 [autodetect]
570   --enable-sse42            enable SSE4.2 [autodetect]
571   --enable-avx              enable AVX [autodetect]
572   --enable-avx2             enable AVX2 [autodetect]
573   --enable-xop              enable XOP [autodetect]
574   --enable-fma3             enable FMA3 [autodetect]
575   --enable-fma4             enable FMA4 [autodetect]
576   --enable-shm              enable shm [autodetect]
577   --enable-altivec          enable AltiVec (PowerPC) [autodetect]
578   --enable-armv5te          enable DSP extensions (ARM) [autodetect]
579   --enable-armv6            enable ARMv6 (ARM) [autodetect]
580   --enable-armv6t2          enable ARMv6t2 (ARM) [autodetect]
581   --enable-armvfp           enable ARM VFP (ARM) [autodetect]
582   --enable-vfpv3            enable ARM VFPV3 (ARM) [autodetect]
583   --enable-neon             enable NEON (ARM) [autodetect]
584   --enable-thumb            enable THUMB (ARM) [autodetect]
585   --enable-iwmmxt           enable iWMMXt (ARM) [autodetect]
586   --disable-fastmemcpy      disable 3DNow!/SSE/MMX optimized memcpy [enable]
587   --enable-hardcoded-tables put tables in binary instead of calculating them at startup [disable]
588   --enable-big-endian       force byte order to big-endian [autodetect]
589   --enable-debug[=1-3]      compile-in debugging information [disable]
590   --enable-profile          compile-in profiling information [disable]
591   --disable-sighandler      disable sighandler for crashes [enable]
592   --enable-relocatable      enable compiling as relocatable/PIE executable [auto]
593   --enable-crash-debug      enable automatic gdb attach on crash [disable]
594   --enable-dynamic-plugins  enable dynamic A/V plugins [disable]
595
596 Use these options if autodetection fails:
597   --extra-cflags=FLAGS        extra CFLAGS
598   --extra-ldflags=FLAGS       extra LDFLAGS
599   --extra-libs=FLAGS          extra linker flags
600   --extra-libs-mplayer=FLAGS  extra linker flags for MPlayer
601   --extra-libs-mencoder=FLAGS extra linker flags for MEncoder
602   --with-xvmclib=NAME         adapter-specific library name (e.g. XvMCNVIDIA)
603
604   --with-freetype-config=PATH path to freetype-config
605   --with-sdl-config=PATH      path to sdl*-config
606   --with-dvdnav-config=PATH   path to dvdnav-config
607   --with-dvdread-config=PATH  path to dvdread-config
608
609 This configure script is NOT autoconf-based, even though its output is similar.
610 It will try to autodetect all configuration options. If you --enable an option
611 it will be forcefully turned on, skipping autodetection. This can break
612 compilation, so you need to know what you are doing.
613 EOF
614 exit 0
615 } #show_help()
616
617 # GOTCHA: the variables below defines the default behavior for autodetection
618 # and have - unless stated otherwise - at least 2 states : yes no
619 # If autodetection is available then the third state is: auto
620 _mmx=auto
621 _3dnow=auto
622 _3dnowext=auto
623 _mmxext=auto
624 _sse=auto
625 _sse2=auto
626 _sse3=auto
627 _ssse3=auto
628 _sse4_1=auto
629 _sse4_2=auto
630 _avx=auto
631 _avx2=auto
632 _avx512=no
633 _xop=auto
634 _fma3=auto
635 _fma4=auto
636 _cmov=auto
637 _fast_cmov=auto
638 _fast_clz=auto
639 _armv5te=auto
640 _armv6=auto
641 _armv6t2=auto
642 _armvfp=auto
643 vfpv3=auto
644 setend=auto
645 neon=auto
646 armthumb=auto
647 _iwmmxt=auto
648 _mtrr=auto
649 _altivec=auto
650 _install=install
651 _ranlib=ranlib
652 _windres=windres
653 _cc=cc
654 _ar=ar
655 _arflags=rc
656 # create thin archive to save disk space and I/O
657 $_ar 2>&1 | grep -q "\[T\] " && _arflags=rcT
658 test "$CC" && _cc="$CC"
659 _as=auto
660 _nm=auto
661 _yasm=yasm
662 _runtime_cpudetection=no
663 _cross_compile=auto
664 _prefix="/usr/local"
665 ffmpeg_a=auto
666 ffmpeg_so=auto
667 postproc=auto
668 _vf_lavfi=no
669 _libavcodec_mpegaudio_hp=yes
670 _libopencore_amrnb=auto
671 _libopencore_amrwb=auto
672 libopenjpeg=auto
673 _mencoder=yes
674 _mplayer=yes
675 _x11=auto
676 _xshape=auto
677 _xss=auto
678 _dga1=auto
679 _dga2=auto
680 _xv=auto
681 _xvmc=no  #auto when complete
682 _vda=auto
683 _vdpau=auto
684 _sdl=auto
685 _kva=auto
686 _direct3d=auto
687 _directx=auto
688 _win32waveout=auto
689 _nas=auto
690 _png=auto
691 _mng=auto
692 _jpeg=auto
693 _pnm=yes
694 _md5sum=yes
695 _yuv4mpeg=yes
696 _gif=auto
697 _gl=auto
698 matrixview=auto
699 _ggi=auto
700 _ggiwmh=auto
701 _aa=auto
702 _caca=auto
703 _svga=auto
704 _vesa=auto
705 _fbdev=auto
706 _dvb=auto
707 _dxr2=auto
708 _dxr3=auto
709 _ivtv=auto
710 _v4l2=auto
711 _iconv=auto
712 _langinfo=auto
713 _rtc=auto
714 _ossaudio=auto
715 _arts=auto
716 _esd=auto
717 _pulse=auto
718 _jack=auto
719 _kai=auto
720 _dart=auto
721 _openal=auto
722 _libcdio=auto
723 _liblzo=auto
724 _mad=auto
725 _mp3lame=auto
726 _mp3lame_lavc=auto
727 _toolame=auto
728 _twolame=auto
729 _tremor=auto
730 _libvorbis=auto
731 _speex=auto
732 _libgsm=auto
733 _theora=auto
734 _mpg123=auto
735 _liba52=auto
736 _libdca=auto
737 _libmpeg2=auto
738 _libmpeg2_internal=no
739 _faad=auto
740 _faac=auto
741 _ladspa=auto
742 _libbs2b=auto
743 _libilbc=auto
744 _libopus=auto
745 _xmms=no
746 _vcd=auto
747 _bluray=auto
748 _dvdnav=auto
749 _dvdnavconfig="pkg-config dvdnav"
750 type dvdnav-config >/dev/null 2>&1 && _dvdnavconfig=dvdnav-config
751 _dvdreadconfig="pkg-config dvdread"
752 type dvdread-config >/dev/null 2>&1 && _dvdreadconfig=dvdread-config
753 _dvdread=auto
754 _xanim=auto
755 _real=auto
756 _live=auto
757 _nemesi=auto
758 _librtmp=auto
759 _native_rtsp=yes
760 _xinerama=auto
761 _mga=auto
762 _xmga=auto
763 _vm=auto
764 _xf86keysym=auto
765 _mlib=no #broken, thus disabled
766 _sgiaudio=auto
767 _sndio=auto
768 _sunaudio=auto
769 _alsa=auto
770 _fastmemcpy=yes
771 hardcoded_tables=no
772 _unrar_exec=auto
773 _win32dll=auto
774 _select=yes
775 _radio=no
776 _radio_capture=no
777 _radio_v4l=auto
778 _radio_v4l2=auto
779 _radio_bsdbt848=auto
780 _tv=yes
781 _tv_v4l1=auto
782 _tv_v4l2=auto
783 _tv_bsdbt848=auto
784 _tv_dshow=auto
785 _pvr=auto
786 networking=yes
787 _winsock2_h=auto
788 _struct_pollfd=auto
789 _struct_addrinfo=auto
790 _getaddrinfo=auto
791 _struct_sockaddr_storage=auto
792 _smb=auto
793 _vidix=auto
794 _vidix_pcidb=yes
795 _dhahelper=no
796 _svgalib_helper=no
797 _joystick=no
798 crystalhd=auto
799 _xvid=auto
800 _xvid_lavc=auto
801 _x264=auto
802 _x264_lavc=auto
803 _libvpx_lavc=auto
804 _libnut=auto
805 _lirc=auto
806 _lircc=auto
807 _apple_remote=auto
808 _apple_ir=auto
809 _gui=no
810 _termcap=auto
811 _termios=auto
812 _3dfx=no
813 _s3fb=no
814 _wii=no
815 _tdfxfb=no
816 _tdfxvid=no
817 _xvr100=auto
818 _tga=yes
819 _directfb=auto
820 _zr=auto
821 _bl=no
822 #language=en
823 _shm=auto
824 _charset="UTF-8"
825 _dynamic_plugins=no
826 _crash_debug=no
827 _sighandler=yes
828 relocatable=auto
829 _libdv=auto
830 _cdparanoia=auto
831 _cddb=auto
832 _big_endian=auto
833 _bitmap_font=yes
834 _freetype=auto
835 _fontconfig=auto
836 _menu=no
837 _qtx=auto
838 _maemo=auto
839 _coreaudio=auto
840 _corevideo=auto
841 _quartz=auto
842 quicktime=auto
843 _macosx_finder=no
844 _macosx_bundle=auto
845 _sortsub=yes
846 _freetypeconfig='pkg-config freetype2'
847 type freetype-config >/dev/null 2>&1 && _freetypeconfig=freetype-config
848 _fribidi=auto
849 _enca=auto
850 _inet6=auto
851 _sctp=auto
852 _gethostbyname2=auto
853 _gnutls=auto
854 _openssl=no
855 _ftp=auto
856 _musepack=no
857 _vstream=auto
858 _pthreads=auto
859 _w32threads=auto
860 _os2threads=auto
861 _ass=auto
862 ass_internal=auto
863 _rpath=no
864 _asmalign_pot=auto
865 _stream_cache=yes
866 _priority=no
867 def_dos_paths="#define HAVE_DOS_PATHS 0"
868 def_stream_cache="#define CONFIG_STREAM_CACHE 1"
869 def_path_max_check="#define CONFIG_PATH_MAX_CHECK 0"
870 def_priority="#undef CONFIG_PRIORITY"
871 def_pthread_cache="#undef PTHREAD_CACHE"
872 def_simd_align_32='#define HAVE_SIMD_ALIGN_32 0'
873 shmem=no
874
875 option_value(){
876   echo $(echo $* | cut -d '=' -f 2-)
877 }
878
879 option_value_uc(){
880   echo $(option_value $1 | toupper)
881 }
882
883 for ac_option do
884   case "$ac_option" in
885   --help|-help|-h)
886     show_help
887     ;;
888   --prefix=*)
889     _prefix=$(option_value $ac_option)
890     ;;
891   --bindir=*)
892     _bindir=$(option_value $ac_option)
893     ;;
894   --datadir=*)
895     _datadir=$(option_value $ac_option)
896     ;;
897   --mandir=*)
898     _mandir=$(option_value $ac_option)
899     ;;
900   --confdir=*)
901     _confdir=$(option_value $ac_option)
902     ;;
903   --libdir=*)
904     _libdir=$(option_value $ac_option)
905     ;;
906   --codecsdir=*)
907     _codecsdir=$(option_value $ac_option)
908     ;;
909
910   --with-install=*)
911     _install=$(option_value $ac_option)
912     ;;
913   --with-xvmclib=*)
914     _xvmclib=$(option_value $ac_option)
915     ;;
916
917   --with-sdl-config=*)
918     _sdlconfig=$(option_value $ac_option)
919     ;;
920   --with-freetype-config=*)
921     _freetypeconfig=$(option_value $ac_option)
922     ;;
923   --with-dvdnav-config=*)
924     _dvdnavconfig=$(option_value $ac_option)
925     ;;
926   --with-dvdread-config=*)
927     _dvdreadconfig=$(option_value $ac_option)
928     ;;
929
930   --extra-cflags=*)
931     extra_cflags=$(option_value $ac_option)
932     ;;
933   --extra-ldflags=*)
934     extra_ldflags=$(option_value $ac_option)
935     ;;
936   --extra-libs=*)
937     extra_libs=$(option_value $ac_option)
938     ;;
939   --extra-libs-mplayer=*)
940     libs_mplayer=$(option_value $ac_option)
941     ;;
942   --extra-libs-mencoder=*)
943     libs_mencoder=$(option_value $ac_option)
944     ;;
945
946   --target=*)
947     _target=$(option_value $ac_option)
948     ;;
949   --cc=*)
950     _cc=$(option_value $ac_option)
951     ;;
952   --host-cc=*)
953     _host_cc=$(option_value $ac_option)
954     ;;
955   --as=*)
956     _as=$(option_value $ac_option)
957     ;;
958   --nm=*)
959     _nm=$(option_value $ac_option)
960     ;;
961   --yasm=*)
962     _yasm=$(option_value $ac_option)
963     ;;
964   --ar=*)
965     _ar=$(option_value $ac_option)
966     ;;
967   --ranlib=*)
968     _ranlib=$(option_value $ac_option)
969     ;;
970   --windres=*)
971     _windres=$(option_value $ac_option)
972     ;;
973   --charset=*)
974     _charset=$(option_value $ac_option)
975     ;;
976   --language-doc=*)
977     language_doc=$(option_value $ac_option)
978     ;;
979   --language-man=*)
980     language_man=$(option_value $ac_option)
981     ;;
982   --language-msg=*)
983     language_msg=$(option_value $ac_option)
984     ;;
985   --language=*)
986     language=$(option_value $ac_option)
987     ;;
988
989   --enable-static)
990     ld_static='-static'
991     ;;
992   --disable-static)
993     ld_static=''
994     ;;
995   --enable-profile)
996     _profile='-p'
997     ;;
998   --disable-profile)
999     _profile=
1000     ;;
1001   --enable-debug)
1002     _debug='-g'
1003     ;;
1004   --enable-debug=*)
1005     _debug=$(echo $_echo_n '-g'$_echo_c; option_value $ac_option)
1006     ;;
1007   --disable-debug)
1008     _debug=
1009     ;;
1010   --enable-runtime-cpudetection)    _runtime_cpudetection=yes   ;;
1011   --disable-runtime-cpudetection)   _runtime_cpudetection=no    ;;
1012   --enable-cross-compile)           _cross_compile=yes          ;;
1013   --disable-cross-compile)          _cross_compile=no           ;;
1014   --enable-mencoder)    _mencoder=yes   ;;
1015   --disable-mencoder)   _mencoder=no    ;;
1016   --enable-mplayer)     _mplayer=yes    ;;
1017   --disable-mplayer)    _mplayer=no     ;;
1018   --enable-dynamic-plugins) _dynamic_plugins=yes ;;
1019   --disable-dynamic-plugins) _dynamic_plugins=no ;;
1020   --enable-x11)         _x11=yes        ;;
1021   --disable-x11)        _x11=no         ;;
1022   --enable-xshape)      _xshape=yes     ;;
1023   --disable-xshape)     _xshape=no      ;;
1024   --enable-xss)         _xss=yes        ;;
1025   --disable-xss)        _xss=no         ;;
1026   --enable-xv)          _xv=yes         ;;
1027   --disable-xv)         _xv=no          ;;
1028   --enable-xvmc)        _xvmc=yes       ;;
1029   --disable-xvmc)       _xvmc=no        ;;
1030   --enable-vda)         _vda=yes        ;;
1031   --disable-vda)        _vda=no         ;;
1032   --enable-vdpau)       _vdpau=yes      ;;
1033   --disable-vdpau)      _vdpau=no       ;;
1034   --enable-sdl)         _sdl=yes        ;;
1035   --disable-sdl)        _sdl=no         ;;
1036   --enable-kva)         _kva=yes        ;;
1037   --disable-kva)        _kva=no         ;;
1038   --enable-direct3d)    _direct3d=yes   ;;
1039   --disable-direct3d)   _direct3d=no    ;;
1040   --enable-directx)     _directx=yes    ;;
1041   --disable-directx)    _directx=no     ;;
1042   --enable-win32waveout)  _win32waveout=yes ;;
1043   --disable-win32waveout) _win32waveout=no  ;;
1044   --enable-nas)         _nas=yes        ;;
1045   --disable-nas)        _nas=no         ;;
1046   --enable-png)         _png=yes        ;;
1047   --disable-png)        _png=no         ;;
1048   --enable-mng)         _mng=yes        ;;
1049   --disable-mng)        _mng=no         ;;
1050   --enable-jpeg)        _jpeg=yes       ;;
1051   --disable-jpeg)       _jpeg=no        ;;
1052   --enable-libopenjpeg) libopenjpeg=yes ;;
1053   --disable-libopenjpeg)libopenjpeg=no  ;;
1054   --enable-pnm)         _pnm=yes        ;;
1055   --disable-pnm)        _pnm=no         ;;
1056   --enable-md5sum)      _md5sum=yes     ;;
1057   --disable-md5sum)     _md5sum=no      ;;
1058   --enable-yuv4mpeg)    _yuv4mpeg=yes   ;;
1059   --disable-yuv4mpeg)   _yuv4mpeg=no    ;;
1060   --enable-gif)         _gif=yes        ;;
1061   --disable-gif)        _gif=no         ;;
1062   --enable-gl)          _gl=yes         ;;
1063   --disable-gl)         _gl=no          ;;
1064   --enable-matrixview)  matrixview=yes  ;;
1065   --disable-matrixview) matrixview=no   ;;
1066   --enable-ggi)         _ggi=yes        ;;
1067   --disable-ggi)        _ggi=no         ;;
1068   --enable-ggiwmh)      _ggiwmh=yes     ;;
1069   --disable-ggiwmh)     _ggiwmh=no      ;;
1070   --enable-aa)          _aa=yes         ;;
1071   --disable-aa)         _aa=no          ;;
1072   --enable-caca)        _caca=yes       ;;
1073   --disable-caca)       _caca=no        ;;
1074   --enable-svga)        _svga=yes       ;;
1075   --disable-svga)       _svga=no        ;;
1076   --enable-vesa)        _vesa=yes       ;;
1077   --disable-vesa)       _vesa=no        ;;
1078   --enable-fbdev)       _fbdev=yes      ;;
1079   --disable-fbdev)      _fbdev=no       ;;
1080   --enable-dvb)         _dvb=yes        ;;
1081   --disable-dvb)        _dvb=no         ;;
1082   --enable-dxr2)        _dxr2=yes       ;;
1083   --disable-dxr2)       _dxr2=no        ;;
1084   --enable-dxr3)        _dxr3=yes       ;;
1085   --disable-dxr3)       _dxr3=no        ;;
1086   --enable-ivtv)        _ivtv=yes       ;;
1087   --disable-ivtv)       _ivtv=no        ;;
1088   --enable-v4l2)        _v4l2=yes       ;;
1089   --disable-v4l2)       _v4l2=no        ;;
1090   --enable-iconv)       _iconv=yes      ;;
1091   --disable-iconv)      _iconv=no       ;;
1092   --enable-langinfo)    _langinfo=yes   ;;
1093   --disable-langinfo)   _langinfo=no    ;;
1094   --enable-rtc)         _rtc=yes        ;;
1095   --disable-rtc)        _rtc=no         ;;
1096   --enable-libdv)       _libdv=yes      ;;
1097   --disable-libdv)      _libdv=no       ;;
1098   --enable-ossaudio)    _ossaudio=yes   ;;
1099   --disable-ossaudio)   _ossaudio=no    ;;
1100   --enable-arts)        _arts=yes       ;;
1101   --disable-arts)       _arts=no        ;;
1102   --enable-esd)         _esd=yes        ;;
1103   --disable-esd)        _esd=no         ;;
1104   --enable-pulse)       _pulse=yes      ;;
1105   --disable-pulse)      _pulse=no       ;;
1106   --enable-jack)        _jack=yes       ;;
1107   --disable-jack)       _jack=no        ;;
1108   --enable-openal)      _openal=yes     ;;
1109   --disable-openal)     _openal=no      ;;
1110   --enable-kai)         _kai=yes        ;;
1111   --disable-kai)        _kai=no         ;;
1112   --enable-dart)        _dart=yes       ;;
1113   --disable-dart)       _dart=no        ;;
1114   --enable-mad)         _mad=yes        ;;
1115   --disable-mad)        _mad=no         ;;
1116   --enable-mp3lame)     _mp3lame=yes    ;;
1117   --disable-mp3lame)    _mp3lame=no     ;;
1118   --enable-mp3lame-lavc)  _mp3lame_lavc=yes       ;;
1119   --disable-mp3lame-lavc) _mp3lame_lavc=no        ;;
1120   --enable-toolame)     _toolame=yes    ;;
1121   --disable-toolame)    _toolame=no     ;;
1122   --enable-twolame)     _twolame=yes    ;;
1123   --disable-twolame)    _twolame=no     ;;
1124   --enable-libcdio)     _libcdio=yes    ;;
1125   --disable-libcdio)    _libcdio=no     ;;
1126   --enable-liblzo)      _liblzo=yes     ;;
1127   --disable-liblzo)     _liblzo=no      ;;
1128   --enable-libvorbis)   _libvorbis=yes  ;;
1129   --disable-libvorbis)  _libvorbis=no   ;;
1130   --enable-speex)       _speex=yes      ;;
1131   --disable-speex)      _speex=no       ;;
1132   --enable-libgsm)      _libgsm=yes     ;;
1133   --disable-libgsm)     _libgsm=no      ;;
1134   --enable-tremor)      _tremor=yes     ;;
1135   --disable-tremor)     _tremor=no      ;;
1136   --enable-theora)      _theora=yes     ;;
1137   --disable-theora)     _theora=no      ;;
1138   --enable-mpg123)      _mpg123=yes     ;;
1139   --disable-mpg123)     _mpg123=no      ;;
1140   --enable-liba52)      _liba52=yes     ;;
1141   --disable-liba52)     _liba52=no      ;;
1142   --enable-libdca)      _libdca=yes     ;;
1143   --disable-libdca)     _libdca=no      ;;
1144   --enable-libmpeg2)    _libmpeg2=yes   ;;
1145   --disable-libmpeg2)   _libmpeg2=no    ;;
1146   --enable-libmpeg2-internal)    _libmpeg2_internal=yes   ;;
1147   --disable-libmpeg2-internal)   _libmpeg2_internal=no    ;;
1148   --enable-musepack)    _musepack=yes   ;;
1149   --disable-musepack)   _musepack=no    ;;
1150   --enable-faad)        _faad=yes       ;;
1151   --disable-faad)       _faad=no        ;;
1152   --enable-faac)        _faac=yes       ;;
1153   --disable-faac)       _faac=no        ;;
1154   --enable-ladspa)      _ladspa=yes     ;;
1155   --disable-ladspa)     _ladspa=no      ;;
1156   --enable-libbs2b)     _libbs2b=yes    ;;
1157   --disable-libbs2b)    _libbs2b=no     ;;
1158   --enable-libilbc)     _libilbc=yes    ;;
1159   --disable-libilbc)    _libilbc=no     ;;
1160   --enable-libopus)     _libopus=yes    ;;
1161   --disable-libopus)    _libopus=no     ;;
1162   --enable-xmms)        _xmms=yes       ;;
1163   --disable-xmms)       _xmms=no        ;;
1164   --enable-vcd)         _vcd=yes        ;;
1165   --disable-vcd)        _vcd=no         ;;
1166   --enable-bluray)      _bluray=yes     ;;
1167   --disable-bluray)     _bluray=no      ;;
1168   --enable-dvdread)     _dvdread=yes    ;;
1169   --disable-dvdread)    _dvdread=no     ;;
1170   --enable-dvdnav)      _dvdnav=yes     ;;
1171   --disable-dvdnav)     _dvdnav=no      ;;
1172   --enable-xanim)       _xanim=yes      ;;
1173   --disable-xanim)      _xanim=no       ;;
1174   --enable-real)        _real=yes       ;;
1175   --disable-real)       _real=no        ;;
1176   --enable-live)        _live=yes       ;;
1177   --disable-live)       _live=no        ;;
1178   --enable-nemesi)      _nemesi=yes     ;;
1179   --disable-nemesi)     _nemesi=no      ;;
1180   --enable-librtmp)     _librtmp=yes    ;;
1181   --disable-librtmp)    _librtmp=no     ;;
1182   --enable-xinerama)    _xinerama=yes   ;;
1183   --disable-xinerama)   _xinerama=no    ;;
1184   --enable-mga)         _mga=yes        ;;
1185   --disable-mga)        _mga=no         ;;
1186   --enable-xmga)        _xmga=yes       ;;
1187   --disable-xmga)       _xmga=no        ;;
1188   --enable-vm)          _vm=yes         ;;
1189   --disable-vm)         _vm=no          ;;
1190   --enable-xf86keysym)  _xf86keysym=yes ;;
1191   --disable-xf86keysym) _xf86keysym=no  ;;
1192   --enable-mlib)        _mlib=yes       ;;
1193   --disable-mlib)       _mlib=no        ;;
1194   --enable-sunaudio)    _sunaudio=yes   ;;
1195   --disable-sunaudio)   _sunaudio=no    ;;
1196   --enable-sgiaudio)    _sgiaudio=yes   ;;
1197   --disable-sgiaudio)   _sgiaudio=no    ;;
1198   --enable-sndio)       _sndio=yes      ;;
1199   --disable-sndio)      _sndio=no       ;;
1200   --enable-alsa)        _alsa=yes       ;;
1201   --disable-alsa)       _alsa=no        ;;
1202   --enable-tv)          _tv=yes         ;;
1203   --disable-tv)         _tv=no          ;;
1204   --enable-tv-bsdbt848)  _tv_bsdbt848=yes ;;
1205   --disable-tv-bsdbt848) _tv_bsdbt848=no  ;;
1206   --enable-tv-v4l1)     _tv_v4l1=yes    ;;
1207   --disable-tv-v4l1)    _tv_v4l1=no     ;;
1208   --enable-tv-v4l2)     _tv_v4l2=yes    ;;
1209   --disable-tv-v4l2)    _tv_v4l2=no     ;;
1210   --enable-tv-dshow)    _tv_dshow=yes   ;;
1211   --disable-tv-dshow)   _tv_dshow=no    ;;
1212   --enable-radio)       _radio=yes      ;;
1213   --enable-radio-capture)       _radio_capture=yes      ;;
1214   --disable-radio-capture)      _radio_capture=no       ;;
1215   --disable-radio)      _radio=no       ;;
1216   --enable-radio-v4l)   _radio_v4l=yes  ;;
1217   --disable-radio-v4l)  _radio_v4l=no   ;;
1218   --enable-radio-v4l2)  _radio_v4l2=yes ;;
1219   --disable-radio-v4l2) _radio_v4l2=no  ;;
1220   --enable-radio-bsdbt848)      _radio_bsdbt848=yes     ;;
1221   --disable-radio-bsdbt848)     _radio_bsdbt848=no      ;;
1222   --enable-pvr)         _pvr=yes        ;;
1223   --disable-pvr)        _pvr=no         ;;
1224   --enable-fastmemcpy)  _fastmemcpy=yes ;;
1225   --disable-fastmemcpy) _fastmemcpy=no  ;;
1226   --enable-hardcoded-tables)  hardcoded_tables=yes ;;
1227   --disable-hardcoded-tables) hardcoded_tables=no  ;;
1228   --enable-networking)     networking=yes    ;;
1229   --disable-networking)    networking=no     ;;
1230   --enable-winsock2_h)  _winsock2_h=yes ;;
1231   --disable-winsock2_h) _winsock2_h=no  ;;
1232   --enable-smb)         _smb=yes        ;;
1233   --disable-smb)        _smb=no ;;
1234   --enable-vidix)       _vidix=yes      ;;
1235   --disable-vidix)      _vidix=no       ;;
1236   --with-vidix-drivers=*)
1237     _vidix_drivers=$(option_value $ac_option)
1238     ;;
1239   --disable-vidix-pcidb)  _vidix_pcidb=no         ;;
1240   --enable-dhahelper)   _dhahelper=yes  ;;
1241   --disable-dhahelper)  _dhahelper=no   ;;
1242   --enable-svgalib_helper)      _svgalib_helper=yes     ;;
1243   --disable-svgalib_helper)     _svgalib_helper=no      ;;
1244   --enable-joystick)    _joystick=yes   ;;
1245   --disable-joystick)   _joystick=no    ;;
1246   --enable-crystalhd)   crystalhd=yes  ;;
1247   --disable-crystalhd)  crystalhd=no   ;;
1248   --enable-xvid)        _xvid=yes       ;;
1249   --disable-xvid)       _xvid=no        ;;
1250   --enable-xvid-lavc)   _xvid_lavc=yes  ;;
1251   --disable-xvid-lavc)  _xvid_lavc=no   ;;
1252   --enable-x264)        _x264=yes       ;;
1253   --disable-x264)       _x264=no        ;;
1254   --enable-x264-lavc)   _x264_lavc=yes  ;;
1255   --disable-x264-lavc)  _x264_lavc=no   ;;
1256   --enable-libvpx-lavc)   _libvpx_lavc=yes  ;;
1257   --disable-libvpx-lavc)  _libvpx_lavc=no   ;;
1258   --enable-libnut)      _libnut=yes     ;;
1259   --disable-libnut)     _libnut=no      ;;
1260   --enable-libopencore_amrnb)   _libopencore_amrnb=yes  ;;
1261   --disable-libopencore_amrnb)  _libopencore_amrnb=no   ;;
1262   --enable-libopencore_amrwb)   _libopencore_amrwb=yes  ;;
1263   --disable-libopencore_amrwb)  _libopencore_amrwb=no   ;;
1264   --enable-ffmpeg_a)    ffmpeg_a=yes    ;;
1265   --disable-ffmpeg_a)   ffmpeg_a=no     ;;
1266   --enable-ffmpeg_so)   ffmpeg_so=yes   ;;
1267   --disable-ffmpeg_so)  ffmpeg_so=no    ;;
1268   --enable-postproc)    postproc=yes    ;;
1269   --disable-postproc)   postproc=no     ;;
1270   --enable-vf-lavfi)    _vf_lavfi=yes   ;;
1271   --disable-vf-lavfi)   _vf_lavfi=no    ;;
1272   --enable-libavcodec_mpegaudio_hp)     _libavcodec_mpegaudio_hp=yes    ;;
1273   --disable-libavcodec_mpegaudio_hp)    _libavcodec_mpegaudio_hp=no     ;;
1274
1275   --enable-lirc)        _lirc=yes       ;;
1276   --disable-lirc)       _lirc=no        ;;
1277   --enable-lircc)       _lircc=yes      ;;
1278   --disable-lircc)      _lircc=no       ;;
1279   --enable-apple-remote)  _apple_remote=yes ;;
1280   --disable-apple-remote) _apple_remote=no  ;;
1281   --enable-apple-ir)    _apple_ir=yes   ;;
1282   --disable-apple-ir)   _apple_ir=no    ;;
1283   --enable-gui)         _gui=yes        ;;
1284   --disable-gui)        _gui=no         ;;
1285   --enable-termcap)     _termcap=yes    ;;
1286   --disable-termcap)    _termcap=no     ;;
1287   --enable-termios)     _termios=yes    ;;
1288   --disable-termios)    _termios=no     ;;
1289   --enable-3dfx)        _3dfx=yes       ;;
1290   --disable-3dfx)       _3dfx=no        ;;
1291   --enable-s3fb)        _s3fb=yes       ;;
1292   --disable-s3fb)       _s3fb=no        ;;
1293   --enable-wii)         _wii=yes        ;;
1294   --disable-wii)        _wii=no         ;;
1295   --enable-tdfxfb)      _tdfxfb=yes     ;;
1296   --disable-tdfxfb)     _tdfxfb=no      ;;
1297   --disable-tdfxvid)    _tdfxvid=no     ;;
1298   --enable-tdfxvid)     _tdfxvid=yes    ;;
1299   --disable-xvr100)     _xvr100=no      ;;
1300   --enable-xvr100)      _xvr100=yes     ;;
1301   --disable-tga)        _tga=no         ;;
1302   --enable-tga)         _tga=yes        ;;
1303   --enable-directfb)    _directfb=yes   ;;
1304   --disable-directfb)   _directfb=no    ;;
1305   --enable-zr)          _zr=yes         ;;
1306   --disable-zr)         _zr=no          ;;
1307   --enable-bl)          _bl=yes         ;;
1308   --disable-bl)         _bl=no          ;;
1309   --enable-mtrr)        _mtrr=yes       ;;
1310   --disable-mtrr)       _mtrr=no        ;;
1311   --enable-shm)         _shm=yes        ;;
1312   --disable-shm)        _shm=no         ;;
1313   --enable-select)      _select=yes     ;;
1314   --disable-select)     _select=no      ;;
1315   --enable-cdparanoia)  _cdparanoia=yes ;;
1316   --disable-cdparanoia) _cdparanoia=no  ;;
1317   --enable-cddb)        _cddb=yes       ;;
1318   --disable-cddb)       _cddb=no        ;;
1319   --enable-big-endian)  _big_endian=yes ;;
1320   --disable-big-endian) _big_endian=no  ;;
1321   --enable-bitmap-font)    _bitmap_font=yes   ;;
1322   --disable-bitmap-font)   _bitmap_font=no    ;;
1323   --enable-freetype)    _freetype=yes   ;;
1324   --disable-freetype)   _freetype=no    ;;
1325   --enable-fontconfig)  _fontconfig=yes ;;
1326   --disable-fontconfig) _fontconfig=no  ;;
1327   --enable-unrarexec)   _unrar_exec=yes ;;
1328   --disable-unrarexec)  _unrar_exec=no  ;;
1329   --enable-ftp)         _ftp=yes        ;;
1330   --disable-ftp)        _ftp=no         ;;
1331   --enable-vstream)     _vstream=yes    ;;
1332   --disable-vstream)    _vstream=no     ;;
1333   --enable-pthreads)    _pthreads=yes   ;;
1334   --disable-pthreads)   _pthreads=no    ;;
1335   --enable-w32threads)  _w32threads=yes ;;
1336   --disable-w32threads) _w32threads=no  ;;
1337   --enable-os2threads)  _os2threads=yes ;;
1338   --disable-os2threads) _os2threads=no  ;;
1339   --enable-ass)         _ass=yes        ;;
1340   --disable-ass)        _ass=no         ;;
1341   --enable-ass-internal)  ass_internal=yes ;;
1342   --disable-ass-internal) ass_internal=no  ;;
1343   --enable-rpath)       _rpath=yes      ;;
1344   --disable-rpath)      _rpath=no       ;;
1345   --enable-gnutls)       _gnutls=yes    ;;
1346   --disable-gnutls)      _gnutls=no     ;;
1347   --enable-openssl-nondistributable) _openssl=yes ;;
1348
1349   --enable-fribidi)     _fribidi=yes    ;;
1350   --disable-fribidi)    _fribidi=no     ;;
1351
1352   --enable-enca)        _enca=yes       ;;
1353   --disable-enca)       _enca=no        ;;
1354
1355   --enable-inet6)       _inet6=yes      ;;
1356   --disable-inet6)      _inet6=no       ;;
1357
1358   --enable-sctp)        _sctp=yes       ;;
1359   --disable-sctp)       _sctp=no        ;;
1360
1361   --enable-gethostbyname2)      _gethostbyname2=yes     ;;
1362   --disable-gethostbyname2)     _gethostbyname2=no      ;;
1363
1364   --enable-dga1) _dga1=yes ;;
1365   --disable-dga1) _dga1=no ;;
1366   --enable-dga2) _dga2=yes ;;
1367   --disable-dga2) _dga2=no ;;
1368
1369   --enable-menu) _menu=yes ;;
1370   --disable-menu) _menu=no ;;
1371
1372   --enable-qtx) _qtx=yes ;;
1373   --disable-qtx) _qtx=no ;;
1374
1375   --enable-coreaudio) _coreaudio=yes ;;
1376   --disable-coreaudio) _coreaudio=no ;;
1377   --enable-corevideo) _corevideo=yes ;;
1378   --disable-corevideo) _corevideo=no ;;
1379   --enable-quartz) _quartz=yes ;;
1380   --disable-quartz) _quartz=no ;;
1381   --enable-macosx-finder) _macosx_finder=yes ;;
1382   --disable-macosx-finder) _macosx_finder=no ;;
1383   --enable-macosx-bundle) _macosx_bundle=yes ;;
1384   --disable-macosx-bundle) _macosx_bundle=no ;;
1385
1386   --enable-maemo) _maemo=yes ;;
1387   --disable-maemo) _maemo=no ;;
1388
1389   --enable-sortsub) _sortsub=yes ;;
1390   --disable-sortsub) _sortsub=no ;;
1391
1392   --enable-crash-debug) _crash_debug=yes ;;
1393   --disable-crash-debug) _crash_debug=no ;;
1394   --enable-sighandler)  _sighandler=yes  ;;
1395   --disable-sighandler) _sighandler=no   ;;
1396   --enable-relocatable)  relocatable=yes  ;;
1397   --disable-relocatable) relocatable=no   ;;
1398   --enable-win32dll) _win32dll=yes ;;
1399   --disable-win32dll) _win32dll=no ;;
1400
1401   --enable-sse) _sse=yes ;;
1402   --disable-sse) _sse=no ;;
1403   --enable-sse2) _sse2=yes ;;
1404   --disable-sse2) _sse2=no ;;
1405   --enable-sse3) _sse3=yes ;;
1406   --disable-sse3) _sse3=no ;;
1407   --enable-ssse3) _ssse3=yes ;;
1408   --disable-ssse3) _ssse3=no ;;
1409   --enable-sse4) _sse4_1=yes;;
1410   --disable-sse4) _sse4_1=no;;
1411   --enable-sse42) _sse4_2=yes;;
1412   --disable-sse42) _sse4_2=no;;
1413   --enable-avx) _avx=yes;;
1414   --disable-avx) _avx=no;;
1415   --enable-avx2) _avx2=yes;;
1416   --disable-avx2) _avx2=no;;
1417   --enable-xop) _xop=yes;;
1418   --disable-xop) _xop=no;;
1419   --enable-fma3) _fma3=yes;;
1420   --disable-fma3) _fma3=no;;
1421   --enable-fma4) _fma4=yes;;
1422   --disable-fma4) _fma4=no;;
1423   --enable-mmxext) _mmxext=yes ;;
1424   --disable-mmxext) _mmxext=no ;;
1425   --enable-3dnow) _3dnow=yes ;;
1426   --disable-3dnow) _3dnow=no _3dnowext=no ;;
1427   --enable-3dnowext) _3dnow=yes _3dnowext=yes ;;
1428   --disable-3dnowext) _3dnowext=no ;;
1429   --enable-cmov) _cmov=yes ;;
1430   --disable-cmov) _cmov=no ;;
1431   --enable-fast-cmov) _fast_cmov=yes ;;
1432   --disable-fast-cmov) _fast_cmov=no ;;
1433   --enable-fast-clz) _fast_clz=yes ;;
1434   --disable-fast-clz) _fast_clz=no ;;
1435   --enable-altivec) _altivec=yes ;;
1436   --disable-altivec) _altivec=no ;;
1437   --enable-armv5te) _armv5te=yes ;;
1438   --disable-armv5te) _armv5te=no ;;
1439   --enable-armv6) _armv6=yes ;;
1440   --disable-armv6) _armv6=no ;;
1441   --enable-armv6t2) _armv6t2=yes ;;
1442   --disable-armv6t2) _armv6t2=no ;;
1443   --enable-armvfp) _armvfp=yes ;;
1444   --disable-armvfp) _armvfp=no ;;
1445   --enable-vfpv3) vfpv3=yes ;;
1446   --disable-vfpv3) vfpv3=no ;;
1447   --enable-neon) neon=yes ;;
1448   --disable-neon) neon=no ;;
1449   --enable-thumb) armthumb=yes ;;
1450   --disable-thumb) armthumb=no ;;
1451   --enable-iwmmxt) _iwmmxt=yes ;;
1452   --disable-iwmmxt) _iwmmxt=no ;;
1453   --enable-mmx) _mmx=yes ;;
1454   --disable-mmx) # 3DNow! and MMX2 require MMX
1455         _3dnow=no _3dnowext=no _mmx=no _mmxext=no ;;
1456
1457   # Handle these options in a second pass.
1458   --*-decoder=*|--*-encoder=*|--*-parser=*|--*-protocol=*|--*-demuxer=*|--*-muxer=*|--*-filter=*)  ;;
1459
1460   *)
1461     echo "Unknown parameter: $ac_option"
1462     exit 1
1463     ;;
1464
1465   esac
1466 done
1467
1468 # Atmos: moved this here, to be correct, if --prefix is specified
1469 test -z "$_bindir"  && _bindir="$_prefix/bin"
1470 test -z "$_datadir" && _datadir="$_prefix/share/mplayer"
1471 test -z "$_mandir"  && _mandir="$_prefix/share/man"
1472 test -z "$_confdir" && _confdir="$_prefix/etc/mplayer"
1473 test -z "$_libdir"  && _libdir="$_prefix/lib"
1474
1475 for tmpdir in "$TMPDIR" "$TEMPDIR" "/tmp" ; do
1476   test "$tmpdir" && break
1477 done
1478
1479 mplayer_tmpdir="$tmpdir/mplayer-configure-$RANDOM-$$"
1480 mkdir $mplayer_tmpdir || die "Unable to create tmpdir."
1481
1482 cleanup() {
1483   rm -rf "$mplayer_tmpdir"
1484 }
1485
1486 trap cleanup EXIT
1487
1488 TMPLOG="config.log"
1489 TMPC="$mplayer_tmpdir/tmp.c"
1490 TMPCPP="$mplayer_tmpdir/tmp.cpp"
1491 TMPH="$mplayer_tmpdir/tmp.h"
1492 TMPS="$mplayer_tmpdir/tmp.S"
1493 # We will update this later once we know the executable suffix
1494 TMPEXE="$mplayer_tmpdir/tmp"
1495
1496 rm -f "$TMPLOG"
1497 echo configuration: $configuration > "$TMPLOG"
1498 echo >> "$TMPLOG"
1499
1500
1501 # local FFmpeg checkout handling
1502 if test -e ffmpeg/.svn ; then
1503     echo "You have an outdated FFmpeg SVN checkout in ffmpeg/, please (re)move or replace it"
1504     exit 1
1505 fi
1506
1507 FFBRANCH=master
1508 test -e FFBRANCH && FFBRANCH=$(cat FFBRANCH)
1509
1510 if test -e ffmpeg/mp_auto_pull ; then
1511     echo "Updating FFmpeg, (re)move ffmpeg/mp_auto_pull to disable"
1512     (cd ffmpeg && git checkout $FFBRANCH)
1513     if ! (cd ffmpeg && git pull --rebase --ff-only) ; then
1514         echo "git pull failed, (re)move ffmpeg/mp_auto_pull to disable pulling"
1515         exit 1
1516     fi
1517 fi
1518
1519 if test "$ffmpeg_a" != "no" && ! test -e ffmpeg ; then
1520     echo "No FFmpeg checkout, press enter to download one with git or CTRL+C to abort"
1521     read tmp
1522     if ! git clone -b $FFBRANCH --depth 1 git://source.ffmpeg.org/ffmpeg.git ffmpeg ; then
1523         rm -rf ffmpeg
1524         echo "Failed to get a FFmpeg checkout"
1525         echo "Please try again or put FFmpeg source code copy into ffmpeg/ manually."
1526         echo "Nightly snapshot: http://ffmpeg.org/releases/ffmpeg-snapshot.tar.bz2"
1527         echo "To use a github mirror via http (e.g. because a firewall blocks git):"
1528         echo "git clone --depth 1 https://github.com/FFmpeg/FFmpeg ffmpeg; touch ffmpeg/mp_auto_pull"
1529         exit 1
1530     fi
1531     touch ffmpeg/mp_auto_pull
1532 fi
1533
1534 list_subparts() {
1535   test ! -e ffmpeg/libav${3} && return 1
1536   pattern="s/^[^#]*${1}.*([^ ,]*, *\([^ ,)]*\).*/\1_${2}/p"
1537   sed -n "$pattern" ffmpeg/libav${3} | toupper
1538   return 0
1539 }
1540
1541 list_subparts_extern() {
1542   test ! -e ffmpeg/libav${3} && return 1
1543   pattern="s/^[^#]*extern.*${1} *ff_\([^ ]*\)_${2};/\1_${2}/p"
1544   sed -n "$pattern" ffmpeg/libav${3} | toupper
1545   return 0
1546 }
1547
1548 list_subparts_filters() {
1549   test ! -e ffmpeg/libav${1} && return 1
1550   pattern="s/^extern AVFilter ff_([avfsinkrc]{2,5})_([a-zA-Z0-9_]+);/\1_\2_filter/p"
1551   sed -E -n "$pattern" ffmpeg/libav${1} | toupper
1552   return 0
1553 }
1554
1555 echocheck "ffmpeg/libavcodec/allcodecs.c"
1556 libavdecoders_all=$(list_subparts_extern  AVCodec       decoder  codec/allcodecs.c)
1557 libavencoders_all=$(list_subparts_extern  AVCodec       encoder  codec/allcodecs.c)
1558 libavparsers_all=$(list_subparts_extern   AVCodecParser parser   codec/parsers.c)
1559 test $? -eq 0 && _list_subparts=found || _list_subparts="not found"
1560 echores "$_list_subparts"
1561
1562 echocheck "ffmpeg/libavcodec/hwaccels.h"
1563 libavhwaccels_all=$(list_subparts_extern  AVHWAccel hwaccel codec/hwaccels.h)
1564 test $? -eq 0 || libavhwaccels_all=$(list_subparts  HWACCEL  hwaccel  codec/allcodecs.c)
1565 test $? -eq 0 && _list_subparts=found || _list_subparts="not found"
1566 echores "$_list_subparts"
1567
1568 echocheck "ffmpeg/libavformat/allformats.c"
1569 libavdemuxers_all=$(list_subparts_extern  AVInputFormat    demuxer  format/allformats.c)
1570 libavmuxers_all=$(list_subparts_extern    AVOutputFormat   muxer    format/allformats.c)
1571 test $? -eq 0 && _list_subparts=found || _list_subparts="not found"
1572 echores "$_list_subparts"
1573
1574 echocheck "ffmpeg/libavcodec/bitsteram_filters.c"
1575 libavbsfs_all=$(list_subparts_extern AVBitStreamFilter bsf codec/bitstream_filters.c)
1576 test $? -eq 0 && _list_subparts_extern=found || _list_subparts_extern="not found"
1577 echores "$_list_subparts_extern"
1578
1579 echocheck "ffmpeg/libavformat/protocols.c"
1580 libavprotocols_all=$(list_subparts_extern URLProtocol protocol format/protocols.c)
1581 test $? -eq 0 && _list_subparts_extern=found || _list_subparts_extern="not found"
1582 echores "$_list_subparts_extern"
1583
1584 echocheck "ffmpeg/libavfilter/allfilters.c"
1585 libavfilters_all=$(list_subparts_filters filter/allfilters.c)
1586 test $? -eq 0 && _list_subparts=found || _list_subparts="not found"
1587 echores "$_list_subparts"
1588
1589 # a white space separated list (1st arg)
1590 # has an item with the given value (2nd arg)
1591 contains_item() {
1592   for item in $1; do
1593     test "$item" = "$2" && return
1594   done
1595   false
1596 }
1597 filter_out_component() {
1598   eval list=\$libav${1}s
1599   type=$(echo $1 | toupper)
1600   shift
1601   for item in $@; do
1602     filter_patterns="$filter_patterns -e s/[^A-Z0-9_]${item}_${type}//g"
1603   done
1604   echo " $list" | sed $filter_patterns
1605 }
1606
1607 libavdecoders=$(echo $libavdecoders_all)
1608 libavencoders=$(echo $libavencoders_all)
1609 libavparsers=$(echo $libavparsers_all)
1610 libavbsfs=$(echo $libavbsfs_all)
1611 # Disable all hardware accelerators for now.
1612 libavhwaccels=
1613 libavdemuxers=$(echo $libavdemuxers_all)
1614 libavmuxers=$(echo $libavmuxers_all)
1615 libavprotocols=$(echo $libavprotocols_all)
1616 libavfilters=$(echo $libavfilters_all)
1617
1618 libavdecoders=$(filter_out_component decoder 'LIB[A-Z0-9_]* H264_QSV MJPEG_QSV MPEG2_MMAL MPEG4_MMAL MPEG2_QSV HEVC_QSV VC1_MMAL VC1_QSV H264_MMAL H264_MEDIACODEC HEVC_MEDIACODEC MPEG2_MEDIACODEC H264_CUVID HEVC_CUVID VC1_CUVID VP8_CUVID VP9_CUVID H263_CUVID MJPEG_CUVID MPEG1_CUVID MPEG2_CUVID MPEG4_CUVID VP8_MEDIACODEC VP9_MEDIACODEC MPEG4_MEDIACODEC VP8_QSV [A-Z0-9_]*_AT [A-Z0-9]*_RKMPP [A-Z0-9]*_V4L2M2M')
1619 libavencoders=$(filter_out_component encoder 'LIB[A-Z0-9_]* H264_QSV MJPEG_QSV MPEG2_QSV HEVC_QSV VC1_MMAL VC1_QSV NVENC[A-Z0-9_]* H264_NVENC[A-Z0-9_]* HEVC_NVENC[A-Z0-9_]* HAP [A-Z0-9]*_VIDEOTOOLBOX H264_VAAPI HEVC_VAAPI MJPEG_VAAPI MPEG2_VAAPI VP8_VAAPI VP9_VAAPI H264_OMX MPEG4_OMX [A-Z0-9_]*_AT [A-Z0-9]*_V4L2M2M [A-Z0-9]*_AMF')
1620 libavbsfs=$(filter_out_component bsf 'TRACE_HEADERS [A-Z0-9_]*_METADATA H264_REDUNDANT_PPS FILTER_UNITS')
1621 libavdemuxers=$(filter_out_component demuxer 'AVISYNTH DASH LIB[A-Z0-9_]* REDIR VAPOURSYNTH')
1622 libavmuxers=$(filter_out_component muxer 'CHROMAPRINT LIB[A-Z0-9_]* RTP RTSP SAP')
1623 libavprotocols=$(filter_out_component protocol 'BLURAY FFRTMPCRYPT HTTPS LIB[A-Z0-9_]* TLS TLS_GNUTLS TLS_OPENSSL TLS_SECURETRANSPORT TLS_SCHANNEL')
1624 libavfilters=$(filter_out_component filter 'VF_FREI0R[A-Z0-9_]* LIB[A-Z0-9_]* MP VF_OCV')
1625
1626 # second pass command line parsing for options needing local FFmpeg checkout
1627 for ac_option do
1628   case "$ac_option" in
1629   --enable-decoder=*)   libavdecoders="$libavdecoders   $(option_value_uc $ac_option)" ;;
1630   --enable-encoder=*)   libavencoders="$libavencoders   $(option_value_uc $ac_option)" ;;
1631   --enable-parser=*)    libavparsers="$libavparsers     $(option_value_uc $ac_option)" ;;
1632   --enable-protocol=*)  libavprotocols="$libavprotocols $(option_value_uc $ac_option)" ;;
1633   --enable-demuxer=*)   libavdemuxers="$libavdemuxers   $(option_value_uc $ac_option)" ;;
1634   --enable-muxer=*)     libavmuxers="$libavmuxers       $(option_value_uc $ac_option)" ;;
1635   --enable-filter=*)    libavfilters="$libavfilters     $(option_value_uc $ac_option)" ;;
1636
1637   --disable-decoder=*)  libavdecoders=$(filter_out_component  decoder  "$(option_value_uc $ac_option)") ;;
1638   --disable-encoder=*)  libavencoders=$(filter_out_component  encoder  "$(option_value_uc $ac_option)") ;;
1639   --disable-parser=*)   libavparsers=$(filter_out_component   parser   "$(option_value_uc $ac_option)") ;;
1640   --disable-protocol=*) libavprotocols=$(filter_out_component protocol "$(option_value_uc $ac_option)") ;;
1641   --disable-demuxer=*)  libavdemuxers=$(filter_out_component  demuxer  "$(option_value_uc $ac_option)") ;;
1642   --disable-muxer=*)    libavmuxers=$(filter_out_component    muxer    "$(option_value_uc $ac_option)") ;;
1643   --disable-filter=*)   libavfilters=$(filter_out_component   filter   "$(option_value_uc $ac_option)") ;;
1644   esac
1645 done
1646
1647
1648 # Checking CC version...
1649 # Intel C++ Compilers (no autoselect, use CC=/some/binary ./configure)
1650 if test "$(basename $_cc)" = "icc" || test "$(basename $_cc)" = "ecc"; then
1651   echocheck "$_cc version"
1652   cc_vendor=intel
1653   cc_name=$($_cc -V 2>&1 | head -n 1 | cut -d ',' -f 1)
1654   cc_version=$($_cc -V 2>&1 | head -n 1 | cut -d ',' -f 2 | cut -d ' ' -f 3)
1655   _cc_major=$(echo $cc_version | cut -d '.' -f 1)
1656   _cc_minor=$(echo $cc_version | cut -d '.' -f 2)
1657   # TODO verify older icc/ecc compatibility
1658   case $cc_version in
1659     '')
1660       cc_version="v. ?.??, bad"
1661       cc_fail=yes
1662       ;;
1663     10.1|11.1|12.*|13.*)
1664       cc_version="$cc_version, ok"
1665       ;;
1666     *)
1667       cc_version="$cc_version, bad"
1668       cc_fail=yes
1669       ;;
1670   esac
1671   echores "$cc_version"
1672 else
1673   for _cc in "$_cc" gcc cc ; do
1674     cc_name_tmp=$($_cc -v 2>&1 | tail -n 1 | cut -d ' ' -f 1)
1675     if test "$cc_name_tmp" = "gcc"; then
1676       cc_name=$cc_name_tmp
1677       echocheck "$_cc version"
1678       cc_vendor=gnu
1679       cc_version=$($_cc -dumpversion 2>&1)
1680       case $cc_version in
1681         2.96*)
1682           cc_fail=yes
1683           ;;
1684         *)
1685           _cc_major=$(echo $cc_version | cut -d '.' -f 1)
1686           _cc_minor=$(echo $cc_version | cut -d '.' -f 2)
1687           _cc_mini=$(echo $cc_version | cut -d '.' -f 3)
1688           ;;
1689       esac
1690       echores "$cc_version"
1691       break
1692     fi
1693     if $_cc -v 2>&1 | grep -q "clang"; then
1694       echocheck "$_cc version"
1695       cc_vendor=clang
1696       cc_version=$($_cc -dumpversion 2>&1)
1697       res_comment="experimental support only"
1698       echores "clang $cc_version"
1699       break
1700     fi
1701     cc_name_tmp=$($_cc -V 2>&1 | head -n 1 | cut -d ' ' -f 2,3)
1702     if test "$cc_name_tmp" = "Sun C"; then
1703       echocheck "$_cc version"
1704       cc_vendor=sun
1705       cc_version=$($_cc -V 2>&1 | head -n 1 | cut -d ' ' -f 4)
1706       res_comment="experimental support only"
1707       echores "Sun C $cc_version"
1708       break
1709     fi
1710   done
1711 fi # icc
1712 test "$cc_fail" = yes && die "unsupported compiler version"
1713
1714 # Determine our OS name and CPU architecture
1715 if test -z "$_target" ; then
1716   # OS name
1717   system_name=$(uname -s 2>&1)
1718   case "$system_name" in
1719   Linux|FreeBSD|NetBSD|OpenBSD|DragonFly|BSD/OS|Darwin|SunOS|QNX|GNU|MorphOS|AIX|AmigaOS|Haiku)
1720     ;;
1721   IRIX*)
1722     system_name=IRIX
1723     ;;
1724   GNU/kFreeBSD)
1725     system_name=FreeBSD
1726     ;;
1727   HP-UX*)
1728     system_name=HP-UX
1729     ;;
1730   [cC][yY][gG][wW][iI][nN]*)
1731     system_name=CYGWIN
1732     ;;
1733   MINGW32*)
1734     system_name=MINGW32
1735     ;;
1736   OS/2*)
1737     system_name=OS/2
1738     ;;
1739   *)
1740     system_name="$system_name-UNKNOWN"
1741     ;;
1742   esac
1743   cpp_condition_check '' 'defined(__MINGW32__)' && system_name=MINGW32
1744
1745
1746   # host's CPU/instruction set
1747   set_host_arch() {
1748   case "$1" in
1749       x86_64|amd64|i[3-9]86*|i86pc|x86|x86pc|k5|k6|k6_2|k6_3|k6-2|k6-3|pentium*|athlon*|i586_i686|i586-i686) host_arch=i386 ;;
1750       ia64) host_arch=ia64 ;;
1751       macppc|ppc*|Power*) host_arch=ppc ;;
1752       alpha) host_arch=alpha ;;
1753       sun4*|sparc*) host_arch=sparc ;;
1754       parisc*|hppa*|9000*) host_arch=hppa ;;
1755       aarch64*) host_arch=aarch64 ;;
1756       arm*|zaurus|cats) host_arch=arm ;;
1757       sh3|sh4|sh4a) host_arch=sh ;;
1758       s390) host_arch=s390 ;;
1759       s390x) host_arch=s390x ;;
1760       *mips*) host_arch=mips ;;
1761       nios2) host_arch=nios2 ;;
1762       vax) host_arch=vax ;;
1763       xtensa*) host_arch=xtensa ;;
1764       *) host_arch=UNKNOWN ;;
1765   esac
1766   }
1767   set_host_arch "$(uname -m 2>&1)"
1768   if test "$host_arch" = UNKNOWN ; then
1769     set_host_arch "$(uname -p 2>&1)"
1770   fi
1771 else # if test -z "$_target"
1772   for component in 3 2; do
1773     system_name=$(echo $_target | cut -d '-' -f $component)
1774     case "$(echo $system_name | tolower)" in
1775       linux) system_name=Linux ;;
1776       freebsd) system_name=FreeBSD ;;
1777       gnu/kfreebsd) system_name=FreeBSD ;;
1778       netbsd) system_name=NetBSD ;;
1779       bsd/os) system_name=BSD/OS ;;
1780       openbsd) system_name=OpenBSD ;;
1781       dragonfly) system_name=DragonFly ;;
1782       sunos) system_name=SunOS ;;
1783       qnx) system_name=QNX ;;
1784       morphos) system_name=MorphOS ;;
1785       amigaos) system_name=AmigaOS ;;
1786       mingw32*) system_name=MINGW32 ;;
1787       wine) system_name=Wine ;;
1788     esac
1789   done
1790   # We need to convert underscores so that values like k6-2 and pentium-mmx can be passed
1791   host_arch=$(echo $_target | cut -d '-' -f 1)
1792   if test $(echo $host_arch) != "x86_64" ; then
1793     host_arch=$(echo $host_arch | tr '_' '-')
1794   fi
1795 fi
1796
1797 _timer=timer-linux.c
1798 _getch=getch2.c
1799
1800 if darwin; then
1801   extra_cflags="-mdynamic-no-pic $extra_cflags"
1802   _timer=timer-darwin.c
1803 fi
1804
1805 if aix ; then
1806   extra_ldflags="$extra_ldflags -lC"
1807 fi
1808
1809 if irix ; then
1810   _ranlib='ar -r'
1811 elif linux ; then
1812   _ranlib='true'
1813 fi
1814
1815 if win32 ; then
1816   _exesuf=".exe"
1817   extra_cflags="$extra_cflags -fno-common"
1818   # -lwinmm is always needed for osdep/timer-win2.c
1819   timer_libs=-lwinmm
1820   _pe_executable=yes
1821   _timer=timer-win2.c
1822   _priority=yes
1823   def_dos_paths="#define HAVE_DOS_PATHS 1"
1824   def_priority="#define CONFIG_PRIORITY 1"
1825 fi
1826
1827 if mingw32 ; then
1828   _getch=getch2-win.c
1829   shmem=yes
1830 fi
1831
1832 if amigaos ; then
1833   _select=no
1834   _sighandler=no
1835   _stream_cache=no
1836   def_stream_cache="#undef CONFIG_STREAM_CACHE"
1837   extra_cflags="-DNEWLIB -D__USE_INLINE__ $extra_cflags"
1838 fi
1839
1840 if qnx ; then
1841   extra_ldflags="$extra_ldflags -lph"
1842 fi
1843
1844 if os2 ; then
1845   _exesuf=".exe"
1846   _getch=getch2-os2.c
1847   shmem=yes
1848   _priority=yes
1849   def_dos_paths="#define HAVE_DOS_PATHS 1"
1850   def_priority="#define CONFIG_PRIORITY 1"
1851   def_path_max_check="#define CONFIG_PATH_MAX_CHECK 1"
1852   # On OS/2, passing -static to gcc fails at linking time because linking
1853   # statically against libc runtime is prevented on purpose. To avoid this,
1854   # pass -static to a linker directly.
1855   # And ensure that $ld_static should be at first in a library list because it
1856   # has effects only libraries after it.
1857   test -n "$ld_static" && ld_static='-Wl,-static'
1858   # OS/2 linker does not support a thin archive. Remove 'T' flag.
1859   _arflags=$(echo $_arflags | tr -d T)
1860 fi
1861
1862 if wine ; then
1863   extra_cflags="-fno-pic -UWIN32 -U_WIN32 -U__WIN32 -U__WIN32__ -DWINE_NOWINSOCK $extra_cflags"
1864 fi
1865
1866 if darwin && test "$cc_vendor" != "clang" ; then
1867   extra_cflags="-falign-loops=16 -shared-libgcc $extra_cflags"
1868 fi
1869
1870 TMPEXE="$mplayer_tmpdir/tmp$_exesuf"
1871
1872 echocheck "working compiler"
1873 cflag_check "" || die "Compiler is not functioning correctly. Check your installation and custom CFLAGS $CFLAGS ."
1874 echo "yes"
1875
1876 cflag_check "-lm" && libm="-lm"
1877
1878 if test -z "$_target" ; then
1879   cat > $TMPC << EOF
1880 int main(void) {
1881     int test[(int)sizeof(char *)-7];
1882     return 0;
1883 }
1884 EOF
1885 if x86 ; then
1886   cc_check && host_arch=x86_64 || host_arch=i386
1887   # Treat x32 as generic architecture without any optimizations.
1888   if test "$host_arch" = 'i386' && cpp_condition_check '' 'defined(__x86_64__)'; then
1889       host_arch=generic
1890   fi
1891 fi
1892 if ppc ; then
1893   cc_check && host_arch=ppc64 || host_arch=ppc
1894 fi
1895 if sparc ; then
1896   cc_check && host_arch=sparc64 || host_arch=sparc
1897 fi
1898 fi
1899
1900 echo "Detected operating system: $system_name"
1901 echo "Detected host architecture: $host_arch"
1902
1903 if test "$_runtime_cpudetection" = yes && ! x86 && ! ppc; then
1904   die "Runtime CPU detection only works for x86, x86-64 and PPC!"
1905 fi
1906
1907 echocheck "cross compilation"
1908 if test $_cross_compile = auto ; then
1909   _cross_compile=yes
1910   cflag_check "" && "$TMPEXE" 2> /dev/null && _cross_compile=no
1911 fi
1912 echores $_cross_compile
1913
1914 if test $_cross_compile = yes; then
1915   tmp_run() {
1916     return 0
1917   }
1918   test "$_host_cc" || _host_cc=cc
1919 fi
1920
1921 echocheck "host cc"
1922 test "$_host_cc" || _host_cc=$_cc
1923 echores $_host_cc
1924
1925 # ---
1926
1927 # now that we know what compiler should be used for compilation, try to find
1928 # out which assembler is used by the $_cc compiler
1929 if test "$_as" = auto ; then
1930   _as=$($_cc -print-prog-name=as)
1931   test -z "$_as" && _as=as
1932 fi
1933
1934 if test "$_nm" = auto ; then
1935   _nm=$($_cc -print-prog-name=nm)
1936   test -z "$_nm" && _nm=nm
1937 fi
1938
1939 # XXX: this should be OK..
1940 _cpuinfo="echo"
1941
1942 if test "$_runtime_cpudetection" = no ; then
1943
1944 # Cygwin has /proc/cpuinfo, but only supports Intel CPUs
1945 # FIXME: Remove the Cygwin check once AMD CPUs are supported
1946 if test -r /proc/cpuinfo && ! cygwin; then
1947   # Linux with /proc mounted, extract CPU information from it
1948   _cpuinfo="cat /proc/cpuinfo"
1949 elif test -r /compat/linux/proc/cpuinfo && ! x86 ; then
1950   # FreeBSD with Linux emulation /proc mounted,
1951   # extract CPU information from it
1952   # Don't use it on x86 though, it never reports 3DNow!
1953   _cpuinfo="cat /compat/linux/proc/cpuinfo"
1954 elif darwin && ! x86 ; then
1955   # use hostinfo on Darwin
1956   _cpuinfo="hostinfo"
1957 elif aix; then
1958   # use 'lsattr' on AIX
1959   _cpuinfo="lsattr -E -l proc0 -a type"
1960 elif x86; then
1961   # all other OSes try to extract CPU information from a small helper
1962   # program cpuinfo instead
1963   $_host_cc -o cpuinfo$_exesuf cpuinfo.c
1964   _cpuinfo="./cpuinfo$_exesuf"
1965 fi
1966
1967 if x86 ; then
1968   # gather more CPU information
1969   pname=$($_cpuinfo | grep 'model name' | cut -d ':' -f 2 | head -n 1)
1970   pvendor=$($_cpuinfo | grep 'vendor_id' | cut -d ':' -f 2  | cut -d ' ' -f 2 | head -n 1)
1971   pfamily=$($_cpuinfo | grep 'cpu family' | cut -d ':' -f 2 | cut -d ' ' -f 2 | head -n 1)
1972   pmodel=$($_cpuinfo | grep -v 'model name' | grep 'model' | cut -d ':' -f 2 | cut -d ' ' -f 2 | head -n 1)
1973   pstepping=$($_cpuinfo | grep 'stepping' | cut -d ':' -f 2 | cut -d ' ' -f 2 | head -n 1)
1974
1975   exts=$($_cpuinfo | egrep 'features|flags' | cut -d ':' -f 2 | head -n 1)
1976
1977   pparam=$(echo $exts | sed -e s/k6_mtrr/mtrr/ -e s/cyrix_arr/mtrr/ -e s/centaur_mcr/mtrr/ \
1978                             -e s/xmm/sse/ -e s/kni/sse/ -e s/pni/sse3/)
1979   # SSE implies MMX2, but not all SSE processors report the mmxext CPU flag.
1980   pparam=$(echo $pparam | sed -e 's/sse/sse mmxext/')
1981
1982   for ext in $pparam ; do
1983     eval test \"\$_$ext\" = auto 2>/dev/null && eval _$ext=kernel_check
1984   done
1985
1986   echocheck "CPU vendor"
1987   echores "$pvendor ($pfamily:$pmodel:$pstepping)"
1988
1989   echocheck "CPU type"
1990   echores "$pname"
1991 fi
1992
1993 fi # test "$_runtime_cpudetection" = no
1994
1995 if x86 && test "$_runtime_cpudetection" = no ; then
1996   extcheck() {
1997     if test "$1" = kernel_check ; then
1998       echocheck "kernel support of $2"
1999       cat > $TMPC <<EOF
2000 #include <stdlib.h>
2001 #include <signal.h>
2002 static void catch(int sig) { exit(1); }
2003 int main(void) {
2004   signal(SIGILL, catch);
2005   __asm__ volatile ("$3":::"memory"); return 0;
2006 }
2007 EOF
2008
2009       if cc_check && tmp_run ; then
2010         eval _$2=yes
2011         echores "yes"
2012         _optimizing="$_optimizing $2"
2013         return 0
2014       else
2015         eval _$2=no
2016         echores "failed"
2017         echo "It seems that your kernel does not correctly support $2."
2018         echo "To use $2 extensions in MPlayer, you have to upgrade/recompile your kernel!"
2019         return 1
2020       fi
2021     fi
2022     return 0
2023   }
2024
2025   extcheck $_mmx      'mmx'      'emms'
2026   extcheck $_mmxext   'mmxext'   'sfence'
2027   extcheck $_3dnow    '3dnow'    'femms'
2028   extcheck $_3dnowext '3dnowext' 'pswapd %%mm0, %%mm0'
2029   extcheck $_sse      'sse'      'xorps %%xmm0, %%xmm0' || _gcc3_ext="$_gcc3_ext -mno-sse"
2030   extcheck $_sse2     'sse2'     'xorpd %%xmm0, %%xmm0' || _gcc3_ext="$_gcc3_ext -mno-sse2"
2031   extcheck $_sse3     'sse3'     'addsubps %%xmm0, %%xmm0'
2032   extcheck $_ssse3    'ssse3'    'pabsd %%xmm0, %%xmm0'
2033   extcheck $_sse4_1   'sse4_1'   'pmaxsb %%xmm0, %%xmm0'
2034   extcheck $_sse4_2   'sse4_2'   'pcmpgtq %%xmm0, %%xmm0'
2035   extcheck $_avx      'avx'      'vpabsw %%xmm0, %%xmm0'
2036   extcheck $_avx2     'avx2'     'vextracti128 $0, %%ymm0, %%xmm0'
2037   extcheck $_xop      'xop'      'vpmacsdd %%xmm0, %%xmm1, %%xmm2, %%xmm3'
2038   extcheck $_fma3     'fma3'     'vfmadd132ps %%ymm0, %%ymm1, %%ymm2'
2039   extcheck $_fma4     'fma4'     'vfmaddps %%ymm0, %%ymm1, %%ymm2, %%ymm3'
2040   extcheck $_cmov     'cmov'     'cmovb %%eax,  %%ebx'
2041
2042   echocheck "mtrr support"
2043   if test "$_mtrr" = kernel_check ; then
2044     _mtrr="yes"
2045     _optimizing="$_optimizing mtrr"
2046   fi
2047   echores "$_mtrr"
2048
2049   if test "$_gcc3_ext" != ""; then
2050     # If we had to disable SSE/SSE2 because the active kernel does not
2051     # support this instruction set extension, we also have to tell
2052     # gcc3 to not generate SSE/SSE2 instructions for normal C code.
2053     cflag_check $_march $_gcc3_ext && _march="$_march $_gcc3_ext"
2054   fi
2055
2056 fi
2057
2058
2059 def_fast_64bit='#define HAVE_FAST_64BIT 0'
2060 def_fast_unaligned='#define HAVE_FAST_UNALIGNED 0'
2061 def_av_fast_unaligned='#define AV_HAVE_FAST_UNALIGNED 0'
2062 def_local_aligned='#define HAVE_LOCAL_ALIGNED 0'
2063 def_vsx='#define HAVE_VSX 0'
2064 arch_all='X86 IA64 SPARC ARM AVR32 SH4 PPC ALPHA MIPS PA_RISC S390 S390X VAX BFIN XTENSA TOMI GENERIC AARCH64'
2065 subarch_all='X86_32 X86_64 PPC64'
2066 case "$host_arch" in
2067   i[3-9]86|x86|x86pc|k5|k6|k6-2|k6-3|pentium*|athlon*|i586-i686)
2068   arch='x86'
2069   subarch='x86_32'
2070   def_fast_unaligned='#define HAVE_FAST_UNALIGNED 1'
2071   def_av_fast_unaligned='#define AV_HAVE_FAST_UNALIGNED 1'
2072   def_local_aligned='#define HAVE_LOCAL_ALIGNED 1'
2073   iproc=486
2074   proc=i486
2075
2076
2077   if test "$_runtime_cpudetection" = no ; then
2078   case "$pvendor" in
2079   AuthenticAMD)
2080     case "$pfamily" in
2081     3) proc=i386 iproc=386 ;;
2082     4) proc=i486 iproc=486 ;;
2083     5) iproc=586       # LGB: models are: K5/SSA5 K5 K5 K5 ? ? K6 K6 K6-2 K6-3
2084         # K6 model 13 are the K6-2+ and K6-III+, only differing in cache size.
2085         if test "$pmodel" -eq 9 -o "$pmodel" -eq 13; then
2086             proc=k6-3
2087         elif test "$pmodel" -eq 5 -o "$pmodel" -eq 10; then
2088             proc=geode
2089         elif test "$pmodel" -ge 8; then
2090             proc=k6-2
2091         elif test "$pmodel" -ge 6; then
2092             proc=k6
2093         else
2094             proc=i586
2095         fi
2096         ;;
2097     6) iproc=686
2098         # It's a bit difficult to determine the correct type of Family 6
2099         # AMD CPUs just from their signature. Instead, we check directly
2100         # whether it supports SSE.
2101         if test "$_sse" = yes; then
2102             # gcc treats athlon-xp, athlon-4 and athlon-mp similarly.
2103             proc=athlon-xp
2104         else
2105             # Again, gcc treats athlon and athlon-tbird similarly.
2106             proc=athlon
2107         fi
2108         ;;
2109     15) iproc=686
2110         # k8 CPU type only supported in gcc >= 3.4.0, but that will be
2111         # caught and remedied in the optimization tests below.
2112         proc=k8
2113         ;;
2114
2115     *) proc=amdfam10 iproc=686
2116         test $_fast_clz = "auto" && _fast_clz=yes
2117         ;;
2118     esac
2119     ;;
2120   GenuineIntel)
2121     case "$pfamily" in
2122     3) proc=i386 iproc=386 ;;
2123     4) proc=i486 iproc=486 ;;
2124     5) iproc=586
2125         if test "$pmodel" -eq 4 || test "$pmodel" -eq 8; then
2126             proc=pentium-mmx # 4 is desktop, 8 is mobile
2127         else
2128             proc=i586
2129         fi
2130         ;;
2131     6) iproc=686
2132         if test "$pmodel" -eq 28 -o "$pmodel" -eq 38 -o "$pmodel" -eq 54; then
2133             proc=atom
2134         elif test "$pmodel" -ge 15; then
2135             proc=core2
2136         elif test "$pmodel" -eq 9 -o "$pmodel" -ge 13; then
2137             proc=pentium-m
2138         elif test "$pmodel" -ge 7; then
2139             proc=pentium3
2140         elif test "$pmodel" -ge 3; then
2141             proc=pentium2
2142         else
2143             proc=i686
2144         fi
2145         test $_fast_clz = "auto" && _fast_clz=yes
2146         ;;
2147     15) iproc=686
2148         # A nocona in 32-bit mode has no more capabilities than a prescott.
2149         if test "$pmodel" -ge 3; then
2150             proc=prescott
2151         else
2152             proc=pentium4
2153             test $_fast_clz = "auto" && _fast_clz=yes
2154         fi
2155         test $_fast_cmov = "auto" && _fast_cmov=no
2156         ;;
2157     *) proc=prescott iproc=686 ;;
2158     esac
2159     ;;
2160   CentaurHauls)
2161     case "$pfamily" in
2162     5) iproc=586
2163         if test "$pmodel" -ge 8; then
2164             proc=winchip2
2165         elif test "$pmodel" -ge 4; then
2166             proc=winchip-c6
2167         else
2168             proc=i586
2169         fi
2170         ;;
2171     6) iproc=686
2172         if test "$pmodel" -ge 9; then
2173             proc=c3-2
2174         else
2175             proc=c3
2176             iproc=586
2177         fi
2178         ;;
2179     *) proc=i686 iproc=i686 ;;
2180     esac
2181     ;;
2182   unknown)
2183     case "$pfamily" in
2184     3) proc=i386 iproc=386 ;;
2185     4) proc=i486 iproc=486 ;;
2186     *) proc=i586 iproc=586 ;;
2187     esac
2188     ;;
2189   *)
2190     proc=i586 iproc=586 ;;
2191   esac
2192   test $_fast_clz = "auto" && _fast_clz=no
2193   fi # test "$_runtime_cpudetection" = no
2194
2195
2196     # check that gcc supports our CPU, if not, fall back to earlier ones
2197     # LGB: check -mcpu and -march swithing step by step with enabling
2198     # to fall back till 386.
2199
2200     # gcc >= 3.4.0  doesn't support -mcpu, we have to use -mtune instead
2201
2202     if [ "$cc_vendor" = "gnu" ] && ([ "$_cc_major" -gt 3 ] || ( [ "$_cc_major" = 3 ] && [ "$_cc_minor" -ge 4 ])) ; then
2203         cpuopt=-mtune
2204     else
2205         cpuopt=-mcpu
2206     fi
2207
2208     echocheck "GCC & CPU optimization abilities"
2209   if test "$_runtime_cpudetection" = no ; then
2210     if test $cc_vendor != "intel" && test $cc_vendor != "clang" ; then
2211       cflag_check -march=native && proc=native
2212     fi
2213     if test "$proc" = "amdfam10"; then
2214       cflag_check -march=$proc $cpuopt=$proc || proc=k8
2215     fi
2216     if test "$proc" = "k8"; then
2217       cflag_check -march=$proc $cpuopt=$proc || proc=athlon-xp
2218     fi
2219     if test "$proc" = "athlon-xp"; then
2220       cflag_check -march=$proc $cpuopt=$proc || proc=athlon
2221     fi
2222     if test "$proc" = "k6-3" || test "$proc" = "k6-2"; then
2223       cflag_check -march=$proc $cpuopt=$proc  || proc=k6
2224     fi
2225     if test "$proc" = "k6" || test "$proc" = "c3"; then
2226       if ! cflag_check -march=$proc $cpuopt=$proc; then
2227         if cflag_check -march=i586 $cpuopt=i686; then
2228           proc=i586-i686
2229         else
2230           proc=i586
2231         fi
2232       fi
2233     fi
2234     if test "$proc" = "atom" ; then
2235       cflag_check -march=$proc $cpuopt=$proc || proc=core2
2236     fi
2237     if test "$proc" = "prescott" ; then
2238       cflag_check -march=$proc $cpuopt=$proc || proc=pentium4
2239     fi
2240     if test "$proc" = "core2" ; then
2241       cflag_check -march=$proc $cpuopt=$proc || proc=pentium-m
2242     fi
2243     if test "$proc" = "pentium4" || test "$proc" = "pentium-m" || test "$proc" = "pentium3" || test "$proc" = "pentium2" || test "$proc" = "athlon" || test "$proc" = "c3-2" || test "$proc" = "geode"; then
2244       cflag_check -march=$proc $cpuopt=$proc  || proc=i686
2245     fi
2246     if test "$proc" = "i686" || test "$proc" = "pentium-mmx" || test "$proc" = "winchip-c6" || test "$proc" = "winchip2"; then
2247       cflag_check -march=$proc $cpuopt=$proc  || proc=i586
2248     fi
2249     if test "$proc" = "i586"; then
2250       cflag_check -march=$proc $cpuopt=$proc  || proc=i486
2251     fi
2252     if test "$proc" = "i486" ; then
2253       cflag_check -march=$proc $cpuopt=$proc  || proc=i386
2254     fi
2255     if test "$proc" = "i386" ; then
2256       cflag_check -march=$proc $cpuopt=$proc  || proc=error
2257     fi
2258     if test "$proc" = "error" ; then
2259         echores "CPU optimization disabled. CPU not recognized or your compiler is too old."
2260       _mcpu=""
2261       _march=""
2262       _optimizing=""
2263     elif test "$proc" = "i586-i686"; then
2264       _march="-march=i586"
2265       _mcpu="$cpuopt=i686"
2266       _optimizing="$proc"
2267     else
2268       _march="-march=$proc"
2269       _mcpu="$cpuopt=$proc"
2270       _optimizing="$proc"
2271     fi
2272   else # if test "$_runtime_cpudetection" = no
2273     _mcpu="$cpuopt=generic"
2274     # at least i486 required, for bswap instruction
2275     _march="-march=i486"
2276     cflag_check $_mcpu || _mcpu="$cpuopt=i686"
2277     cflag_check $_mcpu || _mcpu=""
2278     cflag_check $_march $_mcpu || _march=""
2279   fi
2280
2281     ## Gabucino : --target takes effect here (hopefully...) by overwriting
2282     ##             autodetected mcpu/march parameters
2283     if test "$_target" ; then
2284       # TODO: it may be a good idea to check GCC and fall back in all cases
2285       if test "$host_arch" = "i586-i686"; then
2286         _march="-march=i586"
2287         _mcpu="$cpuopt=i686"
2288       else
2289         _march="-march=$host_arch"
2290         _mcpu="$cpuopt=$host_arch"
2291       fi
2292
2293       proc="$host_arch"
2294
2295       case "$proc" in
2296         i386) iproc=386 ;;
2297         i486) iproc=486 ;;
2298         i586|k5|k6|k6-2|k6-3|pentium|pentium-mmx) iproc=586 ;;
2299         i686|athlon*|pentium*) iproc=686 ;;
2300         *) iproc=586 ;;
2301       esac
2302     fi
2303
2304     if test $_cmov = "yes" && test $_fast_cmov = "auto" ; then
2305         _fast_cmov="yes"
2306     else
2307         _fast_cmov="no"
2308     fi
2309     test $_fast_clz = "auto" && _fast_clz=yes
2310
2311     echores "$proc"
2312     ;;
2313
2314   ia64)
2315     arch='ia64'
2316     def_fast_64bit='#define HAVE_FAST_64BIT 1'
2317     iproc='ia64'
2318     ;;
2319
2320   x86_64|amd64)
2321     arch='x86'
2322     subarch='x86_64'
2323     def_fast_unaligned='#define HAVE_FAST_UNALIGNED 1'
2324     def_av_fast_unaligned='#define AV_HAVE_FAST_UNALIGNED 1'
2325     def_local_aligned='#define HAVE_LOCAL_ALIGNED 1'
2326     def_fast_64bit='#define HAVE_FAST_64BIT 1'
2327     iproc='x86_64'
2328
2329     # gcc >= 3.4.0  doesn't support -mcpu, we have to use -mtune instead
2330     if test "$cc_vendor" = "gnu" && test "$_cc_major" -gt 3 -o "$_cc_major" -eq 3 -a "$_cc_minor" -ge 4 ; then
2331         cpuopt=-mtune
2332     else
2333         cpuopt=-mcpu
2334     fi
2335     if test "$_runtime_cpudetection" = no ; then
2336       case "$pvendor" in
2337       AuthenticAMD)
2338         case "$pfamily" in
2339         15) proc=k8
2340           test $_fast_clz = "auto" && _fast_clz=no
2341           ;;
2342         *) proc=amdfam10;;
2343         esac
2344         ;;
2345       GenuineIntel)
2346         case "$pfamily" in
2347         6)
2348           if test "$pmodel" -eq 28 -o "$pmodel" -eq 38 -o "$pmodel" -eq 54; then
2349             proc=atom
2350           elif test "$pmodel" -ge 42; then
2351             proc=corei7-avx
2352           elif test "$pmodel" -ge 26; then
2353             proc=corei7
2354           else
2355             proc=core2
2356           fi
2357           ;;
2358         *)
2359           # 64-bit prescotts exist, but as far as GCC is concerned they
2360           # have the same capabilities as a nocona.
2361           proc=nocona
2362           test $_fast_cmov = "auto" && _fast_cmov=no
2363           test $_fast_clz = "auto" && _fast_clz=no
2364           ;;
2365         esac
2366         ;;
2367       *)
2368         proc=error;;
2369       esac
2370     fi # test "$_runtime_cpudetection" = no
2371
2372     echocheck "GCC & CPU optimization abilities"
2373     # This is a stripped-down version of the i386 fallback.
2374     if test "$_runtime_cpudetection" = no ; then
2375       if test $cc_vendor != "intel" && test $cc_vendor != "clang" ; then
2376         cflag_check -march=native && proc=native
2377       fi
2378       # --- AMD processors ---
2379       if test "$proc" = "amdfam10"; then
2380         cflag_check -march=$proc $cpuopt=$proc || proc=k8
2381       fi
2382       if test "$proc" = "k8"; then
2383         cflag_check -march=$proc $cpuopt=$proc || proc=athlon-xp
2384       fi
2385       # This will fail if gcc version < 3.3, which is OK because earlier
2386       # versions don't really support 64-bit on amd64.
2387       # Is this a valid assumption? -Corey
2388       if test "$proc" = "athlon-xp"; then
2389         cflag_check -march=$proc $cpuopt=$proc || proc=error
2390       fi
2391       # --- Intel processors ---
2392       if test "$proc" = "atom" || test "$proc" = "corei7-avx" || test "$proc" = "corei7"; then
2393         cflag_check -march=$proc $cpuopt=$proc || proc=core2
2394       fi
2395       if test "$proc" = "core2"; then
2396         cflag_check -march=$proc $cpuopt=$proc || proc=x86-64
2397       fi
2398       if test "$proc" = "x86-64"; then
2399         cflag_check -march=$proc $cpuopt=$proc || proc=nocona
2400       fi
2401       if test "$proc" = "nocona"; then
2402         cflag_check -march=$proc $cpuopt=$proc || proc=pentium4
2403       fi
2404       if test "$proc" = "pentium4"; then
2405         cflag_check -march=$proc $cpuopt=$proc || proc=error
2406       fi
2407
2408       _march="-march=$proc"
2409       _mcpu="$cpuopt=$proc"
2410       if test "$proc" = "error" ; then
2411         echores "CPU optimization disabled. CPU not recognized or your compiler is too old."
2412         _mcpu=""
2413         _march=""
2414       fi
2415     else # if test "$_runtime_cpudetection" = no
2416       # x86-64 is an undocumented option, an intersection of k8 and nocona.
2417       _march="-march=x86-64"
2418       _mcpu="$cpuopt=generic"
2419       cflag_check $_mcpu || _mcpu="x86-64"
2420       cflag_check $_mcpu || _mcpu=""
2421       cflag_check $_march $_mcpu || _march=""
2422     fi
2423
2424     _optimizing="$proc"
2425     test $_fast_cmov = "auto" && _fast_cmov=yes
2426     test $_fast_clz = "auto" && _fast_clz=yes
2427
2428     echores "$proc"
2429     ;;
2430
2431   sparc|sparc64)
2432     arch='sparc'
2433     iproc='sparc'
2434     if test "$host_arch" = "sparc64" ; then
2435       _vis='yes'
2436       proc='ultrasparc'
2437       def_fast_64bit='#define HAVE_FAST_64BIT 1'
2438     elif sunos ; then
2439         echocheck "CPU type"
2440         karch=$(uname -m)
2441         case "$(echo $karch)" in
2442             sun4) proc=v7 ;;
2443             sun4c) proc=v7 ;;
2444             sun4d) proc=v8 ;;
2445             sun4m) proc=v8 ;;
2446             sun4u) proc=ultrasparc _vis='yes' ;;
2447             sun4v) proc=v9 ;;
2448             *) proc=v8 ;;
2449         esac
2450         echores "$proc"
2451     else
2452         proc=v8
2453     fi
2454     _mcpu="-mcpu=$proc"
2455     _optimizing="$proc"
2456     ;;
2457
2458   aarch64)
2459     arch='aarch64'
2460     iproc='aarch64'
2461     ;;
2462
2463   arm*)
2464     arch='arm'
2465     iproc='arm'
2466     def_fast_unaligned='#define HAVE_FAST_UNALIGNED 1'
2467     def_av_fast_unaligned='#define AV_HAVE_FAST_UNALIGNED 1'
2468     def_local_aligned='#define HAVE_LOCAL_ALIGNED 1'
2469     test $_fast_clz = "auto" && _fast_clz=yes
2470     ;;
2471
2472   avr32)
2473     arch='avr32'
2474     def_fast_unaligned='#define HAVE_FAST_UNALIGNED 1'
2475     def_av_fast_unaligned='#define AV_HAVE_FAST_UNALIGNED 1'
2476     iproc='avr32'
2477     test $_fast_clz = "auto" && _fast_clz=yes
2478     ;;
2479
2480   sh|sh4)
2481     arch='sh4'
2482     iproc='sh4'
2483     ;;
2484
2485   ppc*|powerpc*)
2486     arch='ppc'
2487     def_dcbzl='#define HAVE_DCBZL 0'
2488     def_vsx='#define HAVE_VSX 0'
2489     def_fast_unaligned='#define HAVE_FAST_UNALIGNED 1'
2490     def_av_fast_unaligned='#define AV_HAVE_FAST_UNALIGNED 1'
2491     def_local_aligned='#define HAVE_LOCAL_ALIGNED 1'
2492     iproc='ppc'
2493
2494     if test "$host_arch" = "ppc64" ; then
2495       subarch='ppc64'
2496       def_fast_64bit='#define HAVE_FAST_64BIT 1'
2497     fi
2498     echocheck "CPU type"
2499     case $system_name in
2500       Linux)
2501         proc=$($_cpuinfo | grep 'cpu' | cut -d ':' -f 2 | cut -d ',' -f 1 | cut -b 2- | head -n 1)
2502         if test -n "$($_cpuinfo | grep altivec)"; then
2503             test $_altivec = auto && _altivec=yes
2504         fi
2505         ;;
2506       Darwin)
2507         proc=$($_cpuinfo | grep "Processor type" | cut -f 3 -d ' ' | sed 's/ppc//')
2508         if [ $(sysctl -n hw.vectorunit) -eq 1 -o \
2509             "$(sysctl -n hw.optional.altivec 2> /dev/null)" = "1" ]; then
2510             test $_altivec = auto && _altivec=yes
2511         fi
2512         ;;
2513       NetBSD)
2514         # only gcc 3.4 works reliably with AltiVec code under NetBSD
2515         case $cc_version in
2516             2*|3.0*|3.1*|3.2*|3.3*)
2517                 ;;
2518             *)
2519                 if [ $(sysctl -n machdep.altivec) -eq 1 ]; then
2520                     test $_altivec = auto && _altivec=yes
2521                 fi
2522                 ;;
2523         esac
2524         ;;
2525       AIX)
2526         proc=$($_cpuinfo | grep 'type' | cut -f 2 -d ' ' | sed 's/PowerPC_//')
2527         ;;
2528     esac
2529     if test "$_altivec" = yes; then
2530         echores "$proc altivec"
2531     else
2532         _altivec=no
2533         echores "$proc"
2534     fi
2535
2536     echocheck "GCC & CPU optimization abilities"
2537
2538     if test -n "$proc"; then
2539         case "$proc" in
2540             601) _march='-mcpu=601' _mcpu='-mtune=601' ;;
2541             603) _march='-mcpu=603' _mcpu='-mtune=603' ;;
2542             603e|603ev) _march='-mcpu=603e' _mcpu='-mtune=603e' ;;
2543             604|604e|604r|604ev) _march='-mcpu=604' _mcpu='-mtune=604' ;;
2544             740|740/750|745/755) _march='-mcpu=740' _mcpu='-mtune=740' ;;
2545             750|750CX) _march='-mcpu=750' _mcpu='-mtune=750' ;;
2546             POWER)  _march='-mcpu=power'  _mcpu='-mtune=power'  ;;
2547             POWER2) _march='-mcpu=power2' _mcpu='-mtune=power2' ;;
2548             POWER3) _march='-mcpu=power3' _mcpu='-mtune=power3' ;;
2549             *) ;;
2550         esac
2551         # gcc 3.1(.1) and up supports 7400 and 7450
2552         if test "$_cc_major" -ge "3" && test "$_cc_minor" -ge "1" || test "$_cc_major" -ge "4"; then
2553             case "$proc" in
2554                 7400*|7410*) _march='-mcpu=7400' _mcpu='-mtune=7400' ;;
2555                 7447*|7450*|7455*) _march='-mcpu=7450' _mcpu='-mtune=7450' ;;
2556                 *) ;;
2557             esac
2558         fi
2559         # gcc 3.2 and up supports 970
2560         if test "$_cc_major" -ge "3" && test "$_cc_minor" -ge "3" || test "$_cc_major" -ge "4"; then
2561             case "$proc" in
2562                 970*|PPC970*) _march='-mcpu=970' _mcpu='-mtune=970'
2563                       def_dcbzl='#define HAVE_DCBZL 1' ;;
2564                 *) ;;
2565             esac
2566         fi
2567         # gcc 3.3 and up supports POWER4
2568         if test "$_cc_major" -ge "3" && test "$_cc_minor" -ge "3" || test "$_cc_major" -ge "4"; then
2569             case "$proc" in
2570                 POWER4) _march='-mcpu=power4' _mcpu='-mtune=power4' ;;
2571                 *) ;;
2572             esac
2573         fi
2574         # gcc 3.4 and up supports 440*
2575         if test "$_cc_major" -ge "3" && test "$_cc_minor" -ge "4" || test "$_cc_major" -ge "4"; then
2576             case "$proc" in
2577                 440EP*) _march='-mcpu=440fp' _mcpu='-mtune=440fp' ;;
2578                 440G* ) _march='-mcpu=440'   _mcpu='-mtune=440'   ;;
2579                 *) ;;
2580             esac
2581         fi
2582         # gcc 4.0 and up supports POWER5
2583         if test "$_cc_major" -ge "4"; then
2584             case "$proc" in
2585                 POWER5*) _march='-mcpu=power5' _mcpu='-mtune=power5' ;;
2586                 *) ;;
2587             esac
2588         fi
2589         # gcc 4.2 and up supports POWER6
2590         if test "$_cc_major" -ge "4" && test "$_cc_minor" -ge "2" || test "$_cc_major" -ge "5"; then
2591             case "$proc" in
2592                 POWER6*) _march='-mcpu=power6' _mcpu='-mtune=power6' ;;
2593                 *) ;;
2594             esac
2595         fi
2596         # gcc 4.5 and up supports POWER7
2597         if test "$_cc_major" -ge "4" && test "$_cc_minor" -ge "5" || test "$_cc_major" -ge "5"; then
2598             case "$proc" in
2599                 POWER7*) _march='-mcpu=power7' _mcpu='-mtune=power7'
2600                       def_vsx='#define HAVE_VSX 1' ;;
2601                 *) ;;
2602             esac
2603         fi
2604         # gcc 4.9 and up supports POWER8
2605         if test "$_cc_major" -ge "4" && test "$_cc_minor" -ge "9" || test "$_cc_major" -ge "5"; then
2606             case "$proc" in
2607                 POWER8*) _march='-mcpu=power8' _mcpu='-mtune=power8'
2608                       def_vsx='#define HAVE_VSX 1' ;;
2609                 *) ;;
2610             esac
2611         fi
2612     fi
2613
2614     if test -n "$_mcpu"; then
2615         _optimizing=$(echo $_mcpu | cut -c 8-)
2616         echores "$_optimizing"
2617     else
2618         echores "none"
2619     fi
2620
2621     test $_fast_clz = "auto" && _fast_clz=yes
2622
2623     ;;
2624
2625   alpha*)
2626     arch='alpha'
2627     iproc='alpha'
2628
2629     echocheck "CPU type"
2630     cat > $TMPC << EOF
2631 int main(void) {
2632     unsigned long ver, mask;
2633     __asm__ ("implver %0" : "=r" (ver));
2634     __asm__ ("amask %1, %0" : "=r" (mask) : "r" (-1));
2635     printf("%ld-%x\n", ver, ~mask);
2636     return 0;
2637 }
2638 EOF
2639     $_cc -o "$TMPEXE" "$TMPC"
2640     case $("$TMPEXE") in
2641
2642         0-0)    proc="ev4";   _mvi="0";;
2643         1-0)    proc="ev5";   _mvi="0";;
2644         1-1)    proc="ev56";  _mvi="0";;
2645         1-101)  proc="pca56"; _mvi="1";;
2646         2-303)  proc="ev6";   _mvi="1";;
2647         2-307)  proc="ev67";  _mvi="1";;
2648         2-1307) proc="ev68";  _mvi="1";;
2649     esac
2650     echores "$proc"
2651
2652     echocheck "GCC & CPU optimization abilities"
2653     if test "$proc" = "ev68" ; then
2654       cc_check -mcpu=$proc || proc=ev67
2655     fi
2656     if test "$proc" = "ev67" ; then
2657       cc_check -mcpu=$proc || proc=ev6
2658     fi
2659     _mcpu="-mcpu=$proc"
2660     echores "$proc"
2661
2662     test $_fast_clz = "auto" && _fast_clz=yes
2663
2664     _optimizing="$proc"
2665     ;;
2666
2667   nios2)
2668     arch='nios2'
2669     iproc='nios2'
2670     ;;
2671
2672   mips*)
2673     arch='mips'
2674     iproc='mips'
2675
2676     if irix ; then
2677         echocheck "CPU type"
2678         proc=$(hinv -c processor | grep CPU | cut -d " " -f3)
2679         case "$(echo $proc)" in
2680             R3000) _march='-mips1' _mcpu='-mtune=r2000' ;;
2681             R4000) _march='-mips3' _mcpu='-mtune=r4000' ;;
2682             R4400) _march='-mips3' _mcpu='-mtune=r4400' ;;
2683             R4600) _march='-mips3' _mcpu='-mtune=r4600' ;;
2684             R5000) _march='-mips4' _mcpu='-mtune=r5000' ;;
2685             R8000|R10000|R12000|R14000|R16000) _march='-mips4' _mcpu='-mtune=r8000' ;;
2686         esac
2687         # gcc < 3.x does not support -mtune.
2688         if test "$cc_vendor" = "gnu" && test "$_cc_major" -lt 3 ; then
2689             _mcpu=''
2690         fi
2691         echores "$proc"
2692     fi
2693
2694     test $_fast_clz = "auto" && _fast_clz=yes
2695
2696     ;;
2697
2698   hppa)
2699     arch='pa_risc'
2700     iproc='PA-RISC'
2701     ;;
2702
2703   s390)
2704     arch='s390'
2705     iproc='390'
2706     ;;
2707
2708   s390x)
2709     arch='s390x'
2710     iproc='390x'
2711     ;;
2712
2713   vax)
2714     arch='vax'
2715     iproc='vax'
2716     ;;
2717
2718   xtensa)
2719     arch='xtensa'
2720     iproc='xtensa'
2721     ;;
2722
2723   generic)
2724     arch='generic'
2725     ;;
2726   arc)
2727     arch='arc'
2728     iproc='arc'
2729     ;;
2730
2731   *)
2732     echo "The architecture of your CPU ($host_arch) is not supported by this configure script"
2733     echo "It seems nobody has ported MPlayer to your OS or CPU type yet."
2734     die "unsupported architecture $host_arch"
2735     ;;
2736 esac # case "$host_arch" in
2737
2738 if test "$_runtime_cpudetection" = yes ; then
2739   if x86 ; then
2740     test "$_cmov"     != no && _cmov=yes
2741     x86_32 && _cmov=no
2742     test "$_mmx"      != no && _mmx=yes
2743     test "$_3dnow"    != no && _3dnow=yes
2744     test "$_3dnowext" != no && _3dnowext=yes
2745     test "$_mmxext"   != no && _mmxext=yes
2746     test "$_sse"      != no && _sse=yes
2747     test "$_sse2"     != no && _sse2=yes
2748     test "$_sse3"     != no && _sse3=yes
2749     test "$_ssse3"    != no && _ssse3=yes
2750     test "$_sse4_1"   != no && _sse4_1=yes
2751     test "$_sse4_2"   != no && _sse4_2=yes
2752     test "$_avx"      != no && _avx=yes
2753     test "$_avx2"     != no && _avx2=yes
2754     test "$_xop"      != no && _xop=yes
2755     test "$_fma3"     != no && _fma3=yes
2756     test "$_fma4"     != no && _fma4=yes
2757     test "$_mtrr"     != no && _mtrr=yes
2758   fi
2759   if ppc; then
2760     _altivec=yes
2761   fi
2762 fi
2763
2764 test "$_avx" != no && def_simd_align_32='#define HAVE_SIMD_ALIGN_32 1'
2765
2766 # endian testing
2767 echocheck "byte order"
2768 if test "$_big_endian" = auto ; then
2769   cat > $TMPC <<EOF
2770 short ascii_name[] = {
2771   'M' << 8 | 'P', 'l' << 8 | 'a', 'y' << 8 | 'e', 'r' << 8 | 'B',
2772   'i' << 8 | 'g', 'E' << 8 | 'n', 'd' << 8 | 'i', 'a' << 8 | 'n', 0 };
2773 int main(void) { return (long)ascii_name; }
2774 EOF
2775   if cc_check ; then
2776     # stdin is used to make "strings" not try something clever like
2777     # parse executable section headers (and possibly fail in the process)
2778     if strings < $TMPEXE | grep -q -l MPlayerBigEndian ; then
2779       _big_endian=yes
2780     else
2781       _big_endian=no
2782     fi
2783   else
2784     echo ${_echo_n} "failed to autodetect byte order, defaulting to ${_echo_c}"
2785   fi
2786 fi
2787 if test "$_big_endian" = yes ; then
2788   _byte_order='big-endian'
2789   def_bigendian='#define HAVE_BIGENDIAN 1'
2790   def_av_bigendian='#define AV_HAVE_BIGENDIAN 1'
2791 else
2792   _byte_order='little-endian'
2793   def_bigendian='#define HAVE_BIGENDIAN 0'
2794   def_av_bigendian='#define AV_HAVE_BIGENDIAN 0'
2795 fi
2796 echores "$_byte_order"
2797
2798
2799 echocheck "extern symbol prefix"
2800 cat > $TMPC << EOF
2801 int ff_extern;
2802 EOF
2803 cc_check -c || die "Symbol mangling check failed."
2804 sym=$($_nm -P -g $TMPEXE | grep ff_extern)
2805 extern_prefix=${sym%%ff_extern*}
2806 def_extern_asm="#define EXTERN_ASM $extern_prefix"
2807 def_extern_prefix="#define EXTERN_PREFIX \"$extern_prefix\""
2808 echores $extern_prefix
2809
2810
2811 echocheck "assembler support of -pipe option"
2812 # -I. helps to detect compilers that just misunderstand -pipe like Sun C
2813 cflag_check -pipe -I. && _pipe="-pipe" && echores "yes" || echores "no"
2814
2815
2816 if darwin && test "$cc_vendor" = "gnu" ; then
2817 echocheck "GCC support of -mstackrealign"
2818 # GCC 4.2 and some earlier Apple versions support this flag on x86. Since
2819 # Mac OS X/Intel has an ABI different from Windows this is needed to avoid
2820 # crashes when loading Win32 DLLs. Unfortunately some gcc versions create
2821 # wrong code with this flag, but this can be worked around by adding
2822 # -fno-unit-at-a-time as described in the blog post at
2823 # http://www.dribin.org/dave/blog/archives/2006/12/05/missing_third_param/
2824 cat > $TMPC << EOF
2825 __attribute__((noinline)) static int foo3(int i1, int i2, int i3) { return i3; }
2826 int main(void) { return foo3(1, 2, 3) == 3 ? 0 : 1; }
2827 EOF
2828   cc_check -O4 -mstackrealign && tmp_run && cflags_stackrealign=-mstackrealign
2829   test -z "$cflags_stackrealign" && cc_check -O4 -mstackrealign -fno-unit-at-a-time &&
2830     tmp_run && cflags_stackrealign="-mstackrealign -fno-unit-at-a-time"
2831   test -n "$cflags_stackrealign" && echores "yes" || echores "no"
2832 fi # if darwin && test "$cc_vendor" = "gnu" ; then
2833
2834
2835 # Checking for CFLAGS
2836 _install_strip="-s"
2837 if test -z "$CFLAGS" || test "$_profile" != "" || test "$_debug" != ""; then
2838   if test "$cc_vendor" = "intel" ; then
2839     CFLAGS="-O2 $_march $_mcpu $_pipe -fomit-frame-pointer"
2840     WARNFLAGS="-wd167 -wd556 -wd144"
2841   elif test "$cc_vendor" = "sun" ; then
2842     CFLAGS="-O2 $_march $_mcpu $_pipe -xc99 -xregs=frameptr"
2843   elif test "$cc_vendor" = "clang"; then
2844     CFLAGS="-O2 $_march $_pipe"
2845   elif test "$cc_vendor" != "gnu" ; then
2846     CFLAGS="-O2 $_march $_mcpu $_pipe"
2847   else
2848     CFLAGS="-O4 $_march $_mcpu $_pipe -ffast-math -fomit-frame-pointer"
2849     WARNFLAGS="-Wall -Wno-switch -Wno-parentheses -Wpointer-arith -Wredundant-decls -Werror=format-security"
2850     WARN_CFLAGS="-Werror-implicit-function-declaration"
2851     extra_ldflags="$extra_ldflags -ffast-math"
2852   fi
2853
2854   if test "$_profile" != "" || test "$_debug" != ""; then
2855     CFLAGS="-O2 $_march $_mcpu $_pipe $_debug $_profile"
2856     WARNFLAGS="-W -Wall $WARNFLAGS"
2857     _install_strip=
2858   fi
2859 else
2860   warn_cflags=yes
2861 fi
2862
2863 CFLAGS="-D_ISOC99_SOURCE -I. -Iffmpeg $CFLAGS"
2864 HOSTCFLAGS="-D_ISOC99_SOURCE -I. -Iffmpeg -O3"
2865
2866 # On glibc, add some more CPPFLAGS for enabling required functionality.
2867 cpp_condition_check features.h "defined __GLIBC__" &&
2868   CFLAGS="-D_POSIX_C_SOURCE=200112 -D_XOPEN_SOURCE=600 $CFLAGS" &&
2869   HOSTCFLAGS="-D_POSIX_C_SOURCE=200112 -D_XOPEN_SOURCE=600 $HOSTCFLAGS"
2870
2871 if cygwin; then
2872   CFLAGS="-D_XOPEN_SOURCE=600 $CFLAGS"
2873 fi
2874
2875 if test "$cc_vendor" = "gnu" ; then
2876   cflag_check -fno-tree-vectorize && CFLAGS="$CFLAGS -fno-tree-vectorize"
2877   cflag_check -Wundef && WARNFLAGS="-Wundef $WARNFLAGS"
2878   cflag_check -std=gnu99 && WARN_CFLAGS="-std=gnu99 $WARN_CFLAGS"
2879   cflag_check -Wdeclaration-after-statement && WARN_CFLAGS="-Wdeclaration-after-statement $WARN_CFLAGS"
2880   cflag_check -Wno-pointer-sign && WARN_CFLAGS="-Wno-pointer-sign $WARN_CFLAGS"
2881   cflag_check -Wdisabled-optimization && WARN_CFLAGS="-Wdisabled-optimization $WARN_CFLAGS"
2882   cflag_check -Wmissing-prototypes && WARN_CFLAGS="-Wmissing-prototypes $WARN_CFLAGS"
2883   cflag_check -Wstrict-prototypes && WARN_CFLAGS="-Wstrict-prototypes $WARN_CFLAGS"
2884 fi
2885
2886 # This provides significant size savings on gcc.
2887 # I will cause worse backtraces when debug info is missing though,
2888 # but having non-stripable debug info is not really a desirable feature.
2889 # Unfortunately MinGW toolchains seem to have a bug where it tries
2890 # to use SjLj exception handling even if not supported by the toolchain,
2891 # causing linking failure for C++ code like demux_rtp.cpp
2892 if ! mingw32 ; then
2893 cflag_check -fno-asynchronous-unwind-tables && CFLAGS="$CFLAGS -fno-asynchronous-unwind-tables"
2894 fi
2895 cflag_check -mno-omit-leaf-frame-pointer && cflags_no_omit_leaf_frame_pointer="-mno-omit-leaf-frame-pointer"
2896 cflag_check -MMD -MP && DEPFLAGS="-MMD -MP"
2897
2898
2899 if test -n "$LDFLAGS" ; then
2900   extra_ldflags="$extra_ldflags $LDFLAGS"
2901   warn_cflags=yes
2902 elif test "$cc_vendor" = "intel" ; then
2903   extra_ldflags="$extra_ldflags -i-static"
2904 fi
2905 if test -n "$CPPFLAGS" ; then
2906   extra_cflags="$extra_cflags $CPPFLAGS"
2907   warn_cflags=yes
2908 fi
2909
2910
2911 # try to create a relocatable binary by default
2912 echocheck "relocatable binary"
2913 if test $relocatable = "auto" ; then
2914   if test -n "$ld_static" ; then
2915     relocatable=no
2916     res_comment="PIE + static assumed to be broken"
2917   elif win32 && ! wine ; then
2918     relocatable=no
2919     res_comment="unnecessary and broken on win32"
2920   elif x86_32 && cflag_check -pie ; then
2921     extra_ldflags="$extra_ldflags -pie"
2922     relocatable=yes
2923     res_comment="non-PIC"
2924   elif x86_64 && cflag_check -fpie -pie ; then
2925     extra_ldflags="$extra_ldflags -fpie -pie"
2926     extra_cflags="$extra_cflags -fpie"
2927     relocatable=yes
2928     res_comment="fast PIC"
2929   else
2930     relocatable=no
2931     res_comment="unavailable or untested architecture"
2932   fi
2933 elif test $relocatable = "yes" ; then
2934   if return_check "stdint.h" '(intptr_t)"test" >> 16' -pie ; then
2935     extra_ldflags="$extra_ldflags -pie"
2936     res_comment="non-PIC"
2937   else
2938     extra_ldflags="$extra_ldflags -fpie -pie"
2939     extra_cflags="$extra_cflags -fpie"
2940     res_comment="possibly slow PIC!"
2941   fi
2942 fi
2943 echores $relocatable
2944
2945 if x86_32 ; then
2946   # Checking assembler (_as) compatibility...
2947   # Added workaround for older as that reads from stdin by default - atmos
2948   as_version=$(echo '' | $_as -version 2>&1 | sed -n 's/^.*assembler \(version \)*\([0-9.]*\).*$/\2/p')
2949   echocheck "assembler ($_as $as_version)"
2950
2951   _pref_as_version='2.9.1'
2952   echo 'nop' > $TMPS
2953   if test "$_mmx" = yes ; then
2954     echo 'emms' >> $TMPS
2955   fi
2956   if test "$_3dnow" = yes ; then
2957     _pref_as_version='2.10.1'
2958     echo 'femms' >> $TMPS
2959   fi
2960   if test "$_3dnowext" = yes ; then
2961     _pref_as_version='2.10.1'
2962     echo 'pswapd %mm0, %mm0' >> $TMPS
2963   fi
2964   if test "$_mmxext" = yes ; then
2965     _pref_as_version='2.10.1'
2966     echo 'movntq %mm0, (%eax)' >> $TMPS
2967   fi
2968   if test "$_sse" = yes ; then
2969     _pref_as_version='2.10.1'
2970     echo 'xorps %xmm0, %xmm0' >> $TMPS
2971   fi
2972   #if test "$_sse2" = yes ; then
2973   #  _pref_as_version='2.11'
2974   #  echo 'xorpd %xmm0, %xmm0' >> $TMPS
2975   #fi
2976   if test "$_cmov" = yes ; then
2977     _pref_as_version='2.10.1'
2978     echo 'cmovb %eax, %ebx' >> $TMPS
2979   fi
2980   if test "$_ssse3" = yes ; then
2981     _pref_as_version='2.16.92'
2982     echo 'pabsd %xmm0, %xmm1' >> $TMPS
2983   fi
2984   $_as $TMPS -o $TMPEXE > /dev/null 2>&1 || as_verc_fail=yes
2985
2986   if test "$as_verc_fail" != yes ; then
2987     echores "ok"
2988   else
2989     res_comment="Upgrade binutils to ${_pref_as_version} or use --disable-ssse3 etc."
2990     echores "failed"
2991     die "obsolete binutils version"
2992   fi
2993
2994 fi #if x86_32
2995
2996
2997 # Check if we need to compile as PIC for this combination of architecture, toolchain,
2998 # gcc configuration (e.g. hardened or not) and compiler options.
2999 # Needs to be after the relocatable handling, since PIE changes whether we need PIC or not.
3000 echocheck "PIC"
3001 def_pic='#define CONFIG_PIC 0'
3002 pic=no
3003 cpp_condition_check '' 'defined(__PIC__) || defined(__pic__) || defined(PIC)' && pic=yes
3004 # This check is needed to work around issues with clang on OSX when compiling 64 bit relocatable binaries.
3005 if x86_64 && test "$relocatable" = "yes" && test "$pic" = "no"; then
3006   res_comment="Broken compiler incorrectly claims PIC not necessary for PIE"
3007   pic=yes
3008 fi
3009 echores $pic
3010 if test "$pic" = "yes" ; then
3011   extra_cflags="$extra_cflags -DPIC" && def_pic='#define CONFIG_PIC 1'
3012 fi
3013
3014
3015 def_bswap='#define HAVE_BSWAP 0'
3016 def_ebx_available='#define HAVE_EBX_AVAILABLE 0'
3017 def_xmm_clobbers='#define HAVE_XMM_CLOBBERS 0'
3018
3019 if x86_64 ; then
3020 inline_asm_check '"mov (%eax), %eax"' || die "Your binutils version is too old to compile for 64-bit (on OSX try --cc=clang)"
3021 fi
3022
3023 if x86 ; then
3024
3025 echocheck ".align is a power of two"
3026 if test "$_asmalign_pot" = auto ; then
3027 _asmalign_pot=no
3028 inline_asm_check '".align 3"' && _asmalign_pot=yes
3029 fi
3030 if test "$_asmalign_pot" = "yes" ; then
3031   def_asmalign_pot='#define ASMALIGN(ZEROBITS) ".align " #ZEROBITS "\n\t"'
3032 else
3033   def_asmalign_pot='#define ASMALIGN(ZEROBITS) ".align 1<<" #ZEROBITS "\n\t"'
3034 fi
3035 echores $_asmalign_pot
3036
3037
3038 echocheck "ebx availability"
3039 ebx_available=no
3040 cat > $TMPC << EOF
3041 int main(void) {
3042     int x;
3043     __asm__ volatile(
3044         "xor %0, %0"
3045         :"=b"(x)
3046         // just adding ebx to clobber list seems unreliable with some
3047         // compilers, e.g. Haiku's gcc 2.95
3048     );
3049     // and the above check does not work for OSX 64 bit...
3050     __asm__ volatile("":::"%ebx");
3051     return 0;
3052 }
3053 EOF
3054 cc_check && ebx_available=yes && def_ebx_available='#define HAVE_EBX_AVAILABLE 1'
3055 echores $ebx_available
3056
3057
3058 echocheck "yasm"
3059 if test -z "$YASMFLAGS" ; then
3060   if darwin ; then
3061     x86_64 && objformat="macho64" || objformat="macho"
3062   elif win32 && ! wine ; then
3063     objformat="win32"
3064   elif os2 ; then
3065     _yasm=nasm
3066     objformat="aout"
3067   else
3068     objformat="elf"
3069   fi
3070   yasmdefines=""
3071   # currently tested for Linux x86, x86_64
3072   test "$pic" = "yes"      && yasmdefines="$yasmdefines -DPIC"
3073   test -n "$extern_prefix" && yasmdefines="$yasmdefines -DPREFIX"
3074
3075   YASMFLAGS="-f $objformat $yasmdefines"
3076   x86_64 && YASMFLAGS="$YASMFLAGS -m amd64"
3077   case "$objformat" in
3078     elf) test $_debug && YASMFLAGS="$YASMFLAGS -g dwarf2" ;;
3079   esac
3080 else
3081   warn_cflags=yes
3082 fi
3083
3084 echo "pextrd [eax], xmm0, 1" > $TMPS
3085 yasm_features_all="cpunop"
3086 if test "$_yasm" ; then
3087   if ! yasm_check ; then
3088     if x86_64 ; then
3089       case "$objformat" in
3090         elf)   objformat=elf64 ;;
3091         win32) objformat=win64 ;;
3092       esac
3093     fi
3094     YASMFLAGS="-f $objformat $yasmdefines"
3095     yasm_check || ! x86 || die "yasm not found, use --yasm='' if you really want to compile without"
3096     echo "CPU amdnop" > $TMPS
3097     yasm_check && yasm_features="cpunop"
3098   fi
3099 fi
3100 if test $_yasm ; then
3101   def_yasm='#define HAVE_YASM 1
3102 #define HAVE_X86ASM 1'
3103   have_yasm="yes"
3104   echores "$_yasm"
3105 else
3106   def_yasm='#define HAVE_YASM 0
3107 #define HAVE_X86ASM 0'
3108   have_yasm="no"
3109   echores "no"
3110 fi
3111
3112 echocheck "bswap"
3113 echo 'bswap %eax' > $TMPS
3114 $_as $TMPS -o $TMPEXE > /dev/null 2>&1 && def_bswap='#define HAVE_BSWAP 1' && bswap=yes || bswap=no
3115 echores "$bswap"
3116
3117
3118 echocheck "xmm clobbers"
3119 inline_asm_check '"":::"%xmm0"' &&
3120   def_xmm_clobbers='#define HAVE_XMM_CLOBBERS 1' &&
3121   xmm_clobbers=yes || xmm_clobbers=no
3122 echores "$xmm_clobbers"
3123
3124 else
3125   _yasm=''
3126   def_yasm='#define HAVE_YASM 0
3127 #define HAVE_X86ASM 0'
3128   have_yasm="no"
3129 fi #if x86
3130
3131 #FIXME: This should happen before the check for CFLAGS..
3132 def_altivec_h='#define HAVE_ALTIVEC_H 0'
3133 if ppc && ( test "$_altivec" = yes || test "$_runtime_cpudetection" = yes ) ; then
3134
3135     # check if AltiVec is supported by the compiler, and how to enable it
3136     echocheck "GCC AltiVec flags"
3137     if $(cflag_check -maltivec -mabi=altivec) ; then
3138     _altivec_gcc_flags="-maltivec -mabi=altivec"
3139     # check if <altivec.h> should be included
3140         if $(header_check altivec.h $_altivec_gcc_flags) ; then
3141             def_altivec_h='#define HAVE_ALTIVEC_H 1'
3142             inc_altivec_h='#include <altivec.h>'
3143         else
3144             if $(cflag_check -faltivec) ; then
3145                 _altivec_gcc_flags="-faltivec"
3146             else
3147                 _altivec=no
3148                 _altivec_gcc_flags="none, AltiVec disabled"
3149             fi
3150         fi
3151     fi
3152     echores "$_altivec_gcc_flags"
3153
3154     # check if the compiler supports braces for vector declarations
3155     cat > $TMPC << EOF
3156 $inc_altivec_h
3157 int main(void) { (vector int) {1}; return 0; }
3158 EOF
3159     cc_check $_altivec_gcc_flags || die "You need a compiler that supports {} in AltiVec vector declarations."
3160
3161     # Disable runtime cpudetection if we cannot generate AltiVec code or
3162     # AltiVec is disabled by the user.
3163     test "$_runtime_cpudetection" = yes && test "$_altivec" = no \
3164         && _runtime_cpudetection=no
3165
3166     # Show that we are optimizing for AltiVec (if enabled and supported).
3167     test "$_runtime_cpudetection" = no && test "$_altivec" = yes \
3168         && _optimizing="$_optimizing altivec"
3169
3170     # If AltiVec is enabled, make sure the correct flags turn up in CFLAGS.
3171     test "$_altivec" = yes && CFLAGS="$CFLAGS $_altivec_gcc_flags"
3172 fi
3173
3174 if ppc ; then
3175 def_xform_asm='#define HAVE_XFORM_ASM 0'
3176 xform_asm=no
3177 echocheck "XFORM ASM support"
3178 inline_asm_check '"lwzx %1, %y0" :: "Z"(*(int*)0), "r"(0)' &&
3179   xform_asm=yes && def_xform_asm='#define HAVE_XFORM_ASM 1'
3180 echores "$xform_asm"
3181
3182 def_ibm_asm='#define HAVE_IBM_ASM 0'
3183 ibm_asm=no
3184 echocheck "IBM ASM support"
3185 inline_asm_check '"add 0, 0, 0"' &&
3186   ibm_asm=yes && def_ibm_asm='#define HAVE_IBM_ASM 1'
3187 echores "$ibm_asm"
3188
3189 def_gnu_as='#define HAVE_GNU_AS 0'
3190 gnu_as=no
3191 echocheck "GNU assembler"
3192 inline_asm_check '".macro m n\n\\n:.int 0\n.endm\nm x"' &&
3193   gnu_as=yes && def_gnu_as='#define HAVE_GNU_AS 1'
3194 echores "$gnu_as"
3195
3196 fi
3197
3198 if arm ; then
3199   echocheck "ARMv5TE (Enhanced DSP Extensions)"
3200   if test $_armv5te = "auto" ; then
3201     _armv5te=no
3202     inline_asm_check '"qadd r0, r0, r0"' && _armv5te=yes
3203   fi
3204   echores "$_armv5te"
3205
3206   test $_armv5te = "yes" && test $_fast_clz = "auto" && _fast_clz=yes
3207
3208   echocheck "ARMv6 (SIMD instructions)"
3209   if test $_armv6 = "auto" ; then
3210     _armv6=no
3211     inline_asm_check '"sadd16 r0, r0, r0"' && _armv6=yes
3212   fi
3213   echores "$_armv6"
3214
3215   echocheck "ARMv6t2 (SIMD instructions)"
3216   if test $_armv6t2 = "auto" ; then
3217     _armv6t2=no
3218     inline_asm_check '"movt r0, #0"' && _armv6t2=yes
3219   fi
3220   echores "$_armv6t2"
3221
3222   echocheck "ARM VFP"
3223   if test $_armvfp = "auto" ; then
3224     _armvfp=no
3225     inline_asm_check '"fadds s0, s0, s0"' && _armvfp=yes
3226   fi
3227   echores "$_armvfp"
3228
3229   echocheck "ARM VFPV3"
3230   if test $vfpv3 = "auto" ; then
3231     vfpv3=no
3232     inline_asm_check '"vmov.f32 s0, #1.0"' && vfpv3=yes
3233   fi
3234   echores "$vfpv3"
3235
3236   echocheck "ARM setend"
3237   if test $setend = "auto" ; then
3238     setend=no
3239     inline_asm_check '"setend be"' && setend=yes
3240   fi
3241   echores "$setend"
3242
3243   echocheck "softfloat ABI"
3244   softfloat=yes
3245   cpp_condition_check '' 'defined(__ARM_PCS_VFP) || (!defined(__ARM_PCS) && !defined(__SOFTFP__))' && softfloat=no
3246   if test $softfloat = "yes" ; then
3247     def_vfp_args='#define HAVE_VFP_ARGS 0'
3248   else
3249     def_vfp_args='#define HAVE_VFP_ARGS 1'
3250   fi
3251   echores "$softfloat"
3252
3253   echocheck "ARM NEON"
3254   if test $neon = "auto" ; then
3255     neon=no
3256     inline_asm_check '"vadd.i16 q0, q0, q0"' && neon=yes
3257   fi
3258   echores "$neon"
3259
3260   echocheck "ARM THUMB"
3261   if test $armthumb = "auto" ; then
3262     armthumb=no
3263   fi
3264   if test $armthumb = "yes" ; then
3265     extra_cflags="$extra_cflags -mthumb"
3266     def_armthumb='#define CONFIG_THUMB 1'
3267   else
3268     extra_cflags="$extra_cflags -marm"
3269     def_armthumb='#define CONFIG_THUMB 0'
3270   fi
3271   echores "$armthumb"
3272
3273   echocheck "iWMMXt (Intel XScale SIMD instructions)"
3274   if test $_iwmmxt = "auto" ; then
3275     _iwmmxt=no
3276     inline_asm_check '"wunpckelub wr6, wr4"' && _iwmmxt=yes
3277   fi
3278   echores "$_iwmmxt"
3279 fi
3280
3281 cpuexts_all='ALTIVEC XOP AVX AVX2 AVX512 FMA3 FMA4 MMX MMX2 MMXEXT AMD3DNOW AMD3DNOWEXT SSE SSE2 SSE3 SSSE3 SSE4 SSE42 FAST_CMOV I686 FAST_CLZ ARMV5TE ARMV6 ARMV6T2 VFP VFPV3 SETEND NEON IWMMXT MMI VIS MVI'
3282 test "$_altivec"   = yes && cpuexts="ALTIVEC $cpuexts"
3283 test "$_mmx"       = yes && cpuexts="MMX $cpuexts"
3284 test "$_mmxext"    = yes && cpuexts="MMX2 $cpuexts"
3285 test "$_mmxext"    = yes && cpuexts="MMXEXT $cpuexts"
3286 test "$_3dnow"     = yes && cpuexts="AMD3DNOW $cpuexts"
3287 test "$_3dnowext"  = yes && cpuexts="AMD3DNOWEXT $cpuexts"
3288 test "$_sse"       = yes && cpuexts="SSE $cpuexts"
3289 test "$_sse2"      = yes && cpuexts="SSE2 $cpuexts"
3290 test "$_sse3"      = yes && cpuexts="SSE3 $cpuexts"
3291 test "$_ssse3"     = yes && cpuexts="SSSE3 $cpuexts"
3292 test "$_sse4_1"    = yes && cpuexts="SSE4 $cpuexts"
3293 test "$_sse4_2"    = yes && cpuexts="SSE42 $cpuexts"
3294 test "$_avx"       = yes && cpuexts="AVX $cpuexts"
3295 test "$_avx2"      = yes && cpuexts="AVX2 $cpuexts"
3296 test "$_avx512"    = yes && cpuexts="AVX512 $cpuexts"
3297 test "$_xop"       = yes && cpuexts="XOP $cpuexts"
3298 test "$_fma3"      = yes && cpuexts="FMA3 $cpuexts"
3299 test "$_fma4"      = yes && cpuexts="FMA4 $cpuexts"
3300 test "$_cmov"      = yes && cpuexts="I686 $cpuexts"
3301 test "$_fast_cmov" = yes && cpuexts="FAST_CMOV $cpuexts"
3302 test "$_fast_clz"  = yes && cpuexts="FAST_CLZ $cpuexts"
3303 test "$_armv5te"   = yes && cpuexts="ARMV5TE $cpuexts"
3304 test "$_armv6"     = yes && cpuexts="ARMV6 $cpuexts"
3305 test "$_armv6t2"   = yes && cpuexts="ARMV6T2 $cpuexts"
3306 test "$_armvfp"    = yes && cpuexts="VFP $cpuexts"
3307 test "$vfpv3"      = yes && cpuexts="VFPV3 $cpuexts"
3308 test "$setend"     = yes && cpuexts="SETEND $cpuexts"
3309 test "$neon"       = yes && cpuexts="NEON $cpuexts"
3310 test "$_iwmmxt"    = yes && cpuexts="IWMMXT $cpuexts"
3311 test "$_vis"       = yes && cpuexts="VIS $cpuexts"
3312 test "$_mvi"       = yes && cpuexts="MVI $cpuexts"
3313 cpuexts_external=""
3314 test "$have_yasm"  = yes && cpuexts_external="$cpuexts"
3315
3316 # Checking kernel version...
3317 if x86_32 && linux ; then
3318   _k_verc_problem=no
3319   kernel_version=$(uname -r 2>&1)
3320   echocheck "$system_name kernel version"
3321   case "$kernel_version" in
3322     '') kernel_version="?.??"; _k_verc_fail=yes;;
3323     [0-1].[0-9].[0-9]*|2.[0-3].[0-9]*)
3324       _k_verc_problem=yes;;
3325   esac
3326   if test "$_k_verc_problem" = yes && test "$_sse" = yes ; then
3327     _k_verc_fail=yes
3328   fi
3329   if test "$_k_verc_fail" ; then
3330     echores "$kernel_version, fail"
3331     echo "WARNING! If you want to run MPlayer on this system, get prepared for problems!"
3332     echo "2.2.x has limited SSE support. Upgrade the kernel or use --disable-sse if you"
3333     echo "experience crashes. MPlayer tries to autodetect if your kernel correctly"
3334     echo "supports SSE, but you have been warned! If you are using a kernel older than"
3335     echo "2.2.x you must upgrade it to get SSE support!"
3336 #    die "Your kernel is too old for this CPU." # works fine on some 2.2.x so don't die (later check will test)
3337   else
3338     echores "$kernel_version, ok"
3339   fi
3340 fi
3341
3342 ######################
3343 # MAIN TESTS GO HERE #
3344 ######################
3345
3346
3347 echocheck "langinfo"
3348 if test "$_langinfo" = auto ; then
3349   _langinfo=no
3350   statement_check langinfo.h 'nl_langinfo(CODESET)' && _langinfo=yes
3351 fi
3352 if test "$_langinfo" = yes ; then
3353   def_langinfo='#define HAVE_LANGINFO 1'
3354 else
3355   def_langinfo='#undef HAVE_LANGINFO'
3356 fi
3357 echores "$_langinfo"
3358
3359
3360 echocheck "language"
3361 # Set preferred languages, "all" uses English as main language.
3362 test -z "$language" && language=$LINGUAS
3363 test -z "$language_doc" && language_doc=$language
3364 test -z "$language_man" && language_man=$language
3365 test -z "$language_msg" && language_msg=$language
3366 language_doc=$(echo $language_doc | tr , " ")
3367 language_man=$(echo $language_man | tr , " ")
3368 language_msg=$(echo $language_msg | tr , " ")
3369
3370 test "$language_doc" = "all" && language_doc=$doc_lang_all
3371 test "$language_man" = "all" && language_man=$man_lang_all
3372 test "$language_msg" = "all" && language_msg=en
3373
3374 # Prune non-existing translations from language lists.
3375 # Set message translation to the first available language.
3376 # Fall back on English.
3377 for lang in $language_doc ; do
3378   test -d DOCS/xml/$lang && tmp_language_doc="$tmp_language_doc $lang"
3379 done
3380 language_doc=$tmp_language_doc
3381 test -z "$language_doc" && language_doc=en
3382
3383 for lang in $language_man ; do
3384   test -d DOCS/man/$lang && tmp_language_man="$tmp_language_man $lang"
3385 done
3386 language_man=$tmp_language_man
3387 test -z "$language_man" && language_man=en
3388
3389 for lang in $language_msg ; do
3390   test -f "help/help_mp-${lang}.h" && tmp_language_msg=$lang && break
3391 done
3392 language_msg=$tmp_language_msg
3393 test -z "$language_msg" && language_msg=en
3394 _mp_help="help/help_mp-${language_msg}.h"
3395 echores "messages: $language_msg - man pages: $language_man - documentation: $language_doc"
3396
3397
3398 echocheck "enable sighandler"
3399 if test "$_sighandler" = yes ; then
3400   def_sighandler='#define CONFIG_SIGHANDLER 1'
3401 else
3402   def_sighandler='#undef CONFIG_SIGHANDLER'
3403 fi
3404 echores "$_sighandler"
3405
3406 echocheck "runtime cpudetection"
3407 if test "$_runtime_cpudetection" = yes ; then
3408   _optimizing="Runtime CPU-Detection enabled"
3409   def_runtime_cpudetection='#define CONFIG_RUNTIME_CPUDETECT 1'
3410 else
3411   def_runtime_cpudetection='#define CONFIG_RUNTIME_CPUDETECT 0'
3412 fi
3413 echores "$_runtime_cpudetection"
3414
3415
3416 echocheck "restrict keyword"
3417 for restrict_keyword in restrict __restrict __restrict__ ; do
3418   echo "void foo(char * $restrict_keyword p); int main(void) { return 0; }" > $TMPC
3419   if cc_check; then
3420     def_restrict_keyword=$restrict_keyword
3421     break;
3422   fi
3423 done
3424 if [ -n "$def_restrict_keyword" ]; then
3425   echores "$def_restrict_keyword"
3426 else
3427   echores "none"
3428 fi
3429 # Avoid infinite recursion loop ("#define restrict restrict")
3430 if [ "$def_restrict_keyword" != "restrict" ]; then
3431   def_restrict_keyword="#define restrict $def_restrict_keyword"
3432 else
3433   def_restrict_keyword=""
3434 fi
3435
3436
3437 echocheck "__builtin_expect"
3438 # GCC branch prediction hint
3439 cat > $TMPC << EOF
3440 static int foo(int a) {
3441     a = __builtin_expect(a, 10);
3442     return a == 10 ? 0 : 1;
3443 }
3444 int main(void) { return foo(10) && foo(0); }
3445 EOF
3446 _builtin_expect=no
3447 cc_check && _builtin_expect=yes
3448 if test "$_builtin_expect" = yes ; then
3449   def_builtin_expect='#define HAVE_BUILTIN_EXPECT 1'
3450 else
3451   def_builtin_expect='#undef HAVE_BUILTIN_EXPECT'
3452 fi
3453 echores "$_builtin_expect"
3454
3455
3456 echocheck "kstat"
3457 _kstat=no
3458 statement_check kstat.h 'kstat_open()' -lkstat && _kstat=yes
3459 if test "$_kstat" = yes ; then
3460   def_kstat="#define HAVE_LIBKSTAT 1"
3461   extra_ldflags="$extra_ldflags -lkstat"
3462 else
3463   def_kstat="#undef HAVE_LIBKSTAT"
3464 fi
3465 echores "$_kstat"
3466
3467
3468 for func in atanf cbrt cbrtf cosf expf exp2 exp2f isnan isfinite isinf llrint llrintf log2 log2f log10f lrint lrintf rint round roundf sinf trunc truncf erf; do
3469 echocheck $func
3470 eval _$func=no
3471 statement_check math.h "${func}(2.0)" && eval _$func=yes
3472 if eval test "x\$_$func" = "xyes"; then
3473   eval def_$func="\"#define HAVE_$(echo $func | toupper) 1\""
3474   echores yes
3475 else
3476   eval def_$func="\"#define HAVE_$(echo $func | toupper) 0\""
3477   echores no
3478 fi
3479 done
3480
3481
3482 for func in atan2f fminf ldexpf powf hypot; do
3483 echocheck $func
3484 eval _$func=no
3485 statement_check math.h "${func}(1.0,1.0)" && eval _$func=yes
3486 if eval test "x\$_$func" = "xyes"; then
3487   eval def_$func="\"#define HAVE_$(echo $func | toupper) 1\""
3488   echores yes
3489 else
3490   eval def_$func="\"#define HAVE_$(echo $func | toupper) 0\""
3491   echores no
3492 fi
3493 done
3494
3495
3496 echocheck "mkstemp"
3497 _mkstemp=no
3498 statement_check stdlib.h 'mkstemp("")' && _mkstemp=yes
3499 if test "$_mkstemp" = yes ; then
3500   def_mkstemp='#define HAVE_MKSTEMP 1'
3501 else
3502   def_mkstemp='#define HAVE_MKSTEMP 0'
3503 fi
3504 echores "$_mkstemp"
3505
3506 echocheck "gmtime_r"
3507 _gmtime_r=no
3508 statement_check time.h 'gmtime_r(0, 0)' && _gmtime_r=yes
3509 if test "$_gmtime_r" = yes ; then
3510   def_gmtime_r='#define HAVE_GMTIME_R 1'
3511 else
3512   def_gmtime_r='#define HAVE_GMTIME_R 0'
3513 fi
3514 echores "$_gmtime_r"
3515
3516 echocheck "localtime_r"
3517 _localtime_r=no
3518 statement_check time.h 'localtime_r(0, 0)' && _localtime_r=yes
3519 if test "$_localtime_r" = yes ; then
3520   def_localtime_r='#define HAVE_LOCALTIME_R 1'
3521 else
3522   def_localtime_r='#define HAVE_LOCALTIME_R 0'
3523 fi
3524 echores "$_localtime_r"
3525
3526 echocheck "nanosleep"
3527 _nanosleep=no
3528 statement_check time.h 'nanosleep(0, 0)' && _nanosleep=yes
3529 if test "$_nanosleep" = yes ; then
3530   def_nanosleep='#define HAVE_NANOSLEEP 1'
3531 else
3532   def_nanosleep='#undef HAVE_NANOSLEEP'
3533 fi
3534 echores "$_nanosleep"
3535
3536
3537 echocheck "socklib"
3538 # for Solaris (socket stuff is in -lsocket, gethostbyname and friends in -lnsl):
3539 cat > $TMPC << EOF
3540 #include <netdb.h>
3541 #include <sys/socket.h>
3542 int main(void) { gethostbyname(0); socket(AF_INET, SOCK_STREAM, 0); return 0; }
3543 EOF
3544 _socklib=no
3545 for ld_tmp in "" "-lsocket -ldnet" "-lsocket -lnsl" "-lnsl" "-lsocket" ; do
3546   cc_check $ld_tmp && ld_sock="$ld_tmp" && _socklib=yes && break
3547 done
3548 test $_socklib = yes && test $_winsock2_h = auto && _winsock2_h=no
3549 if test $_winsock2_h = auto ; then
3550   _winsock2_h=no
3551   statement_check winsock2.h 'gethostbyname(0)' -lws2_32 && ld_sock="-lws2_32" && _winsock2_h=yes
3552 fi
3553 test "$ld_sock" && res_comment="using $ld_sock"
3554 echores "$_socklib"
3555
3556
3557 if test $_winsock2_h = yes ; then
3558   ld_sock="-lws2_32"
3559   def_winsock2_h='#define HAVE_WINSOCK2_H 1'
3560   cc_check_winsock2_h='-DHAVE_WINSOCK2_H=1'
3561 else
3562   def_winsock2_h='#define HAVE_WINSOCK2_H 0'
3563   cc_check_winsock2_h='-DHAVE_WINSOCK2_H=0'
3564 fi
3565
3566 echocheck "struct pollfd"
3567 if test "$_struct_pollfd" = auto; then
3568   _struct_pollfd=no
3569   cat > $TMPC << EOF
3570 #if HAVE_WINSOCK2_H
3571 #include <winsock2.h>
3572 #else
3573 #include <poll.h>
3574 #endif
3575 int main(void) { struct pollfd p; return 0; }
3576 EOF
3577   cc_check $cc_check_winsock2_h && _struct_pollfd=yes
3578 fi
3579 echores "$_struct_pollfd"
3580
3581 if test "$_struct_pollfd" = yes; then
3582   def_struct_pollfd="#define HAVE_STRUCT_POLLFD 1"
3583 else
3584   def_struct_pollfd="#define HAVE_STRUCT_POLLFD 0"
3585 fi
3586
3587 echocheck "netdb.h, struct addrinfo"
3588 if test "$_struct_addrinfo" = auto; then
3589   _struct_addrinfo=no
3590   cat > $TMPC << EOF
3591 #if HAVE_WINSOCK2_H
3592 #include <winsock2.h>
3593 #include <ws2tcpip.h>
3594 #else
3595 #include <sys/types.h>
3596 #include <sys/socket.h>
3597 #include <netdb.h>
3598 #endif
3599 int main(void) { struct addrinfo ai; return 0; }
3600 EOF
3601   cc_check $cc_check_winsock2_h && _struct_addrinfo=yes
3602 fi
3603 echores "$_struct_addrinfo"
3604
3605 if test "$_struct_addrinfo" = yes; then
3606   def_struct_addrinfo="#define HAVE_STRUCT_ADDRINFO 1"
3607 else
3608   def_struct_addrinfo="#define HAVE_STRUCT_ADDRINFO 0"
3609 fi
3610
3611
3612 echocheck "netdb.h, getaddrinfo()"
3613 if test "$_getaddrinfo" = auto; then
3614   _getaddrinfo=no
3615   cat > $TMPC << EOF
3616 #if HAVE_WINSOCK2_H
3617 #include <winsock2.h>
3618 #else
3619 #include <sys/types.h>
3620 #include <sys/socket.h>
3621 #include <netdb.h>
3622 #endif
3623 int main(void) { getaddrinfo(0, 0, 0, 0); return 0; }
3624 EOF
3625   cc_check $cc_check_winsock2_h && _getaddrinfo=yes
3626 fi
3627 echores "$_getaddrinfo"
3628
3629 if test "$_getaddrinfo" = yes; then
3630   def_getaddrinfo="#define HAVE_GETADDRINFO 1"
3631 else
3632   def_getaddrinfo="#define HAVE_GETADDRINFO 0"
3633 fi
3634
3635
3636 echocheck "sockaddr_storage"
3637 if test "$_struct_sockaddr_storage" = auto; then
3638   _struct_sockaddr_storage=no
3639   cat > $TMPC << EOF
3640 #if HAVE_WINSOCK2_H
3641 #include <winsock2.h>
3642 #else
3643 #include <sys/types.h>
3644 #include <sys/socket.h>
3645 #endif
3646 int main(void) { struct sockaddr_storage sas; return 0; }
3647 EOF
3648   cc_check $cc_check_winsock2_h && _struct_sockaddr_storage=yes
3649 fi
3650 echores "$_struct_sockaddr_storage"
3651
3652 if test "$_struct_sockaddr_storage" = yes; then
3653   def_struct_sockaddr_storage="#define HAVE_STRUCT_SOCKADDR_STORAGE 1"
3654 else
3655   def_struct_sockaddr_storage="#define HAVE_STRUCT_SOCKADDR_STORAGE 0"
3656 fi
3657
3658
3659 echocheck "struct ipv6_mreq"
3660 _struct_ipv6_mreq=no
3661 def_struct_ipv6_mreq="#define HAVE_STRUCT_IPV6_MREQ 0"
3662 cat > $TMPC << EOF
3663 #if HAVE_WINSOCK2_H
3664 #include <ws2tcpip.h>
3665 #else
3666 #include <netinet/in.h>
3667 #endif
3668 int main(void) { struct ipv6_mreq mreq6; return 0; }
3669 EOF
3670 cc_check $cc_check_winsock2_h && _struct_ipv6_mreq=yes &&
3671   def_struct_ipv6_mreq="#define HAVE_STRUCT_IPV6_MREQ 1"
3672 echores "$_struct_ipv6_mreq"
3673
3674
3675 echocheck "struct sockaddr_in6"
3676 _struct_sockaddr_in6=no
3677 def_struct_sockaddr_in6="#define HAVE_STRUCT_SOCKADDR_IN6 0"
3678 cat > $TMPC << EOF
3679 #if HAVE_WINSOCK2_H
3680 #include <ws2tcpip.h>
3681 #else
3682 #include <netinet/in.h>
3683 #endif
3684 int main(void) { struct sockaddr_in6 addr; return 0; }
3685 EOF
3686 cc_check $cc_check_winsock2_h && _struct_sockaddr_in6=yes &&
3687   def_struct_sockaddr_in6="#define HAVE_STRUCT_SOCKADDR_IN6 1"
3688 echores "$_struct_sockaddr_in6"
3689
3690
3691 echocheck "struct sockaddr sa_len"
3692 _struct_sockaddr_sa_len=no
3693 def_struct_sockaddr_sa_len="#define HAVE_STRUCT_SOCKADDR_SA_LEN 0"
3694 cat > $TMPC << EOF
3695 #if HAVE_WINSOCK2_H
3696 #include <winsock2.h>
3697 #else
3698 #include <sys/types.h>
3699 #include <sys/socket.h>
3700 #endif
3701 int main(void) { const void *p = &((struct sockaddr *)0)->sa_len; return 0; }
3702 EOF
3703 cc_check $cc_check_winsock2_h && _struct_sockaddr_sa_len=yes &&
3704   def_struct_sockaddr_sa_len="#define HAVE_STRUCT_SOCKADDR_SA_LEN 1"
3705 echores "$_struct_sockaddr_sa_len"
3706
3707
3708 echocheck "arpa/inet.h"
3709 arpa_inet_h=no
3710 def_arpa_inet_h='#define HAVE_ARPA_INET_H 0'
3711 header_check arpa/inet.h && arpa_inet_h=yes &&
3712   def_arpa_inet_h='#define HAVE_ARPA_INET_H 1'
3713 echores "$arpa_inet_h"
3714
3715
3716 echocheck "inet_pton()"
3717 def_inet_pton='#define HAVE_INET_PTON 0'
3718 inet_pton=no
3719 for ld_tmp in "$ld_sock" "$ld_sock -lresolv" ; do
3720   statement_check arpa/inet.h 'inet_pton(0, 0, 0)' $ld_tmp && inet_pton=yes && break
3721 done
3722 if test $inet_pton = yes ; then
3723   test "$ld_tmp" && res_comment="using $ld_tmp"
3724   def_inet_pton='#define HAVE_INET_PTON 1'
3725 fi
3726 echores "$inet_pton"
3727
3728
3729 echocheck "inet_aton()"
3730 def_inet_aton='#define HAVE_INET_ATON 0'
3731 inet_aton=no
3732 for ld_tmp in "$ld_sock" "$ld_sock -lresolv" ; do
3733   define_statement_check _BSD_SOURCE arpa/inet.h 'inet_aton(0, 0)' $ld_tmp && inet_aton=yes && break
3734 done
3735 if test $inet_aton = yes ; then
3736   test "$ld_tmp" && res_comment="using $ld_tmp"
3737   def_inet_aton='#define HAVE_INET_ATON 1'
3738 fi
3739 echores "$inet_aton"
3740
3741
3742 echocheck "socklen_t"
3743 _socklen_t=no
3744 cat > $TMPC << EOF
3745 #if HAVE_WINSOCK2_H
3746 #include <ws2tcpip.h>
3747 #else
3748 #include <sys/socket.h>
3749 #include <sys/types.h>
3750 #endif
3751 int main(void) { socklen_t v = 0; return 0; }
3752 EOF
3753 cc_check $cc_check_winsock2_h && _socklen_t=yes
3754 if test "$_socklen_t" = yes ; then
3755   def_socklen_t='#define HAVE_SOCKLEN_T 1'
3756 else
3757   def_socklen_t='#define HAVE_SOCKLEN_T 0'
3758 fi
3759 echores "$_socklen_t"
3760
3761
3762 echocheck "closesocket()"
3763 _closesocket=no
3764 statement_check winsock2.h 'closesocket(~0)' $ld_sock && _closesocket=yes
3765 if test "$_closesocket" = yes ; then
3766   def_closesocket='#define HAVE_CLOSESOCKET 1'
3767 else
3768   def_closesocket='#define HAVE_CLOSESOCKET 0'
3769 fi
3770 echores "$_closesocket"
3771
3772
3773 echocheck "networking"
3774 test $_winsock2_h = no && test $inet_pton = no &&
3775   test $inet_aton = no && networking=no
3776 if test "$networking" = yes ; then
3777   def_network='#define CONFIG_NETWORK 1'
3778   def_networking='#define CONFIG_NETWORKING 1'
3779   def_rtpdec='#define CONFIG_RTPDEC 1'
3780   extra_ldflags="$extra_ldflags $ld_sock"
3781   inputmodules="networking $inputmodules"
3782 else
3783   noinputmodules="networking $noinputmodules"
3784   def_network='#define CONFIG_NETWORK 0'
3785   def_networking='#undef CONFIG_NETWORKING'
3786   def_rtpdec='#define CONFIG_RTPDEC 0'
3787   libavprotocols=$(filter_out_component protocol 'GOPHER HTTP MMSH MMST RTMP RTP SCTP TCP UDP')
3788   libavdemuxers=$(filter_out_component demuxer 'RTP RTSP SAP SDP')
3789 fi
3790 echores "$networking"
3791
3792
3793 echocheck "inet6"
3794 if test "$_inet6" = auto ; then
3795   cat > $TMPC << EOF
3796 #include <sys/types.h>
3797 #if !defined(_WIN32)
3798 #include <sys/socket.h>
3799 #include <netinet/in.h>
3800 #else
3801 #include <ws2tcpip.h>
3802 #endif
3803 int main(void) { struct sockaddr_in6 six; socket(AF_INET6, SOCK_STREAM, AF_INET6); return 0; }
3804 EOF
3805   _inet6=no
3806   if cc_check $ld_sock ; then
3807     _inet6=yes
3808   fi
3809 fi
3810 if test "$_inet6" = yes ; then
3811   def_inet6='#define HAVE_AF_INET6 1'
3812 else
3813   def_inet6='#undef HAVE_AF_INET6'
3814 fi
3815 echores "$_inet6"
3816
3817
3818 echocheck "gethostbyname2"
3819 if test "$_gethostbyname2" = auto ; then
3820 cat > $TMPC << EOF
3821 #define _BSD_SOURCE
3822 #include <sys/types.h>
3823 #include <sys/socket.h>
3824 #include <netdb.h>
3825 int main(void) { gethostbyname2("", AF_INET); return 0; }
3826 EOF
3827   _gethostbyname2=no
3828   if cc_check ; then
3829     _gethostbyname2=yes
3830   fi
3831 fi
3832 if test "$_gethostbyname2" = yes ; then
3833   def_gethostbyname2='#define HAVE_GETHOSTBYNAME2 1'
3834 else
3835   def_gethostbyname2='#undef HAVE_GETHOSTBYNAME2'
3836 fi
3837 echores "$_gethostbyname2"
3838
3839 echocheck "SCTP"
3840 if test "$_sctp" = auto ; then
3841   _sctp=no
3842   if header_check netinet/sctp.h; then
3843     _sctp=yes
3844   fi
3845 fi
3846 if test "$_sctp" = no ; then
3847   libavprotocols=$(filter_out_component protocol 'SCTP')
3848 fi
3849 echores "$_sctp"
3850
3851 echocheck "sys/un.h"
3852 un_h=no
3853 header_check sys/un.h && un_h=yes
3854 if test "$un_h" = "no" ; then
3855   libavprotocols=$(filter_out_component protocol 'UNIX')
3856 fi
3857 echores "$un_h"
3858
3859 echocheck "sys/poll.h"
3860 poll_h=no
3861 def_poll_h='#define HAVE_POLL_H 0'
3862 header_check sys/poll.h && poll_h=yes &&
3863   def_poll_h='#define HAVE_POLL_H 1'
3864 echores "$poll_h"
3865
3866
3867 echocheck "inttypes.h (required)"
3868 _inttypes=no
3869 header_check inttypes.h && _inttypes=yes
3870 echores "$_inttypes"
3871
3872 if test "$_inttypes" = no ; then
3873   echocheck "sys/bitypes.h (inttypes.h predecessor)"
3874   header_check sys/bitypes.h && _inttypes=yes
3875   if test "$_inttypes" = yes ; then
3876     die "You don't have inttypes.h, but sys/bitypes.h is present. Please copy etc/inttypes.h into the include path, and re-run configure."
3877   else
3878     die "Cannot find header either inttypes.h or bitypes.h. There is no chance for compilation to succeed."
3879   fi
3880 fi
3881
3882
3883 echocheck "int_fastXY_t in inttypes.h"
3884 _fast_inttypes=no
3885 statement_check "inttypes.h" 'volatile int_fast16_t v = 0' && _fast_inttypes=yes
3886 if test "$_fast_inttypes" = no ; then
3887   def_fast_inttypes='
3888     typedef signed char int_fast8_t;
3889     typedef signed int  int_fast16_t;
3890     typedef signed int  int_fast32_t;
3891     typedef signed long long int_fast64_t;
3892     typedef unsigned char uint_fast8_t;
3893     typedef unsigned int  uint_fast16_t;
3894     typedef unsigned int  uint_fast32_t;
3895     typedef unsigned long long uint_fast64_t;'
3896 fi
3897 echores "$_fast_inttypes"
3898
3899
3900 echocheck "malloc.h"
3901 _malloc=no
3902 header_check malloc.h && _malloc=yes
3903 if test "$_malloc" = yes ; then
3904   def_malloc_h='#define HAVE_MALLOC_H 1'
3905 else
3906   def_malloc_h='#define HAVE_MALLOC_H 0'
3907 fi
3908 echores "$_malloc"
3909
3910
3911 echocheck "aligned malloc"
3912 aligned_malloc=no
3913 def_aligned_malloc='#define HAVE_ALIGNED_MALLOC 0'
3914 statement_check malloc.h '_aligned_malloc(1, 32)' && aligned_malloc=yes &&
3915   def_aligned_malloc='#define HAVE_ALIGNED_MALLOC 1'
3916 echores "$aligned_malloc"
3917
3918
3919 echocheck "memalign()"
3920 # XXX restrict to x86 ? extend to other CPUs/cacheline sizes ?
3921 def_memalign_hack='#define CONFIG_MEMALIGN_HACK 0'
3922 _memalign=no
3923 statement_check malloc.h 'memalign(64, sizeof(char))' && _memalign=yes
3924 if test "$_memalign" = yes ; then
3925   def_memalign='#define HAVE_MEMALIGN 1'
3926 else
3927   def_memalign='#define HAVE_MEMALIGN 0'
3928   def_map_memalign='#define memalign(a, b) malloc(b)'
3929   darwin || def_memalign_hack='#define CONFIG_MEMALIGN_HACK 1'
3930 fi
3931 echores "$_memalign"
3932
3933
3934 echocheck "posix_memalign()"
3935 posix_memalign=no
3936 def_posix_memalign='#define HAVE_POSIX_MEMALIGN 0'
3937 statement_check stdlib.h 'posix_memalign(NULL, 0, 0)' &&
3938     posix_memalign=yes && def_posix_memalign='#define HAVE_POSIX_MEMALIGN 1'
3939 echores "$posix_memalign"
3940
3941
3942 echocheck "alloca.h"
3943 _alloca=no
3944 statement_check alloca.h 'alloca(0)' && _alloca=yes
3945 if test "$_alloca" = yes ; then
3946   def_alloca_h='#define HAVE_ALLOCA_H 1'
3947 else
3948   def_alloca_h='#undef HAVE_ALLOCA_H'
3949 fi
3950 echores "$_alloca"
3951
3952
3953 echocheck "fastmemcpy"
3954 if test "$_fastmemcpy" = yes ; then
3955   def_fastmemcpy='#define CONFIG_FASTMEMCPY 1'
3956 else
3957   def_fastmemcpy='#undef CONFIG_FASTMEMCPY'
3958 fi
3959 echores "$_fastmemcpy"
3960
3961
3962 echocheck "hard-coded tables"
3963 if test "$hardcoded_tables" = yes ; then
3964   def_hardcoded_tables='#define CONFIG_HARDCODED_TABLES 1'
3965   mak_hardcoded_tables='CONFIG_HARDCODED_TABLES = yes'
3966 else
3967   def_hardcoded_tables='#define CONFIG_HARDCODED_TABLES 0'
3968 fi
3969 echores "$hardcoded_tables"
3970
3971
3972 echocheck "mman.h"
3973 _mman=no
3974 statement_check sys/mman.h 'mmap(0, 0, 0, 0, 0, 0)' && _mman=yes
3975 if test "$_mman" = yes ; then
3976   def_mmap='#define HAVE_MMAP 1'
3977   def_mman_h='#define HAVE_SYS_MMAN_H 1'
3978 else
3979   def_mmap='#define HAVE_MMAP 0'
3980   def_mman_h='#define HAVE_SYS_MMAN_H 0'
3981   os2 && mmap=no
3982 fi
3983 echores "$_mman"
3984
3985 _mman_has_map_failed=no
3986 statement_check sys/mman.h 'void *p = MAP_FAILED' && _mman_has_map_failed=yes
3987 if test "$_mman_has_map_failed" = yes ; then
3988   def_mman_has_map_failed=''
3989 else
3990   def_mman_has_map_failed='#define MAP_FAILED ((void *) -1)'
3991 fi
3992
3993
3994 echocheck "mprotect"
3995 mprotect=no
3996 def_mprotect='#define HAVE_MPROTECT 0'
3997 statement_check_broken stddef.h sys/mman.h 'mprotect(NULL, 0, 0)' && mprotect=yes
3998 echores "$mprotect"
3999
4000
4001 echocheck "dynamic loader"
4002 _dl=no
4003 for ld_tmp in "" -ldl; do
4004   statement_check dlfcn.h 'dlopen("", 0)' $ld_tmp && ld_dl="$ld_tmp" && _dl=yes && break
4005 done
4006 if test "$_dl" = yes ; then
4007   def_dl='#define HAVE_LIBDL 1'
4008 else
4009   def_dl='#undef HAVE_LIBDL'
4010 fi
4011 echores "$_dl"
4012
4013
4014 echocheck "dynamic a/v plugins support"
4015 if test "$_dl" = no ; then
4016   _dynamic_plugins=no
4017 fi
4018 if test "$_dynamic_plugins" = yes ; then
4019   def_dynamic_plugins='#define CONFIG_DYNAMIC_PLUGINS 1'
4020 else
4021   def_dynamic_plugins='#undef CONFIG_DYNAMIC_PLUGINS'
4022 fi
4023 echores "$_dynamic_plugins"
4024
4025
4026 def_threads='#define HAVE_THREADS 0'
4027 def_pthreads='#define HAVE_PTHREADS 0'
4028 def_w32threads='#define HAVE_W32THREADS 0'
4029 def_os2threads='#define HAVE_OS2THREADS 0'
4030
4031 echocheck "pthread"
4032 if linux ; then
4033   THREAD_CFLAGS=-D_REENTRANT
4034 elif freebsd || netbsd || openbsd || bsdos ; then
4035   THREAD_CFLAGS=-D_THREAD_SAFE
4036 fi
4037 if test "$_pthreads" = auto ; then
4038 cat > $TMPC << EOF
4039 #include <pthread.h>
4040 static void *func(void *arg) { return arg; }
4041 int main(void) { pthread_t tid; return pthread_create(&tid, 0, func, 0) == 0 ? 0 : 1; }
4042 EOF
4043 _pthreads=no
4044 if ! hpux ; then
4045   for ld_tmp in "-lpthreadGC2" "" "-lpthread" "-pthread" ; do
4046     # for crosscompilation, we cannot execute the program, be happy if we can link statically
4047     cc_check $THREAD_CFLAGS $ld_tmp && (tmp_run || test "$ld_static") && ld_pthread="$ld_tmp" && _pthreads=yes && break
4048   done
4049 fi
4050 fi
4051 if test "$_pthreads" = yes ; then
4052   test $ld_pthread && res_comment="using $ld_pthread"
4053   def_pthreads='#define HAVE_PTHREADS 1'
4054   def_threads='#define HAVE_THREADS 1'
4055   extra_cflags="$extra_cflags $THREAD_CFLAGS"
4056 else
4057   res_comment="v4l, v4l2, ao_nas, win32 loader disabled"
4058   def_pthreads='#define HAVE_PTHREADS 0'
4059   _nas=no ; _tv_v4l1=no ; _tv_v4l2=no
4060   mingw32 || _win32dll=no
4061 fi
4062 echores "$_pthreads"
4063
4064 pthread_cancel=no
4065 if test "$_pthreads" = yes ; then
4066   echocheck "pthread_cancel"
4067 cat > $TMPC << EOF
4068 #include <pthread.h>
4069 int main(void) { pthread_t t; return pthread_cancel(t); }
4070 EOF
4071   cc_check $ld_pthread && pthread_cancel=yes
4072   echores "$pthread_cancel"
4073 fi
4074 if test "$pthread_cancel" = yes ; then
4075   def_pthread_cancel='#define HAVE_PTHREAD_CANCEL 1'
4076 else
4077   def_pthread_cancel='#define HAVE_PTHREAD_CANCEL 0'
4078 fi
4079
4080 if cygwin ; then
4081   if test "$_pthreads" = yes ; then
4082     def_pthread_cache="#define PTHREAD_CACHE 1"
4083   else
4084     _stream_cache=no
4085     def_stream_cache="#undef CONFIG_STREAM_CACHE"
4086   fi
4087 fi
4088
4089
4090 if win32; then
4091 echocheck "w32threads"
4092 if test "$_pthreads" = yes ; then
4093   res_comment="using pthread instead"
4094   _w32threads=no
4095 fi
4096 if test "$_w32threads" = auto ; then
4097   _w32threads=no
4098   mingw32 && _w32threads=yes
4099 fi
4100 test "$_w32threads" = yes && def_threads='#define HAVE_THREADS 1' && def_w32threads='#define HAVE_W32THREADS 1'
4101 echores "$_w32threads"
4102 fi #if win32; then
4103
4104
4105 echocheck "direct.h"
4106 _direct_h=no
4107 def_direct_h='#define HAVE_DIRECT_H 0'
4108 header_check direct.h && _direct_h=yes && def_direct_h='#define HAVE_DIRECT_H 1'
4109 echores "$_direct_h"
4110
4111
4112 if os2 ; then
4113 echocheck "os2threads"
4114 if test "$_pthreads" = yes ; then
4115   res_comment="using pthread instead"
4116   _os2threads=no
4117 fi
4118 if test "$_os2threads" = auto ; then
4119   _os2threads=no
4120   os2 && _os2threads=yes
4121 fi
4122 test "$_os2threads" = yes && def_threads='#define HAVE_THREADS 1' && def_os2threads='#define HAVE_OS2THREADS 1'
4123 echores "$_os2threads"
4124 fi #if os2
4125
4126 if test "$_os2threads" = yes || test "$_w32threads" = yes || test "$_pthreads" = yes ; then
4127     _threads=yes
4128 else
4129     _threads=no
4130 fi
4131
4132 echocheck "windows.h"
4133 windows_h=no
4134 def_windows_h='#define HAVE_WINDOWS_H 0'
4135 header_check windows.h && windows_h=yes && def_windows_h='#define HAVE_WINDOWS_H 1'
4136 echores "$windows_h"
4137
4138
4139 echocheck "io.h"
4140 _io_h=no
4141 header_check io.h && _io_h=yes
4142 if [ $_io_h = yes ]; then
4143   def_io_h='#define HAVE_IO_H 1'
4144 else
4145   def_io_h='#define HAVE_IO_H 0'
4146 fi
4147 echores "$_io_h"
4148
4149
4150 echocheck "rpath"
4151 if test "$_rpath" = yes ; then
4152   for I in $(echo $extra_ldflags | sed 's/-L//g') ; do
4153     tmp="$tmp $(echo $I | sed 's/.*/ -L& -Wl,-R&/')"
4154   done
4155 extra_ldflags=$tmp
4156 fi
4157 echores "$_rpath"
4158
4159 echocheck "iconv"
4160 if test "$_iconv" = auto ; then
4161   cat > $TMPC << EOF
4162 #include <stdio.h>
4163 #include <unistd.h>
4164 #include <iconv.h>
4165 #define INBUFSIZE 1024
4166 #define OUTBUFSIZE 4096
4167
4168 char inbuffer[INBUFSIZE];
4169 char outbuffer[OUTBUFSIZE];
4170
4171 int main(void) {
4172   size_t numread;
4173   iconv_t icdsc;
4174   char *tocode="UTF-8";
4175   char *fromcode="cp1250";
4176   if ((icdsc = iconv_open(tocode, fromcode)) != (iconv_t)(-1)) {
4177     while ((numread = read(0, inbuffer, INBUFSIZE))) {
4178       char *iptr=inbuffer;
4179       char *optr=outbuffer;
4180       size_t inleft=numread;
4181       size_t outleft=OUTBUFSIZE;
4182       if (iconv(icdsc, &iptr, &inleft, &optr, &outleft)
4183           != (size_t)(-1)) {
4184         write(1, outbuffer, OUTBUFSIZE - outleft);
4185       }
4186     }
4187     if (iconv_close(icdsc) == -1)
4188       ;
4189   }
4190   return 0;
4191 }
4192 EOF
4193   _iconv=no
4194   for ld_tmp in "" "-liconv" "-liconv $ld_dl" ; do
4195     cc_check $ld_tmp && extra_ldflags="$extra_ldflags $ld_tmp" &&
4196       ld_iconv="$ld_tmp" && _iconv=yes && break
4197   done
4198 fi
4199 if test "$_iconv" = yes ; then
4200   def_iconv='#define CONFIG_ICONV 1'
4201 else
4202   def_iconv='#undef CONFIG_ICONV'
4203 fi
4204 echores "$_iconv"
4205
4206
4207 echocheck "soundcard.h"
4208 _soundcard_h=no
4209 def_soundcard_h='#undef HAVE_SOUNDCARD_H'
4210 def_sys_soundcard_h='#undef HAVE_SYS_SOUNDCARD_H'
4211 for _soundcard_header in "sys/soundcard.h" "soundcard.h"; do
4212   header_check $_soundcard_header && _soundcard_h=yes &&
4213     res_comment="$_soundcard_header" && break
4214 done
4215
4216 if test "$_soundcard_h" = yes ; then
4217   if test $_soundcard_header = "sys/soundcard.h"; then
4218     def_sys_soundcard_h='#define HAVE_SYS_SOUNDCARD_H 1'
4219   else
4220     def_soundcard_h='#define HAVE_SOUNDCARD_H 1'
4221   fi
4222 fi
4223 echores "$_soundcard_h"
4224
4225
4226 echocheck "termcap"
4227 if test "$_termcap" = auto ; then
4228   _termcap=no
4229   for ld_tmp in "-lncurses" "-ltinfo" "-ltermcap"; do
4230     statement_check term.h 'tgetent(0, 0)' $ld_tmp &&
4231       extra_ldflags="$extra_ldflags $ld_tmp" &&
4232       ld_termcap="$ld_tmp" && _termcap=yes && break
4233   done
4234 fi
4235 if test "$_termcap" = yes ; then
4236   def_termcap='#define HAVE_TERMCAP 1'
4237   test $ld_termcap && res_comment="using $ld_termcap"
4238 else
4239   def_termcap='#undef HAVE_TERMCAP'
4240 fi
4241 echores "$_termcap"
4242
4243
4244 echocheck "termios"
4245 def_termios='#undef HAVE_TERMIOS'
4246 def_termios_h='#undef HAVE_TERMIOS_H'
4247 def_termios_sys_h='#undef HAVE_SYS_TERMIOS_H'
4248 if test "$_termios" = auto ; then
4249   _termios=no
4250   for _termios_header in "termios.h" "sys/termios.h"; do
4251   header_check $_termios_header && _termios=yes &&
4252     res_comment="using $_termios_header" && break
4253 done
4254 fi
4255
4256 if test "$_termios" = yes ; then
4257   def_termios='#define HAVE_TERMIOS 1'
4258   if test "$_termios_header" = "termios.h" ; then
4259     def_termios_h='#define HAVE_TERMIOS_H 1'
4260   else
4261     def_termios_sys_h='#define HAVE_SYS_TERMIOS_H 1'
4262   fi
4263 fi
4264 echores "$_termios"
4265
4266
4267 echocheck "shm"
4268 if test "$_shm" = auto ; then
4269   _shm=no
4270   statement_check sys/shm.h 'shmget(0, 0, 0); shmat(0, 0, 0); shmctl(0, 0, 0)' && _shm=yes
4271 fi
4272 if test "$_shm" = yes ; then
4273   def_shm='#define HAVE_SHM 1'
4274 else
4275   def_shm='#undef HAVE_SHM'
4276 fi
4277 echores "$_shm"
4278
4279
4280 echocheck "strsep()"
4281 strsep=yes
4282 def_strsep='#define HAVE_STRSEP 1'
4283 define_statement_check _BSD_SOURCE string.h 'char *s = "Hello, world!"; strsep(&s, ",")' ||
4284     { strsep=no ; def_strsep='#undef HAVE_STRSEP' ; }
4285 echores "$strsep"
4286
4287
4288 echocheck "vsscanf()"
4289 vsscanf=yes
4290 def_vsscanf='#define HAVE_VSSCANF 1'
4291 statement_check_broken stdarg.h stdio.h 'va_list ap; vsscanf("foo", "bar", ap)' ||
4292     { vsscanf=no ; def_vsscanf='#undef HAVE_VSSCANF' ; }
4293 echores "$vsscanf"
4294
4295
4296 echocheck "POSIX select()"
4297 cat > $TMPC << EOF
4298 #include <stdio.h>
4299 #include <stdlib.h>
4300 #include <sys/types.h>
4301 #include <string.h>
4302 #include <sys/time.h>
4303 #include <unistd.h>
4304 int main(void) {int nfds = 1; fd_set readfds; struct timeval timeout; select(nfds, &readfds, NULL, NULL, &timeout); return 0; }
4305 EOF
4306 _posix_select=no
4307 def_posix_select='#undef HAVE_POSIX_SELECT'
4308 #select() of kLIBC (OS/2) supports socket only
4309 ! os2 && cc_check && _posix_select=yes &&
4310     def_posix_select='#define HAVE_POSIX_SELECT 1'
4311 echores "$_posix_select"
4312
4313
4314 echocheck "audio select()"
4315 if test "$_select" = no ; then
4316   def_select='#undef HAVE_AUDIO_SELECT'
4317 elif test  "$_select" = yes ; then
4318   def_select='#define HAVE_AUDIO_SELECT 1'
4319 fi
4320 echores "$_select"
4321
4322
4323 echocheck "gettimeofday()"
4324 gettimeofday=yes
4325 def_gettimeofday='#define HAVE_GETTIMEOFDAY 1'
4326 statement_check_broken stddef.h sys/time.h 'struct timeval tv; gettimeofday(&tv, NULL)' ||
4327     { gettimeofday=no ; def_gettimeofday='#undef HAVE_GETTIMEOFDAY' ; }
4328 echores "$gettimeofday"
4329
4330
4331 echocheck "clock_gettime()"
4332 clock_gettime=no
4333 def_clock_gettime='#undef HAVE_CLOCK_GETTIME'
4334 statement_check_broken stddef.h time.h 'struct timespec tp; clock_gettime(CLOCK_MONOTONIC, &tp)' -lrt &&
4335     { clock_gettime=yes ; def_clock_gettime='#define HAVE_CLOCK_GETTIME 1' ; extra_ldflags="$extra_ldflags -lrt" ; }
4336 echores "$clock_gettime"
4337
4338
4339 echocheck "glob()"
4340 # glob_win disables a Windows-specific glob() replacement.
4341 glob=yes
4342 glob_win=yes
4343 def_glob='#define HAVE_GLOB 1'
4344 statement_check glob.h 'glob("filename", 0, 0, 0)' ||
4345     { glob=no ; def_glob='#undef HAVE_GLOB' ;
4346       mingw32 && glob_win=no ; }
4347 echores "$glob"
4348
4349
4350 echocheck "setenv()"
4351 setenv=yes
4352 def_setenv='#define HAVE_SETENV 1'
4353 statement_check stdlib.h 'setenv("", "", 0)' ||
4354     { setenv=no ; def_setenv='#define HAVE_SETENV 0' ; }
4355 echores "$setenv"
4356
4357
4358 echocheck "setmode()"
4359 _setmode=no
4360 def_setmode='#define HAVE_SETMODE 0'
4361 statement_check io.h 'setmode(0, 0)' && _setmode=yes && def_setmode='#define HAVE_SETMODE 1'
4362 echores "$_setmode"
4363
4364
4365 if sunos; then
4366 echocheck "sysi86()"
4367 _sysi86=no
4368 def_sysi86='#define HAVE_SYSI86 0'
4369 statement_check sys/sysi86.h 'int sysi86(int, void*); sysi86(0)' &&
4370   _sysi86=yes && def_sysi86='#define HAVE_SYSI86 1'
4371 echores "$_sysi86"
4372 fi #if sunos
4373
4374
4375 echocheck "sys/sysinfo.h"
4376 _sys_sysinfo=no
4377 statement_check sys/sysinfo.h 'struct sysinfo s_info; s_info.mem_unit=0; sysinfo(&s_info)' && _sys_sysinfo=yes
4378 if test "$_sys_sysinfo" = yes ; then
4379   def_sys_sysinfo_h='#define HAVE_SYS_SYSINFO_H 1'
4380 else
4381   def_sys_sysinfo_h='#undef HAVE_SYS_SYSINFO_H'
4382 fi
4383 echores "$_sys_sysinfo"
4384
4385
4386 if darwin; then
4387
4388 echocheck "Mac OS X Finder Support"
4389 def_macosx_finder='#undef CONFIG_MACOSX_FINDER'
4390 if test "$_macosx_finder" = yes ; then
4391   def_macosx_finder='#define CONFIG_MACOSX_FINDER 1'
4392   extra_ldflags="$extra_ldflags -framework Carbon"
4393 fi
4394 echores "$_macosx_finder"
4395
4396 echocheck "Mac OS X Bundle file locations"
4397 def_macosx_bundle='#undef CONFIG_MACOSX_BUNDLE'
4398 test "$_macosx_bundle" = auto && _macosx_bundle=$_macosx_finder
4399 if test "$_macosx_bundle" = yes ; then
4400   def_macosx_bundle='#define CONFIG_MACOSX_BUNDLE 1'
4401   extra_ldflags="$extra_ldflags -framework Carbon"
4402 fi
4403 echores "$_macosx_bundle"
4404
4405 echocheck "Apple Remote"
4406 if test "$_apple_remote" = auto ; then
4407   _apple_remote=no
4408   cat > $TMPC <<EOF
4409 #include <stdio.h>
4410 #include <IOKit/IOCFPlugIn.h>
4411 int main(void) {
4412   io_iterator_t hidObjectIterator = (io_iterator_t)NULL;
4413   CFMutableDictionaryRef hidMatchDictionary;
4414   IOReturn ioReturnValue;
4415
4416   // Set up a matching dictionary to search the I/O Registry by class.
4417   // name for all HID class devices
4418   hidMatchDictionary = IOServiceMatching("AppleIRController");
4419
4420   // Now search I/O Registry for matching devices.
4421   ioReturnValue = IOServiceGetMatchingServices(kIOMasterPortDefault,
4422                       hidMatchDictionary, &hidObjectIterator);
4423
4424   // If search is unsuccessful, return nonzero.
4425   if (ioReturnValue != kIOReturnSuccess ||
4426                        !IOIteratorIsValid(hidObjectIterator)) {
4427     return 1;
4428   }
4429   return 0;
4430 }
4431 EOF
4432   cc_check -framework IOKit && _apple_remote=yes
4433 fi
4434 if test "$_apple_remote" = yes ; then
4435   def_apple_remote='#define CONFIG_APPLE_REMOTE 1'
4436   libs_mplayer="$libs_mplayer -framework IOKit -framework Cocoa"
4437 else
4438   def_apple_remote='#undef CONFIG_APPLE_REMOTE'
4439 fi
4440 echores "$_apple_remote"
4441
4442 fi #if darwin
4443
4444 if linux; then
4445
4446 echocheck "Apple IR"
4447 if test "$_apple_ir" = auto ; then
4448   _apple_ir=no
4449   statement_check linux/input.h 'struct input_event ev; struct input_id id' && _apple_ir=yes
4450 fi
4451 if test "$_apple_ir" = yes ; then
4452   def_apple_ir='#define CONFIG_APPLE_IR 1'
4453 else
4454   def_apple_ir='#undef CONFIG_APPLE_IR'
4455 fi
4456 echores "$_apple_ir"
4457 fi #if linux
4458
4459 echocheck "pkg-config"
4460 _pkg_config=pkg-config
4461 if $($_pkg_config --version > /dev/null 2>&1); then
4462   if test "$ld_static"; then
4463     _pkg_config="$_pkg_config --static"
4464   fi
4465   echores "yes"
4466 else
4467   _pkg_config=false
4468   echores "no"
4469 fi
4470
4471
4472 echocheck "GnuTLS"
4473 if test "$_gnutls" = auto ; then
4474   _gnutls=no
4475   if $_pkg_config --exists gnutls ; then
4476           statement_check gnutls/gnutls.h 'gnutls_global_init()' $($_pkg_config --libs --cflags gnutls) &&
4477       _gnutls=yes
4478   fi
4479 fi
4480 if test "$_gnutls" = yes ; then
4481   def_gnutls='#define CONFIG_GNUTLS 1'
4482   libavprotocols="$libavprotocols HTTPS_PROTOCOL"
4483   if contains_item "$libavprotocols_all" 'TLS_GNUTLS_PROTOCOL' ; then
4484       libavprotocols="$libavprotocols TLS_GNUTLS_PROTOCOL"
4485   else
4486       libavprotocols="$libavprotocols TLS_PROTOCOL"
4487   fi
4488   extra_cflags="$extra_cflags $($_pkg_config --cflags gnutls)"
4489   extra_ldflags="$extra_ldflags $($_pkg_config --libs gnutls)"
4490 else
4491   def_gnutls='#define CONFIG_GNUTLS 0'
4492 fi
4493 echores "$_gnutls"
4494
4495 echocheck "OpenSSL"
4496 if test "$_openssl" = yes ; then
4497   def_openssl='#define CONFIG_OPENSSL 1'
4498   libavprotocols="$libavprotocols HTTPS_PROTOCOL"
4499   if contains_item "$libavprotocols_all" 'TLS_OPENSSL_PROTOCOL' ; then
4500       libavprotocols="$libavprotocols TLS_OPENSSL_PROTOCOL"
4501   else
4502       libavprotocols="$libavprotocols TLS_PROTOCOL"
4503   fi
4504   extra_cflags="$extra_cflags $($_pkg_config --cflags openssl)"
4505   extra_ldflags="$extra_ldflags $($_pkg_config --libs openssl)"
4506 else
4507   def_openssl='#define CONFIG_OPENSSL 0'
4508 fi
4509 echores "$_openssl"
4510
4511 echocheck "Samba support (libsmbclient)"
4512 if test "$_smb" = yes; then
4513   extra_ldflags="$extra_ldflags -lsmbclient"
4514 fi
4515 if test "$_smb" = auto; then
4516   _smb=no
4517   pkg_inc=$($_pkg_config --cflags smbclient 2>/dev/null)
4518   for ld_tmp in "-lsmbclient" "-lsmbclient $ld_dl" "-lsmbclient $ld_dl -lnsl" "-lsmbclient $ld_dl -lssl -lnsl" ; do
4519     statement_check libsmbclient.h 'smbc_opendir("smb://")' $ld_tmp &&
4520       extra_ldflags="$extra_ldflags $ld_tmp" && _smb=yes && break
4521     statement_check libsmbclient.h 'smbc_opendir("smb://")' $ld_tmp $pkg_inc &&
4522       extra_ldflags="$extra_ldflags $ld_tmp" && extra_cflags="$extra_cflags $pkg_inc" && _smb=yes && break
4523   done
4524 fi
4525
4526 if test "$_smb" = yes; then
4527     def_smb="#define CONFIG_LIBSMBCLIENT 1"
4528     inputmodules="smb $inputmodules"
4529 else
4530     def_smb="#undef CONFIG_LIBSMBCLIENT"
4531     noinputmodules="smb $noinputmodules"
4532 fi
4533 echores "$_smb"
4534
4535
4536 #########
4537 # VIDEO #
4538 #########
4539
4540
4541 echocheck "/dev/mga_vid"
4542 if test "$_mga" = auto ; then
4543   _mga=no
4544   test -c /dev/mga_vid && _mga=yes
4545 fi
4546 if test "$_mga" = yes ; then
4547   def_mga='#define CONFIG_MGA 1'
4548   vomodules="mga $vomodules"
4549 else
4550   def_mga='#undef CONFIG_MGA'
4551   novomodules="mga $novomodules"
4552 fi
4553 echores "$_mga"
4554
4555
4556 echocheck "tdfxfb"
4557 if test "$_tdfxfb" = yes ; then
4558   def_tdfxfb='#define CONFIG_TDFXFB 1'
4559   vomodules="tdfxfb $vomodules"
4560 else
4561   def_tdfxfb='#undef CONFIG_TDFXFB'
4562   novomodules="tdfxfb $novomodules"
4563 fi
4564 echores "$_tdfxfb"
4565
4566 echocheck "s3fb"
4567 if test "$_s3fb" = yes ; then
4568   def_s3fb='#define CONFIG_S3FB 1'
4569   vomodules="s3fb $vomodules"
4570 else
4571   def_s3fb='#undef CONFIG_S3FB'
4572   novomodules="s3fb $novomodules"
4573 fi
4574 echores "$_s3fb"
4575
4576 echocheck "wii"
4577 if test "$_wii" = yes ; then
4578   def_wii='#define CONFIG_WII 1'
4579   vomodules="wii $vomodules"
4580 else
4581   def_wii='#undef CONFIG_WII'
4582   novomodules="wii $novomodules"
4583 fi
4584 echores "$_wii"
4585
4586 echocheck "tdfxvid"
4587 if test "$_tdfxvid" = yes ; then
4588   def_tdfxvid='#define CONFIG_TDFX_VID 1'
4589   vomodules="tdfx_vid $vomodules"
4590 else
4591   def_tdfxvid='#undef CONFIG_TDFX_VID'
4592   novomodules="tdfx_vid $novomodules"
4593 fi
4594 echores "$_tdfxvid"
4595
4596 echocheck "xvr100"
4597 if test "$_xvr100" = auto ; then
4598 cat > $TMPC << EOF
4599 #include <unistd.h>
4600 #include <sys/fbio.h>
4601 #include <sys/visual_io.h>
4602 int main(void) {
4603 struct vis_identifier ident;
4604 struct fbgattr attr;
4605 ioctl(0, VIS_GETIDENTIFIER, &ident);
4606 ioctl(0, FBIOGATTR, &attr);
4607 return 0;
4608 }
4609 EOF
4610   _xvr100=no
4611   cc_check && _xvr100=yes
4612 fi
4613 if test "$_xvr100" = yes ; then
4614   def_xvr100='#define CONFIG_XVR100 1'
4615   vomodules="xvr100 $vomodules"
4616 else
4617   def_tdfxvid='#undef CONFIG_XVR100'
4618   novomodules="xvr100 $novomodules"
4619 fi
4620 echores "$_xvr100"
4621
4622 echocheck "tga"
4623 if test "$_tga" = yes ; then
4624   def_tga='#define CONFIG_TGA 1'
4625   vomodules="tga $vomodules"
4626 else
4627   def_tga='#undef CONFIG_TGA'
4628   novomodules="tga $novomodules"
4629 fi
4630 echores "$_tga"
4631
4632
4633 echocheck "md5sum support"
4634 if test "$_md5sum" = yes; then
4635   def_md5sum="#define CONFIG_MD5SUM 1"
4636   vomodules="md5sum $vomodules"
4637 else
4638   def_md5sum="#undef CONFIG_MD5SUM"
4639   novomodules="md5sum $novomodules"
4640 fi
4641 echores "$_md5sum"
4642
4643
4644 echocheck "yuv4mpeg support"
4645 if test "$_yuv4mpeg" = yes; then
4646   def_yuv4mpeg="#define CONFIG_YUV4MPEG 1"
4647   vomodules="yuv4mpeg $vomodules"
4648 else
4649   def_yuv4mpeg="#undef CONFIG_YUV4MPEG"
4650   novomodules="yuv4mpeg $novomodules"
4651 fi
4652 echores "$_yuv4mpeg"
4653
4654
4655 echocheck "bl"
4656 if test "$_bl" = yes ; then
4657   def_bl='#define CONFIG_BL 1'
4658   vomodules="bl $vomodules"
4659 else
4660   def_bl='#undef CONFIG_BL'
4661   novomodules="bl $novomodules"
4662 fi
4663 echores "$_bl"
4664
4665
4666 echocheck "DirectFB"
4667 if test "$_directfb" = auto ; then
4668   _directfb=no
4669   cat > $TMPC << EOF
4670 #include <directfb.h>
4671 #include <directfb_version.h>
4672 #if (DIRECTFB_MAJOR_VERSION << 16 | DIRECTFB_MINOR_VERSION << 8 | DIRECTFB_MICRO_VERSION) < (0 << 16 | 9 << 8 | 22)
4673 #error "DirectFB version too old."
4674 #endif
4675 int main(void) { DirectFBInit(0, 0); return 0; }
4676 EOF
4677   for inc_tmp in "" -I/usr/local/include/directfb -I/usr/include/directfb -I/usr/local/include; do
4678     cc_check $inc_tmp -ldirectfb &&
4679       _directfb=yes && extra_cflags="$extra_cflags $inc_tmp" && break
4680   done
4681 fi
4682 if test "$_directfb" = yes ; then
4683   def_directfb='#define CONFIG_DIRECTFB 1'
4684   vomodules="directfb dfbmga $vomodules"
4685   libs_mplayer="$libs_mplayer -ldirectfb"
4686 else
4687   def_directfb='#undef CONFIG_DIRECTFB'
4688   novomodules="directfb dfbmga $novomodules"
4689 fi
4690 echores "$_directfb"
4691
4692
4693 echocheck "X11 headers presence"
4694   _x11_headers="no"
4695   res_comment="check if the dev(el) packages are installed"
4696   for I in $(echo $extra_cflags | sed s/-I//g) /usr/include ; do
4697     if test -f "$I/X11/Xlib.h" ; then
4698       _x11_headers="yes"
4699       res_comment=""
4700       break
4701     fi
4702   done
4703   if test $_cross_compile = no; then
4704     for I in /usr/X11/include /usr/X11R7/include /usr/local/include /usr/X11R6/include \
4705              /usr/include/X11R6 /usr/openwin/include ; do
4706       if test -f "$I/X11/Xlib.h" ; then
4707         extra_cflags="$extra_cflags -I$I"
4708         _x11_headers="yes"
4709         res_comment="using $I"
4710         break
4711       fi
4712     done
4713   fi
4714 echores "$_x11_headers"
4715
4716
4717 echocheck "X11"
4718 if test "$_x11" = auto && test "$_x11_headers" = yes ; then
4719   for I in "" -L/usr/X11R7/lib -L/usr/local/lib -L/usr/X11R6/lib -L/usr/lib/X11R6 \
4720            -L/usr/X11/lib -L/usr/lib32 -L/usr/openwin/lib -L/usr/local/lib64 -L/usr/X11R6/lib64 \
4721            -L/usr/lib ; do
4722     if netbsd; then
4723       ld_tmp="$I -lXext -lX11 $ld_pthread -Wl,-R$(echo $I | sed s/^-L//)"
4724     else
4725       ld_tmp="$I -lXext -lX11 $ld_pthread"
4726     fi
4727     statement_check X11/Xutil.h 'XCreateWindow(0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0)' $ld_tmp &&
4728       libs_mplayer="$libs_mplayer $ld_tmp" && _x11=yes && break
4729   done
4730 fi
4731 if test "$_x11" = yes ; then
4732   def_x11='#define CONFIG_X11 1'
4733   vomodules="x11 xover $vomodules"
4734 else
4735   _x11=no
4736   def_x11='#undef CONFIG_X11'
4737   novomodules="x11 $novomodules"
4738   res_comment="check if the dev(el) packages are installed"
4739 fi
4740 echores "$_x11"
4741
4742 echocheck "Xss screensaver extensions"
4743 if test "$_xss" = auto ; then
4744   _xss=no
4745   statement_check "X11/extensions/scrnsaver.h" 'XScreenSaverSuspend(NULL, True)' -lXss && _xss=yes
4746 fi
4747 if test "$_xss" = yes ; then
4748   def_xss='#define CONFIG_XSS 1'
4749   libs_mplayer="$libs_mplayer -lXss"
4750 else
4751   def_xss='#undef CONFIG_XSS'
4752 fi
4753 echores "$_xss"
4754
4755 echocheck "DPMS"
4756 _xdpms3=no
4757 _xdpms4=no
4758 if test "$_x11" = yes ; then
4759   cat > $TMPC <<EOF
4760 #include <X11/Xmd.h>
4761 #include <X11/Xlib.h>
4762 #include <X11/Xutil.h>
4763 #include <X11/Xatom.h>
4764 #include <X11/extensions/dpms.h>
4765 int main(void) { DPMSQueryExtension(0, 0, 0); return 0; }
4766 EOF
4767   cc_check -lXdpms && _xdpms3=yes
4768   statement_check_broken X11/Xlib.h X11/extensions/dpms.h 'DPMSQueryExtension(0, 0, 0)' -lXext && _xdpms4=yes
4769 fi
4770 if test "$_xdpms4" = yes ; then
4771   def_xdpms='#define CONFIG_XDPMS 1'
4772   res_comment="using Xdpms 4"
4773   echores "yes"
4774 elif test "$_xdpms3" = yes ; then
4775   def_xdpms='#define CONFIG_XDPMS 1'
4776   libs_mplayer="$libs_mplayer -lXdpms"
4777   res_comment="using Xdpms 3"
4778   echores "yes"
4779 else
4780   def_xdpms='#undef CONFIG_XDPMS'
4781   echores "no"
4782 fi
4783
4784
4785 echocheck "Xv"
4786 if test "$_xv" = auto && test "$_x11" = yes ; then
4787   _xv=no
4788   statement_check_broken X11/Xlib.h X11/extensions/Xvlib.h 'XvGetPortAttribute(0, 0, 0, 0)' -lXv && _xv=yes
4789 fi
4790
4791 if test "$_xv" = yes ; then
4792   def_xv='#define CONFIG_XV 1'
4793   libs_mplayer="$libs_mplayer -lXv"
4794   vomodules="xv $vomodules"
4795 else
4796   def_xv='#undef CONFIG_XV'
4797   novomodules="xv $novomodules"
4798 fi
4799 echores "$_xv"
4800
4801
4802 echocheck "XvMC"
4803 if test "$_xvmc" != no  && test "$_xv" = yes ; then
4804   _xvmc=no
4805   cat > $TMPC <<EOF
4806 #include <X11/Xlib.h>
4807 #include <X11/extensions/Xvlib.h>
4808 #include <X11/extensions/XvMClib.h>
4809 int main(void) {
4810   XvMCQueryExtension(0, 0, 0);
4811   XvMCCreateContext(0, 0, 0, 0, 0, 0, 0);
4812   return 0; }
4813 EOF
4814   for ld_tmp in $_xvmclib XvMCNVIDIA XvMCW I810XvMC ; do
4815     cc_check -lXvMC -l$ld_tmp && _xvmc=yes && _xvmclib="$ld_tmp" && break
4816   done
4817 fi
4818 if test "$_xvmc" = yes ; then
4819   def_xvmc='#define CONFIG_XVMC 1'
4820   libs_mplayer="$libs_mplayer -lXvMC"
4821   test -n "$_xvmclib" && libs_mplayer="$libs_mplayer -l$_xvmclib"
4822   vomodules="xvmc $vomodules"
4823   res_comment="using $_xvmclib"
4824   libavhwaccels="$libavhwaccels MPEG1_XVMC_HWACCEL MPEG2_XVMC_HWACCEL"
4825 else
4826   def_xvmc='#define CONFIG_XVMC 0'
4827   novomodules="xvmc $novomodules"
4828   libavdecoders=$(filter_out_component decoder 'MPEG_XVMC')
4829 fi
4830 echores "$_xvmc"
4831
4832
4833 echocheck "Video Decode Acceleration (VDA)"
4834 if test "$_vda" = auto ; then
4835   _vda=no
4836   header_check VideoDecodeAcceleration/VDADecoder.h && _vda=yes
4837 fi
4838 if test "$_vda" = yes ; then
4839   def_vda='#define CONFIG_VDA 1'
4840   extra_ldflags="$extra_ldflags -framework CoreFoundation -framework VideoDecodeAcceleration -framework QuartzCore"
4841   libavhwaccels="$libavhwaccels H264_VDA_HWACCEL H264_VDA_OLD_HWACCEL"
4842 else
4843   def_vda='#define CONFIG_VDA 0'
4844   libavdecoders=$(filter_out_component decoder '[A-Z0-9]*_VDA')
4845 fi
4846 echores "$_vda"
4847
4848
4849 echocheck "VDPAU"
4850 if test "$_vdpau" = auto && test "$_x11" = yes ; then
4851   _vdpau=no
4852   if test "$_dl" = yes ; then
4853     return_statement_check vdpau/vdpau_x11.h 'vdp_device_create_x11(0, 0, 0, 0)' VDP_VIDEO_MIXER_FEATURE_HIGH_QUALITY_SCALING_L1 -lvdpau && _vdpau=yes
4854     return_statement_check vdpau/vdpau_x11.h 'vdp_device_create_x11(0, 0, 0, 0)' VDP_DECODER_PROFILE_HEVC_MAIN -lvdpau && _vdpau_hevc=yes
4855   fi
4856 fi
4857 if te