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