Cope with latest MPlayer master changes.
[vaapi: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 $@ -lm" >> "$TMPLOG"
62   rm -f "$TMPEXE"
63   $_cc $WARNFLAGS $WARN_CFLAGS $CFLAGS "$source" $extra_cflags $ld_static $extra_ldflags $libs_mplayer $libs_mencoder -o "$TMPEXE" "$@" -lm >> "$TMPLOG" 2>&1
64   TMPRES="$?"
65   echo >> "$TMPLOG"
66   echo >> "$TMPLOG"
67   return "$TMPRES"
68 }
69
70 cc_check() {
71   compile_check $TMPC $@
72 }
73
74 cxx_check() {
75   compile_check $TMPCPP $@ -lstdc++
76 }
77
78 cpp_condition_check() {
79   inc=""
80   if test -n "$1" ; then
81     inc="#include <$1>"
82   fi
83   cat > $TMPC << EOF
84 $inc
85 #if !($2)
86 #error condition not true: $2
87 #endif
88 int main(void) { return 0; }
89 EOF
90   shift 2
91   compile_check $TMPC $@
92 }
93
94 cflag_check() {
95   cat > $TMPC << EOF
96 int main(void) { return 0; }
97 EOF
98   compile_check $TMPC $@
99 }
100
101 header_check() {
102   cat > $TMPC << EOF
103 #include <$1>
104 int main(void) { return 0; }
105 EOF
106   shift
107   compile_check $TMPC $@
108 }
109
110 return_check() {
111   cat > $TMPC << EOF
112 #include <$1>
113 int main(void) { return $2; }
114 EOF
115   shift 2
116   compile_check $TMPC $@
117 }
118
119 statement_check() {
120   cat > $TMPC << EOF
121 #include <$1>
122 int main(void) { $2; return 0; }
123 EOF
124   shift
125   shift
126   compile_check $TMPC $@
127 }
128
129 define_statement_check() {
130   cat > $TMPC << EOF
131 #define $1
132 #include <$2>
133 int main(void) { $3; return 0; }
134 EOF
135   shift 3
136   compile_check $TMPC $@
137 }
138
139 return_statement_check() {
140   cat > $TMPC << EOF
141 #include <$1>
142 int main(void) { $2; return $3; }
143 EOF
144   shift 3
145   compile_check $TMPC $@
146 }
147
148 inline_asm_check() {
149   cat > $TMPC << EOF
150 int main(void) { __asm__ volatile ($1); return 0; }
151 EOF
152   shift
153   compile_check $TMPC $@
154 }
155
156 # The following checks are special and should only be used with broken and
157 # non-self-sufficient headers that do not include all of their dependencies.
158
159 header_check_broken() {
160   cat > $TMPC << EOF
161 #include <$1>
162 #include <$2>
163 int main(void) { return 0; }
164 EOF
165   shift
166   shift
167   compile_check $TMPC $@
168 }
169
170 statement_check_broken() {
171   cat > $TMPC << EOF
172 #include <$1>
173 #include <$2>
174 int main(void) { $3; return 0; }
175 EOF
176   shift 3
177   compile_check $TMPC $@
178 }
179
180 yasm_check() {
181   echo >> "$TMPLOG"
182   cat "$TMPS" >> "$TMPLOG"
183   echo >> "$TMPLOG"
184   echo "$_yasm $YASMFLAGS -o $TMPEXE $TMPS $@" >> "$TMPLOG"
185   rm -f "$TMPEXE"
186   $_yasm $YASMFLAGS -o "$TMPEXE" "$TMPS" "$@" >> "$TMPLOG" 2>&1
187   TMPRES="$?"
188   echo >> "$TMPLOG"
189   echo >> "$TMPLOG"
190   return "$TMPRES"
191 }
192
193 tmp_run() {
194   "$TMPEXE" >> "$TMPLOG" 2>&1
195 }
196
197 # Display error message, flush temporary file, exit.
198 die () {
199   echo
200   echo "Error: $@" >&2
201   echo >&2
202   rm -f "$TMPEXE" "$TMPC" "$TMPS" "$TMPCPP"
203   echo "Check \"$TMPLOG\" if you do not understand why it failed."
204   exit 1
205 }
206
207 # OS test booleans functions
208 issystem() {
209   test "$(echo $system_name | tolower)" = "$(echo $1 | tolower)"
210 }
211 aix()       { issystem "AIX"; }
212 amigaos()   { issystem "AmigaOS"; }
213 bsdos()     { issystem "BSD/OS"; }
214 cygwin()    { issystem "CYGWIN"; }
215 darwin()    { issystem "Darwin"; }
216 dragonfly() { issystem "DragonFly"; }
217 freebsd()   { issystem "FreeBSD" || issystem "GNU/kFreeBSD"; }
218 gnu()       { issystem "GNU"; }
219 hpux()      { issystem "HP-UX"; }
220 irix()      { issystem "IRIX"; }
221 linux()     { issystem "Linux"; }
222 mingw32()   { issystem "MINGW32"; }
223 morphos()   { issystem "MorphOS"; }
224 netbsd()    { issystem "NetBSD"; }
225 openbsd()   { issystem "OpenBSD"; }
226 os2()       { issystem "OS/2"; }
227 qnx()       { issystem "QNX"; }
228 sunos()     { issystem "SunOS"; }
229 wine()      { issystem "Wine"; }
230 win32()     { cygwin || mingw32 || wine; }
231
232 # arch test boolean functions
233 # x86/x86pc is used by QNX
234 x86_32() {
235   case "$host_arch" in
236     i[3-9]86|x86|x86pc|k5|k6|k6-2|k6-3|pentium*|athlon*|i586-i686) return 0 ;;
237     *) return 1 ;;
238   esac
239 }
240
241 x86_64() {
242   case "$host_arch" in
243     x86_64|amd64) return 0 ;;
244     *) return 1 ;;
245   esac
246 }
247
248 x86() {
249   x86_32 || x86_64
250 }
251
252 ppc() {
253   case "$host_arch" in
254     ppc*|powerpc*) return 0;;
255     *) return 1;;
256   esac
257 }
258
259 sparc() {
260   case "$host_arch" in
261     sparc*) return 0;;
262     *) return 1;;
263   esac
264 }
265
266 alpha() {
267   case "$host_arch" in
268     alpha*) return 0;;
269     *) return 1;;
270   esac
271 }
272
273 arm() {
274   case "$host_arch" in
275     arm*) return 0;;
276     *) return 1;;
277   esac
278 }
279
280 # Use this before starting a check
281 echocheck() {
282   echo "============ Checking for $@ ============" >> "$TMPLOG"
283   echo ${_echo_n} "Checking for $@ ... ${_echo_c}"
284 }
285
286 # Use this to echo the results of a check
287 echores() {
288   if test "$res_comment" ; then
289     res_comment="($res_comment)"
290   fi
291   echo "Result is: $@ $res_comment" >> "$TMPLOG"
292   echo "##########################################" >> "$TMPLOG"
293   echo "" >> "$TMPLOG"
294   echo "$@ $res_comment"
295   res_comment=""
296 }
297 #############################################################################
298
299 # Check how echo works in this /bin/sh
300 case $(echo -n) in
301   -n)   _echo_n=        _echo_c='\c'    ;;      # SysV echo
302   *)    _echo_n='-n '   _echo_c=        ;;      # BSD echo
303 esac
304
305 msg_lang_all=$(echo help/help_mp-??.h help/help_mp-??_??.h | sed -e "s:help/help_mp-\(..\).h:\1:g" -e "s:help/help_mp-\(.....\).h:\1:g")
306 man_lang_all=$(echo DOCS/man/??/mplayer.1 DOCS/man/??_??/mplayer.1 | sed -e "s:DOCS/man/\(..\)/mplayer.1:\1:g" -e "s:DOCS/man/\(.._..\)/mplayer.1:\1:g")
307 doc_lang_all=$(echo DOCS/xml/??/ DOCS/xml/??_??/ | sed -e "s:DOCS/xml/\(..\)/:\1:g" -e "s:DOCS/xml/\(.._..\)/:\1:g")
308
309 show_help(){
310 cat << EOF
311 Usage: $0 [OPTIONS]...
312
313 Configuration:
314   -h, --help             display this help and exit
315
316 Installation directories:
317   --prefix=DIR           prefix directory for installation [/usr/local]
318   --bindir=DIR           directory for installing binaries [PREFIX/bin]
319   --datadir=DIR          directory for installing machine independent
320                          data files (skins, etc) [PREFIX/share/mplayer]
321   --mandir=DIR           directory for installing man pages [PREFIX/share/man]
322   --confdir=DIR          directory for installing configuration files
323                          [PREFIX/etc/mplayer]
324   --libdir=DIR           directory for object code libraries [PREFIX/lib]
325   --codecsdir=DIR        directory for binary codecs [LIBDIR/codecs]
326
327 Optional features:
328   --disable-mencoder     disable MEncoder (A/V encoder) compilation [enable]
329   --disable-mplayer      disable MPlayer compilation [enable]
330   --enable-gui           enable GMPlayer compilation (GTK+ GUI) [disable]
331   --enable-gtk1          force using GTK 1.2 for the GUI  [disable]
332   --enable-termcap       use termcap database for key codes [autodetect]
333   --enable-termios       use termios database for key codes [autodetect]
334   --disable-iconv        disable iconv for encoding conversion [autodetect]
335   --disable-langinfo     do not use langinfo [autodetect]
336   --enable-lirc          enable LIRC (remote control) support [autodetect]
337   --enable-lircc         enable LIRCCD (LIRC client daemon) input [autodetect]
338   --enable-joystick      enable joystick support [disable]
339   --enable-apple-remote  enable Apple Remote input (Mac OS X only) [autodetect]
340   --enable-apple-ir      enable Apple IR Remote input (Linux only) [autodetect]
341   --disable-vm           disable X video mode extensions [autodetect]
342   --disable-xf86keysym   disable support for multimedia keys [autodetect]
343   --enable-radio         enable radio interface [disable]
344   --enable-radio-capture enable radio capture (through PCI/line-in) [disable]
345   --disable-radio-v4l2   disable Video4Linux2 radio interface [autodetect]
346   --disable-radio-bsdbt848   disable BSD BT848 radio interface [autodetect]
347   --disable-tv           disable TV interface (TV/DVB grabbers) [enable]
348   --disable-tv-v4l1      disable Video4Linux TV interface [autodetect]
349   --disable-tv-v4l2      disable Video4Linux2 TV interface [autodetect]
350   --disable-tv-bsdbt848  disable BSD BT848 interface [autodetect]
351   --disable-pvr          disable Video4Linux2 MPEG PVR [autodetect]
352   --disable-rtc          disable RTC (/dev/rtc) on Linux [autodetect]
353   --disable-networking   disable networking [enable]
354   --enable-winsock2_h    enable winsock2_h [autodetect]
355   --enable-smb           enable Samba (SMB) input [autodetect]
356   --enable-live          enable LIVE555 Streaming Media [autodetect]
357   --enable-nemesi        enable Nemesi Streaming Media [autodetect]
358   --enable-librtmp       enable RTMPDump Streaming Media [autodetect]
359   --disable-vcd          disable VCD support [autodetect]
360   --disable-bluray       disable Blu-ray support [autodetect]
361   --disable-dvdnav       disable libdvdnav [autodetect]
362   --disable-dvdread      disable libdvdread [autodetect]
363   --disable-dvdread-internal  disable internal libdvdread [autodetect]
364   --disable-libdvdcss-internal  disable internal libdvdcss [autodetect]
365   --disable-cdparanoia   disable cdparanoia [autodetect]
366   --disable-cddb         disable cddb [autodetect]
367   --disable-bitmap-font  disable bitmap font support [enable]
368   --disable-freetype     disable FreeType 2 font rendering [autodetect]
369   --disable-fontconfig   disable fontconfig font lookup [autodetect]
370   --disable-unrarexec    disable using of UnRAR executable [enabled]
371   --enable-menu          enable OSD menu (not DVD menu) [disabled]
372   --disable-sortsub      disable subtitle sorting [enabled]
373   --enable-fribidi       enable the FriBiDi libs [autodetect]
374   --disable-enca         disable ENCA charset oracle library [autodetect]
375   --disable-maemo        disable maemo specific features [autodetect]
376   --enable-macosx-finder enable Mac OS X Finder invocation parameter
377                          parsing [disabled]
378   --enable-macosx-bundle enable Mac OS X bundle file locations [autodetect]
379   --disable-inet6        disable IPv6 support [autodetect]
380   --disable-sctp         disable SCTP support [autodetect]
381   --disable-gethostbyname2  gethostbyname2 part of the C library [autodetect]
382   --disable-ftp          disable FTP support [enabled]
383   --disable-vstream      disable TiVo vstream client support [autodetect]
384   --disable-pthreads     disable Posix threads support [autodetect]
385   --disable-w32threads   disable Win32 threads support [autodetect]
386   --disable-os2threads   disable OS/2 threads support [autodetect]
387   --enable-ass-internal  enable internal SSA/ASS subtitle support [autodetect]
388   --disable-ass          disable SSA/ASS subtitle support [autodetect]
389   --enable-rpath         enable runtime linker path for extra libs [disabled]
390
391 Codecs:
392   --enable-gif              enable GIF support [autodetect]
393   --enable-png              enable PNG input/output support [autodetect]
394   --enable-mng              enable MNG input/output support [autodetect]
395   --enable-jpeg             enable JPEG input/output support [autodetect]
396   --enable-libcdio          enable libcdio support [autodetect]
397   --enable-liblzo           enable liblzo support [autodetect]
398   --disable-win32dll        disable Win32 DLL support [autodetect]
399   --disable-qtx             disable QuickTime codecs support [enabled]
400   --disable-xanim           disable XAnim codecs support [enabled]
401   --disable-real            disable RealPlayer codecs support [enabled]
402   --disable-xvid            disable Xvid [autodetect]
403   --disable-xvid-lavc       disable Xvid in libavcodec [autodetect]
404   --disable-x264            disable x264 [autodetect]
405   --disable-x264-lavc       disable x264 in libavcodec [autodetect]
406   --disable-libdirac-lavc   disable Dirac in libavcodec [autodetect]
407   --disable-libschroedinger-lavc   disable Dirac in libavcodec (Schroedinger
408                                    decoder) [autodetect]
409   --disable-libvpx-lavc     disable libvpx in libavcodec [autodetect]
410   --disable-libnut          disable libnut [autodetect]
411   --disable-ffmpeg_a        disable static FFmpeg [autodetect]
412   --disable-ffmpeg_so       disable shared FFmpeg [autodetect]
413   --disable-postproc        disable libpostproc [autodetect]
414   --enable-vf-lavfi         enable libavfilter wrapper [disabled]
415   --disable-libavcodec_mpegaudio_hp disable high precision audio decoding
416                                     in libavcodec [enabled]
417   --enable-tremor           enable integer libvorbis [autodetect]
418   --disable-libvorbis       disable libvorbis support [autodetect]
419   --disable-speex           disable Speex support [autodetect]
420   --disable-libgsm          disable libgsm support [autodetect]
421   --enable-theora           enable OggTheora libraries [autodetect]
422   --enable-faad             enable FAAD2 (AAC) [autodetect]
423   --disable-faac            disable support for FAAC (AAC encoder) [autodetect]
424   --disable-faac-lavc       disable support for FAAC in libavcodec [autodetect]
425   --disable-ladspa          disable LADSPA plugin support [autodetect]
426   --disable-libbs2b         disable libbs2b audio filter support [autodetect]
427   --disable-libdv           disable libdv 0.9.5 en/decoding support [autodetect]
428   --disable-libilbc         disable libilbc decoding support [autodetect]
429   --disable-libopus         disable libopus decoding support [autodetect]
430   --disable-mpg123          disable libmpg123 MP3 decoding support [autodetect]
431   --disable-mad             disable libmad (MPEG audio) support [autodetect]
432   --disable-mp3lame         disable LAME MP3 encoding support [autodetect]
433   --disable-mp3lame-lavc    disable LAME in libavcodec [autodetect]
434   --disable-toolame         disable Toolame (MPEG layer 2) encoding [autodetect]
435   --disable-twolame         disable Twolame (MPEG layer 2) encoding [autodetect]
436   --enable-xmms             enable XMMS input plugin support [disabled]
437   --enable-libdca           enable libdca support [autodetect]
438   --disable-liba52          disable liba52 [autodetect]
439   --disable-libmpeg2        disable libmpeg2 [autodetect]
440   --disable-libmpeg2-internal disable builtin libmpeg2 [autodetect]
441   --enable-musepack         enable libmpcdec support (deprecated in favour of libavcodec) [disabled]
442   --disable-libopencore_amrnb disable libopencore_amr narrowband [autodetect]
443   --disable-libopencore_amrwb disable libopencore_amr wideband [autodetect]
444   --disable-libopenjpeg     disable OpenJPEG (JPEG 2000) input/output support [autodetect]
445   --disable-crystalhd       disable CrystalHD support [autodetect]
446   --disable-decoder=DECODER disable specified FFmpeg decoder
447   --enable-decoder=DECODER  enable specified FFmpeg decoder
448   --disable-encoder=ENCODER disable specified FFmpeg encoder
449   --enable-encoder=ENCODER  enable specified FFmpeg encoder
450   --disable-parser=PARSER   disable specified FFmpeg parser
451   --enable-parser=PARSER    enable specified FFmpeg parser
452   --disable-protocol=PROTO  disable specified FFmpeg protocol
453   --enable-protocol=PROTO   enable specified FFmpeg protocol
454   --disable-demuxer=DEMUXER disable specified FFmpeg demuxer
455   --enable-demuxer=DEMUXER  enable specified FFmpeg demuxer
456   --disable-muxer=MUXER     disable specified FFmpeg muxer
457   --enable-muxer=MUXER      enable specified FFmpeg muxer
458
459 Hardware acceleration:
460   --enable-vaapi            enable VA-API acceleration [disable]
461
462 Video output:
463   --disable-vidix          disable VIDIX [for x86 *nix]
464   --with-vidix-drivers[=*] list of VIDIX drivers to be compiled in
465                            Available: cyberblade, ivtv, mach64, mga, mga_crtc2,
466                            nvidia, pm2, pm3, radeon, rage128, s3, sis, unichrome
467   --disable-vidix-pcidb    disable VIDIX PCI device name database
468   --enable-dhahelper       enable VIDIX dhahelper support
469   --enable-svgalib_helper  enable VIDIX svgalib_helper support
470   --enable-gl              enable OpenGL video output [autodetect]
471   --disable-matrixview     disable OpenGL MatrixView video output [autodetect]
472   --enable-dga2            enable DGA 2 support [autodetect]
473   --enable-dga1            enable DGA 1 support [autodetect]
474   --enable-vesa            enable VESA video output [autodetect]
475   --enable-svga            enable SVGAlib video output [autodetect]
476   --enable-sdl             enable SDL video output [autodetect]
477   --enable-kva             enable KVA video output [autodetect]
478   --enable-aa              enable AAlib video output [autodetect]
479   --enable-caca            enable CACA  video output [autodetect]
480   --enable-ggi             enable GGI video output [autodetect]
481   --enable-ggiwmh          enable GGI libggiwmh extension [autodetect]
482   --enable-direct3d        enable Direct3D video output [autodetect]
483   --enable-directx         enable DirectX video output [autodetect]
484   --enable-dxr2            enable DXR2 video output [autodetect]
485   --enable-dxr3            enable DXR3/H+ video output [autodetect]
486   --enable-ivtv            enable IVTV TV-Out video output [autodetect]
487   --enable-v4l2            enable V4L2 Decoder audio/video output [autodetect]
488   --enable-dvb             enable DVB video output [autodetect]
489   --enable-mga             enable mga_vid video output [autodetect]
490   --enable-xmga            enable mga_vid X11 video output [autodetect]
491   --enable-xrender         enable Xrender video output [autodetect]
492   --enable-xv              enable Xv video output [autodetect]
493   --enable-xvmc            enable XvMC acceleration [disable]
494   --enable-vda             enable VDA acceleration [autodetect]
495   --enable-vdpau           enable VDPAU acceleration [autodetect]
496   --enable-vm              enable XF86VidMode support [autodetect]
497   --enable-xinerama        enable Xinerama support [autodetect]
498   --enable-x11             enable X11 video output [autodetect]
499   --enable-xshape          enable XShape support [autodetect]
500   --disable-xss            disable screensaver support via xss [autodetect]
501   --enable-fbdev           enable FBDev video output [autodetect]
502   --enable-mlib            enable mediaLib video output (Solaris) [disable]
503   --enable-3dfx            enable obsolete /dev/3dfx video output [disable]
504   --enable-tdfxfb          enable tdfxfb video output [disable]
505   --enable-s3fb            enable s3fb (S3 ViRGE) video output [disable]
506   --enable-wii             enable Nintendo Wii/GameCube video output [disable]
507   --enable-directfb        enable DirectFB video output [autodetect]
508   --enable-zr              enable ZR360[56]7/ZR36060 video output [autodetect]
509   --enable-bl              enable Blinkenlights video output [disable]
510   --enable-tdfxvid         enable tdfx_vid video output [disable]
511   --enable-xvr100          enable SUN XVR-100 video output [autodetect]
512   --disable-tga            disable Targa video output [enable]
513   --disable-pnm            disable PNM video output [enable]
514   --disable-md5sum         disable md5sum video output [enable]
515   --disable-yuv4mpeg       disable yuv4mpeg video output [enable]
516   --disable-corevideo      disable CoreVideo video output [autodetect]
517   --disable-quartz         disable Quartz video output [autodetect]
518
519 Audio output:
520   --disable-alsa         disable ALSA audio output [autodetect]
521   --disable-ossaudio     disable OSS audio output [autodetect]
522   --disable-arts         disable aRts audio output [autodetect]
523   --disable-esd          disable esd audio output [autodetect]
524   --disable-pulse        disable Pulseaudio audio output [autodetect]
525   --disable-jack         disable JACK audio output [autodetect]
526   --disable-openal       disable OpenAL audio output [autodetect]
527   --disable-nas          disable NAS audio output [autodetect]
528   --disable-sgiaudio     disable SGI audio output [autodetect]
529   --disable-sunaudio     disable Sun audio output [autodetect]
530   --disable-kai          disable KAI audio output [autodetect]
531   --disable-dart         disable DART audio output [autodetect]
532   --disable-win32waveout disable Windows waveout audio output [autodetect]
533   --disable-coreaudio    disable CoreAudio audio output [autodetect]
534   --disable-select       disable using select() on the audio device [enable]
535
536 Language options:
537   --charset=charset      convert the console messages to this character set
538   --language-doc=lang    language to use for the documentation [en]
539   --language-man=lang    language to use for the man pages [en]
540   --language-msg=lang    language to use for the messages and the GUI [en]
541   --language=lang        default language to use [en]
542 Specific options override --language. You can pass a list of languages separated
543 by whitespace or commas instead of a single language. Nonexisting translations
544 will be dropped from each list. All documentation and man page translations
545 available in the list will be installed, for the messages the first available
546 translation will be used. The value "all" will activate all translations. The
547 LINGUAS environment variable is honored. In all cases the fallback is English.
548 Available values are: all $msg_lang_all
549
550 Miscellaneous options:
551   --enable-runtime-cpudetection    enable runtime CPU detection [disable]
552   --enable-cross-compile enable cross-compilation [autodetect]
553   --cc=COMPILER          C compiler to build MPlayer [gcc]
554   --host-cc=COMPILER     C compiler for tools needed while building [gcc]
555   --as=ASSEMBLER         assembler to build MPlayer [as]
556   --nm=NM                nm tool to build MPlayer [nm]
557   --yasm=YASM            Yasm assembler to build MPlayer [yasm]
558   --ar=AR                librarian to build MPlayer [ar]
559   --ranlib=RANLIB        ranlib to build MPlayer [ranlib]
560   --windres=WINDRES      windres to build MPlayer [windres]
561   --target=PLATFORM      target platform (i386-linux, arm-linux, etc)
562   --enable-static        build a statically linked binary
563   --with-install=PATH    path to a custom install program
564
565 Advanced options:
566   --enable-mmx              enable MMX [autodetect]
567   --enable-mmxext           enable MMX2 (Pentium III, Athlon) [autodetect]
568   --enable-3dnow            enable 3DNow! [autodetect]
569   --enable-3dnowext         enable extended 3DNow! [autodetect]
570   --enable-sse              enable SSE [autodetect]
571   --enable-sse2             enable SSE2 [autodetect]
572   --enable-sse3             enable SSE3 [autodetect]
573   --enable-ssse3            enable SSSE3 [autodetect]
574   --enable-sse4             enable SSE4 [autodetect]
575   --enable-sse42            enable SSE4.2 [autodetect]
576   --enable-avx              enable AVX [autodetect]
577   --enable-shm              enable shm [autodetect]
578   --enable-altivec          enable AltiVec (PowerPC) [autodetect]
579   --enable-armv5te          enable DSP extensions (ARM) [autodetect]
580   --enable-armv6            enable ARMv6 (ARM) [autodetect]
581   --enable-armv6t2          enable ARMv6t2 (ARM) [autodetect]
582   --enable-armvfp           enable ARM VFP (ARM) [autodetect]
583   --enable-vfpv3            enable ARM VFPV3 (ARM) [autodetect]
584   --enable-neon             enable NEON (ARM) [autodetect]
585   --enable-thumb            enable THUMB (ARM) [autodetect]
586   --enable-iwmmxt           enable iWMMXt (ARM) [autodetect]
587   --disable-fastmemcpy      disable 3DNow!/SSE/MMX optimized memcpy [enable]
588   --enable-hardcoded-tables put tables in binary instead of calculating them at startup [disable]
589   --enable-big-endian       force byte order to big-endian [autodetect]
590   --enable-debug[=1-3]      compile-in debugging information [disable]
591   --enable-profile          compile-in profiling information [disable]
592   --disable-sighandler      disable sighandler for crashes [enable]
593   --enable-relocatable      enable compiling as relocatable/PIE executable [disable]
594   --enable-crash-debug      enable automatic gdb attach on crash [disable]
595   --enable-dynamic-plugins  enable dynamic A/V plugins [disable]
596
597 Use these options if autodetection fails:
598   --extra-cflags=FLAGS        extra CFLAGS
599   --extra-ldflags=FLAGS       extra LDFLAGS
600   --extra-libs=FLAGS          extra linker flags
601   --extra-libs-mplayer=FLAGS  extra linker flags for MPlayer
602   --extra-libs-mencoder=FLAGS extra linker flags for MEncoder
603   --with-xvmclib=NAME         adapter-specific library name (e.g. XvMCNVIDIA)
604
605   --with-vaapi-prefix=PATH    prefix to VA-API include and lib directories
606   --with-freetype-config=PATH path to freetype-config
607   --with-glib-config=PATH     path to glib*-config
608   --with-gtk-config=PATH      path to gtk*-config
609   --with-sdl-config=PATH      path to sdl*-config
610   --with-dvdnav-config=PATH   path to dvdnav-config
611   --with-dvdread-config=PATH  path to dvdread-config
612
613 This configure script is NOT autoconf-based, even though its output is similar.
614 It will try to autodetect all configuration options. If you --enable an option
615 it will be forcefully turned on, skipping autodetection. This can break
616 compilation, so you need to know what you are doing.
617 EOF
618 exit 0
619 } #show_help()
620
621 # GOTCHA: the variables below defines the default behavior for autodetection
622 # and have - unless stated otherwise - at least 2 states : yes no
623 # If autodetection is available then the third state is: auto
624 _mmx=auto
625 _3dnow=auto
626 _3dnowext=auto
627 _mmxext=auto
628 _sse=auto
629 _sse2=auto
630 _sse3=auto
631 _ssse3=auto
632 _sse4_1=auto
633 _sse4_2=auto
634 _avx=auto
635 _cmov=auto
636 _fast_cmov=auto
637 _fast_clz=auto
638 _armv5te=auto
639 _armv6=auto
640 _armv6t2=auto
641 _armvfp=auto
642 vfpv3=auto
643 neon=auto
644 armthumb=auto
645 _iwmmxt=auto
646 _mtrr=auto
647 _altivec=auto
648 _install=install
649 _ranlib=ranlib
650 _windres=windres
651 _cc=cc
652 _ar=ar
653 test "$CC" && _cc="$CC"
654 _as=auto
655 _nm=auto
656 _yasm=yasm
657 _runtime_cpudetection=no
658 _cross_compile=auto
659 _prefix="/usr/local"
660 ffmpeg_a=auto
661 ffmpeg_so=auto
662 postproc=auto
663 _vf_lavfi=no
664 _libavcodec_mpegaudio_hp=yes
665 _libopencore_amrnb=auto
666 _libopencore_amrwb=auto
667 libopenjpeg=auto
668 _mencoder=yes
669 _mplayer=yes
670 _vaapi=auto
671 _vaapi_glx=no
672 _libgtop=auto
673 _x11=auto
674 _xshape=auto
675 _xss=auto
676 _dga1=auto
677 _dga2=auto
678 _xrender=auto
679 _xv=auto
680 _xvmc=no  #auto when complete
681 _vda=auto
682 _vdpau=auto
683 _sdl=auto
684 _kva=auto
685 _direct3d=auto
686 _directx=auto
687 _win32waveout=auto
688 _nas=auto
689 _png=auto
690 _mng=auto
691 _jpeg=auto
692 _pnm=yes
693 _md5sum=yes
694 _yuv4mpeg=yes
695 _gif=auto
696 _gl=auto
697 matrixview=auto
698 _ggi=auto
699 _ggiwmh=auto
700 _aa=auto
701 _caca=auto
702 _svga=auto
703 _vesa=auto
704 _fbdev=auto
705 _dvb=auto
706 _dxr2=auto
707 _dxr3=auto
708 _ivtv=auto
709 _v4l2=auto
710 _iconv=auto
711 _langinfo=auto
712 _rtc=auto
713 _ossaudio=auto
714 _arts=auto
715 _esd=auto
716 _pulse=auto
717 _jack=auto
718 _kai=auto
719 _dart=auto
720 _openal=auto
721 _libcdio=auto
722 _liblzo=auto
723 _mad=auto
724 _mp3lame=auto
725 _mp3lame_lavc=auto
726 _toolame=auto
727 _twolame=auto
728 _tremor=auto
729 _libvorbis=auto
730 _speex=auto
731 _libgsm=auto
732 _theora=auto
733 _mpg123=auto
734 _liba52=auto
735 _libdca=auto
736 _libmpeg2=auto
737 _libmpeg2_internal=auto
738 _faad=auto
739 _faac=auto
740 _faac_lavc=auto
741 _ladspa=auto
742 _libbs2b=auto
743 _libilbc=auto
744 _libopus=auto
745 _xmms=no
746 _vcd=auto
747 _bluray=auto
748 _dvdnav=auto
749 _dvdnavconfig=dvdnav-config
750 _dvdreadconfig=dvdread-config
751 _dvdread=auto
752 _dvdread_internal=auto
753 _libdvdcss_internal=auto
754 _xanim=auto
755 _real=auto
756 _live=auto
757 _nemesi=auto
758 _librtmp=auto
759 _native_rtsp=yes
760 _xinerama=auto
761 _mga=auto
762 _xmga=auto
763 _vm=auto
764 _xf86keysym=auto
765 _mlib=no #broken, thus disabled
766 _sgiaudio=auto
767 _sunaudio=auto
768 _alsa=auto
769 _fastmemcpy=yes
770 hardcoded_tables=no
771 _unrar_exec=auto
772 _win32dll=auto
773 _select=yes
774 _radio=no
775 _radio_capture=no
776 _radio_v4l=auto
777 _radio_v4l2=auto
778 _radio_bsdbt848=auto
779 _tv=yes
780 _tv_v4l1=auto
781 _tv_v4l2=auto
782 _tv_bsdbt848=auto
783 _tv_dshow=auto
784 _pvr=auto
785 networking=yes
786 _winsock2_h=auto
787 _struct_addrinfo=auto
788 _getaddrinfo=auto
789 _struct_sockaddr_storage=auto
790 _smb=auto
791 _vidix=auto
792 _vidix_pcidb=yes
793 _dhahelper=no
794 _svgalib_helper=no
795 _joystick=no
796 crystalhd=auto
797 _xvid=auto
798 _xvid_lavc=auto
799 _x264=auto
800 _x264_lavc=auto
801 _libdirac_lavc=auto
802 _libschroedinger_lavc=auto
803 _libvpx_lavc=auto
804 _libnut=auto
805 _lirc=auto
806 _lircc=auto
807 _apple_remote=auto
808 _apple_ir=auto
809 _gui=no
810 _gtk1=no
811 _termcap=auto
812 _termios=auto
813 _3dfx=no
814 _s3fb=no
815 _wii=no
816 _tdfxfb=no
817 _tdfxvid=no
818 _xvr100=auto
819 _tga=yes
820 _directfb=auto
821 _zr=auto
822 _bl=no
823 #language=en
824 _shm=auto
825 _charset="UTF-8"
826 _dynamic_plugins=no
827 _crash_debug=no
828 _sighandler=yes
829 relocatable=auto
830 _libdv=auto
831 _cdparanoia=auto
832 _cddb=auto
833 _big_endian=auto
834 _bitmap_font=yes
835 _freetype=auto
836 _fontconfig=auto
837 _menu=no
838 _qtx=auto
839 _maemo=auto
840 _coreaudio=auto
841 _corevideo=auto
842 _quartz=auto
843 quicktime=auto
844 _macosx_finder=no
845 _macosx_bundle=auto
846 _sortsub=yes
847 _freetypeconfig='freetype-config'
848 _fribidi=auto
849 _enca=auto
850 _inet6=auto
851 _sctp=auto
852 _gethostbyname2=auto
853 _ftp=auto
854 _musepack=no
855 _vstream=auto
856 _pthreads=auto
857 _w32threads=auto
858 _os2threads=auto
859 _ass=auto
860 ass_internal=auto
861 _rpath=no
862 _asmalign_pot=auto
863 _stream_cache=yes
864 _priority=no
865 def_dos_paths="#define HAVE_DOS_PATHS 0"
866 def_stream_cache="#define CONFIG_STREAM_CACHE 1"
867 def_priority="#undef CONFIG_PRIORITY"
868 def_pthread_cache="#undef PTHREAD_CACHE"
869 shmem=no
870
871 option_value(){
872   echo $(echo $* | cut -d '=' -f 2-)
873 }
874
875 option_value_uc(){
876   echo $(option_value $1 | toupper)
877 }
878
879 for ac_option do
880   case "$ac_option" in
881   --help|-help|-h)
882     show_help
883     ;;
884   --prefix=*)
885     _prefix=$(option_value $ac_option)
886     ;;
887   --bindir=*)
888     _bindir=$(option_value $ac_option)
889     ;;
890   --datadir=*)
891     _datadir=$(option_value $ac_option)
892     ;;
893   --mandir=*)
894     _mandir=$(option_value $ac_option)
895     ;;
896   --confdir=*)
897     _confdir=$(option_value $ac_option)
898     ;;
899   --libdir=*)
900     _libdir=$(option_value $ac_option)
901     ;;
902   --codecsdir=*)
903     _codecsdir=$(option_value $ac_option)
904     ;;
905
906   --with-install=*)
907     _install=$(option_value $ac_option)
908     ;;
909   --with-xvmclib=*)
910     _xvmclib=$(option_value $ac_option)
911     ;;
912
913   --with-vaapi-prefix=*)
914     _vaapiprefix=$(echo $ac_option | cut -d '=' -f 2)
915     ;;
916   --with-sdl-config=*)
917     _sdlconfig=$(option_value $ac_option)
918     ;;
919   --with-freetype-config=*)
920     _freetypeconfig=$(option_value $ac_option)
921     ;;
922   --with-gtk-config=*)
923     _gtkconfig=$(option_value $ac_option)
924     ;;
925   --with-glib-config=*)
926     _glibconfig=$(option_value $ac_option)
927     ;;
928   --with-dvdnav-config=*)
929     _dvdnavconfig=$(option_value $ac_option)
930     ;;
931   --with-dvdread-config=*)
932     _dvdreadconfig=$(option_value $ac_option)
933     ;;
934
935   --extra-cflags=*)
936     extra_cflags=$(option_value $ac_option)
937     ;;
938   --extra-ldflags=*)
939     extra_ldflags=$(option_value $ac_option)
940     ;;
941   --extra-libs=*)
942     extra_libs=$(option_value $ac_option)
943     ;;
944   --extra-libs-mplayer=*)
945     libs_mplayer=$(option_value $ac_option)
946     ;;
947   --extra-libs-mencoder=*)
948     libs_mencoder=$(option_value $ac_option)
949     ;;
950
951   --target=*)
952     _target=$(option_value $ac_option)
953     ;;
954   --cc=*)
955     _cc=$(option_value $ac_option)
956     ;;
957   --host-cc=*)
958     _host_cc=$(option_value $ac_option)
959     ;;
960   --as=*)
961     _as=$(option_value $ac_option)
962     ;;
963   --nm=*)
964     _nm=$(option_value $ac_option)
965     ;;
966   --yasm=*)
967     _yasm=$(option_value $ac_option)
968     ;;
969   --ar=*)
970     _ar=$(option_value $ac_option)
971     ;;
972   --ranlib=*)
973     _ranlib=$(option_value $ac_option)
974     ;;
975   --windres=*)
976     _windres=$(option_value $ac_option)
977     ;;
978   --charset=*)
979     _charset=$(option_value $ac_option)
980     ;;
981   --language-doc=*)
982     language_doc=$(option_value $ac_option)
983     ;;
984   --language-man=*)
985     language_man=$(option_value $ac_option)
986     ;;
987   --language-msg=*)
988     language_msg=$(option_value $ac_option)
989     ;;
990   --language=*)
991     language=$(option_value $ac_option)
992     ;;
993
994   --enable-static)
995     ld_static='-static'
996     ;;
997   --disable-static)
998     ld_static=''
999     ;;
1000   --enable-profile)
1001     _profile='-p'
1002     ;;
1003   --disable-profile)
1004     _profile=
1005     ;;
1006   --enable-debug)
1007     _debug='-g'
1008     ;;
1009   --enable-debug=*)
1010     _debug=$(echo $_echo_n '-g'$_echo_c; option_value $ac_option)
1011     ;;
1012   --disable-debug)
1013     _debug=
1014     ;;
1015   --enable-runtime-cpudetection)    _runtime_cpudetection=yes   ;;
1016   --disable-runtime-cpudetection)   _runtime_cpudetection=no    ;;
1017   --enable-cross-compile)           _cross_compile=yes          ;;
1018   --disable-cross-compile)          _cross_compile=no           ;;
1019   --enable-mencoder)    _mencoder=yes   ;;
1020   --disable-mencoder)   _mencoder=no    ;;
1021   --enable-mplayer)     _mplayer=yes    ;;
1022   --disable-mplayer)    _mplayer=no     ;;
1023   --enable-dynamic-plugins) _dynamic_plugins=yes ;;
1024   --disable-dynamic-plugins) _dynamic_plugins=no ;;
1025   --enable-x11)         _x11=yes        ;;
1026   --disable-x11)        _x11=no         ;;
1027   --enable-xshape)      _xshape=yes     ;;
1028   --disable-xshape)     _xshape=no      ;;
1029   --enable-xss)         _xss=yes        ;;
1030   --disable-xss)        _xss=no         ;;
1031   --enable-xrender)     _xrender=yes    ;;
1032   --disable-xrender)    _xrender=no     ;;
1033   --enable-xv)          _xv=yes         ;;
1034   --disable-xv)         _xv=no          ;;
1035   --enable-xvmc)        _xvmc=yes       ;;
1036   --disable-xvmc)       _xvmc=no        ;;
1037   --enable-vaapi)       _vaapi=yes      ;;
1038   --disable-vaapi)      _vaapi=no       ;;
1039   --enable-vda)         _vda=yes        ;;
1040   --disable-vda)        _vda=no         ;;
1041   --enable-vdpau)       _vdpau=yes      ;;
1042   --disable-vdpau)      _vdpau=no       ;;
1043   --enable-sdl)         _sdl=yes        ;;
1044   --disable-sdl)        _sdl=no         ;;
1045   --enable-kva)         _kva=yes        ;;
1046   --disable-kva)        _kva=no         ;;
1047   --enable-direct3d)    _direct3d=yes   ;;
1048   --disable-direct3d)   _direct3d=no    ;;
1049   --enable-directx)     _directx=yes    ;;
1050   --disable-directx)    _directx=no     ;;
1051   --enable-win32waveout)  _win32waveout=yes ;;
1052   --disable-win32waveout) _win32waveout=no  ;;
1053   --enable-nas)         _nas=yes        ;;
1054   --disable-nas)        _nas=no         ;;
1055   --enable-png)         _png=yes        ;;
1056   --disable-png)        _png=no         ;;
1057   --enable-mng)         _mng=yes        ;;
1058   --disable-mng)        _mng=no         ;;
1059   --enable-jpeg)        _jpeg=yes       ;;
1060   --disable-jpeg)       _jpeg=no        ;;
1061   --enable-libopenjpeg) libopenjpeg=yes ;;
1062   --disable-libopenjpeg)libopenjpeg=no  ;;
1063   --enable-pnm)         _pnm=yes        ;;
1064   --disable-pnm)        _pnm=no         ;;
1065   --enable-md5sum)      _md5sum=yes     ;;
1066   --disable-md5sum)     _md5sum=no      ;;
1067   --enable-yuv4mpeg)    _yuv4mpeg=yes   ;;
1068   --disable-yuv4mpeg)   _yuv4mpeg=no    ;;
1069   --enable-gif)         _gif=yes        ;;
1070   --disable-gif)        _gif=no         ;;
1071   --enable-gl)          _gl=yes         ;;
1072   --disable-gl)         _gl=no          ;;
1073   --enable-matrixview)  matrixview=yes  ;;
1074   --disable-matrixview) matrixview=no   ;;
1075   --enable-ggi)         _ggi=yes        ;;
1076   --disable-ggi)        _ggi=no         ;;
1077   --enable-ggiwmh)      _ggiwmh=yes     ;;
1078   --disable-ggiwmh)     _ggiwmh=no      ;;
1079   --enable-aa)          _aa=yes         ;;
1080   --disable-aa)         _aa=no          ;;
1081   --enable-caca)        _caca=yes       ;;
1082   --disable-caca)       _caca=no        ;;
1083   --enable-svga)        _svga=yes       ;;
1084   --disable-svga)       _svga=no        ;;
1085   --enable-vesa)        _vesa=yes       ;;
1086   --disable-vesa)       _vesa=no        ;;
1087   --enable-fbdev)       _fbdev=yes      ;;
1088   --disable-fbdev)      _fbdev=no       ;;
1089   --enable-dvb)         _dvb=yes        ;;
1090   --disable-dvb)        _dvb=no         ;;
1091   --enable-dxr2)        _dxr2=yes       ;;
1092   --disable-dxr2)       _dxr2=no        ;;
1093   --enable-dxr3)        _dxr3=yes       ;;
1094   --disable-dxr3)       _dxr3=no        ;;
1095   --enable-ivtv)        _ivtv=yes       ;;
1096   --disable-ivtv)       _ivtv=no        ;;
1097   --enable-v4l2)        _v4l2=yes       ;;
1098   --disable-v4l2)       _v4l2=no        ;;
1099   --enable-iconv)       _iconv=yes      ;;
1100   --disable-iconv)      _iconv=no       ;;
1101   --enable-langinfo)    _langinfo=yes   ;;
1102   --disable-langinfo)   _langinfo=no    ;;
1103   --enable-rtc)         _rtc=yes        ;;
1104   --disable-rtc)        _rtc=no         ;;
1105   --enable-libdv)       _libdv=yes      ;;
1106   --disable-libdv)      _libdv=no       ;;
1107   --enable-ossaudio)    _ossaudio=yes   ;;
1108   --disable-ossaudio)   _ossaudio=no    ;;
1109   --enable-arts)        _arts=yes       ;;
1110   --disable-arts)       _arts=no        ;;
1111   --enable-esd)         _esd=yes        ;;
1112   --disable-esd)        _esd=no         ;;
1113   --enable-pulse)       _pulse=yes      ;;
1114   --disable-pulse)      _pulse=no       ;;
1115   --enable-jack)        _jack=yes       ;;
1116   --disable-jack)       _jack=no        ;;
1117   --enable-openal)      _openal=yes     ;;
1118   --disable-openal)     _openal=no      ;;
1119   --enable-kai)         _kai=yes        ;;
1120   --disable-kai)        _kai=no         ;;
1121   --enable-dart)        _dart=yes       ;;
1122   --disable-dart)       _dart=no        ;;
1123   --enable-mad)         _mad=yes        ;;
1124   --disable-mad)        _mad=no         ;;
1125   --enable-mp3lame)     _mp3lame=yes    ;;
1126   --disable-mp3lame)    _mp3lame=no     ;;
1127   --enable-mp3lame-lavc)  _mp3lame_lavc=yes       ;;
1128   --disable-mp3lame-lavc) _mp3lame_lavc=no        ;;
1129   --enable-toolame)     _toolame=yes    ;;
1130   --disable-toolame)    _toolame=no     ;;
1131   --enable-twolame)     _twolame=yes    ;;
1132   --disable-twolame)    _twolame=no     ;;
1133   --enable-libcdio)     _libcdio=yes    ;;
1134   --disable-libcdio)    _libcdio=no     ;;
1135   --enable-libgtop)     _libgtop=yes    ;;
1136   --disable-libgtop)    _libgtop=no     ;;
1137   --enable-liblzo)      _liblzo=yes     ;;
1138   --disable-liblzo)     _liblzo=no      ;;
1139   --enable-libvorbis)   _libvorbis=yes  ;;
1140   --disable-libvorbis)  _libvorbis=no   ;;
1141   --enable-speex)       _speex=yes      ;;
1142   --disable-speex)      _speex=no       ;;
1143   --enable-libgsm)      _libgsm=yes     ;;
1144   --disable-libgsm)     _libgsm=no      ;;
1145   --enable-tremor)      _tremor=yes     ;;
1146   --disable-tremor)     _tremor=no      ;;
1147   --enable-theora)      _theora=yes     ;;
1148   --disable-theora)     _theora=no      ;;
1149   --enable-mpg123)      _mpg123=yes     ;;
1150   --disable-mpg123)     _mpg123=no      ;;
1151   --enable-liba52)      _liba52=yes     ;;
1152   --disable-liba52)     _liba52=no      ;;
1153   --enable-libdca)      _libdca=yes     ;;
1154   --disable-libdca)     _libdca=no      ;;
1155   --enable-libmpeg2)    _libmpeg2=yes   ;;
1156   --disable-libmpeg2)   _libmpeg2=no    ;;
1157   --enable-libmpeg2-internal)    _libmpeg2_internal=yes   ;;
1158   --disable-libmpeg2-internal)   _libmpeg2_internal=no    ;;
1159   --enable-musepack)    _musepack=yes   ;;
1160   --disable-musepack)   _musepack=no    ;;
1161   --enable-faad)        _faad=yes       ;;
1162   --disable-faad)       _faad=no        ;;
1163   --enable-faac)        _faac=yes       ;;
1164   --disable-faac)       _faac=no        ;;
1165   --enable-faac-lavc)   _faac_lavc=yes  ;;
1166   --disable-faac-lavc)  _faac_lavc=no   ;;
1167   --enable-ladspa)      _ladspa=yes     ;;
1168   --disable-ladspa)     _ladspa=no      ;;
1169   --enable-libbs2b)     _libbs2b=yes    ;;
1170   --disable-libbs2b)    _libbs2b=no     ;;
1171   --enable-libilbc)     _libilbc=yes    ;;
1172   --disable-libilbc)    _libilbc=no     ;;
1173   --enable-libopus)     _libopus=yes    ;;
1174   --disable-libopus)    _libopus=no     ;;
1175   --enable-xmms)        _xmms=yes       ;;
1176   --disable-xmms)       _xmms=no        ;;
1177   --enable-vcd)         _vcd=yes        ;;
1178   --disable-vcd)        _vcd=no         ;;
1179   --enable-bluray)      _bluray=yes     ;;
1180   --disable-bluray)     _bluray=no      ;;
1181   --enable-dvdread)     _dvdread=yes    ;;
1182   --disable-dvdread)    _dvdread=no     ;;
1183   --enable-dvdread-internal)    _dvdread_internal=yes   ;;
1184   --disable-dvdread-internal)   _dvdread_internal=no    ;;
1185   --enable-libdvdcss-internal)  _libdvdcss_internal=yes ;;
1186   --disable-libdvdcss-internal) _libdvdcss_internal=no  ;;
1187   --enable-dvdnav)      _dvdnav=yes     ;;
1188   --disable-dvdnav)     _dvdnav=no      ;;
1189   --enable-xanim)       _xanim=yes      ;;
1190   --disable-xanim)      _xanim=no       ;;
1191   --enable-real)        _real=yes       ;;
1192   --disable-real)       _real=no        ;;
1193   --enable-live)        _live=yes       ;;
1194   --disable-live)       _live=no        ;;
1195   --enable-nemesi)      _nemesi=yes     ;;
1196   --disable-nemesi)     _nemesi=no      ;;
1197   --enable-librtmp)     _librtmp=yes    ;;
1198   --disable-librtmp)    _librtmp=no     ;;
1199   --enable-xinerama)    _xinerama=yes   ;;
1200   --disable-xinerama)   _xinerama=no    ;;
1201   --enable-mga)         _mga=yes        ;;
1202   --disable-mga)        _mga=no         ;;
1203   --enable-xmga)        _xmga=yes       ;;
1204   --disable-xmga)       _xmga=no        ;;
1205   --enable-vm)          _vm=yes         ;;
1206   --disable-vm)         _vm=no          ;;
1207   --enable-xf86keysym)  _xf86keysym=yes ;;
1208   --disable-xf86keysym) _xf86keysym=no  ;;
1209   --enable-mlib)        _mlib=yes       ;;
1210   --disable-mlib)       _mlib=no        ;;
1211   --enable-sunaudio)    _sunaudio=yes   ;;
1212   --disable-sunaudio)   _sunaudio=no    ;;
1213   --enable-sgiaudio)    _sgiaudio=yes   ;;
1214   --disable-sgiaudio)   _sgiaudio=no    ;;
1215   --enable-alsa)        _alsa=yes       ;;
1216   --disable-alsa)       _alsa=no        ;;
1217   --enable-tv)          _tv=yes         ;;
1218   --disable-tv)         _tv=no          ;;
1219   --enable-tv-bsdbt848)  _tv_bsdbt848=yes ;;
1220   --disable-tv-bsdbt848) _tv_bsdbt848=no  ;;
1221   --enable-tv-v4l1)     _tv_v4l1=yes    ;;
1222   --disable-tv-v4l1)    _tv_v4l1=no     ;;
1223   --enable-tv-v4l2)     _tv_v4l2=yes    ;;
1224   --disable-tv-v4l2)    _tv_v4l2=no     ;;
1225   --enable-tv-dshow)    _tv_dshow=yes   ;;
1226   --disable-tv-dshow)   _tv_dshow=no    ;;
1227   --enable-radio)       _radio=yes      ;;
1228   --enable-radio-capture)       _radio_capture=yes      ;;
1229   --disable-radio-capture)      _radio_capture=no       ;;
1230   --disable-radio)      _radio=no       ;;
1231   --enable-radio-v4l)   _radio_v4l=yes  ;;
1232   --disable-radio-v4l)  _radio_v4l=no   ;;
1233   --enable-radio-v4l2)  _radio_v4l2=yes ;;
1234   --disable-radio-v4l2) _radio_v4l2=no  ;;
1235   --enable-radio-bsdbt848)      _radio_bsdbt848=yes     ;;
1236   --disable-radio-bsdbt848)     _radio_bsdbt848=no      ;;
1237   --enable-pvr)         _pvr=yes        ;;
1238   --disable-pvr)        _pvr=no         ;;
1239   --enable-fastmemcpy)  _fastmemcpy=yes ;;
1240   --disable-fastmemcpy) _fastmemcpy=no  ;;
1241   --enable-hardcoded-tables)  hardcoded_tables=yes ;;
1242   --disable-hardcoded-tables) hardcoded_tables=no  ;;
1243   --enable-networking)     networking=yes    ;;
1244   --disable-networking)    networking=no     ;;
1245   --enable-winsock2_h)  _winsock2_h=yes ;;
1246   --disable-winsock2_h) _winsock2_h=no  ;;
1247   --enable-smb)         _smb=yes        ;;
1248   --disable-smb)        _smb=no ;;
1249   --enable-vidix)       _vidix=yes      ;;
1250   --disable-vidix)      _vidix=no       ;;
1251   --with-vidix-drivers=*)
1252     _vidix_drivers=$(option_value $ac_option)
1253     ;;
1254   --disable-vidix-pcidb)  _vidix_pcidb=no         ;;
1255   --enable-dhahelper)   _dhahelper=yes  ;;
1256   --disable-dhahelper)  _dhahelper=no   ;;
1257   --enable-svgalib_helper)      _svgalib_helper=yes     ;;
1258   --disable-svgalib_helper)     _svgalib_helper=no      ;;
1259   --enable-joystick)    _joystick=yes   ;;
1260   --disable-joystick)   _joystick=no    ;;
1261   --enable-crystalhd)   crystalhd=yes  ;;
1262   --disable-crystalhd)  crystalhd=no   ;;
1263   --enable-xvid)        _xvid=yes       ;;
1264   --disable-xvid)       _xvid=no        ;;
1265   --enable-xvid-lavc)   _xvid_lavc=yes  ;;
1266   --disable-xvid-lavc)  _xvid_lavc=no   ;;
1267   --enable-x264)        _x264=yes       ;;
1268   --disable-x264)       _x264=no        ;;
1269   --enable-x264-lavc)   _x264_lavc=yes  ;;
1270   --disable-x264-lavc)  _x264_lavc=no   ;;
1271   --enable-libdirac-lavc)   _libdirac_lavc=yes  ;;
1272   --disable-libdirac-lavc)  _libdirac_lavc=no   ;;
1273   --enable-libschroedinger-lavc)   _libschroedinger_lavc=yes  ;;
1274   --disable-libschroedinger-lavc)  _libschroedinger_lavc=no   ;;
1275   --enable-libvpx-lavc)   _libvpx_lavc=yes  ;;
1276   --disable-libvpx-lavc)  _libvpx_lavc=no   ;;
1277   --enable-libnut)      _libnut=yes     ;;
1278   --disable-libnut)     _libnut=no      ;;
1279   --enable-libopencore_amrnb)   _libopencore_amrnb=yes  ;;
1280   --disable-libopencore_amrnb)  _libopencore_amrnb=no   ;;
1281   --enable-libopencore_amrwb)   _libopencore_amrwb=yes  ;;
1282   --disable-libopencore_amrwb)  _libopencore_amrwb=no   ;;
1283   --enable-ffmpeg_a)    ffmpeg_a=yes    ;;
1284   --disable-ffmpeg_a)   ffmpeg_a=no     ;;
1285   --enable-ffmpeg_so)   ffmpeg_so=yes   ;;
1286   --disable-ffmpeg_so)  ffmpeg_so=no    ;;
1287   --enable-postproc)    postproc=yes    ;;
1288   --disable-postproc)   postproc=no     ;;
1289   --enable-vf-lavfi)    _vf_lavfi=yes   ;;
1290   --disable-vf-lavfi)   _vf_lavfi=no    ;;
1291   --enable-libavcodec_mpegaudio_hp)     _libavcodec_mpegaudio_hp=yes    ;;
1292   --disable-libavcodec_mpegaudio_hp)    _libavcodec_mpegaudio_hp=no     ;;
1293
1294   --enable-lirc)        _lirc=yes       ;;
1295   --disable-lirc)       _lirc=no        ;;
1296   --enable-lircc)       _lircc=yes      ;;
1297   --disable-lircc)      _lircc=no       ;;
1298   --enable-apple-remote)  _apple_remote=yes ;;
1299   --disable-apple-remote) _apple_remote=no  ;;
1300   --enable-apple-ir)    _apple_ir=yes   ;;
1301   --disable-apple-ir)   _apple_ir=no    ;;
1302   --enable-gui)         _gui=yes        ;;
1303   --disable-gui)        _gui=no         ;;
1304   --enable-gtk1)        _gtk1=yes       ;;
1305   --disable-gtk1)       _gtk1=no        ;;
1306   --enable-termcap)     _termcap=yes    ;;
1307   --disable-termcap)    _termcap=no     ;;
1308   --enable-termios)     _termios=yes    ;;
1309   --disable-termios)    _termios=no     ;;
1310   --enable-3dfx)        _3dfx=yes       ;;
1311   --disable-3dfx)       _3dfx=no        ;;
1312   --enable-s3fb)        _s3fb=yes       ;;
1313   --disable-s3fb)       _s3fb=no        ;;
1314   --enable-wii)         _wii=yes        ;;
1315   --disable-wii)        _wii=no         ;;
1316   --enable-tdfxfb)      _tdfxfb=yes     ;;
1317   --disable-tdfxfb)     _tdfxfb=no      ;;
1318   --disable-tdfxvid)    _tdfxvid=no     ;;
1319   --enable-tdfxvid)     _tdfxvid=yes    ;;
1320   --disable-xvr100)     _xvr100=no      ;;
1321   --enable-xvr100)      _xvr100=yes     ;;
1322   --disable-tga)        _tga=no         ;;
1323   --enable-tga)         _tga=yes        ;;
1324   --enable-directfb)    _directfb=yes   ;;
1325   --disable-directfb)   _directfb=no    ;;
1326   --enable-zr)          _zr=yes         ;;
1327   --disable-zr)         _zr=no          ;;
1328   --enable-bl)          _bl=yes         ;;
1329   --disable-bl)         _bl=no          ;;
1330   --enable-mtrr)        _mtrr=yes       ;;
1331   --disable-mtrr)       _mtrr=no        ;;
1332   --enable-shm)         _shm=yes        ;;
1333   --disable-shm)        _shm=no         ;;
1334   --enable-select)      _select=yes     ;;
1335   --disable-select)     _select=no      ;;
1336   --enable-cdparanoia)  _cdparanoia=yes ;;
1337   --disable-cdparanoia) _cdparanoia=no  ;;
1338   --enable-cddb)        _cddb=yes       ;;
1339   --disable-cddb)       _cddb=no        ;;
1340   --enable-big-endian)  _big_endian=yes ;;
1341   --disable-big-endian) _big_endian=no  ;;
1342   --enable-bitmap-font)    _bitmap_font=yes   ;;
1343   --disable-bitmap-font)   _bitmap_font=no    ;;
1344   --enable-freetype)    _freetype=yes   ;;
1345   --disable-freetype)   _freetype=no    ;;
1346   --enable-fontconfig)  _fontconfig=yes ;;
1347   --disable-fontconfig) _fontconfig=no  ;;
1348   --enable-unrarexec)   _unrar_exec=yes ;;
1349   --disable-unrarexec)  _unrar_exec=no  ;;
1350   --enable-ftp)         _ftp=yes        ;;
1351   --disable-ftp)        _ftp=no         ;;
1352   --enable-vstream)     _vstream=yes    ;;
1353   --disable-vstream)    _vstream=no     ;;
1354   --enable-pthreads)    _pthreads=yes   ;;
1355   --disable-pthreads)   _pthreads=no    ;;
1356   --enable-w32threads)  _w32threads=yes ;;
1357   --disable-w32threads) _w32threads=no  ;;
1358   --enable-os2threads)  _os2threads=yes ;;
1359   --disable-os2threads) _os2threads=no  ;;
1360   --enable-ass)         _ass=yes        ;;
1361   --disable-ass)        _ass=no         ;;
1362   --enable-ass-internal)  ass_internal=yes ;;
1363   --disable-ass-internal) ass_internal=no  ;;
1364   --enable-rpath)       _rpath=yes      ;;
1365   --disable-rpath)      _rpath=no       ;;
1366
1367   --enable-fribidi)     _fribidi=yes    ;;
1368   --disable-fribidi)    _fribidi=no     ;;
1369
1370   --enable-enca)        _enca=yes       ;;
1371   --disable-enca)       _enca=no        ;;
1372
1373   --enable-inet6)       _inet6=yes      ;;
1374   --disable-inet6)      _inet6=no       ;;
1375
1376   --enable-sctp)        _sctp=yes       ;;
1377   --disable-sctp)       _sctp=no        ;;
1378
1379   --enable-gethostbyname2)      _gethostbyname2=yes     ;;
1380   --disable-gethostbyname2)     _gethostbyname2=no      ;;
1381
1382   --enable-dga1) _dga1=yes ;;
1383   --disable-dga1) _dga1=no ;;
1384   --enable-dga2) _dga2=yes ;;
1385   --disable-dga2) _dga2=no ;;
1386
1387   --enable-menu) _menu=yes ;;
1388   --disable-menu) _menu=no ;;
1389
1390   --enable-qtx) _qtx=yes ;;
1391   --disable-qtx) _qtx=no ;;
1392
1393   --enable-coreaudio) _coreaudio=yes ;;
1394   --disable-coreaudio) _coreaudio=no ;;
1395   --enable-corevideo) _corevideo=yes ;;
1396   --disable-corevideo) _corevideo=no ;;
1397   --enable-quartz) _quartz=yes ;;
1398   --disable-quartz) _quartz=no ;;
1399   --enable-macosx-finder) _macosx_finder=yes ;;
1400   --disable-macosx-finder) _macosx_finder=no ;;
1401   --enable-macosx-bundle) _macosx_bundle=yes ;;
1402   --disable-macosx-bundle) _macosx_bundle=no ;;
1403
1404   --enable-maemo) _maemo=yes ;;
1405   --disable-maemo) _maemo=no ;;
1406
1407   --enable-sortsub) _sortsub=yes ;;
1408   --disable-sortsub) _sortsub=no ;;
1409
1410   --enable-crash-debug) _crash_debug=yes ;;
1411   --disable-crash-debug) _crash_debug=no ;;
1412   --enable-sighandler)  _sighandler=yes  ;;
1413   --disable-sighandler) _sighandler=no   ;;
1414   --enable-relocatable)  relocatable=yes  ;;
1415   --disable-relocatable) relocatable=no   ;;
1416   --enable-win32dll) _win32dll=yes ;;
1417   --disable-win32dll) _win32dll=no ;;
1418
1419   --enable-sse) _sse=yes ;;
1420   --disable-sse) _sse=no ;;
1421   --enable-sse2) _sse2=yes ;;
1422   --disable-sse2) _sse2=no ;;
1423   --enable-sse3) _sse3=yes ;;
1424   --disable-sse3) _sse3=no ;;
1425   --enable-ssse3) _ssse3=yes ;;
1426   --disable-ssse3) _ssse3=no ;;
1427   --enable-sse4) _sse4_1=yes;;
1428   --disable-sse4) _sse4_1=no;;
1429   --enable-sse42) _sse4_2=yes;;
1430   --disable-sse42) _sse4_2=no;;
1431   --enable-avx) _avx=yes;;
1432   --disable-avx) _avx=no;;
1433   --enable-mmxext) _mmxext=yes ;;
1434   --disable-mmxext) _mmxext=no ;;
1435   --enable-3dnow) _3dnow=yes ;;
1436   --disable-3dnow) _3dnow=no _3dnowext=no ;;
1437   --enable-3dnowext) _3dnow=yes _3dnowext=yes ;;
1438   --disable-3dnowext) _3dnowext=no ;;
1439   --enable-cmov) _cmov=yes ;;
1440   --disable-cmov) _cmov=no ;;
1441   --enable-fast-cmov) _fast_cmov=yes ;;
1442   --disable-fast-cmov) _fast_cmov=no ;;
1443   --enable-fast-clz) _fast_clz=yes ;;
1444   --disable-fast-clz) _fast_clz=no ;;
1445   --enable-altivec) _altivec=yes ;;
1446   --disable-altivec) _altivec=no ;;
1447   --enable-armv5te) _armv5te=yes ;;
1448   --disable-armv5te) _armv5te=no ;;
1449   --enable-armv6) _armv6=yes ;;
1450   --disable-armv6) _armv6=no ;;
1451   --enable-armv6t2) _armv6t2=yes ;;
1452   --disable-armv6t2) _armv6t2=no ;;
1453   --enable-armvfp) _armvfp=yes ;;
1454   --disable-armvfp) _armvfp=no ;;
1455   --enable-vfpv3) vfpv3=yes ;;
1456   --disable-vfpv3) vfpv3=no ;;
1457   --enable-neon) neon=yes ;;
1458   --disable-neon) neon=no ;;
1459   --enable-thumb) armthumb=yes ;;
1460   --disable-thumb) armthumb=no ;;
1461   --enable-iwmmxt) _iwmmxt=yes ;;
1462   --disable-iwmmxt) _iwmmxt=no ;;
1463   --enable-mmx) _mmx=yes ;;
1464   --disable-mmx) # 3DNow! and MMX2 require MMX
1465         _3dnow=no _3dnowext=no _mmx=no _mmxext=no ;;
1466
1467   # Handle these options in a second pass.
1468   --*-decoder=*|--*-encoder=*|--*-parser=*|--*-protocol=*|--*-demuxer=*|--*-muxer=*|--*-filter=*)  ;;
1469
1470   *)
1471     echo "Unknown parameter: $ac_option"
1472     exit 1
1473     ;;
1474
1475   esac
1476 done
1477
1478 # Atmos: moved this here, to be correct, if --prefix is specified
1479 test -z "$_bindir"  && _bindir="$_prefix/bin"
1480 test -z "$_datadir" && _datadir="$_prefix/share/mplayer"
1481 test -z "$_mandir"  && _mandir="$_prefix/share/man"
1482 test -z "$_confdir" && _confdir="$_prefix/etc/mplayer"
1483 test -z "$_libdir"  && _libdir="$_prefix/lib"
1484
1485 for tmpdir in "$TMPDIR" "$TEMPDIR" "/tmp" ; do
1486   test "$tmpdir" && break
1487 done
1488
1489 mplayer_tmpdir="$tmpdir/mplayer-configure-$RANDOM-$$"
1490 mkdir $mplayer_tmpdir || die "Unable to create tmpdir."
1491
1492 cleanup() {
1493   rm -rf "$mplayer_tmpdir"
1494 }
1495
1496 trap cleanup EXIT
1497
1498 TMPLOG="config.log"
1499 TMPC="$mplayer_tmpdir/tmp.c"
1500 TMPCPP="$mplayer_tmpdir/tmp.cpp"
1501 TMPH="$mplayer_tmpdir/tmp.h"
1502 TMPS="$mplayer_tmpdir/tmp.S"
1503 # We will update this later once we know the executable suffix
1504 TMPEXE="$mplayer_tmpdir/tmp"
1505
1506 rm -f "$TMPLOG"
1507 echo configuration: $configuration > "$TMPLOG"
1508 echo >> "$TMPLOG"
1509
1510
1511 # local FFmpeg checkout handling
1512 if test -e ffmpeg/.svn ; then
1513     echo "You have an outdated FFmpeg SVN checkout in ffmpeg/, please (re)move or replace it"
1514     exit 1
1515 fi
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 master)
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 -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 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     ffrevision=bc63a760837c8b173f2a3820ccb06f9cac1c07b4
1539     cd ffmpeg && git checkout $ffrevision && cd ..
1540     touch ffmpeg/mp_auto_pull
1541 fi
1542
1543 list_subparts() {
1544   pattern="s/^[^#]*${1}.*([^ ,]*, *\([^ ,)]*\).*/\1_${2}/p"
1545   sed -n "$pattern" ffmpeg/libav${3} | toupper
1546 }
1547
1548 libavdecoders_all=$(list_subparts  DEC      decoder  codec/allcodecs.c)
1549 libavencoders_all=$(list_subparts  ENC      encoder  codec/allcodecs.c)
1550 libavparsers_all=$(list_subparts   PARSER   parser   codec/allcodecs.c)
1551 libavbsfs_all=$(list_subparts      BSF      bsf      codec/allcodecs.c)
1552 libavhwaccels_all=$(list_subparts  HWACCEL  hwaccel  codec/allcodecs.c)
1553 libavdemuxers_all=$(list_subparts  DEMUX    demuxer  format/allformats.c)
1554 libavmuxers_all=$(list_subparts    _MUX     muxer    format/allformats.c)
1555 libavprotocols_all=$(list_subparts PROTOCOL protocol format/allformats.c)
1556 libavfilters_all=$(list_subparts   FILTER   filter   filter/allfilters.c)
1557
1558 filter_out_component() {
1559   eval list=\$libav${1}s
1560   type=$(echo $1 | toupper)
1561   shift
1562   for item in $@; do
1563     filter_patterns="$filter_patterns -e s/[^A-Z0-9_]${item}_${type}//g"
1564   done
1565   echo " $list" | sed $filter_patterns
1566 }
1567
1568 libavdecoders=$(echo $libavdecoders_all)
1569 libavencoders=$(echo $libavencoders_all)
1570 libavparsers=$(echo $libavparsers_all)
1571 libavbsfs=$(echo $libavbsfs_all)
1572 libavhwaccels=$(for h in $(echo $libavhwaccels_all); do case $h in (*_VAAPI_HWACCEL) echo $h;; esac; done)
1573 libavdemuxers=$(echo $libavdemuxers_all)
1574 libavmuxers=$(echo $libavmuxers_all)
1575 libavprotocols=$(echo $libavprotocols_all)
1576 libavfilters=$(echo $libavfilters_all)
1577
1578 libavdecoders=$(filter_out_component decoder 'LIB[A-Z0-9_]*')
1579 libavencoders=$(filter_out_component encoder 'LIB[A-Z0-9_]*')
1580 libavdemuxers=$(filter_out_component demuxer 'AVISYNTH LIB[A-Z0-9_]* REDIR')
1581 libavmuxers=$(filter_out_component muxer 'LIB[A-Z0-9_]* RTP RTSP SAP')
1582 libavprotocols=$(filter_out_component protocol 'BLURAY FFRTMPCRYPT HTTPS TLS')
1583 libavfilters=$(filter_out_component filter 'FREI0R[A-Z0-9_]* LIB[A-Z0-9_]* MP OCV')
1584
1585 # second pass command line parsing for options needing local FFmpeg checkout
1586 for ac_option do
1587   case "$ac_option" in
1588   --enable-decoder=*)   libavdecoders="$libavdecoders   $(option_value_uc $ac_option)" ;;
1589   --enable-encoder=*)   libavencoders="$libavencoders   $(option_value_uc $ac_option)" ;;
1590   --enable-parser=*)    libavparsers="$libavparsers     $(option_value_uc $ac_option)" ;;
1591   --enable-protocol=*)  libavprotocols="$libavprotocols $(option_value_uc $ac_option)" ;;
1592   --enable-demuxer=*)   libavdemuxers="$libavdemuxers   $(option_value_uc $ac_option)" ;;
1593   --enable-muxer=*)     libavmuxers="$libavmuxers       $(option_value_uc $ac_option)" ;;
1594   --enable-filter=*)    libavfilters="$libavfilters     $(option_value_uc $ac_option)" ;;
1595
1596   --disable-decoder=*)  libavdecoders=$(filter_out_component  decoder  "$(option_value_uc $ac_option)") ;;
1597   --disable-encoder=*)  libavencoders=$(filter_out_component  encoder  "$(option_value_uc $ac_option)") ;;
1598   --disable-parser=*)   libavparsers=$(filter_out_component   parser   "$(option_value_uc $ac_option)") ;;
1599   --disable-protocol=*) libavprotocols=$(filter_out_component protocol "$(option_value_uc $ac_option)") ;;
1600   --disable-demuxer=*)  libavdemuxers=$(filter_out_component  demuxer  "$(option_value_uc $ac_option)") ;;
1601   --disable-muxer=*)    libavmuxers=$(filter_out_component    muxer    "$(option_value_uc $ac_option)") ;;
1602   --disable-filter=*)   libavfilters=$(filter_out_component   filter   "$(option_value_uc $ac_option)") ;;
1603   esac
1604 done
1605
1606
1607 # Checking CC version...
1608 # Intel C++ Compilers (no autoselect, use CC=/some/binary ./configure)
1609 if test "$(basename $_cc)" = "icc" || test "$(basename $_cc)" = "ecc"; then
1610   echocheck "$_cc version"
1611   cc_vendor=intel
1612   cc_name=$($_cc -V 2>&1 | head -n 1 | cut -d ',' -f 1)
1613   cc_version=$($_cc -V 2>&1 | head -n 1 | cut -d ',' -f 2 | cut -d ' ' -f 3)
1614   _cc_major=$(echo $cc_version | cut -d '.' -f 1)
1615   _cc_minor=$(echo $cc_version | cut -d '.' -f 2)
1616   # TODO verify older icc/ecc compatibility
1617   case $cc_version in
1618     '')
1619       cc_version="v. ?.??, bad"
1620       cc_fail=yes
1621       ;;
1622     10.1|11.1|12.0)
1623       cc_version="$cc_version, ok"
1624       ;;
1625     *)
1626       cc_version="$cc_version, bad"
1627       cc_fail=yes
1628       ;;
1629   esac
1630   echores "$cc_version"
1631 else
1632   for _cc in "$_cc" gcc cc ; do
1633     cc_name_tmp=$($_cc -v 2>&1 | tail -n 1 | cut -d ' ' -f 1)
1634     if test "$cc_name_tmp" = "gcc"; then
1635       cc_name=$cc_name_tmp
1636       echocheck "$_cc version"
1637       cc_vendor=gnu
1638       cc_version=$($_cc -dumpversion 2>&1)
1639       case $cc_version in
1640         2.96*)
1641           cc_fail=yes
1642           ;;
1643         *)
1644           _cc_major=$(echo $cc_version | cut -d '.' -f 1)
1645           _cc_minor=$(echo $cc_version | cut -d '.' -f 2)
1646           _cc_mini=$(echo $cc_version | cut -d '.' -f 3)
1647           ;;
1648       esac
1649       echores "$cc_version"
1650       break
1651     fi
1652     if $_cc -v 2>&1 | grep -q "clang"; then
1653       echocheck "$_cc version"
1654       cc_vendor=clang
1655       cc_version=$($_cc -dumpversion 2>&1)
1656       res_comment="experimental support only"
1657       echores "clang $cc_version"
1658       break
1659     fi
1660     cc_name_tmp=$($_cc -V 2>&1 | head -n 1 | cut -d ' ' -f 2,3)
1661     if test "$cc_name_tmp" = "Sun C"; then
1662       echocheck "$_cc version"
1663       cc_vendor=sun
1664       cc_version=$($_cc -V 2>&1 | head -n 1 | cut -d ' ' -f 4)
1665       res_comment="experimental support only"
1666       echores "Sun C $cc_version"
1667       break
1668     fi
1669   done
1670 fi # icc
1671 test "$cc_fail" = yes && die "unsupported compiler version"
1672
1673 # Determine our OS name and CPU architecture
1674 if test -z "$_target" ; then
1675   # OS name
1676   system_name=$(uname -s 2>&1)
1677   case "$system_name" in
1678   Linux|FreeBSD|NetBSD|OpenBSD|DragonFly|BSD/OS|Darwin|SunOS|QNX|GNU|MorphOS|AIX|AmigaOS|Haiku)
1679     ;;
1680   IRIX*)
1681     system_name=IRIX
1682     ;;
1683   GNU/kFreeBSD)
1684     system_name=FreeBSD
1685     ;;
1686   HP-UX*)
1687     system_name=HP-UX
1688     ;;
1689   [cC][yY][gG][wW][iI][nN]*)
1690     system_name=CYGWIN
1691     ;;
1692   MINGW32*)
1693     system_name=MINGW32
1694     ;;
1695   OS/2*)
1696     system_name=OS/2
1697     ;;
1698   *)
1699     system_name="$system_name-UNKNOWN"
1700     ;;
1701   esac
1702   cpp_condition_check '' 'defined(__MINGW32__)' && system_name=MINGW32
1703
1704
1705   # host's CPU/instruction set
1706   case "$(uname -m 2>&1)" in
1707       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 ;;
1708       ia64) host_arch=ia64 ;;
1709       macppc|ppc*|Power*) host_arch=ppc ;;
1710       alpha) host_arch=alpha ;;
1711       sun4*|sparc*) host_arch=sparc ;;
1712       parisc*|hppa*|9000*) host_arch=hppa ;;
1713       arm*|zaurus|cats) host_arch=arm ;;
1714       sh3|sh4|sh4a) host_arch=sh ;;
1715       s390) host_arch=s390 ;;
1716       s390x) host_arch=s390x ;;
1717       *mips*) host_arch=mips ;;
1718       vax) host_arch=vax ;;
1719       xtensa*) host_arch=xtensa ;;
1720       *) host_arch=UNKNOWN ;;
1721   esac
1722 else # if test -z "$_target"
1723   for component in 3 2; do
1724     system_name=$(echo $_target | cut -d '-' -f $component)
1725     case "$(echo $system_name | tolower)" in
1726       linux) system_name=Linux ;;
1727       freebsd) system_name=FreeBSD ;;
1728       gnu/kfreebsd) system_name=FreeBSD ;;
1729       netbsd) system_name=NetBSD ;;
1730       bsd/os) system_name=BSD/OS ;;
1731       openbsd) system_name=OpenBSD ;;
1732       dragonfly) system_name=DragonFly ;;
1733       sunos) system_name=SunOS ;;
1734       qnx) system_name=QNX ;;
1735       morphos) system_name=MorphOS ;;
1736       amigaos) system_name=AmigaOS ;;
1737       mingw32*) system_name=MINGW32 ;;
1738       wine) system_name=Wine ;;
1739     esac
1740   done
1741   # We need to convert underscores so that values like k6-2 and pentium-mmx can be passed
1742   host_arch=$(echo $_target | cut -d '-' -f 1)
1743   if test $(echo $host_arch) != "x86_64" ; then
1744     host_arch=$(echo $host_arch | tr '_' '-')
1745   fi
1746 fi
1747
1748 _timer=timer-linux.c
1749 _getch=getch2.c
1750
1751 if darwin; then
1752   extra_cflags="-mdynamic-no-pic $extra_cflags"
1753   _timer=timer-darwin.c
1754 fi
1755
1756 if aix ; then
1757   extra_ldflags="$extra_ldflags -lC"
1758 fi
1759
1760 if irix ; then
1761   _ranlib='ar -r'
1762 elif linux ; then
1763   _ranlib='true'
1764 fi
1765
1766 if win32 ; then
1767   _exesuf=".exe"
1768   extra_cflags="$extra_cflags -fno-common"
1769   # -lwinmm is always needed for osdep/timer-win2.c
1770   timer_libs=-lwinmm
1771   _pe_executable=yes
1772   _timer=timer-win2.c
1773   _priority=yes
1774   def_dos_paths="#define HAVE_DOS_PATHS 1"
1775   def_priority="#define CONFIG_PRIORITY 1"
1776 fi
1777
1778 if mingw32 ; then
1779   _getch=getch2-win.c
1780   shmem=yes
1781 fi
1782
1783 if amigaos ; then
1784   _select=no
1785   _sighandler=no
1786   _stream_cache=no
1787   def_stream_cache="#undef CONFIG_STREAM_CACHE"
1788   extra_cflags="-DNEWLIB -D__USE_INLINE__ $extra_cflags"
1789 fi
1790
1791 if qnx ; then
1792   extra_ldflags="$extra_ldflags -lph"
1793 fi
1794
1795 if os2 ; then
1796   _exesuf=".exe"
1797   _getch=getch2-os2.c
1798   shmem=yes
1799   _priority=yes
1800   def_dos_paths="#define HAVE_DOS_PATHS 1"
1801   def_priority="#define CONFIG_PRIORITY 1"
1802 fi
1803
1804 if wine ; then
1805   extra_cflags="-fno-pic -UWIN32 -U_WIN32 -U__WIN32 -U__WIN32__ -DWINE_NOWINSOCK -Dstricmp=strcasecmp $extra_cflags"
1806 fi
1807
1808 if darwin && test "$cc_vendor" != "clang" ; then
1809   extra_cflags="-falign-loops=16 -shared-libgcc $extra_cflags"
1810 fi
1811
1812 TMPEXE="$mplayer_tmpdir/tmp$_exesuf"
1813
1814 echocheck "working compiler"
1815 cflag_check "" || die "Compiler is not functioning correctly. Check your installation and custom CFLAGS $CFLAGS ."
1816 echo "yes"
1817
1818 if test -z "$_target" ; then
1819   cat > $TMPC << EOF
1820 int main(void) {
1821     int test[(int)sizeof(char *)-7];
1822     return 0;
1823 }
1824 EOF
1825 if x86 ; then
1826   cc_check && host_arch=x86_64 || host_arch=i386
1827 fi
1828 if ppc ; then
1829   cc_check && host_arch=ppc64 || host_arch=ppc
1830 fi
1831 if sparc ; then
1832   cc_check && host_arch=sparc64 || host_arch=sparc
1833 fi
1834 fi
1835
1836 echo "Detected operating system: $system_name"
1837 echo "Detected host architecture: $host_arch"
1838
1839 if test "$_runtime_cpudetection" = yes && ! x86 && ! ppc; then
1840   die "Runtime CPU detection only works for x86, x86-64 and PPC!"
1841 fi
1842
1843 echocheck "cross compilation"
1844 if test $_cross_compile = auto ; then
1845   _cross_compile=yes
1846   cflag_check "" && "$TMPEXE" && _cross_compile=no
1847 fi
1848 echores $_cross_compile
1849
1850 if test $_cross_compile = yes; then
1851   tmp_run() {
1852     return 0
1853   }
1854   test "$_host_cc" || _host_cc=cc
1855 fi
1856
1857 echocheck "host cc"
1858 test "$_host_cc" || _host_cc=$_cc
1859 echores $_host_cc
1860
1861 # ---
1862
1863 # now that we know what compiler should be used for compilation, try to find
1864 # out which assembler is used by the $_cc compiler
1865 if test "$_as" = auto ; then
1866   _as=$($_cc -print-prog-name=as)
1867   test -z "$_as" && _as=as
1868 fi
1869
1870 if test "$_nm" = auto ; then
1871   _nm=$($_cc -print-prog-name=nm)
1872   test -z "$_nm" && _nm=nm
1873 fi
1874
1875 # XXX: this should be OK..
1876 _cpuinfo="echo"
1877
1878 if test "$_runtime_cpudetection" = no ; then
1879
1880 # Cygwin has /proc/cpuinfo, but only supports Intel CPUs
1881 # FIXME: Remove the Cygwin check once AMD CPUs are supported
1882 if test -r /proc/cpuinfo && ! cygwin; then
1883   # Linux with /proc mounted, extract CPU information from it
1884   _cpuinfo="cat /proc/cpuinfo"
1885 elif test -r /compat/linux/proc/cpuinfo && ! x86 ; then
1886   # FreeBSD with Linux emulation /proc mounted,
1887   # extract CPU information from it
1888   # Don't use it on x86 though, it never reports 3DNow!
1889   _cpuinfo="cat /compat/linux/proc/cpuinfo"
1890 elif darwin && ! x86 ; then
1891   # use hostinfo on Darwin
1892   _cpuinfo="hostinfo"
1893 elif aix; then
1894   # use 'lsattr' on AIX
1895   _cpuinfo="lsattr -E -l proc0 -a type"
1896 elif x86; then
1897   # all other OSes try to extract CPU information from a small helper
1898   # program cpuinfo instead
1899   $_host_cc -o cpuinfo$_exesuf cpuinfo.c
1900   _cpuinfo="./cpuinfo$_exesuf"
1901 fi
1902
1903 if x86 ; then
1904   # gather more CPU information
1905   pname=$($_cpuinfo | grep 'model name' | cut -d ':' -f 2 | head -n 1)
1906   pvendor=$($_cpuinfo | grep 'vendor_id' | cut -d ':' -f 2  | cut -d ' ' -f 2 | head -n 1)
1907   pfamily=$($_cpuinfo | grep 'cpu family' | cut -d ':' -f 2 | cut -d ' ' -f 2 | head -n 1)
1908   pmodel=$($_cpuinfo | grep -v 'model name' | grep 'model' | cut -d ':' -f 2 | cut -d ' ' -f 2 | head -n 1)
1909   pstepping=$($_cpuinfo | grep 'stepping' | cut -d ':' -f 2 | cut -d ' ' -f 2 | head -n 1)
1910
1911   exts=$($_cpuinfo | egrep 'features|flags' | cut -d ':' -f 2 | head -n 1)
1912
1913   pparam=$(echo $exts | sed -e s/k6_mtrr/mtrr/ -e s/cyrix_arr/mtrr/ -e s/centaur_mcr/mtrr/ \
1914                             -e s/xmm/sse/ -e s/kni/sse/ -e s/pni/sse3/)
1915   # SSE implies MMX2, but not all SSE processors report the mmxext CPU flag.
1916   pparam=$(echo $pparam | sed -e 's/sse/sse mmxext/')
1917
1918   for ext in $pparam ; do
1919     eval test \"\$_$ext\" = auto 2>/dev/null && eval _$ext=kernel_check
1920   done
1921
1922   echocheck "CPU vendor"
1923   echores "$pvendor ($pfamily:$pmodel:$pstepping)"
1924
1925   echocheck "CPU type"
1926   echores "$pname"
1927 fi
1928
1929 fi # test "$_runtime_cpudetection" = no
1930
1931 if x86 && test "$_runtime_cpudetection" = no ; then
1932   extcheck() {
1933     if test "$1" = kernel_check ; then
1934       echocheck "kernel support of $2"
1935       cat > $TMPC <<EOF
1936 #include <stdlib.h>
1937 #include <signal.h>
1938 static void catch(int sig) { exit(1); }
1939 int main(void) {
1940   signal(SIGILL, catch);
1941   __asm__ volatile ("$3":::"memory"); return 0;
1942 }
1943 EOF
1944
1945       if cc_check && tmp_run ; then
1946         eval _$2=yes
1947         echores "yes"
1948         _optimizing="$_optimizing $2"
1949         return 0
1950       else
1951         eval _$2=no
1952         echores "failed"
1953         echo "It seems that your kernel does not correctly support $2."
1954         echo "To use $2 extensions in MPlayer, you have to upgrade/recompile your kernel!"
1955         return 1
1956       fi
1957     fi
1958     return 0
1959   }
1960
1961   extcheck $_mmx      "mmx"      "emms"
1962   extcheck $_mmxext   "mmxext"   "sfence"
1963   extcheck $_3dnow    "3dnow"    "femms"
1964   extcheck $_3dnowext "3dnowext" "pswapd %%mm0, %%mm0"
1965   extcheck $_sse      "sse"      "xorps %%xmm0, %%xmm0" || _gcc3_ext="$_gcc3_ext -mno-sse"
1966   extcheck $_sse2     "sse2"     "xorpd %%xmm0, %%xmm0" || _gcc3_ext="$_gcc3_ext -mno-sse2"
1967   extcheck $_sse3     "sse3"     "addsubps %%xmm0, %%xmm0"
1968   extcheck $_ssse3    "ssse3"    "pabsd %%xmm0, %%xmm0"
1969   extcheck $_sse4_1   "sse4_1"   "pmaxsb %%xmm0, %%xmm0"
1970   extcheck $_sse4_2   "sse4_2"   "pcmpgtq %%xmm0, %%xmm0"
1971   extcheck $_avx      "avx"      "vpabsw %%xmm0, %%xmm0"
1972   extcheck $_cmov     "cmov"     "cmovb %%eax,  %%ebx"
1973
1974   echocheck "mtrr support"
1975   if test "$_mtrr" = kernel_check ; then
1976     _mtrr="yes"
1977     _optimizing="$_optimizing mtrr"
1978   fi
1979   echores "$_mtrr"
1980
1981   if test "$_gcc3_ext" != ""; then
1982     # If we had to disable SSE/SSE2 because the active kernel does not
1983     # support this instruction set extension, we also have to tell
1984     # gcc3 to not generate SSE/SSE2 instructions for normal C code.
1985     cflag_check $_march $_gcc3_ext && _march="$_march $_gcc3_ext"
1986   fi
1987
1988 fi
1989
1990
1991 def_fast_64bit='#define HAVE_FAST_64BIT 0'
1992 def_fast_unaligned='#define HAVE_FAST_UNALIGNED 0'
1993 def_av_fast_unaligned='#define AV_HAVE_FAST_UNALIGNED 0'
1994 def_local_aligned_8='#define HAVE_LOCAL_ALIGNED_8 0'
1995 def_local_aligned_16='#define HAVE_LOCAL_ALIGNED_16 0'
1996 arch_all='X86 IA64 SPARC ARM AVR32 SH4 PPC ALPHA MIPS PA_RISC S390 S390X VAX BFIN XTENSA TOMI GENERIC'
1997 subarch_all='X86_32 X86_64 PPC64'
1998 case "$host_arch" in
1999   i[3-9]86|x86|x86pc|k5|k6|k6-2|k6-3|pentium*|athlon*|i586-i686)
2000   arch='x86'
2001   subarch='x86_32'
2002   def_fast_unaligned='#define HAVE_FAST_UNALIGNED 1'
2003   def_av_fast_unaligned='#define AV_HAVE_FAST_UNALIGNED 1'
2004   def_local_aligned_8='#define HAVE_LOCAL_ALIGNED_8 1'
2005   def_local_aligned_16='#define HAVE_LOCAL_ALIGNED_16 1'
2006   iproc=486
2007   proc=i486
2008
2009
2010   if test "$_runtime_cpudetection" = no ; then
2011   case "$pvendor" in
2012   AuthenticAMD)
2013     case "$pfamily" in
2014     3) proc=i386 iproc=386 ;;
2015     4) proc=i486 iproc=486 ;;
2016     5) iproc=586       # LGB: models are: K5/SSA5 K5 K5 K5 ? ? K6 K6 K6-2 K6-3
2017         # K6 model 13 are the K6-2+ and K6-III+, only differing in cache size.
2018         if test "$pmodel" -eq 9 -o "$pmodel" -eq 13; then
2019             proc=k6-3
2020         elif test "$pmodel" -eq 5 -o "$pmodel" -eq 10; then
2021             proc=geode
2022         elif test "$pmodel" -ge 8; then
2023             proc=k6-2
2024         elif test "$pmodel" -ge 6; then
2025             proc=k6
2026         else
2027             proc=i586
2028         fi
2029         ;;
2030     6) iproc=686
2031         # It's a bit difficult to determine the correct type of Family 6
2032         # AMD CPUs just from their signature. Instead, we check directly
2033         # whether it supports SSE.
2034         if test "$_sse" = yes; then
2035             # gcc treats athlon-xp, athlon-4 and athlon-mp similarly.
2036             proc=athlon-xp
2037         else
2038             # Again, gcc treats athlon and athlon-tbird similarly.
2039             proc=athlon
2040         fi
2041         ;;
2042     15) iproc=686
2043         # k8 CPU type only supported in gcc >= 3.4.0, but that will be
2044         # caught and remedied in the optimization tests below.
2045         proc=k8
2046         ;;
2047
2048     *) proc=amdfam10 iproc=686
2049         test $_fast_clz = "auto" && _fast_clz=yes
2050         ;;
2051     esac
2052     ;;
2053   GenuineIntel)
2054     case "$pfamily" in
2055     3) proc=i386 iproc=386 ;;
2056     4) proc=i486 iproc=486 ;;
2057     5) iproc=586
2058         if test "$pmodel" -eq 4 || test "$pmodel" -eq 8; then
2059             proc=pentium-mmx # 4 is desktop, 8 is mobile
2060         else
2061             proc=i586
2062         fi
2063         ;;
2064     6) iproc=686
2065         if test "$pmodel" -eq 28 -o "$pmodel" -eq 38 -o "$pmodel" -eq 54; then
2066             proc=atom
2067         elif test "$pmodel" -ge 15; then
2068             proc=core2
2069         elif test "$pmodel" -eq 9 -o "$pmodel" -ge 13; then
2070             proc=pentium-m
2071         elif test "$pmodel" -ge 7; then
2072             proc=pentium3
2073         elif test "$pmodel" -ge 3; then
2074             proc=pentium2
2075         else
2076             proc=i686
2077         fi
2078         test $_fast_clz = "auto" && _fast_clz=yes
2079         ;;
2080     15) iproc=686
2081         # A nocona in 32-bit mode has no more capabilities than a prescott.
2082         if test "$pmodel" -ge 3; then
2083             proc=prescott
2084         else
2085             proc=pentium4
2086             test $_fast_clz = "auto" && _fast_clz=yes
2087         fi
2088         test $_fast_cmov = "auto" && _fast_cmov=no
2089         ;;
2090     *) proc=prescott iproc=686 ;;
2091     esac
2092     ;;
2093   CentaurHauls)
2094     case "$pfamily" in
2095     5) iproc=586
2096         if test "$pmodel" -ge 8; then
2097             proc=winchip2
2098         elif test "$pmodel" -ge 4; then
2099             proc=winchip-c6
2100         else
2101             proc=i586
2102         fi
2103         ;;
2104     6) iproc=686
2105         if test "$pmodel" -ge 9; then
2106             proc=c3-2
2107         else
2108             proc=c3
2109             iproc=586
2110         fi
2111         ;;
2112     *) proc=i686 iproc=i686 ;;
2113     esac
2114     ;;
2115   unknown)
2116     case "$pfamily" in
2117     3) proc=i386 iproc=386 ;;
2118     4) proc=i486 iproc=486 ;;
2119     *) proc=i586 iproc=586 ;;
2120     esac
2121     ;;
2122   *)
2123     proc=i586 iproc=586 ;;
2124   esac
2125   test $_fast_clz = "auto" && _fast_clz=no
2126   fi # test "$_runtime_cpudetection" = no
2127
2128
2129     # check that gcc supports our CPU, if not, fall back to earlier ones
2130     # LGB: check -mcpu and -march swithing step by step with enabling
2131     # to fall back till 386.
2132
2133     # gcc >= 3.4.0  doesn't support -mcpu, we have to use -mtune instead
2134
2135     if [ "$cc_vendor" = "gnu" ] && ([ "$_cc_major" -gt 3 ] || ( [ "$_cc_major" = 3 ] && [ "$_cc_minor" -ge 4 ])) ; then
2136         cpuopt=-mtune
2137     else
2138         cpuopt=-mcpu
2139     fi
2140
2141     echocheck "GCC & CPU optimization abilities"
2142   if test "$_runtime_cpudetection" = no ; then
2143     if test $cc_vendor != "intel" && test $cc_vendor != "clang" ; then
2144       cflag_check -march=native && proc=native
2145     fi
2146     if test "$proc" = "amdfam10"; then
2147       cflag_check -march=$proc $cpuopt=$proc || proc=k8
2148     fi
2149     if test "$proc" = "k8"; then
2150       cflag_check -march=$proc $cpuopt=$proc || proc=athlon-xp
2151     fi
2152     if test "$proc" = "athlon-xp"; then
2153       cflag_check -march=$proc $cpuopt=$proc || proc=athlon
2154     fi
2155     if test "$proc" = "k6-3" || test "$proc" = "k6-2"; then
2156       cflag_check -march=$proc $cpuopt=$proc  || proc=k6
2157     fi
2158     if test "$proc" = "k6" || test "$proc" = "c3"; then
2159       if ! cflag_check -march=$proc $cpuopt=$proc; then
2160         if cflag_check -march=i586 $cpuopt=i686; then
2161           proc=i586-i686
2162         else
2163           proc=i586
2164         fi
2165       fi
2166     fi
2167     if test "$proc" = "atom" ; then
2168       cflag_check -march=$proc $cpuopt=$proc || proc=core2
2169     fi
2170     if test "$proc" = "prescott" ; then
2171       cflag_check -march=$proc $cpuopt=$proc || proc=pentium4
2172     fi
2173     if test "$proc" = "core2" ; then
2174       cflag_check -march=$proc $cpuopt=$proc || proc=pentium-m
2175     fi
2176     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
2177       cflag_check -march=$proc $cpuopt=$proc  || proc=i686
2178     fi
2179     if test "$proc" = "i686" || test "$proc" = "pentium-mmx" || test "$proc" = "winchip-c6" || test "$proc" = "winchip2"; then
2180       cflag_check -march=$proc $cpuopt=$proc  || proc=i586
2181     fi
2182     if test "$proc" = "i586"; then
2183       cflag_check -march=$proc $cpuopt=$proc  || proc=i486
2184     fi
2185     if test "$proc" = "i486" ; then
2186       cflag_check -march=$proc $cpuopt=$proc  || proc=i386
2187     fi
2188     if test "$proc" = "i386" ; then
2189       cflag_check -march=$proc $cpuopt=$proc  || proc=error
2190     fi
2191     if test "$proc" = "error" ; then
2192         echores "CPU optimization disabled. CPU not recognized or your compiler is too old."
2193       _mcpu=""
2194       _march=""
2195       _optimizing=""
2196     elif test "$proc" = "i586-i686"; then
2197       _march="-march=i586"
2198       _mcpu="$cpuopt=i686"
2199       _optimizing="$proc"
2200     else
2201       _march="-march=$proc"
2202       _mcpu="$cpuopt=$proc"
2203       _optimizing="$proc"
2204     fi
2205   else # if test "$_runtime_cpudetection" = no
2206     _mcpu="$cpuopt=generic"
2207     # at least i486 required, for bswap instruction
2208     _march="-march=i486"
2209     cflag_check $_mcpu || _mcpu="$cpuopt=i686"
2210     cflag_check $_mcpu || _mcpu=""
2211     cflag_check $_march $_mcpu || _march=""
2212   fi
2213
2214     ## Gabucino : --target takes effect here (hopefully...) by overwriting
2215     ##             autodetected mcpu/march parameters
2216     if test "$_target" ; then
2217       # TODO: it may be a good idea to check GCC and fall back in all cases
2218       if test "$host_arch" = "i586-i686"; then
2219         _march="-march=i586"
2220         _mcpu="$cpuopt=i686"
2221       else
2222         _march="-march=$host_arch"
2223         _mcpu="$cpuopt=$host_arch"
2224       fi
2225
2226       proc="$host_arch"
2227
2228       case "$proc" in
2229         i386) iproc=386 ;;
2230         i486) iproc=486 ;;
2231         i586|k5|k6|k6-2|k6-3|pentium|pentium-mmx) iproc=586 ;;
2232         i686|athlon*|pentium*) iproc=686 ;;
2233         *) iproc=586 ;;
2234       esac
2235     fi
2236
2237     if test $_cmov = "yes" && test $_fast_cmov = "auto" ; then
2238         _fast_cmov="yes"
2239     else
2240         _fast_cmov="no"
2241     fi
2242     test $_fast_clz = "auto" && _fast_clz=yes
2243
2244     echores "$proc"
2245     ;;
2246
2247   ia64)
2248     arch='ia64'
2249     def_fast_64bit='#define HAVE_FAST_64BIT 1'
2250     iproc='ia64'
2251     ;;
2252
2253   x86_64|amd64)
2254     arch='x86'
2255     subarch='x86_64'
2256     def_fast_unaligned='#define HAVE_FAST_UNALIGNED 1'
2257     def_av_fast_unaligned='#define AV_HAVE_FAST_UNALIGNED 1'
2258     def_local_aligned_8='#define HAVE_LOCAL_ALIGNED_8 1'
2259     def_local_aligned_16='#define HAVE_LOCAL_ALIGNED_16 1'
2260     def_fast_64bit='#define HAVE_FAST_64BIT 1'
2261     iproc='x86_64'
2262
2263     # gcc >= 3.4.0  doesn't support -mcpu, we have to use -mtune instead
2264     if test "$cc_vendor" = "gnu" && test "$_cc_major" -gt 3 -o "$_cc_major" -eq 3 -a "$_cc_minor" -ge 4 ; then
2265         cpuopt=-mtune
2266     else
2267         cpuopt=-mcpu
2268     fi
2269     if test "$_runtime_cpudetection" = no ; then
2270       case "$pvendor" in
2271       AuthenticAMD)
2272         case "$pfamily" in
2273         15) proc=k8
2274           test $_fast_clz = "auto" && _fast_clz=no
2275           ;;
2276         *) proc=amdfam10;;
2277         esac
2278         ;;
2279       GenuineIntel)
2280         case "$pfamily" in
2281         6)
2282           if test "$pmodel" -eq 28 -o "$pmodel" -eq 38 -o "$pmodel" -eq 54; then
2283             proc=atom
2284           elif test "$pmodel" -ge 42; then
2285             proc=corei7-avx
2286           elif test "$pmodel" -ge 26; then
2287             proc=corei7
2288           else
2289             proc=core2
2290           fi
2291           ;;
2292         *)
2293           # 64-bit prescotts exist, but as far as GCC is concerned they
2294           # have the same capabilities as a nocona.
2295           proc=nocona
2296           test $_fast_cmov = "auto" && _fast_cmov=no
2297           test $_fast_clz = "auto" && _fast_clz=no
2298           ;;
2299         esac
2300         ;;
2301       *)
2302         proc=error;;
2303       esac
2304     fi # test "$_runtime_cpudetection" = no
2305
2306     echocheck "GCC & CPU optimization abilities"
2307     # This is a stripped-down version of the i386 fallback.
2308     if test "$_runtime_cpudetection" = no ; then
2309       if test $cc_vendor != "intel" && test $cc_vendor != "clang" ; then
2310         cflag_check -march=native && proc=native
2311       fi
2312       # --- AMD processors ---
2313       if test "$proc" = "amdfam10"; then
2314         cflag_check -march=$proc $cpuopt=$proc || proc=k8
2315       fi
2316       if test "$proc" = "k8"; then
2317         cflag_check -march=$proc $cpuopt=$proc || proc=athlon-xp
2318       fi
2319       # This will fail if gcc version < 3.3, which is OK because earlier
2320       # versions don't really support 64-bit on amd64.
2321       # Is this a valid assumption? -Corey
2322       if test "$proc" = "athlon-xp"; then
2323         cflag_check -march=$proc $cpuopt=$proc || proc=error
2324       fi
2325       # --- Intel processors ---
2326       if test "$proc" = "atom" || test "$proc" = "corei7-avx" || test "$proc" = "corei7"; then
2327         cflag_check -march=$proc $cpuopt=$proc || proc=core2
2328       fi
2329       if test "$proc" = "core2"; then
2330         cflag_check -march=$proc $cpuopt=$proc || proc=x86-64
2331       fi
2332       if test "$proc" = "x86-64"; then
2333         cflag_check -march=$proc $cpuopt=$proc || proc=nocona
2334       fi
2335       if test "$proc" = "nocona"; then
2336         cflag_check -march=$proc $cpuopt=$proc || proc=pentium4
2337       fi
2338       if test "$proc" = "pentium4"; then
2339         cflag_check -march=$proc $cpuopt=$proc || proc=error
2340       fi
2341
2342       _march="-march=$proc"
2343       _mcpu="$cpuopt=$proc"
2344       if test "$proc" = "error" ; then
2345         echores "CPU optimization disabled. CPU not recognized or your compiler is too old."
2346         _mcpu=""
2347         _march=""
2348       fi
2349     else # if test "$_runtime_cpudetection" = no
2350       # x86-64 is an undocumented option, an intersection of k8 and nocona.
2351       _march="-march=x86-64"
2352       _mcpu="$cpuopt=generic"
2353       cflag_check $_mcpu || _mcpu="x86-64"
2354       cflag_check $_mcpu || _mcpu=""
2355       cflag_check $_march $_mcpu || _march=""
2356     fi
2357
2358     _optimizing="$proc"
2359     test $_fast_cmov = "auto" && _fast_cmov=yes
2360     test $_fast_clz = "auto" && _fast_clz=yes
2361
2362     echores "$proc"
2363     ;;
2364
2365   sparc|sparc64)
2366     arch='sparc'
2367     iproc='sparc'
2368     if test "$host_arch" = "sparc64" ; then
2369       _vis='yes'
2370       proc='ultrasparc'
2371       def_fast_64bit='#define HAVE_FAST_64BIT 1'
2372     elif sunos ; then
2373         echocheck "CPU type"
2374         karch=$(uname -m)
2375         case "$(echo $karch)" in
2376             sun4) proc=v7 ;;
2377             sun4c) proc=v7 ;;
2378             sun4d) proc=v8 ;;
2379             sun4m) proc=v8 ;;
2380             sun4u) proc=ultrasparc _vis='yes' ;;
2381             sun4v) proc=v9 ;;
2382             *) proc=v8 ;;
2383         esac
2384         echores "$proc"
2385     else
2386         proc=v8
2387     fi
2388     _mcpu="-mcpu=$proc"
2389     _optimizing="$proc"
2390     ;;
2391
2392   arm*)
2393     arch='arm'
2394     iproc='arm'
2395     ;;
2396
2397   avr32)
2398     arch='avr32'
2399     def_fast_unaligned='#define HAVE_FAST_UNALIGNED 1'
2400     def_av_fast_unaligned='#define AV_HAVE_FAST_UNALIGNED 1'
2401     iproc='avr32'
2402     test $_fast_clz = "auto" && _fast_clz=yes
2403     ;;
2404
2405   sh|sh4)
2406     arch='sh4'
2407     iproc='sh4'
2408     ;;
2409
2410   ppc*|powerpc*)
2411     arch='ppc'
2412     def_dcbzl='#define HAVE_DCBZL 0'
2413     def_fast_unaligned='#define HAVE_FAST_UNALIGNED 1'
2414     def_av_fast_unaligned='#define AV_HAVE_FAST_UNALIGNED 1'
2415     def_local_aligned_8='#define HAVE_LOCAL_ALIGNED_8 1'
2416     def_local_aligned_16='#define HAVE_LOCAL_ALIGNED_16 1'
2417     iproc='ppc'
2418
2419     if test "$host_arch" = "ppc64" ; then
2420       subarch='ppc64'
2421       def_fast_64bit='#define HAVE_FAST_64BIT 1'
2422     fi
2423     echocheck "CPU type"
2424     case $system_name in
2425       Linux)
2426         proc=$($_cpuinfo | grep 'cpu' | cut -d ':' -f 2 | cut -d ',' -f 1 | cut -b 2- | head -n 1)
2427         if test -n "$($_cpuinfo | grep altivec)"; then
2428             test $_altivec = auto && _altivec=yes
2429         fi
2430         ;;
2431       Darwin)
2432         proc=$($_cpuinfo | grep "Processor type" | cut -f 3 -d ' ' | sed 's/ppc//')
2433         if [ $(sysctl -n hw.vectorunit) -eq 1 -o \
2434             "$(sysctl -n hw.optional.altivec 2> /dev/null)" = "1" ]; then
2435             test $_altivec = auto && _altivec=yes
2436         fi
2437         ;;
2438       NetBSD)
2439         # only gcc 3.4 works reliably with AltiVec code under NetBSD
2440         case $cc_version in
2441             2*|3.0*|3.1*|3.2*|3.3*)
2442                 ;;
2443             *)
2444                 if [ $(sysctl -n machdep.altivec) -eq 1 ]; then
2445                     test $_altivec = auto && _altivec=yes
2446                 fi
2447                 ;;
2448         esac
2449         ;;
2450       AIX)
2451         proc=$($_cpuinfo | grep 'type' | cut -f 2 -d ' ' | sed 's/PowerPC_//')
2452         ;;
2453     esac
2454     if test "$_altivec" = yes; then
2455         echores "$proc altivec"
2456     else
2457         _altivec=no
2458         echores "$proc"
2459     fi
2460
2461     echocheck "GCC & CPU optimization abilities"
2462
2463     if test -n "$proc"; then
2464         case "$proc" in
2465             601) _march='-mcpu=601' _mcpu='-mtune=601' ;;
2466             603) _march='-mcpu=603' _mcpu='-mtune=603' ;;
2467             603e|603ev) _march='-mcpu=603e' _mcpu='-mtune=603e' ;;
2468             604|604e|604r|604ev) _march='-mcpu=604' _mcpu='-mtune=604' ;;
2469             740|740/750|745/755) _march='-mcpu=740' _mcpu='-mtune=740' ;;
2470             750|750CX) _march='-mcpu=750' _mcpu='-mtune=750' ;;
2471             POWER)  _march='-mcpu=power'  _mcpu='-mtune=power'  ;;
2472             POWER2) _march='-mcpu=power2' _mcpu='-mtune=power2' ;;
2473             POWER3) _march='-mcpu=power3' _mcpu='-mtune=power3' ;;
2474             *) ;;
2475         esac
2476         # gcc 3.1(.1) and up supports 7400 and 7450
2477         if test "$_cc_major" -ge "3" && test "$_cc_minor" -ge "1" || test "$_cc_major" -ge "4"; then
2478             case "$proc" in
2479                 7400*|7410*) _march='-mcpu=7400' _mcpu='-mtune=7400' ;;
2480                 7447*|7450*|7455*) _march='-mcpu=7450' _mcpu='-mtune=7450' ;;
2481                 *) ;;
2482             esac
2483         fi
2484         # gcc 3.2 and up supports 970
2485         if test "$_cc_major" -ge "3" && test "$_cc_minor" -ge "3" || test "$_cc_major" -ge "4"; then
2486             case "$proc" in
2487                 970*|PPC970*) _march='-mcpu=970' _mcpu='-mtune=970'
2488                       def_dcbzl='#define HAVE_DCBZL 1' ;;
2489                 *) ;;
2490             esac
2491         fi
2492         # gcc 3.3 and up supports POWER4
2493         if test "$_cc_major" -ge "3" && test "$_cc_minor" -ge "3" || test "$_cc_major" -ge "4"; then
2494             case "$proc" in
2495                 POWER4) _march='-mcpu=power4' _mcpu='-mtune=power4' ;;
2496                 *) ;;
2497             esac
2498         fi
2499         # gcc 3.4 and up supports 440*
2500         if test "$_cc_major" -ge "3" && test "$_cc_minor" -ge "4" || test "$_cc_major" -ge "4"; then
2501             case "$proc" in
2502                 440EP*) _march='-mcpu=440fp' _mcpu='-mtune=440fp' ;;
2503                 440G* ) _march='-mcpu=440'   _mcpu='-mtune=440'   ;;
2504                 *) ;;
2505             esac
2506         fi
2507         # gcc 4.0 and up supports POWER5
2508         if test "$_cc_major" -ge "4"; then
2509             case "$proc" in
2510                 POWER5*) _march='-mcpu=power5' _mcpu='-mtune=power5' ;;
2511                 *) ;;
2512             esac
2513         fi
2514     fi
2515
2516     if test -n "$_mcpu"; then
2517         _optimizing=$(echo $_mcpu | cut -c 8-)
2518         echores "$_optimizing"
2519     else
2520         echores "none"
2521     fi
2522
2523     test $_fast_clz = "auto" && _fast_clz=yes
2524
2525     ;;
2526
2527   alpha*)
2528     arch='alpha'
2529     iproc='alpha'
2530
2531     echocheck "CPU type"
2532     cat > $TMPC << EOF
2533 int main(void) {
2534     unsigned long ver, mask;
2535     __asm__ ("implver %0" : "=r" (ver));
2536     __asm__ ("amask %1, %0" : "=r" (mask) : "r" (-1));
2537     printf("%ld-%x\n", ver, ~mask);
2538     return 0;
2539 }
2540 EOF
2541     $_cc -o "$TMPEXE" "$TMPC"
2542     case $("$TMPEXE") in
2543
2544         0-0)    proc="ev4";   _mvi="0";;
2545         1-0)    proc="ev5";   _mvi="0";;
2546         1-1)    proc="ev56";  _mvi="0";;
2547         1-101)  proc="pca56"; _mvi="1";;
2548         2-303)  proc="ev6";   _mvi="1";;
2549         2-307)  proc="ev67";  _mvi="1";;
2550         2-1307) proc="ev68";  _mvi="1";;
2551     esac
2552     echores "$proc"
2553
2554     echocheck "GCC & CPU optimization abilities"
2555     if test "$proc" = "ev68" ; then
2556       cc_check -mcpu=$proc || proc=ev67
2557     fi
2558     if test "$proc" = "ev67" ; then
2559       cc_check -mcpu=$proc || proc=ev6
2560     fi
2561     _mcpu="-mcpu=$proc"
2562     echores "$proc"
2563
2564     test $_fast_clz = "auto" && _fast_clz=yes
2565
2566     _optimizing="$proc"
2567     ;;
2568
2569   mips*)
2570     arch='mips'
2571     iproc='mips'
2572
2573     if irix ; then
2574         echocheck "CPU type"
2575         proc=$(hinv -c processor | grep CPU | cut -d " " -f3)
2576         case "$(echo $proc)" in
2577             R3000) _march='-mips1' _mcpu='-mtune=r2000' ;;
2578             R4000) _march='-mips3' _mcpu='-mtune=r4000' ;;
2579             R4400) _march='-mips3' _mcpu='-mtune=r4400' ;;
2580             R4600) _march='-mips3' _mcpu='-mtune=r4600' ;;
2581             R5000) _march='-mips4' _mcpu='-mtune=r5000' ;;
2582             R8000|R10000|R12000|R14000|R16000) _march='-mips4' _mcpu='-mtune=r8000' ;;
2583         esac
2584         # gcc < 3.x does not support -mtune.
2585         if test "$cc_vendor" = "gnu" && test "$_cc_major" -lt 3 ; then
2586             _mcpu=''
2587         fi
2588         echores "$proc"
2589     fi
2590
2591     test $_fast_clz = "auto" && _fast_clz=yes
2592
2593     ;;
2594
2595   hppa)
2596     arch='pa_risc'
2597     iproc='PA-RISC'
2598     ;;
2599
2600   s390)
2601     arch='s390'
2602     iproc='390'
2603     ;;
2604
2605   s390x)
2606     arch='s390x'
2607     iproc='390x'
2608     ;;
2609
2610   vax)
2611     arch='vax'
2612     iproc='vax'
2613     ;;
2614
2615   xtensa)
2616     arch='xtensa'
2617     iproc='xtensa'
2618     ;;
2619
2620   generic)
2621     arch='generic'
2622     ;;
2623
2624   *)
2625     echo "The architecture of your CPU ($host_arch) is not supported by this configure script"
2626     echo "It seems nobody has ported MPlayer to your OS or CPU type yet."
2627     die "unsupported architecture $host_arch"
2628     ;;
2629 esac # case "$host_arch" in
2630
2631 if test "$_runtime_cpudetection" = yes ; then
2632   if x86 ; then
2633     test "$_cmov"     != no && _cmov=yes
2634     x86_32 && _cmov=no
2635     test "$_mmx"      != no && _mmx=yes
2636     test "$_3dnow"    != no && _3dnow=yes
2637     test "$_3dnowext" != no && _3dnowext=yes
2638     test "$_mmxext"   != no && _mmxext=yes
2639     test "$_sse"      != no && _sse=yes
2640     test "$_sse2"     != no && _sse2=yes
2641     test "$_sse3"     != no && _sse3=yes
2642     test "$_ssse3"    != no && _ssse3=yes
2643     test "$_sse4_1"   != no && _sse4_1=yes
2644     test "$_sse4_2"   != no && _sse4_2=yes
2645     test "$_avx"      != no && _avx=yes
2646     test "$_mtrr"     != no && _mtrr=yes
2647   fi
2648   if ppc; then
2649     _altivec=yes
2650   fi
2651 fi
2652
2653
2654 # endian testing
2655 echocheck "byte order"
2656 if test "$_big_endian" = auto ; then
2657   cat > $TMPC <<EOF
2658 short ascii_name[] = {
2659   'M' << 8 | 'P', 'l' << 8 | 'a', 'y' << 8 | 'e', 'r' << 8 | 'B',
2660   'i' << 8 | 'g', 'E' << 8 | 'n', 'd' << 8 | 'i', 'a' << 8 | 'n', 0 };
2661 int main(void) { return (long)ascii_name; }
2662 EOF
2663   if cc_check ; then
2664     # stdin is used to make "strings" not try something clever like
2665     # parse executable section headers (and possibly fail in the process)
2666     if strings < $TMPEXE | grep -q -l MPlayerBigEndian ; then
2667       _big_endian=yes
2668     else
2669       _big_endian=no
2670     fi
2671   else
2672     echo ${_echo_n} "failed to autodetect byte order, defaulting to ${_echo_c}"
2673   fi
2674 fi
2675 if test "$_big_endian" = yes ; then
2676   _byte_order='big-endian'
2677   def_bigendian='#define HAVE_BIGENDIAN 1'
2678   def_av_bigendian='#define AV_HAVE_BIGENDIAN 1'
2679 else
2680   _byte_order='little-endian'
2681   def_bigendian='#define HAVE_BIGENDIAN 0'
2682   def_av_bigendian='#define AV_HAVE_BIGENDIAN 0'
2683 fi
2684 echores "$_byte_order"
2685
2686
2687 echocheck "extern symbol prefix"
2688 cat > $TMPC << EOF
2689 int ff_extern;
2690 EOF
2691 cc_check -c || die "Symbol mangling check failed."
2692 sym=$($_nm -P -g $TMPEXE)
2693 extern_prefix=${sym%%ff_extern*}
2694 def_extern_asm="#define EXTERN_ASM $extern_prefix"
2695 def_extern_prefix="#define EXTERN_PREFIX \"$extern_prefix\""
2696 echores $extern_prefix
2697
2698
2699 echocheck "assembler support of -pipe option"
2700 # -I. helps to detect compilers that just misunderstand -pipe like Sun C
2701 cflag_check -pipe -I. && _pipe="-pipe" && echores "yes" || echores "no"
2702
2703
2704 if darwin && test "$cc_vendor" = "gnu" ; then
2705 echocheck "GCC support of -mstackrealign"
2706 # GCC 4.2 and some earlier Apple versions support this flag on x86. Since
2707 # Mac OS X/Intel has an ABI different from Windows this is needed to avoid
2708 # crashes when loading Win32 DLLs. Unfortunately some gcc versions create
2709 # wrong code with this flag, but this can be worked around by adding
2710 # -fno-unit-at-a-time as described in the blog post at
2711 # http://www.dribin.org/dave/blog/archives/2006/12/05/missing_third_param/
2712 cat > $TMPC << EOF
2713 __attribute__((noinline)) static int foo3(int i1, int i2, int i3) { return i3; }
2714 int main(void) { return foo3(1, 2, 3) == 3 ? 0 : 1; }
2715 EOF
2716   cc_check -O4 -mstackrealign && tmp_run && cflags_stackrealign=-mstackrealign
2717   test -z "$cflags_stackrealign" && cc_check -O4 -mstackrealign -fno-unit-at-a-time &&
2718     tmp_run && cflags_stackrealign="-mstackrealign -fno-unit-at-a-time"
2719   test -n "$cflags_stackrealign" && echores "yes" || echores "no"
2720 fi # if darwin && test "$cc_vendor" = "gnu" ; then
2721
2722
2723 # Checking for CFLAGS
2724 _install_strip="-s"
2725 if test "$_profile" != "" || test "$_debug" != "" ; then
2726   CFLAGS="-O2 $_march $_mcpu $_pipe $_debug $_profile"
2727   WARNFLAGS="-W -Wall"
2728   _install_strip=
2729 elif test -z "$CFLAGS" ; then
2730   if test "$cc_vendor" = "intel" ; then
2731     CFLAGS="-O2 $_march $_mcpu $_pipe -fomit-frame-pointer"
2732     WARNFLAGS="-wd167 -wd556 -wd144"
2733   elif test "$cc_vendor" = "sun" ; then
2734     CFLAGS="-O2 $_march $_mcpu $_pipe -xc99 -xregs=frameptr"
2735   elif test "$cc_vendor" = "clang"; then
2736     CFLAGS="-O2 $_march $_pipe"
2737   elif test "$cc_vendor" != "gnu" ; then
2738     CFLAGS="-O2 $_march $_mcpu $_pipe"
2739   else
2740     CFLAGS="-O4 $_march $_mcpu $_pipe -ffast-math -fomit-frame-pointer"
2741     WARNFLAGS="-Wall -Wno-switch -Wno-parentheses -Wpointer-arith -Wredundant-decls"
2742     WARN_CFLAGS="-Werror-implicit-function-declaration"
2743     extra_ldflags="$extra_ldflags -ffast-math"
2744   fi
2745 else
2746   warn_cflags=yes
2747 fi
2748
2749 CFLAGS="-D_ISOC99_SOURCE -I. -Iffmpeg $CFLAGS"
2750 HOSTCFLAGS="-D_ISOC99_SOURCE -I. -Iffmpeg -O3"
2751
2752 # On glibc, add some more CPPFLAGS for enabling required functionality.
2753 cpp_condition_check features.h "defined __GLIBC__" &&
2754   CFLAGS="-D_POSIX_C_SOURCE=200112 -D_XOPEN_SOURCE=600 $CFLAGS" &&
2755   HOSTCFLAGS="-D_POSIX_C_SOURCE=200112 -D_XOPEN_SOURCE=600 $HOSTCFLAGS" &&
2756
2757 if test "$cc_vendor" = "gnu" ; then
2758   cflag_check -fno-tree-vectorize && CFLAGS="$CFLAGS -fno-tree-vectorize"
2759   cflag_check -Wundef && WARNFLAGS="-Wundef $WARNFLAGS"
2760   cflag_check -std=gnu99 && WARN_CFLAGS="-std=gnu99 $WARN_CFLAGS"
2761   cflag_check -Wdeclaration-after-statement && WARN_CFLAGS="-Wdeclaration-after-statement $WARN_CFLAGS"
2762   cflag_check -Wno-pointer-sign && WARN_CFLAGS="-Wno-pointer-sign $WARN_CFLAGS"
2763   cflag_check -Wdisabled-optimization && WARN_CFLAGS="-Wdisabled-optimization $WARN_CFLAGS"
2764   cflag_check -Wmissing-prototypes && WARN_CFLAGS="-Wmissing-prototypes $WARN_CFLAGS"
2765   cflag_check -Wstrict-prototypes && WARN_CFLAGS="-Wstrict-prototypes $WARN_CFLAGS"
2766 fi
2767
2768 cflag_check -mno-omit-leaf-frame-pointer && cflags_no_omit_leaf_frame_pointer="-mno-omit-leaf-frame-pointer"
2769 cflag_check -MMD -MP && DEPFLAGS="-MMD -MP"
2770
2771
2772 if test -n "$LDFLAGS" ; then
2773   extra_ldflags="$extra_ldflags $LDFLAGS"
2774   warn_cflags=yes
2775 elif test "$cc_vendor" = "intel" ; then
2776   extra_ldflags="$extra_ldflags -i-static"
2777 fi
2778 if test -n "$CPPFLAGS" ; then
2779   extra_cflags="$extra_cflags $CPPFLAGS"
2780   warn_cflags=yes
2781 fi
2782
2783
2784 # try to create a relocatable binary by default
2785 echocheck "relocatable binary"
2786 if test $relocatable = "auto" ; then
2787   if test -n "$ld_static" ; then
2788     relocatable=no
2789     res_comment="PIE + static assumed to be broken"
2790   elif x86_32 && cflag_check -pie ; then
2791     extra_ldflags="$extra_ldflags -pie"
2792     relocatable=yes
2793     res_comment="non-PIC"
2794   elif x86_64 && cflag_check -fpie -pie ; then
2795     extra_ldflags="$extra_ldflags -fpie -pie"
2796     extra_cflags="$extra_cflags -fpie"
2797     relocatable=yes
2798     res_comment="fast PIC"
2799   else
2800     relocatable=no
2801     res_comment="unavailable or untested architecture"
2802   fi
2803 elif test $relocatable = "yes" ; then
2804   if return_check "stdint.h" '(intptr_t)"test" >> 16' -pie ; then
2805     extra_ldflags="$extra_ldflags -pie"
2806     res_comment="non-PIC"
2807   else
2808     extra_ldflags="$extra_ldflags -fpie -pie"
2809     extra_cflags="$extra_cflags -fpie"
2810     res_comment="possibly slow PIC!"
2811   fi
2812 fi
2813 echores $relocatable
2814
2815 if x86_32 ; then
2816   # Checking assembler (_as) compatibility...
2817   # Added workaround for older as that reads from stdin by default - atmos
2818   as_version=$(echo '' | $_as -version 2>&1 | sed -n 's/^.*assembler \(version \)*\([0-9.]*\).*$/\2/p')
2819   echocheck "assembler ($_as $as_version)"
2820
2821   _pref_as_version='2.9.1'
2822   echo 'nop' > $TMPS
2823   if test "$_mmx" = yes ; then
2824     echo 'emms' >> $TMPS
2825   fi
2826   if test "$_3dnow" = yes ; then
2827     _pref_as_version='2.10.1'
2828     echo 'femms' >> $TMPS
2829   fi
2830   if test "$_3dnowext" = yes ; then
2831     _pref_as_version='2.10.1'
2832     echo 'pswapd %mm0, %mm0' >> $TMPS
2833   fi
2834   if test "$_mmxext" = yes ; then
2835     _pref_as_version='2.10.1'
2836     echo 'movntq %mm0, (%eax)' >> $TMPS
2837   fi
2838   if test "$_sse" = yes ; then
2839     _pref_as_version='2.10.1'
2840     echo 'xorps %xmm0, %xmm0' >> $TMPS
2841   fi
2842   #if test "$_sse2" = yes ; then
2843   #  _pref_as_version='2.11'
2844   #  echo 'xorpd %xmm0, %xmm0' >> $TMPS
2845   #fi
2846   if test "$_cmov" = yes ; then
2847     _pref_as_version='2.10.1'
2848     echo 'cmovb %eax, %ebx' >> $TMPS
2849   fi
2850   if test "$_ssse3" = yes ; then
2851     _pref_as_version='2.16.92'
2852     echo 'pabsd %xmm0, %xmm1' >> $TMPS
2853   fi
2854   $_as $TMPS -o $TMPEXE > /dev/null 2>&1 || as_verc_fail=yes
2855
2856   if test "$as_verc_fail" != yes ; then
2857     echores "ok"
2858   else
2859     res_comment="Upgrade binutils to ${_pref_as_version} or use --disable-ssse3 etc."
2860     echores "failed"
2861     die "obsolete binutils version"
2862   fi
2863
2864 fi #if x86_32
2865
2866
2867 # Check if we need to compile as PIC for this combination of architecture, toolchain,
2868 # gcc configuration (e.g. hardened or not) and compiler options.
2869 # Needs to be after the relocatable handling, since PIE changes whether we need PIC or not.
2870 echocheck "PIC"
2871 def_pic='#define CONFIG_PIC 0'
2872 pic=no
2873 cpp_condition_check '' 'defined(__PIC__) || defined(__pic__) || defined(PIC)' && pic=yes
2874 # This check is needed to work around issues with clang on OSX when compiling 64 bit relocatable binaries.
2875 if x86_64 && test "$relocatable" = "yes" && test "$pic" = "no"; then
2876   res_comment="Broken compiler incorrectly claims PIC not necessary for PIE"
2877   pic=yes
2878 fi
2879 echores $pic
2880 if test "$pic" = "yes" ; then
2881   extra_cflags="$extra_cflags -DPIC" && def_pic='#define CONFIG_PIC 1'
2882 fi
2883
2884
2885 def_bswap='#define HAVE_BSWAP 0'
2886 def_ebx_available='#define HAVE_EBX_AVAILABLE 0'
2887 def_xmm_clobbers='#define HAVE_XMM_CLOBBERS 0'
2888
2889 if x86_64 ; then
2890 inline_asm_check '"mov (%eax), %eax"' || die "Your binutils version is too old to compile for 64-bit (on OSX try --cc=clang)"
2891 fi
2892
2893 if x86 ; then
2894
2895 echocheck ".align is a power of two"
2896 if test "$_asmalign_pot" = auto ; then
2897 _asmalign_pot=no
2898 inline_asm_check '".align 3"' && _asmalign_pot=yes
2899 fi
2900 if test "$_asmalign_pot" = "yes" ; then
2901   def_asmalign_pot='#define ASMALIGN(ZEROBITS) ".align " #ZEROBITS "\n\t"'
2902 else
2903   def_asmalign_pot='#define ASMALIGN(ZEROBITS) ".align 1<<" #ZEROBITS "\n\t"'
2904 fi
2905 echores $_asmalign_pot
2906
2907
2908 echocheck "ebx availability"
2909 ebx_available=no
2910 cat > $TMPC << EOF
2911 int main(void) {
2912     int x;
2913     __asm__ volatile(
2914         "xor %0, %0"
2915         :"=b"(x)
2916         // just adding ebx to clobber list seems unreliable with some
2917         // compilers, e.g. Haiku's gcc 2.95
2918     );
2919     // and the above check does not work for OSX 64 bit...
2920     __asm__ volatile("":::"%ebx");
2921     return 0;
2922 }
2923 EOF
2924 cc_check && ebx_available=yes && def_ebx_available='#define HAVE_EBX_AVAILABLE 1'
2925 echores $ebx_available
2926
2927
2928 echocheck "yasm"
2929 if test -z "$YASMFLAGS" ; then
2930   if darwin ; then
2931     x86_64 && objformat="macho64" || objformat="macho"
2932   elif win32 && ! wine ; then
2933     objformat="win32"
2934   elif os2 ; then
2935     _yasm=nasm
2936     objformat="aout"
2937   else
2938     objformat="elf"
2939   fi
2940   yasmdefines=""
2941   # currently tested for Linux x86, x86_64
2942   test "$pic" = "yes"      && yasmdefines="$yasmdefines -DPIC"
2943   test -n "$extern_prefix" && yasmdefines="$yasmdefines -DPREFIX"
2944
2945   YASMFLAGS="-f $objformat $yasmdefines"
2946   x86_64 && YASMFLAGS="$YASMFLAGS -m amd64"
2947   case "$objformat" in
2948     elf) test $_debug && YASMFLAGS="$YASMFLAGS -g dwarf2" ;;
2949   esac
2950 else
2951   warn_cflags=yes
2952 fi
2953
2954 echo "pextrd [eax], xmm0, 1" > $TMPS
2955 yasm_features_all="cpunop"
2956 if test "$_yasm" ; then
2957   if ! yasm_check ; then
2958     if x86_64 ; then
2959       case "$objformat" in
2960         elf)   objformat=elf64 ;;
2961         win32) objformat=win64 ;;
2962       esac
2963     fi
2964     YASMFLAGS="-f $objformat $yasmdefines"
2965     yasm_check || die "yasm not found, use --yasm='' if you really want to compile without"
2966     echo "CPU amdnop" > $TMPS
2967     yasm_check && yasm_features="cpunop"
2968   fi
2969 fi
2970 if test $_yasm ; then
2971   def_yasm='#define HAVE_YASM 1'
2972   have_yasm="yes"
2973   echores "$_yasm"
2974 else
2975   def_yasm='#define HAVE_YASM 0'
2976   have_yasm="no"
2977   echores "no"
2978 fi
2979
2980 echocheck "bswap"
2981 echo 'bswap %eax' > $TMPS
2982 $_as $TMPS -o $TMPEXE > /dev/null 2>&1 && def_bswap='#define HAVE_BSWAP 1' && bswap=yes || bswap=no
2983 echores "$bswap"
2984
2985
2986 echocheck "xmm clobbers"
2987 inline_asm_check '"":::"%xmm0"' &&
2988   def_xmm_clobbers='#define HAVE_XMM_CLOBBERS 1' &&
2989   xmm_clobbers=yes || xmm_clobbers=no
2990 echores "$xmm_clobbers"
2991
2992 else
2993   _yasm=''
2994   def_yasm='#define HAVE_YASM 0'
2995   have_yasm="no"
2996 fi #if x86
2997
2998 #FIXME: This should happen before the check for CFLAGS..
2999 def_altivec_h='#define HAVE_ALTIVEC_H 0'
3000 if ppc && ( test "$_altivec" = yes || test "$_runtime_cpudetection" = yes ) ; then
3001
3002     # check if AltiVec is supported by the compiler, and how to enable it
3003     echocheck "GCC AltiVec flags"
3004     if $(cflag_check -maltivec -mabi=altivec) ; then
3005     _altivec_gcc_flags="-maltivec -mabi=altivec"
3006     # check if <altivec.h> should be included
3007         if $(header_check altivec.h $_altivec_gcc_flags) ; then
3008             def_altivec_h='#define HAVE_ALTIVEC_H 1'
3009             inc_altivec_h='#include <altivec.h>'
3010         else
3011             if $(cflag_check -faltivec) ; then
3012                 _altivec_gcc_flags="-faltivec"
3013             else
3014                 _altivec=no
3015                 _altivec_gcc_flags="none, AltiVec disabled"
3016             fi
3017         fi
3018     fi
3019     echores "$_altivec_gcc_flags"
3020
3021     # check if the compiler supports braces for vector declarations
3022     cat > $TMPC << EOF
3023 $inc_altivec_h
3024 int main(void) { (vector int) {1}; return 0; }
3025 EOF
3026     cc_check $_altivec_gcc_flags || die "You need a compiler that supports {} in AltiVec vector declarations."
3027
3028     # Disable runtime cpudetection if we cannot generate AltiVec code or
3029     # AltiVec is disabled by the user.
3030     test "$_runtime_cpudetection" = yes && test "$_altivec" = no \
3031         && _runtime_cpudetection=no
3032
3033     # Show that we are optimizing for AltiVec (if enabled and supported).
3034     test "$_runtime_cpudetection" = no && test "$_altivec" = yes \
3035         && _optimizing="$_optimizing altivec"
3036
3037     # If AltiVec is enabled, make sure the correct flags turn up in CFLAGS.
3038     test "$_altivec" = yes && CFLAGS="$CFLAGS $_altivec_gcc_flags"
3039 fi
3040
3041 if ppc ; then
3042 def_xform_asm='#define HAVE_XFORM_ASM 0'
3043 xform_asm=no
3044 echocheck "XFORM ASM support"
3045 inline_asm_check '"lwzx %1, %y0" :: "Z"(*(int*)0), "r"(0)' &&
3046   xform_asm=yes && def_xform_asm='#define HAVE_XFORM_ASM 1'
3047 echores "$xform_asm"
3048
3049 def_ibm_asm='#define HAVE_IBM_ASM 0'
3050 ibm_asm=no
3051 echocheck "IBM ASM support"
3052 inline_asm_check '"add 0, 0, 0"' &&
3053   ibm_asm=yes && def_ibm_asm='#define HAVE_IBM_ASM 1'
3054 echores "$ibm_asm"
3055
3056 def_gnu_as='#define HAVE_GNU_AS 0'
3057 gnu_as=no
3058 echocheck "GNU assembler"
3059 inline_asm_check '".macro m n\n\\n:.int 0\n.endm\nm x"' &&
3060   gnu_as=yes && def_gnu_as='#define HAVE_GNU_AS 1'
3061 echores "$gnu_as"
3062
3063 fi
3064
3065 if arm ; then
3066   echocheck "ARMv5TE (Enhanced DSP Extensions)"
3067   if test $_armv5te = "auto" ; then
3068     _armv5te=no
3069     inline_asm_check '"qadd r0, r0, r0"' && _armv5te=yes
3070   fi
3071   echores "$_armv5te"
3072
3073   test $_armv5te = "yes" && test $_fast_clz = "auto" && _fast_clz=yes
3074
3075   echocheck "ARMv6 (SIMD instructions)"
3076   if test $_armv6 = "auto" ; then
3077     _armv6=no
3078     inline_asm_check '"sadd16 r0, r0, r0"' && _armv6=yes
3079   fi
3080   echores "$_armv6"
3081
3082   echocheck "ARMv6t2 (SIMD instructions)"
3083   if test $_armv6t2 = "auto" ; then
3084     _armv6t2=no
3085     inline_asm_check '"movt r0, #0"' && _armv6t2=yes
3086   fi
3087   echores "$_armv6t2"
3088
3089   echocheck "ARM VFP"
3090   if test $_armvfp = "auto" ; then
3091     _armvfp=no
3092     inline_asm_check '"fadds s0, s0, s0"' && _armvfp=yes
3093   fi
3094   echores "$_armvfp"
3095
3096   echocheck "ARM VFPV3"
3097   if test $vfpv3 = "auto" ; then
3098     vfpv3=no
3099     inline_asm_check '"vmov.f32 s0, #1.0"' && vfpv3=yes
3100   fi
3101   echores "$vfpv3"
3102
3103   echocheck "softfloat ABI"
3104   softfloat=yes
3105   cpp_condition_check '' 'defined(__ARM_PCS_VFP) || (!defined(__ARM_PCS) && !defined(__SOFTFP__))' && softfloat=no
3106   if test $softfloat = "yes" ; then
3107     def_vfp_args='#define HAVE_VFP_ARGS 0'
3108   else
3109     def_vfp_args='#define HAVE_VFP_ARGS 1'
3110   fi
3111   echores "$softfloat"
3112
3113   echocheck "ARM NEON"
3114   if test $neon = "auto" ; then
3115     neon=no
3116     inline_asm_check '"vadd.i16 q0, q0, q0"' && neon=yes