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