Update to MPlayer SVN rev 30134 and FFmpeg SVN rev 20947.
[vaapi:mplayer.git] / .svn / text-base / configure.svn-base
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, here is a simple skeleton:
23 #
24 # echocheck "$feature"
25 # if test "$_feature" = auto; then
26 # cat > $TMPC << EOF
27 # #include <feature.h>
28 # int main(void) { return 0; }
29 # EOF
30 # _feature=no
31 # cc_check && _feature=yes
32 # fi
33 # if test "$_feature" = yes ; then
34 #   def_feature='#define CONFIG_FEATURE 1'
35 # else
36 #   def_feature='#undef CONFIG_FEATURE'
37 # fi
38 # echores "$_feature"
39 #
40 # Furthermore you need to add the variable _feature to the list of default
41 # settings and set it to one of yes/no/auto. Also add appropriate
42 # --enable-feature/--disable-feature command line options.
43 # The results of the check should be written to config.h and config.mak
44 # at the end of this script. The variable names used for this should be
45 # uniform, i.e. if the option is named 'feature':
46 #
47 # _feature     : should have a value of yes/no/auto
48 # def_feature  : '#define ... 1' or '#undef ...' for conditional compilation
49 # _ld_feature  : '-L/path/dir -lfeature' GCC options
50 #
51 #############################################################################
52
53 # Prevent locale nonsense from breaking basic text processing utils
54 export LC_ALL=C
55
56 # Store the configure line that was used
57 _configuration="$*"
58
59 # Prefer these macros to full length text !
60 # These macros only return an error code - NO display is done
61 compile_check() {
62   echo >> "$TMPLOG"
63   cat "$1" >> "$TMPLOG"
64   echo >> "$TMPLOG"
65   echo "$_cc $CFLAGS $extra_cflags $_ld_static $extra_ldflags $libs_mplayer $libs_mencoder -o $TMPEXE $@" >> "$TMPLOG"
66   rm -f "$TMPEXE"
67   $_cc $CFLAGS $extra_cflags $_ld_static $extra_ldflags $libs_mplayer $libs_mencoder -o "$TMPEXE" "$@" >> "$TMPLOG" 2>&1
68   TMPRES="$?"
69   echo >> "$TMPLOG"
70   echo >> "$TMPLOG"
71   return "$TMPRES"
72 }
73
74 cc_check() {
75   compile_check $TMPC $@
76 }
77
78 cxx_check() {
79   compile_check $TMPCPP $@ -lstdc++
80 }
81
82 yasm_check() {
83   echo >> "$TMPLOG"
84   cat "$TMPS" >> "$TMPLOG"
85   echo >> "$TMPLOG"
86   echo "$_yasm $YASMFLAGS -o $TMPEXE $TMPS $@" >> "$TMPLOG"
87   rm -f "$TMPEXE"
88   $_yasm $YASMFLAGS -o "$TMPEXE" "$TMPS" "$@" >> "$TMPLOG" 2>&1
89   TMPRES="$?"
90   echo >> "$TMPLOG"
91   echo >> "$TMPLOG"
92   return "$TMPRES"
93 }
94
95 tmp_run() {
96   "$TMPEXE" >> "$TMPLOG" 2>&1
97 }
98
99 # Display error message, flushes tempfile, exit
100 die () {
101   echo
102   echo "Error: $@" >&2
103   echo >&2
104   rm -f "$TMPEXE" "$TMPC" "$TMPS" "$TMPCPP"
105   echo "Check \"$TMPLOG\" if you do not understand why it failed."
106   exit 1
107 }
108
109 # OS test booleans functions
110 issystem() {
111   test "$(echo $system_name | tr A-Z a-z)" = "$(echo $1 | tr A-Z a-z)"
112 }
113 aix()       { issystem "AIX"; }
114 amigaos()   { issystem "AmigaOS"; }
115 beos()      { issystem "BEOS"; }
116 bsdos()     { issystem "BSD/OS"; }
117 cygwin()    { issystem "CYGWIN"; }
118 darwin()    { issystem "Darwin"; }
119 dragonfly() { issystem "DragonFly"; }
120 freebsd()   { issystem "FreeBSD" || issystem "GNU/kFreeBSD"; }
121 gnu()       { issystem "GNU"; }
122 hpux()      { issystem "HP-UX"; }
123 irix()      { issystem "IRIX"; }
124 linux()     { issystem "Linux"; }
125 mingw32()   { issystem "MINGW32"; }
126 morphos()   { issystem "MorphOS"; }
127 netbsd()    { issystem "NetBSD"; }
128 openbsd()   { issystem "OpenBSD"; }
129 os2()       { issystem "OS/2"; }
130 qnx()       { issystem "QNX"; }
131 sunos()     { issystem "SunOS"; }
132 win32()     { cygwin || mingw32; }
133
134 # arch test boolean functions
135 # x86/x86pc is used by QNX
136 x86_32() {
137   case "$host_arch" in
138     i[3-9]86|x86|x86pc|k5|k6|k6-2|k6-3|pentium*|athlon*|i586-i686) return 0 ;;
139     *) return 1 ;;
140   esac
141 }
142
143 x86_64() {
144   case "$host_arch" in
145     x86_64|amd64) return 0 ;;
146     *) return 1 ;;
147   esac
148 }
149
150 x86() {
151   x86_32 || x86_64
152 }
153
154 ppc() {
155   case "$host_arch" in
156     ppc|ppc64|powerpc|powerpc64) return 0;;
157     *) return 1;;
158   esac
159 }
160
161 alpha() {
162   case "$host_arch" in
163     alpha*) return 0;;
164     *) return 1;;
165   esac
166 }
167
168 arm() {
169   case "$host_arch" in
170     arm) return 0;;
171     *) return 1;;
172   esac
173 }
174
175 # Use this before starting a check
176 echocheck() {
177   echo "============ Checking for $@ ============" >> "$TMPLOG"
178   echo ${_echo_n} "Checking for $@ ... ${_echo_c}"
179 }
180
181 # Use this to echo the results of a check
182 echores() {
183   if test "$_res_comment" ; then
184     _res_comment="($_res_comment)"
185   fi
186   echo "Result is: $@ $_res_comment" >> "$TMPLOG"
187   echo "##########################################" >> "$TMPLOG"
188   echo "" >> "$TMPLOG"
189   echo "$@ $_res_comment"
190   _res_comment=""
191 }
192 #############################################################################
193
194 # Check how echo works in this /bin/sh
195 case $(echo -n) in
196   -n)   _echo_n=        _echo_c='\c'    ;;      # SysV echo
197   *)    _echo_n='-n '   _echo_c=        ;;      # BSD echo
198 esac
199
200 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")
201 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")
202 doc_lang_all=$(echo DOCS/xml/??/ DOCS/xml/??_??/ | sed -e "s:DOCS/xml/\(..\)/:\1:g" -e "s:DOCS/xml/\(.._..\)/:\1:g")
203
204 show_help(){
205 cat << EOF
206 Usage: $0 [OPTIONS]...
207
208 Configuration:
209   -h, --help             display this help and exit
210
211 Installation directories:
212   --prefix=DIR           prefix directory for installation [/usr/local]
213   --bindir=DIR           directory for installing binaries [PREFIX/bin]
214   --datadir=DIR          directory for installing machine independent
215                          data files (skins, etc) [PREFIX/share/mplayer]
216   --mandir=DIR           directory for installing man pages [PREFIX/share/man]
217   --confdir=DIR          directory for installing configuration files
218                          [PREFIX/etc/mplayer]
219   --libdir=DIR           directory for object code libraries [PREFIX/lib]
220   --codecsdir=DIR        directory for binary codecs [LIBDIR/codecs]
221   --win32codecsdir=DIR   directory for Windows DLLs [LIBDIR/codecs]
222   --xanimcodecsdir=DIR   directory for XAnim codecs [LIBDIR/codecs]
223   --realcodecsdir=DIR    directory for RealPlayer codecs [LIBDIR/codecs]
224
225 Optional features:
226   --disable-mencoder     disable MEncoder (A/V encoder) compilation [enable]
227   --disable-mplayer      disable MPlayer compilation [enable]
228   --enable-gui           enable GMPlayer compilation (GTK+ GUI) [disable]
229   --enable-gtk1          force using GTK 1.2 for the GUI  [disable]
230   --disable-largefiles   disable support for files > 2GB [enable]
231   --enable-linux-devfs   set default devices to devfs [disable]
232   --enable-termcap       use termcap database for key codes [autodetect]
233   --enable-termios       use termios database for key codes [autodetect]
234   --disable-iconv        disable iconv for encoding conversion [autodetect]
235   --disable-langinfo     do not use langinfo [autodetect]
236   --enable-lirc          enable LIRC (remote control) support [autodetect]
237   --enable-lircc         enable LIRCCD (LIRC client daemon) input [autodetect]
238   --enable-joystick      enable joystick support [disable]
239   --enable-apple-remote  enable Apple Remote input (Mac OS X only) [autodetect]
240   --enable-apple-ir      enable Apple IR Remote input (Linux only) [autodetect]
241   --disable-vm           disable X video mode extensions [autodetect]
242   --disable-xf86keysym   disable support for multimedia keys [autodetect]
243   --enable-radio         enable radio interface [disable]
244   --enable-radio-capture enable radio capture (through PCI/line-in) [disable]
245   --disable-radio-v4l2   disable Video4Linux2 radio interface [autodetect]
246   --disable-radio-bsdbt848   disable BSD BT848 radio interface [autodetect]
247   --disable-tv           disable TV interface (TV/DVB grabbers) [enable]
248   --disable-tv-v4l1      disable Video4Linux TV interface [autodetect]
249   --disable-tv-v4l2      disable Video4Linux2 TV interface [autodetect]
250   --disable-tv-bsdbt848  disable BSD BT848 interface [autodetect]
251   --disable-pvr          disable Video4Linux2 MPEG PVR [autodetect]
252   --disable-rtc          disable RTC (/dev/rtc) on Linux [autodetect]
253   --disable-network      disable networking [enable]
254   --enable-winsock2_h    enable winsock2_h [autodetect]
255   --enable-smb           enable Samba (SMB) input [autodetect]
256   --enable-live          enable LIVE555 Streaming Media [autodetect]
257   --enable-nemesi        enable Nemesi Streaming Media [autodetect]
258   --disable-vcd          disable VCD support [autodetect]
259   --disable-dvdnav       disable libdvdnav [autodetect]
260   --disable-dvdread      disable libdvdread [autodetect]
261   --disable-dvdread-internal  disable internal libdvdread [autodetect]
262   --disable-libdvdcss-internal  disable internal libdvdcss [autodetect]
263   --disable-cdparanoia   disable cdparanoia [autodetect]
264   --disable-cddb         disable cddb [autodetect]
265   --disable-bitmap-font  disable bitmap font support [enable]
266   --disable-freetype     disable FreeType 2 font rendering [autodetect]
267   --disable-fontconfig   disable fontconfig font lookup [autodetect]
268   --disable-unrarexec    disable using of UnRAR executable [enabled]
269   --enable-menu          enable OSD menu (not DVD menu) [disabled]
270   --disable-sortsub      disable subtitle sorting [enabled]
271   --enable-fribidi       enable the FriBiDi libs [autodetect]
272   --disable-enca         disable ENCA charset oracle library [autodetect]
273   --disable-maemo        disable maemo specific features [autodetect]
274   --enable-macosx-finder enable Mac OS X Finder invocation parameter
275                          parsing [disabled]
276   --enable-macosx-bundle enable Mac OS X bundle file locations [autodetect]
277   --disable-inet6        disable IPv6 support [autodetect]
278   --disable-gethostbyname2  gethostbyname2 part of the C library [autodetect]
279   --disable-ftp          disable FTP support [enabled]
280   --disable-vstream      disable TiVo vstream client support [autodetect]
281   --disable-pthreads     disable Posix threads support [autodetect]
282   --disable-w32threads   disable Win32 threads support [autodetect]
283   --disable-ass-internal disable internal SSA/ASS subtitle support [autodetect]
284   --disable-ass          disable SSA/ASS subtitle support [autodetect]
285   --enable-rpath         enable runtime linker path for extra libs [disabled]
286
287 Codecs:
288   --enable-gif              enable GIF support [autodetect]
289   --enable-png              enable PNG input/output support [autodetect]
290   --enable-mng              enable MNG input support [autodetect]
291   --enable-jpeg             enable JPEG input/output support [autodetect]
292   --enable-libcdio          enable libcdio support [autodetect]
293   --enable-liblzo           enable liblzo support [autodetect]
294   --disable-win32dll        disable Win32 DLL support [enabled]
295   --disable-qtx             disable QuickTime codecs support [enabled]
296   --disable-xanim           disable XAnim codecs support [enabled]
297   --disable-real            disable RealPlayer codecs support [enabled]
298   --disable-xvid            disable Xvid [autodetect]
299   --disable-xvid-lavc       disable Xvid in libavcodec [autodetect]
300   --disable-x264            disable x264 [autodetect]
301   --disable-x264-lavc       disable x264 in libavcodec [autodetect]
302   --disable-libdirac-lavc   disable Dirac in libavcodec [autodetect]
303   --disable-libschroedinger-lavc   disable Dirac in libavcodec (Schroedinger
304                                    decoder) [autodetect]
305   --disable-libnut          disable libnut [autodetect]
306   --disable-libavutil_a     disable static libavutil [autodetect]
307   --disable-libavcodec_a    disable static libavcodec [autodetect]
308   --disable-libavformat_a   disable static libavformat [autodetect]
309   --disable-libpostproc_a   disable static libpostproc [autodetect]
310   --disable-libswscale_a    disable static libswscale [autodetect]
311   --disable-libavutil_so    disable shared libavutil [autodetect]
312   --disable-libavcodec_so   disable shared libavcodec [autodetect]
313   --disable-libavformat_so  disable shared libavformat [autodetect]
314   --disable-libpostproc_so  disable shared libpostproc [autodetect]
315   --disable-libswscale_so   disable shared libswscale [autodetect]
316   --disable-libavcodec_mpegaudio_hp disable high precision audio decoding
317                                     in libavcodec [enabled]
318   --disable-tremor-internal disable internal Tremor [enabled]
319   --enable-tremor-low       enable lower accuracy internal Tremor [disabled]
320   --enable-tremor           enable external Tremor [autodetect]
321   --disable-libvorbis       disable libvorbis support [autodetect]
322   --disable-speex           disable Speex support [autodetect]
323   --enable-theora           enable OggTheora libraries [autodetect]
324   --enable-faad             enable external FAAD2 (AAC) [autodetect]
325   --disable-faad-internal   disable internal FAAD2 (AAC) [autodetect]
326   --enable-faad-fixed       enable fixed-point mode in internal FAAD2 [disabled]
327   --disable-faac            disable support for FAAC (AAC encoder) [autodetect]
328   --disable-faac-lavc       disable support for FAAC in libavcodec [autodetect]
329   --disable-ladspa          disable LADSPA plugin support [autodetect]
330   --disable-libbs2b         disable libbs2b audio filter support [autodetect]
331   --disable-libdv           disable libdv 0.9.5 en/decoding support [autodetect]
332   --disable-mad             disable libmad (MPEG audio) support [autodetect]
333   --disable-mp3lame         disable LAME MP3 encoding support [autodetect]
334   --disable-mp3lame-lavc    disable LAME in libavcodec [autodetect]
335   --disable-toolame         disable Toolame (MPEG layer 2) encoding [autodetect]
336   --disable-twolame         disable Twolame (MPEG layer 2) encoding [autodetect]
337   --enable-xmms             enable XMMS input plugin support [disabled]
338   --enable-libdca           enable libdca support [autodetect]
339   --disable-mp3lib          disable builtin mp3lib [autodetect]
340   --disable-liba52          disable liba52 [autodetect]
341   --disable-liba52-internal disable builtin liba52 [autodetect]
342   --disable-libmpeg2        disable builtin libmpeg2 [autodetect]
343   --disable-musepack        disable musepack support [autodetect]
344   --disable-libopencore_amrnb disable libopencore_amr narrowband [autodetect]
345   --disable-libopencore_amrwb disable libopencore_amr wideband [autodetect]
346   --disable-decoder=DECODER disable specified FFmpeg decoder
347   --enable-decoder=DECODER  enable specified FFmpeg decoder
348   --disable-encoder=ENCODER disable specified FFmpeg encoder
349   --enable-encoder=ENCODER  enable specified FFmpeg encoder
350   --disable-parser=PARSER   disable specified FFmpeg parser
351   --enable-parser=PARSER    enable specified FFmpeg parser
352   --disable-protocol=PROTO  disable specified FFmpeg protocol
353   --enable-protocol=PROTO   enable specified FFmpeg protocol
354   --disable-demuxer=DEMUXER disable specified FFmpeg demuxer
355   --enable-demuxer=DEMUXER  enable specified FFmpeg demuxer
356   --disable-muxer=MUXER     disable specified FFmpeg muxer
357   --enable-muxer=MUXER      enable specified FFmpeg muxer
358
359 Video output:
360   --disable-vidix          disable VIDIX [for x86 *nix]
361   --with-vidix-drivers[=*] list of VIDIX drivers to be compiled in
362                            Available: cyberblade,ivtv,mach64,mga,mga_crtc2,
363                            nvidia,pm2,pm3,radeon,rage128,s3,sis,unichrome
364   --disable-vidix-pcidb    disable VIDIX PCI device name database
365   --enable-dhahelper       enable VIDIX dhahelper support
366   --enable-svgalib_helper  enable VIDIX svgalib_helper support
367   --enable-gl              enable OpenGL video output [autodetect]
368   --enable-dga2            enable DGA 2 support [autodetect]
369   --enable-dga1            enable DGA 1 support [autodetect]
370   --enable-vesa            enable VESA video output [autodetect]
371   --enable-svga            enable SVGAlib video output [autodetect]
372   --enable-sdl             enable SDL video output [autodetect]
373   --enable-kva             enable KVA video output [autodetect]
374   --enable-aa              enable AAlib video output [autodetect]
375   --enable-caca            enable CACA  video output [autodetect]
376   --enable-ggi             enable GGI video output [autodetect]
377   --enable-ggiwmh          enable GGI libggiwmh extension [autodetect]
378   --enable-direct3d        enable Direct3D video output [autodetect]
379   --enable-directx         enable DirectX video output [autodetect]
380   --enable-dxr2            enable DXR2 video output [autodetect]
381   --enable-dxr3            enable DXR3/H+ video output [autodetect]
382   --enable-ivtv            enable IVTV TV-Out video output [autodetect]
383   --enable-v4l2            enable V4L2 Decoder audio/video output [autodetect]
384   --enable-dvb             enable DVB video output [autodetect]
385   --enable-dvbhead         enable DVB video output (HEAD version) [autodetect]
386   --enable-mga             enable mga_vid video output [autodetect]
387   --enable-xmga            enable mga_vid X11 video output [autodetect]
388   --enable-xv              enable Xv video output [autodetect]
389   --enable-xvmc            enable XvMC acceleration [disable]
390   --enable-vdpau           enable VDPAU acceleration [autodetect]
391   --enable-vm              enable XF86VidMode support [autodetect]
392   --enable-xinerama        enable Xinerama support [autodetect]
393   --enable-x11             enable X11 video output [autodetect]
394   --enable-xshape          enable XShape support [autodetect]
395   --disable-xss            disable screensaver support via xss [autodetect]
396   --enable-fbdev           enable FBDev video output [autodetect]
397   --enable-mlib            enable mediaLib video output (Solaris) [disable]
398   --enable-3dfx            enable obsolete /dev/3dfx video output [disable]
399   --enable-tdfxfb          enable tdfxfb video output [disable]
400   --enable-s3fb            enable s3fb (S3 ViRGE) video output [disable]
401   --enable-wii             enable Nintendo Wii/GameCube video output [disable]
402   --enable-directfb        enable DirectFB video output [autodetect]
403   --enable-zr              enable ZR360[56]7/ZR36060 video output [autodetect]
404   --enable-bl              enable Blinkenlights video output [disable]
405   --enable-tdfxvid         enable tdfx_vid video output [disable]
406   --enable-xvr100          enable SUN XVR-100 video output [autodetect]
407   --disable-tga            disable Targa video output [enable]
408   --disable-pnm            disable PNM video output [enable]
409   --disable-md5sum         disable md5sum video output [enable]
410   --disable-yuv4mpeg       disable yuv4mpeg video output [enable]
411   --disable-corevideo      disable CoreVideo video output [autodetect]
412   --disable-quartz         disable Quartz video output [autodetect]
413
414 Audio output:
415   --disable-alsa         disable ALSA audio output [autodetect]
416   --disable-ossaudio     disable OSS audio output [autodetect]
417   --disable-arts         disable aRts audio output [autodetect]
418   --disable-esd          disable esd audio output [autodetect]
419   --disable-pulse        disable Pulseaudio audio output [autodetect]
420   --disable-jack         disable JACK audio output [autodetect]
421   --disable-openal       disable OpenAL audio output [autodetect]
422   --disable-nas          disable NAS audio output [autodetect]
423   --disable-sgiaudio     disable SGI audio output [autodetect]
424   --disable-sunaudio     disable Sun audio output [autodetect]
425   --disable-dart         disable DART audio output [autodetect]
426   --disable-win32waveout disable Windows waveout audio output [autodetect]
427   --disable-coreaudio    disable CoreAudio audio output [autodetect]
428   --disable-select       disable using select() on the audio device [enable]
429
430 Language options:
431   --charset=charset      convert the console messages to this character set
432   --language-doc=lang    language to use for the documentation [en]
433   --language-man=lang    language to use for the man pages [en]
434   --language-msg=lang    language to use for the messages and the GUI [en]
435   --language=lang        default language to use [en]
436 Specific options override --language. You can pass a list of languages separated
437 by whitespace or commas instead of a single language. Nonexisting translations
438 will be dropped from each list. All documentation and man page translations
439 available in the list will be installed, for the messages the first available
440 translation will be used. The value "all" will activate all translations. The
441 LINGUAS environment variable is honored. In all cases the fallback is English.
442 Available values are: all $msg_lang_all
443
444 Miscellaneous options:
445   --enable-runtime-cpudetection    enable runtime CPU detection [disable]
446   --enable-cross-compile enable cross-compilation [autodetect]
447   --cc=COMPILER          C compiler to build MPlayer [gcc]
448   --host-cc=COMPILER     C compiler for tools needed while building [gcc]
449   --as=ASSEMBLER         assembler to build MPlayer [as]
450   --nm=NM                nm tool to build MPlayer [nm]
451   --yasm=YASM            Yasm assembler to build MPlayer [yasm]
452   --ar=AR                librarian to build MPlayer [ar]
453   --ranlib=RANLIB        ranlib to build MPlayer [ranlib]
454   --windres=WINDRES      windres to build MPlayer [windres]
455   --target=PLATFORM      target platform (i386-linux, arm-linux, etc)
456   --enable-static        build a statically linked binary
457   --with-install=PATH    path to a custom install program
458
459 Advanced options:
460   --enable-mmx              enable MMX [autodetect]
461   --enable-mmxext           enable MMX2 (Pentium III, Athlon) [autodetect]
462   --enable-3dnow            enable 3DNow! [autodetect]
463   --enable-3dnowext         enable extended 3DNow! [autodetect]
464   --enable-sse              enable SSE [autodetect]
465   --enable-sse2             enable SSE2 [autodetect]
466   --enable-ssse3            enable SSSE3 [autodetect]
467   --enable-shm              enable shm [autodetect]
468   --enable-altivec          enable AltiVec (PowerPC) [autodetect]
469   --enable-armv5te          enable DSP extensions (ARM) [autodetect]
470   --enable-armv6            enable ARMv6 (ARM) [autodetect]
471   --enable-armv6t2          enable ARMv6t2 (ARM) [autodetect]
472   --enable-armvfp           enable ARM VFP (ARM) [autodetect]
473   --enable-neon             enable NEON (ARM) [autodetect]
474   --enable-iwmmxt           enable iWMMXt (ARM) [autodetect]
475   --disable-fastmemcpy      disable 3DNow!/SSE/MMX optimized memcpy [enable]
476   --enable-big-endian       force byte order to big-endian [autodetect]
477   --enable-debug[=1-3]      compile-in debugging information [disable]
478   --enable-profile          compile-in profiling information [disable]
479   --disable-sighandler      disable sighandler for crashes [enable]
480   --enable-crash-debug      enable automatic gdb attach on crash [disable]
481   --enable-dynamic-plugins  enable dynamic A/V plugins [disable]
482
483 Use these options if autodetection fails:
484   --extra-cflags=FLAGS        extra CFLAGS
485   --extra-ldflags=FLAGS       extra LDFLAGS
486   --extra-libs=FLAGS          extra linker flags
487   --extra-libs-mplayer=FLAGS  extra linker flags for MPlayer
488   --extra-libs-mencoder=FLAGS extra linker flags for MEncoder
489   --with-xvmclib=NAME         adapter-specific library name (e.g. XvMCNVIDIA)
490
491   --with-freetype-config=PATH path to freetype-config
492   --with-fribidi-config=PATH  path to fribidi-config
493   --with-glib-config=PATH     path to glib*-config
494   --with-gtk-config=PATH      path to gtk*-config
495   --with-sdl-config=PATH      path to sdl*-config
496   --with-dvdnav-config=PATH   path to dvdnav-config
497   --with-dvdread-config=PATH  path to dvdread-config
498
499 This configure script is NOT autoconf-based, even though its output is similar.
500 It will try to autodetect all configuration options. If you --enable an option
501 it will be forcefully turned on, skipping autodetection. This can break
502 compilation, so you need to know what you are doing.
503 EOF
504 exit 0
505 } #show_help()
506
507 # GOTCHA: the variables below defines the default behavior for autodetection
508 # and have - unless stated otherwise - at least 2 states : yes no
509 # If autodetection is available then the third state is: auto
510 _mmx=auto
511 _3dnow=auto
512 _3dnowext=auto
513 _mmxext=auto
514 _sse=auto
515 _sse2=auto
516 _ssse3=auto
517 _cmov=auto
518 _fast_cmov=auto
519 _armv5te=auto
520 _armv6=auto
521 _armv6t2=auto
522 _armvfp=auto
523 neon=auto
524 _iwmmxt=auto
525 _mtrr=auto
526 _altivec=auto
527 _install=install
528 _ranlib=ranlib
529 _windres=windres
530 _cc=cc
531 _ar=ar
532 test "$CC" && _cc="$CC"
533 _as=auto
534 _nm=auto
535 _yasm=yasm
536 _runtime_cpudetection=no
537 _cross_compile=auto
538 _prefix="/usr/local"
539 _libavutil_a=auto
540 _libavutil_so=auto
541 _libavcodec_a=auto
542 _libopencore_amrnb=auto
543 _libopencore_amrwb=auto
544 _libavdecoders_all=$(sed -n 's/^[^#]*DEC.*(.*, *\(.*\)).*/\1_decoder/p' libavcodec/allcodecs.c | tr '[a-z]' '[A-Z]')
545 _libavdecoders=$(echo $_libavdecoders_all | sed -e 's/ LIB[A-Z0-9_]*_DECODER//g' -e s/MPEG4AAC_DECODER//)
546 _libavencoders_all=$(sed -n 's/^[^#]*ENC.*(.*, *\(.*\)).*/\1_encoder/p' libavcodec/allcodecs.c | tr '[a-z]' '[A-Z]')
547 _libavencoders=$(echo $_libavencoders_all | sed -e 's/ LIB[A-Z0-9_]*_ENCODER//g' -e s/AAC_ENCODER//)
548 _libavparsers_all=$(sed -n 's/^[^#]*PARSER.*(.*, *\(.*\)).*/\1_parser/p' libavcodec/allcodecs.c | tr '[a-z]' '[A-Z]')
549 _libavparsers=$_libavparsers_all
550 _libavbsfs_all=$(sed -n 's/^[^#]*BSF.*(.*, *\(.*\)).*/\1_bsf/p' libavcodec/allcodecs.c | tr '[a-z]' '[A-Z]')
551 _libavbsfs=$_libavbsfs_all
552 _libavdemuxers_all=$(sed -n 's/^[^#]*DEMUX.*(.*, *\(.*\)).*/\1_demuxer/p' libavformat/allformats.c | tr '[a-z]' '[A-Z]')
553 _libavdemuxers=$(echo $_libavdemuxers_all | sed -e 's/ LIB[A-Z0-9_]*_DEMUXER//g' -e s/REDIR_DEMUXER// -e s/RTSP_DEMUXER// -e s/SDP_DEMUXER// -e s/AVISYNTH_DEMUXER//)
554 _libavmuxers_all=$(sed -n 's/^[^#]*_MUX.*(.*, *\(.*\)).*/\1_muxer/p' libavformat/allformats.c | tr '[a-z]' '[A-Z]')
555 _libavmuxers=$(echo $_libavmuxers_all | sed -e 's/ LIB[A-Z0-9_]*_MUXER//g' -e s/RTP_MUXER//)
556 _libavprotocols_all=$(sed -n 's/^[^#]*PROTOCOL.*(.*, *\(.*\)).*/\1_protocol/p' libavformat/allformats.c | tr '[a-z]' '[A-Z]')
557 _libavprotocols=""
558 _libavcodec_so=auto
559 _libavformat_a=auto
560 _libavformat_so=auto
561 _libpostproc_a=auto
562 _libpostproc_so=auto
563 _libswscale_a=auto
564 _libswscale_so=auto
565 _libavcodec_mpegaudio_hp=yes
566 _mencoder=yes
567 _mplayer=yes
568 _x11=auto
569 _xshape=auto
570 _xss=auto
571 _dga1=auto
572 _dga2=auto
573 _xv=auto
574 _xvmc=no  #auto when complete
575 _vdpau=auto
576 _sdl=auto
577 _kva=auto
578 _direct3d=auto
579 _directx=auto
580 _win32waveout=auto
581 _nas=auto
582 _png=auto
583 _mng=auto
584 _jpeg=auto
585 _pnm=yes
586 _md5sum=yes
587 _yuv4mpeg=yes
588 _gif=auto
589 _gl=auto
590 _ggi=auto
591 _ggiwmh=auto
592 _aa=auto
593 _caca=auto
594 _svga=auto
595 _vesa=auto
596 _fbdev=auto
597 _dvb=auto
598 _dvbhead=auto
599 _dxr2=auto
600 _dxr3=auto
601 _ivtv=auto
602 _v4l2=auto
603 _iconv=auto
604 _langinfo=auto
605 _rtc=auto
606 _ossaudio=auto
607 _arts=auto
608 _esd=auto
609 _pulse=auto
610 _jack=auto
611 _dart=auto
612 _openal=auto
613 _libcdio=auto
614 _liblzo=auto
615 _mad=auto
616 _mp3lame=auto
617 _mp3lame_lavc=auto
618 _toolame=auto
619 _twolame=auto
620 _tremor=auto
621 _tremor_internal=yes
622 _tremor_low=no
623 _libvorbis=auto
624 _speex=auto
625 _theora=auto
626 _mp3lib=auto
627 _liba52=auto
628 _liba52_internal=auto
629 _libdca=auto
630 _libmpeg2=auto
631 _faad=auto
632 _faad_internal=auto
633 _faad_fixed=no
634 _faac=auto
635 _faac_lavc=auto
636 _ladspa=auto
637 _libbs2b=auto
638 _xmms=no
639 _vcd=auto
640 _dvdnav=auto
641 _dvdnavconfig=dvdnav-config
642 _dvdreadconfig=dvdread-config
643 _dvdread=auto
644 _dvdread_internal=auto
645 _libdvdcss_internal=auto
646 _xanim=auto
647 _real=auto
648 _live=auto
649 _nemesi=auto
650 _native_rtsp=yes
651 _xinerama=auto
652 _mga=auto
653 _xmga=auto
654 _vm=auto
655 _xf86keysym=auto
656 _mlib=no #broken, thus disabled
657 _sgiaudio=auto
658 _sunaudio=auto
659 _alsa=auto
660 _fastmemcpy=yes
661 _unrar_exec=auto
662 _win32dll=auto
663 _select=yes
664 _radio=no
665 _radio_capture=no
666 _radio_v4l=auto
667 _radio_v4l2=auto
668 _radio_bsdbt848=auto
669 _tv=yes
670 _tv_v4l1=auto
671 _tv_v4l2=auto
672 _tv_bsdbt848=auto
673 _tv_dshow=auto
674 _pvr=auto
675 _network=yes
676 _winsock2_h=auto
677 _smb=auto
678 _vidix=auto
679 _vidix_pcidb=yes
680 _dhahelper=no
681 _svgalib_helper=no
682 _joystick=no
683 _xvid=auto
684 _xvid_lavc=auto
685 _x264=auto
686 _x264_lavc=auto
687 _libdirac_lavc=auto
688 _libschroedinger_lavc=auto
689 _libnut=auto
690 _lirc=auto
691 _lircc=auto
692 _apple_remote=auto
693 _apple_ir=auto
694 _gui=no
695 _gtk1=no
696 _termcap=auto
697 _termios=auto
698 _3dfx=no
699 _s3fb=no
700 _wii=no
701 _tdfxfb=no
702 _tdfxvid=no
703 _xvr100=auto
704 _tga=yes
705 _directfb=auto
706 _zr=auto
707 _bl=no
708 _largefiles=yes
709 #language=en
710 _shm=auto
711 _linux_devfs=no
712 _charset="UTF-8"
713 _dynamic_plugins=no
714 _crash_debug=no
715 _sighandler=yes
716 _libdv=auto
717 _cdparanoia=auto
718 _cddb=auto
719 _big_endian=auto
720 _bitmap_font=yes
721 _freetype=auto
722 _fontconfig=auto
723 _menu=no
724 _qtx=auto
725 _maemo=auto
726 _coreaudio=auto
727 _corevideo=auto
728 _quartz=auto
729 quicktime=auto
730 _macosx_finder=no
731 _macosx_bundle=auto
732 _sortsub=yes
733 _freetypeconfig='freetype-config'
734 _fribidi=auto
735 _fribidiconfig='fribidi-config'
736 _enca=auto
737 _inet6=auto
738 _gethostbyname2=auto
739 _ftp=yes
740 _musepack=auto
741 _vstream=auto
742 _pthreads=auto
743 _w32threads=auto
744 _ass=auto
745 ass_internal=yes
746 _rpath=no
747 _asmalign_pot=auto
748 _stream_cache=yes
749 _priority=no
750 def_dos_paths="#define HAVE_DOS_PATHS 0"
751 def_stream_cache="#define CONFIG_STREAM_CACHE 1"
752 def_priority="#undef CONFIG_PRIORITY"
753 def_pthread_cache="#undef PTHREAD_CACHE"
754 _need_shmem=yes
755 for ac_option do
756   case "$ac_option" in
757   --help|-help|-h)
758     show_help
759     ;;
760   --prefix=*)
761     _prefix=$(echo $ac_option | cut -d '=' -f 2)
762     ;;
763   --bindir=*)
764     _bindir=$(echo $ac_option | cut -d '=' -f 2)
765     ;;
766   --datadir=*)
767     _datadir=$(echo $ac_option | cut -d '=' -f 2)
768     ;;
769   --mandir=*)
770     _mandir=$(echo $ac_option | cut -d '=' -f 2)
771     ;;
772   --confdir=*)
773     _confdir=$(echo $ac_option | cut -d '=' -f 2)
774     ;;
775   --libdir=*)
776     _libdir=$(echo $ac_option | cut -d '=' -f 2)
777     ;;
778   --codecsdir=*)
779     _codecsdir=$(echo $ac_option | cut -d '=' -f 2)
780     ;;
781   --win32codecsdir=*)
782     _win32codecsdir=$(echo $ac_option | cut -d '=' -f 2)
783     ;;
784   --xanimcodecsdir=*)
785     _xanimcodecsdir=$(echo $ac_option | cut -d '=' -f 2)
786     ;;
787   --realcodecsdir=*)
788     _realcodecsdir=$(echo $ac_option | cut -d '=' -f 2)
789     ;;
790
791   --with-install=*)
792     _install=$(echo $ac_option | cut -d '=' -f 2 )
793     ;;
794   --with-xvmclib=*)
795     _xvmclib=$(echo $ac_option | cut -d '=' -f 2)
796     ;;
797
798   --with-sdl-config=*)
799     _sdlconfig=$(echo $ac_option | cut -d '=' -f 2)
800     ;;
801   --with-freetype-config=*)
802     _freetypeconfig=$(echo $ac_option | cut -d '=' -f 2)
803     ;;
804   --with-fribidi-config=*)
805     _fribidiconfig=$(echo $ac_option | cut -d '=' -f 2)
806     ;;
807   --with-gtk-config=*)
808     _gtkconfig=$(echo $ac_option | cut -d '=' -f 2)
809     ;;
810   --with-glib-config=*)
811     _glibconfig=$(echo $ac_option | cut -d '=' -f 2)
812     ;;
813   --with-dvdnav-config=*)
814     _dvdnavconfig=$(echo $ac_option | cut -d '=' -f 2)
815     ;;
816   --with-dvdread-config=*)
817     _dvdreadconfig=$(echo $ac_option | cut -d '=' -f 2)
818     ;;
819
820   --extra-cflags=*)
821     extra_cflags=$(echo $ac_option | cut -d '=' -f 2-)
822     ;;
823   --extra-ldflags=*)
824     extra_ldflags=$(echo $ac_option | cut -d '=' -f 2-)
825     ;;
826   --extra-libs=*)
827     extra_libs=$(echo $ac_option | cut -d '=' -f 2)
828     ;;
829   --extra-libs-mplayer=*)
830     libs_mplayer=$(echo $ac_option | cut -d '=' -f 2)
831     ;;
832   --extra-libs-mencoder=*)
833     libs_mencoder=$(echo $ac_option | cut -d '=' -f 2)
834     ;;
835
836   --target=*)
837     _target=$(echo $ac_option | cut -d '=' -f 2)
838     ;;
839   --cc=*)
840     _cc=$(echo $ac_option | cut -d '=' -f 2)
841     ;;
842   --host-cc=*)
843     _host_cc=$(echo $ac_option | cut -d '=' -f 2)
844     ;;
845   --as=*)
846     _as=$(echo $ac_option | cut -d '=' -f 2)
847     ;;
848   --nm=*)
849     _nm=$(echo $ac_option | cut -d '=' -f 2)
850     ;;
851   --yasm=*)
852     _yasm=$(echo $ac_option | cut -d '=' -f 2)
853     ;;
854   --ar=*)
855     _ar=$(echo $ac_option | cut -d '=' -f 2)
856     ;;
857   --ranlib=*)
858     _ranlib=$(echo $ac_option | cut -d '=' -f 2)
859     ;;
860   --windres=*)
861     _windres=$(echo $ac_option | cut -d '=' -f 2)
862     ;;
863   --charset=*)
864     _charset=$(echo $ac_option | cut -d '=' -f 2)
865     ;;
866   --language-doc=*)
867     language_doc=$(echo $ac_option | cut -d '=' -f 2)
868     ;;
869   --language-man=*)
870     language_man=$(echo $ac_option | cut -d '=' -f 2)
871     ;;
872   --language-msg=*)
873     language_msg=$(echo $ac_option | cut -d '=' -f 2)
874     ;;
875   --language=*)
876     language=$(echo $ac_option | cut -d '=' -f 2)
877     ;;
878
879   --enable-static)
880     _ld_static='-static'
881     ;;
882   --disable-static)
883     _ld_static=''
884     ;;
885   --enable-profile)
886     _profile='-p'
887     ;;
888   --disable-profile)
889     _profile=
890     ;;
891   --enable-debug)
892     _debug='-g'
893     ;;
894   --enable-debug=*)
895     _debug=$(echo $_echo_n '-g'$_echo_c; echo $ac_option | cut -d '=' -f 2)
896     ;;
897   --disable-debug)
898     _debug=
899     ;;
900   --enable-runtime-cpudetection)    _runtime_cpudetection=yes   ;;
901   --disable-runtime-cpudetection)   _runtime_cpudetection=no    ;;
902   --enable-cross-compile)           _cross_compile=yes          ;;
903   --disable-cross-compile)          _cross_compile=no           ;;
904   --enable-mencoder)    _mencoder=yes   ;;
905   --disable-mencoder)   _mencoder=no    ;;
906   --enable-mplayer)     _mplayer=yes    ;;
907   --disable-mplayer)    _mplayer=no     ;;
908   --enable-dynamic-plugins) _dynamic_plugins=yes ;;
909   --disable-dynamic-plugins) _dynamic_plugins=no ;;
910   --enable-x11)         _x11=yes        ;;
911   --disable-x11)        _x11=no         ;;
912   --enable-xshape)      _xshape=yes     ;;
913   --disable-xshape)     _xshape=no      ;;
914   --enable-xss) _xss=yes        ;;
915   --disable-xss)        _xss=no ;;
916   --enable-xv)          _xv=yes         ;;
917   --disable-xv)         _xv=no          ;;
918   --enable-xvmc)        _xvmc=yes       ;;
919   --disable-xvmc)       _xvmc=no        ;;
920   --enable-vdpau)       _vdpau=yes      ;;
921   --disable-vdpau)      _vdpau=no       ;;
922   --enable-sdl)         _sdl=yes        ;;
923   --disable-sdl)        _sdl=no         ;;
924   --enable-kva)     _kva=yes    ;;
925   --disable-kva)    _kva=no     ;;
926   --enable-direct3d)    _direct3d=yes   ;;
927   --disable-direct3d)   _direct3d=no    ;;
928   --enable-directx)     _directx=yes    ;;
929   --disable-directx)    _directx=no     ;;
930   --enable-win32waveout)  _win32waveout=yes ;;
931   --disable-win32waveout) _win32waveout=no  ;;
932   --enable-nas)         _nas=yes        ;;
933   --disable-nas)        _nas=no         ;;
934   --enable-png)         _png=yes        ;;
935   --disable-png)        _png=no         ;;
936   --enable-mng)         _mng=yes        ;;
937   --disable-mng)        _mng=no         ;;
938   --enable-jpeg)        _jpeg=yes       ;;
939   --disable-jpeg)       _jpeg=no                ;;
940   --enable-pnm)         _pnm=yes        ;;
941   --disable-pnm)        _pnm=no         ;;
942   --enable-md5sum)      _md5sum=yes     ;;
943   --disable-md5sum)     _md5sum=no      ;;
944   --enable-yuv4mpeg)    _yuv4mpeg=yes   ;;
945   --disable-yuv4mpeg)   _yuv4mpeg=no    ;;
946   --enable-gif) _gif=yes        ;;
947   --disable-gif)        _gif=no         ;;
948   --enable-gl)          _gl=yes         ;;
949   --disable-gl)         _gl=no          ;;
950   --enable-ggi)         _ggi=yes        ;;
951   --disable-ggi)        _ggi=no         ;;
952   --enable-ggiwmh)      _ggiwmh=yes     ;;
953   --disable-ggiwmh)     _ggiwmh=no      ;;
954   --enable-aa)          _aa=yes         ;;
955   --disable-aa)         _aa=no          ;;
956   --enable-caca)        _caca=yes       ;;
957   --disable-caca)       _caca=no        ;;
958   --enable-svga)        _svga=yes       ;;
959   --disable-svga)       _svga=no        ;;
960   --enable-vesa)        _vesa=yes       ;;
961   --disable-vesa)       _vesa=no        ;;
962   --enable-fbdev)       _fbdev=yes      ;;
963   --disable-fbdev)      _fbdev=no       ;;
964   --enable-dvb)         _dvb=yes        ;;
965   --disable-dvb)        _dvb=no         ;;
966   --enable-dvbhead)     _dvbhead=yes    ;;
967   --disable-dvbhead)    _dvbhead=no     ;;
968   --enable-dxr2)        _dxr2=yes       ;;
969   --disable-dxr2)       _dxr2=no        ;;
970   --enable-dxr3)        _dxr3=yes       ;;
971   --disable-dxr3)       _dxr3=no        ;;
972   --enable-ivtv)        _ivtv=yes       ;;
973   --disable-ivtv)       _ivtv=no        ;;
974   --enable-v4l2)        _v4l2=yes       ;;
975   --disable-v4l2)       _v4l2=no        ;;
976   --enable-iconv)       _iconv=yes      ;;
977   --disable-iconv)      _iconv=no       ;;
978   --enable-langinfo)    _langinfo=yes   ;;
979   --disable-langinfo)   _langinfo=no    ;;
980   --enable-rtc)         _rtc=yes        ;;
981   --disable-rtc)        _rtc=no         ;;
982   --enable-libdv)       _libdv=yes      ;;
983   --disable-libdv)      _libdv=no       ;;
984   --enable-ossaudio)    _ossaudio=yes   ;;
985   --disable-ossaudio)   _ossaudio=no    ;;
986   --enable-arts)        _arts=yes       ;;
987   --disable-arts)       _arts=no        ;;
988   --enable-esd)         _esd=yes        ;;
989   --disable-esd)        _esd=no         ;;
990   --enable-pulse)       _pulse=yes      ;;
991   --disable-pulse)      _pulse=no       ;;
992   --enable-jack)        _jack=yes       ;;
993   --disable-jack)       _jack=no        ;;
994   --enable-openal)      _openal=yes     ;;
995   --disable-openal)     _openal=no      ;;
996   --enable-dart)   _dart=yes   ;;
997   --disable-dart)  _dart=no    ;;
998   --enable-mad)         _mad=yes        ;;
999   --disable-mad)        _mad=no         ;;
1000   --enable-mp3lame)     _mp3lame=yes    ;;
1001   --disable-mp3lame)    _mp3lame=no     ;;
1002   --enable-mp3lame-lavc)        _mp3lame_lavc=yes       ;;
1003   --disable-mp3lame-lavc)       _mp3lame_lavc=no        ;;
1004   --enable-toolame)     _toolame=yes    ;;
1005   --disable-toolame)    _toolame=no     ;;
1006   --enable-twolame)     _twolame=yes    ;;
1007   --disable-twolame)    _twolame=no     ;;
1008   --enable-libcdio)     _libcdio=yes    ;;
1009   --disable-libcdio)    _libcdio=no     ;;
1010   --enable-liblzo)      _liblzo=yes     ;;
1011   --disable-liblzo)     _liblzo=no              ;;
1012   --enable-libvorbis)   _libvorbis=yes  ;;
1013   --disable-libvorbis)  _libvorbis=no   ;;
1014   --enable-speex)       _speex=yes      ;;
1015   --disable-speex)      _speex=no       ;;
1016   --enable-tremor)      _tremor=yes     ;;
1017   --disable-tremor)     _tremor=no      ;;
1018   --enable-tremor-internal)     _tremor_internal=yes    ;;
1019   --disable-tremor-internal)    _tremor_internal=no     ;;
1020   --enable-tremor-low)  _tremor_low=yes ;;
1021   --disable-tremor-low) _tremor_low=no  ;;
1022   --enable-theora)      _theora=yes     ;;
1023   --disable-theora)     _theora=no      ;;
1024   --enable-mp3lib)      _mp3lib=yes     ;;
1025   --disable-mp3lib)     _mp3lib=no      ;;
1026   --enable-liba52-internal)     _liba52_internal=yes    ;;
1027   --disable-liba52-internal)    _liba52_internal=no     ;;
1028   --enable-liba52)      _liba52=yes     ;;
1029   --disable-liba52)     _liba52=no      ;;
1030   --enable-libdca)      _libdca=yes     ;;
1031   --disable-libdca)     _libdca=no      ;;
1032   --enable-libmpeg2)    _libmpeg2=yes   ;;
1033   --disable-libmpeg2)   _libmpeg2=no    ;;
1034   --enable-musepack)    _musepack=yes   ;;
1035   --disable-musepack)   _musepack=no    ;;
1036   --enable-faad)        _faad=yes       ;;
1037   --disable-faad)       _faad=no        ;;
1038   --enable-faad-internal)       _faad_internal=yes      ;;
1039   --disable-faad-internal)      _faad_internal=no       ;;
1040   --enable-faad-fixed)  _faad_fixed=yes ;;
1041   --disable-faad-fixed) _faad_fixed=no  ;;
1042   --enable-faac)        _faac=yes       ;;
1043   --disable-faac)       _faac=no        ;;
1044   --enable-faac-lavc)   _faac_lavc=yes  ;;
1045   --disable-faac-lavc)  _faac_lavc=no   ;;
1046   --enable-ladspa)      _ladspa=yes     ;;
1047   --disable-ladspa)     _ladspa=no              ;;
1048   --enable-libbs2b)     _libbs2b=yes    ;;
1049   --disable-libbs2b)    _libbs2b=no     ;;
1050   --enable-xmms)        _xmms=yes       ;;
1051   --disable-xmms)       _xmms=no        ;;
1052   --enable-vcd)         _vcd=yes        ;;
1053   --disable-vcd)        _vcd=no         ;;
1054   --enable-dvdread)     _dvdread=yes    ;;
1055   --disable-dvdread)    _dvdread=no     ;;
1056   --enable-dvdread-internal)    _dvdread_internal=yes   ;;
1057   --disable-dvdread-internal)   _dvdread_internal=no    ;;
1058   --enable-libdvdcss-internal)  _libdvdcss_internal=yes ;;
1059   --disable-libdvdcss-internal) _libdvdcss_internal=no  ;;
1060   --enable-dvdnav)      _dvdnav=yes     ;;
1061   --disable-dvdnav)     _dvdnav=no      ;;
1062   --enable-xanim)       _xanim=yes      ;;
1063   --disable-xanim)      _xanim=no       ;;
1064   --enable-real)        _real=yes       ;;
1065   --disable-real)       _real=no        ;;
1066   --enable-live)        _live=yes       ;;
1067   --disable-live)       _live=no        ;;
1068   --enable-nemesi)      _nemesi=yes     ;;
1069   --disable-nemesi)     _nemesi=no      ;;
1070   --enable-xinerama)    _xinerama=yes   ;;
1071   --disable-xinerama)   _xinerama=no    ;;
1072   --enable-mga)         _mga=yes        ;;
1073   --disable-mga)        _mga=no         ;;
1074   --enable-xmga)        _xmga=yes       ;;
1075   --disable-xmga)       _xmga=no        ;;
1076   --enable-vm)          _vm=yes         ;;
1077   --disable-vm)         _vm=no          ;;
1078   --enable-xf86keysym)  _xf86keysym=yes ;;
1079   --disable-xf86keysym) _xf86keysym=no  ;;
1080   --enable-mlib)        _mlib=yes       ;;
1081   --disable-mlib)       _mlib=no        ;;
1082   --enable-sunaudio)    _sunaudio=yes   ;;
1083   --disable-sunaudio)   _sunaudio=no    ;;
1084   --enable-sgiaudio)    _sgiaudio=yes   ;;
1085   --disable-sgiaudio)   _sgiaudio=no    ;;
1086   --enable-alsa)        _alsa=yes       ;;
1087   --disable-alsa)       _alsa=no        ;;
1088   --enable-tv)          _tv=yes         ;;
1089   --disable-tv)         _tv=no          ;;
1090   --enable-tv-bsdbt848) _tv_bsdbt848=yes        ;;
1091   --disable-tv-bsdbt848)        _tv_bsdbt848=no ;;
1092   --enable-tv-v4l1)     _tv_v4l1=yes    ;;
1093   --disable-tv-v4l1)    _tv_v4l1=no     ;;
1094   --enable-tv-v4l2)     _tv_v4l2=yes    ;;
1095   --disable-tv-v4l2)    _tv_v4l2=no     ;;
1096   --enable-tv-dshow)    _tv_dshow=yes   ;;
1097   --disable-tv-dshow)   _tv_dshow=no    ;;
1098   --enable-radio)       _radio=yes      ;;
1099   --enable-radio-capture)       _radio_capture=yes      ;;
1100   --disable-radio-capture)       _radio_capture=no      ;;
1101   --disable-radio)      _radio=no       ;;
1102   --enable-radio-v4l)   _radio_v4l=yes  ;;
1103   --disable-radio-v4l)  _radio_v4l=no   ;;
1104   --enable-radio-v4l2)  _radio_v4l2=yes ;;
1105   --disable-radio-v4l2) _radio_v4l2=no  ;;
1106   --enable-radio-bsdbt848)      _radio_bsdbt848=yes     ;;
1107   --disable-radio-bsdbt848)     _radio_bsdbt848=no      ;;
1108   --enable-pvr)         _pvr=yes        ;;
1109   --disable-pvr)        _pvr=no         ;;
1110   --enable-fastmemcpy)  _fastmemcpy=yes ;;
1111   --disable-fastmemcpy) _fastmemcpy=no  ;;
1112   --enable-network)     _network=yes    ;;
1113   --disable-network)    _network=no     ;;
1114   --enable-winsock2_h)  _winsock2_h=yes ;;
1115   --disable-winsock2_h) _winsock2_h=no  ;;
1116   --enable-smb)         _smb=yes        ;;
1117   --disable-smb)        _smb=no ;;
1118   --enable-vidix)       _vidix=yes      ;;
1119   --disable-vidix)      _vidix=no       ;;
1120   --with-vidix-drivers=*)
1121     _vidix_drivers=$(echo $ac_option | cut -d '=' -f 2)
1122     ;;
1123   --disable-vidix-pcidb)        _vidix_pcidb=no         ;;
1124   --enable-dhahelper)   _dhahelper=yes  ;;
1125   --disable-dhahelper)  _dhahelper=no   ;;
1126   --enable-svgalib_helper)      _svgalib_helper=yes     ;;
1127   --disable-svgalib_helper)     _svgalib_helper=no      ;;
1128   --enable-joystick)    _joystick=yes   ;;
1129   --disable-joystick)   _joystick=no    ;;
1130   --enable-xvid)        _xvid=yes       ;;
1131   --disable-xvid)       _xvid=no        ;;
1132   --enable-xvid-lavc)   _xvid_lavc=yes  ;;
1133   --disable-xvid-lavc)  _xvid_lavc=no   ;;
1134   --enable-x264)        _x264=yes       ;;
1135   --disable-x264)       _x264=no        ;;
1136   --enable-x264-lavc)   _x264_lavc=yes  ;;
1137   --disable-x264-lavc)  _x264_lavc=no   ;;
1138   --enable-libdirac-lavc)   _libdirac_lavc=yes  ;;
1139   --disable-libdirac-lavc)  _libdirac_lavc=no   ;;
1140   --enable-libschroedinger-lavc)   _libschroedinger_lavc=yes  ;;
1141   --disable-libschroedinger-lavc)  _libschroedinger_lavc=no   ;;
1142   --enable-libnut)      _libnut=yes     ;;
1143   --disable-libnut)     _libnut=no      ;;
1144   --enable-libavutil_a)         _libavutil_a=yes        ;;
1145   --disable-libavutil_a)        _libavutil_a=no         ;;
1146   --enable-libavutil_so)        _libavutil_so=yes       ;;
1147   --disable-libavutil_so)       _libavutil_so=no        ;;
1148   --enable-libavcodec_a)        _libavcodec_a=yes       ;;
1149   --disable-libavcodec_a)       _libavcodec_a=no        ;;
1150   --enable-libavcodec_so)       _libavcodec_so=yes      ;;
1151   --disable-libavcodec_so)      _libavcodec_so=no       ;;
1152   --enable-libopencore_amrnb)   _libopencore_amrnb=yes  ;;
1153   --disable-libopencore_amrnb)  _libopencore_amrnb=no   ;;
1154   --enable-libopencore_amrwb)   _libopencore_amrwb=yes  ;;
1155   --disable-libopencore_amrwb)  _libopencore_amrwb=no   ;;
1156   --enable-decoder=*)  _libavdecoders="$_libavdecoders $(echo $ac_option | cut -d '=' -f 2 | tr '[a-z]' '[A-Z]')" ;;
1157   --disable-decoder=*) _libavdecoders=$(echo $_libavdecoders | sed "s/$(echo $ac_option | cut -d '=' -f 2 | tr '[a-z]' '[A-Z]')//g") ;;
1158   --enable-encoder=*)  _libavencoders="$_libavencoders $(echo $ac_option | cut -d '=' -f 2 | tr '[a-z]' '[A-Z]')" ;;
1159   --disable-encoder=*) _libavencoders=$(echo $_libavencoders | sed "s/$(echo $ac_option | cut -d '=' -f 2 | tr '[a-z]' '[A-Z]')//g") ;;
1160   --enable-parser=*)   _libavparsers="$_libavparsers $(echo $ac_option | cut -d '=' -f 2 | tr '[a-z]' '[A-Z]')" ;;
1161   --disable-parser=*)  _libavparsers=$(echo $_libavparsers | sed "s/$(echo $ac_option | cut -d '=' -f 2 | tr '[a-z]' '[A-Z]')//g") ;;
1162   --enable-protocol=*)   _libavprotocols="$_libavprotocols $(echo $ac_option | cut -d '=' -f 2 | tr '[a-z]' '[A-Z]')" ;;
1163   --disable-protocol=*)  _libavprotocols=$(echo $_libavprotocols | sed "s/$(echo $ac_option | cut -d '=' -f 2 | tr '[a-z]' '[A-Z]')//g") ;;
1164   --enable-demuxer=*)  _libavdemuxers="$_libavdemuxers $(echo $ac_option | cut -d '=' -f 2 | tr '[a-z]' '[A-Z]')" ;;
1165   --disable-demuxer=*) _libavdemuxers=$(echo $_libavdemuxers | sed "s/$(echo $ac_option | cut -d '=' -f 2 | tr '[a-z]' '[A-Z]')//g") ;;
1166   --enable-muxer=*)    _libavmuxers="$_libavmuxers $(echo $ac_option | cut -d '=' -f 2 | tr '[a-z]' '[A-Z]')" ;;
1167   --disable-muxer=*)    _libavmuxers=$(echo $_libavmuxers | sed "s/$(echo $ac_option | cut -d '=' -f 2 | tr '[a-z]' '[A-Z]')//g") ;;
1168   --enable-libavformat_a)       _libavformat_a=yes      ;;
1169   --disable-libavformat_a)      _libavformat_a=no       ;;
1170   --enable-libavformat_so)      _libavformat_so=yes     ;;
1171   --disable-libavformat_so)     _libavformat_so=no      ;;
1172   --enable-libpostproc_a)       _libpostproc_a=yes      ;;
1173   --disable-libpostproc_a)      _libpostproc_a=no       ;;
1174   --enable-libpostproc_so)      _libpostproc_so=yes     ;;
1175   --disable-libpostproc_so)     _libpostproc_so=no      ;;
1176   --enable-libswscale_a)        _libswscale_a=yes       ;;
1177   --disable-libswscale_a)       _libswscale_a=no        ;;
1178   --enable-libswscale_so)       _libswscale_so=yes      ;;
1179   --disable-libswscale_so)      _libswscale_so=no       ;;
1180   --enable-libavcodec_mpegaudio_hp)     _libavcodec_mpegaudio_hp=yes    ;;
1181   --disable-libavcodec_mpegaudio_hp)    _libavcodec_mpegaudio_hp=no     ;;
1182
1183   --enable-lirc)        _lirc=yes       ;;
1184   --disable-lirc)       _lirc=no        ;;
1185   --enable-lircc)       _lircc=yes      ;;
1186   --disable-lircc)      _lircc=no       ;;
1187   --enable-apple-remote) _apple_remote=yes ;;
1188   --disable-apple-remote) _apple_remote=no ;;
1189   --enable-apple-ir)    _apple_ir=yes   ;;
1190   --disable-apple-ir)   _apple_ir=no    ;;
1191   --enable-gui)         _gui=yes        ;;
1192   --disable-gui)        _gui=no         ;;
1193   --enable-gtk1)        _gtk1=yes       ;;
1194   --disable-gtk1)       _gtk1=no        ;;
1195   --enable-termcap)     _termcap=yes    ;;
1196   --disable-termcap)    _termcap=no     ;;
1197   --enable-termios)     _termios=yes    ;;
1198   --disable-termios)    _termios=no     ;;
1199   --enable-3dfx)        _3dfx=yes       ;;
1200   --disable-3dfx)       _3dfx=no        ;;
1201   --enable-s3fb)        _s3fb=yes       ;;
1202   --disable-s3fb)       _s3fb=no        ;;
1203   --enable-wii)         _wii=yes        ;;
1204   --disable-wii)        _wii=no         ;;
1205   --enable-tdfxfb)      _tdfxfb=yes     ;;
1206   --disable-tdfxfb)     _tdfxfb=no      ;;
1207   --disable-tdfxvid)    _tdfxvid=no     ;;
1208   --enable-tdfxvid)     _tdfxvid=yes    ;;
1209   --disable-xvr100)     _xvr100=no      ;;
1210   --enable-xvr100)      _xvr100=yes     ;;
1211   --disable-tga)        _tga=no         ;;
1212   --enable-tga)         _tga=yes        ;;
1213   --enable-directfb)    _directfb=yes   ;;
1214   --disable-directfb)   _directfb=no    ;;
1215   --enable-zr)          _zr=yes         ;;
1216   --disable-zr)         _zr=no          ;;
1217   --enable-bl)          _bl=yes         ;;
1218   --disable-bl)         _bl=no          ;;
1219   --enable-mtrr)        _mtrr=yes       ;;
1220   --disable-mtrr)       _mtrr=no        ;;
1221   --enable-largefiles)  _largefiles=yes ;;
1222   --disable-largefiles) _largefiles=no  ;;
1223   --enable-shm)         _shm=yes        ;;
1224   --disable-shm)        _shm=no         ;;
1225   --enable-select)      _select=yes     ;;
1226   --disable-select)     _select=no      ;;
1227   --enable-linux-devfs) _linux_devfs=yes        ;;
1228   --disable-linux-devfs)        _linux_devfs=no ;;
1229   --enable-cdparanoia)  _cdparanoia=yes ;;
1230   --disable-cdparanoia) _cdparanoia=no  ;;
1231   --enable-cddb)        _cddb=yes       ;;
1232   --disable-cddb)       _cddb=no        ;;
1233   --enable-big-endian)  _big_endian=yes ;;
1234   --disable-big-endian) _big_endian=no  ;;
1235   --enable-bitmap-font)    _bitmap_font=yes   ;;
1236   --disable-bitmap-font)   _bitmap_font=no    ;;
1237   --enable-freetype)    _freetype=yes   ;;
1238   --disable-freetype)   _freetype=no    ;;
1239   --enable-fontconfig)  _fontconfig=yes ;;
1240   --disable-fontconfig) _fontconfig=no  ;;
1241   --enable-unrarexec)   _unrar_exec=yes ;;
1242   --disable-unrarexec)  _unrar_exec=no  ;;
1243   --enable-ftp)         _ftp=yes        ;;
1244   --disable-ftp)        _ftp=no         ;;
1245   --enable-vstream)     _vstream=yes    ;;
1246   --disable-vstream)    _vstream=no     ;;
1247   --enable-pthreads)    _pthreads=yes   ;;
1248   --disable-pthreads)   _pthreads=no    ;;
1249   --enable-w32threads)  _w32threads=yes ;;
1250   --disable-w32threads) _w32threads=no  ;;
1251   --enable-ass)         _ass=yes        ;;
1252   --disable-ass)        _ass=no         ;;
1253   --enable-ass-internal)  ass_internal=yes ;;
1254   --disable-ass-internal) ass_internal=no  ;;
1255   --enable-rpath)       _rpath=yes      ;;
1256   --disable-rpath)      _rpath=no       ;;
1257
1258   --enable-fribidi)     _fribidi=yes    ;;
1259   --disable-fribidi)    _fribidi=no     ;;
1260
1261   --enable-enca)        _enca=yes    ;;
1262   --disable-enca)       _enca=no     ;;
1263
1264   --enable-inet6)       _inet6=yes      ;;
1265   --disable-inet6)      _inet6=no       ;;
1266
1267   --enable-gethostbyname2)      _gethostbyname2=yes     ;;
1268   --disable-gethostbyname2)     _gethostbyname2=no      ;;
1269
1270   --enable-dga1) _dga1=yes ;;
1271   --disable-dga1) _dga1=no ;;
1272   --enable-dga2) _dga2=yes ;;
1273   --disable-dga2) _dga2=no ;;
1274
1275   --enable-menu) _menu=yes ;;
1276   --disable-menu) _menu=no ;;
1277
1278   --enable-qtx) _qtx=yes ;;
1279   --disable-qtx) _qtx=no ;;
1280
1281   --enable-coreaudio) _coreaudio=yes ;;
1282   --disable-coreaudio) _coreaudio=no ;;
1283   --enable-corevideo) _corevideo=yes ;;
1284   --disable-corevideo) _corevideo=no ;;
1285   --enable-quartz) _quartz=yes ;;
1286   --disable-quartz) _quartz=no ;;
1287   --enable-macosx-finder) _macosx_finder=yes ;;
1288   --disable-macosx-finder) _macosx_finder=no ;;
1289   --enable-macosx-bundle) _macosx_bundle=yes;;
1290   --disable-macosx-bundle) _macosx_bundle=no;;
1291
1292   --enable-maemo) _maemo=yes ;;
1293   --disable-maemo) _maemo=no ;;
1294
1295   --enable-sortsub) _sortsub=yes ;;
1296   --disable-sortsub) _sortsub=no ;;
1297
1298   --enable-crash-debug) _crash_debug=yes ;;
1299   --disable-crash-debug) _crash_debug=no ;;
1300   --enable-sighandler)  _sighandler=yes  ;;
1301   --disable-sighandler) _sighandler=no   ;;
1302   --enable-win32dll) _win32dll=yes ;;
1303   --disable-win32dll) _win32dll=no ;;
1304
1305   --enable-sse) _sse=yes ;;
1306   --disable-sse) _sse=no ;;
1307   --enable-sse2) _sse2=yes ;;
1308   --disable-sse2) _sse2=no ;;
1309   --enable-ssse3) _ssse3=yes ;;
1310   --disable-ssse3) _ssse3=no ;;
1311   --enable-mmxext) _mmxext=yes ;;
1312   --disable-mmxext) _mmxext=no ;;
1313   --enable-3dnow) _3dnow=yes ;;
1314   --disable-3dnow) _3dnow=no _3dnowext=no ;;
1315   --enable-3dnowext) _3dnow=yes _3dnowext=yes ;;
1316   --disable-3dnowext) _3dnowext=no ;;
1317   --enable-cmov) _cmov=yes ;;
1318   --disable-cmov) _cmov=no ;;
1319   --enable-fast-cmov) _fast_cmov=yes ;;
1320   --disable-fast-cmov) _fast_cmov=no ;;
1321   --enable-altivec) _altivec=yes ;;
1322   --disable-altivec) _altivec=no ;;
1323   --enable-armv5te) _armv5te=yes ;;
1324   --disable-armv5te) _armv5te=no ;;
1325   --enable-armv6) _armv6=yes ;;
1326   --disable-armv6) _armv6=no ;;
1327   --enable-armv6t2) _armv6t2=yes ;;
1328   --disable-armv6t2) _armv6t2=no ;;
1329   --enable-armvfp) _armvfp=yes ;;
1330   --disable-armvfp) _armvfp=no ;;
1331   --enable-neon) neon=yes ;;
1332   --disable-neon) neon=no ;;
1333   --enable-iwmmxt) _iwmmxt=yes ;;
1334   --disable-iwmmxt) _iwmmxt=no ;;
1335   --enable-mmx) _mmx=yes ;;
1336   --disable-mmx) # 3Dnow! and MMX2 require MMX
1337         _3dnow=no _3dnowext=no _mmx=no _mmxext=no ;;
1338
1339   *)
1340     echo "Unknown parameter: $ac_option"
1341     exit 1
1342     ;;
1343
1344   esac
1345 done
1346
1347 # Atmos: moved this here, to be correct, if --prefix is specified
1348 test -z "$_bindir" && _bindir="$_prefix/bin"
1349 test -z "$_datadir" && _datadir="$_prefix/share/mplayer"
1350 test -z "$_mandir" && _mandir="$_prefix/share/man"
1351 test -z "$_confdir" && _confdir="$_prefix/etc/mplayer"
1352 test -z "$_libdir" && _libdir="$_prefix/lib"
1353
1354 # Determine our OS name and CPU architecture
1355 if test -z "$_target" ; then
1356   # OS name
1357   system_name=$(uname -s 2>&1)
1358   case "$system_name" in
1359   Linux|FreeBSD|NetBSD|OpenBSD|DragonFly|BSD/OS|Darwin|SunOS|QNX|GNU|BeOS|MorphOS|AIX|AmigaOS)
1360     ;;
1361   Haiku)
1362     system_name=BeOS
1363     ;;
1364   IRIX*)
1365     system_name=IRIX
1366     ;;
1367   GNU/kFreeBSD)
1368     system_name=FreeBSD
1369     ;;
1370   HP-UX*)
1371     system_name=HP-UX
1372     ;;
1373   [cC][yY][gG][wW][iI][nN]*)
1374     system_name=CYGWIN
1375     ;;
1376   MINGW32*)
1377     system_name=MINGW32
1378     ;;
1379   OS/2*)
1380     system_name=OS/2
1381     ;;
1382   *)
1383     system_name="$system_name-UNKNOWN"
1384     ;;
1385   esac
1386
1387
1388   # host's CPU/instruction set
1389    host_arch=$(uname -p 2>&1)
1390    case "$host_arch" in
1391    i386|sparc|ppc|alpha|arm|mips|vax)
1392      ;;
1393    powerpc) # Darwin returns 'powerpc'
1394      host_arch=ppc
1395      ;;
1396    *) # uname -p on Linux returns 'unknown' for the processor type,
1397       # OpenBSD returns 'Intel Pentium/MMX ("Genuine Intel" 586-class)'
1398
1399       # Maybe uname -m (machine hardware name) returns something we
1400       # recognize.
1401
1402       # x86/x86pc is used by QNX
1403       case "$(uname -m 2>&1)" in
1404       x86_64|amd64|i[3-9]86*|x86|x86pc|k5|k6|k6_2|k6_3|k6-2|k6-3|pentium*|athlon*|i586_i686|i586-i686|BePC) host_arch=i386 ;;
1405       ia64) host_arch=ia64 ;;
1406       macppc|ppc) host_arch=ppc ;;
1407       ppc64) host_arch=ppc64 ;;
1408       alpha) host_arch=alpha ;;
1409       sparc) host_arch=sparc ;;
1410       sparc64) host_arch=sparc64 ;;
1411       parisc*|hppa*|9000*) host_arch=hppa ;;
1412       arm*|zaurus|cats) host_arch=arm ;;
1413       sh3|sh4|sh4a) host_arch=sh ;;
1414       s390) host_arch=s390 ;;
1415       s390x) host_arch=s390x ;;
1416       *mips*) host_arch=mips ;;
1417       vax) host_arch=vax ;;
1418       xtensa*) host_arch=xtensa ;;
1419       *) host_arch=UNKNOWN ;;
1420     esac
1421     ;;
1422   esac
1423 else # if test -z "$_target"
1424   system_name=$(echo $_target | cut -d '-' -f 2)
1425   case "$(echo $system_name | tr A-Z a-z)" in
1426     linux) system_name=Linux ;;
1427     freebsd) system_name=FreeBSD ;;
1428     gnu/kfreebsd) system_name=FreeBSD ;;
1429     netbsd) system_name=NetBSD ;;
1430     bsd/os) system_name=BSD/OS ;;
1431     openbsd) system_name=OpenBSD ;;
1432     dragonfly) system_name=DragonFly ;;
1433     sunos) system_name=SunOS ;;
1434     qnx) system_name=QNX ;;
1435     morphos) system_name=MorphOS ;;
1436     amigaos) system_name=AmigaOS ;;
1437     mingw32*) system_name=MINGW32 ;;
1438   esac
1439   # We need to convert underscores so that values like k6-2 and pentium-mmx can be passed
1440   host_arch=$(echo $_target | cut -d '-' -f 1)
1441   if test $(echo $host_arch) != "x86_64" ; then
1442     host_arch=$(echo $host_arch | tr '_' '-')
1443   fi
1444 fi
1445
1446 extra_cflags="-I. $extra_cflags"
1447 _timer=timer-linux.c
1448 _getch=getch2.c
1449 if freebsd ; then
1450   extra_ldflags="$extra_ldflags -L/usr/local/lib"
1451   extra_cflags="$extra_cflags -I/usr/local/include"
1452 fi
1453
1454 if netbsd || dragonfly ; then
1455   extra_ldflags="$extra_ldflags -L/usr/pkg/lib"
1456   extra_cflags="$extra_cflags -I/usr/pkg/include"
1457 fi
1458
1459 if darwin; then
1460   extra_cflags="-mdynamic-no-pic -falign-loops=16 -shared-libgcc $extra_cflags"
1461   _timer=timer-darwin.c
1462 fi
1463
1464 if aix ; then
1465   extra_ldflags="$extra_ldflags -lC"
1466 fi
1467
1468 if irix ; then
1469   _ranlib='ar -r'
1470 elif linux ; then
1471   _ranlib='true'
1472 fi
1473
1474 if win32 ; then
1475   _exesuf=".exe"
1476   # -lwinmm is always needed for osdep/timer-win2.c
1477   extra_ldflags="$extra_ldflags -lwinmm"
1478   _pe_executable=yes
1479   _timer=timer-win2.c
1480   _priority=yes
1481   def_dos_paths="#define HAVE_DOS_PATHS 1"
1482   def_priority="#define CONFIG_PRIORITY 1"
1483 fi
1484
1485 if mingw32 ; then
1486   _getch=getch2-win.c
1487   _need_shmem=no
1488 fi
1489
1490 if amigaos ; then
1491   _select=no
1492   _sighandler=no
1493   _stream_cache=no
1494   def_stream_cache="#undef CONFIG_STREAM_CACHE"
1495   extra_cflags="-DNEWLIB -D__USE_INLINE__ $extra_cflags"
1496 fi
1497
1498 if qnx ; then
1499   extra_ldflags="$extra_ldflags -lph"
1500 fi
1501
1502 if os2 ; then
1503   _exesuf=".exe"
1504   _getch=getch2-os2.c
1505   _need_shmem=no
1506   _priority=yes
1507   def_dos_paths="#define HAVE_DOS_PATHS 1"
1508   def_priority="#define CONFIG_PRIORITY 1"
1509 fi
1510
1511 for I in "$TMPDIR" "$TEMPDIR" "/tmp" ; do
1512   test "$I" && break
1513 done
1514
1515
1516 TMPLOG="configure.log"
1517 TMPC="$I/mplayer-conf-$RANDOM-$$.c"
1518 TMPCPP="$I/mplayer-conf-$RANDOM-$$.cpp"
1519 TMPEXE="$I/mplayer-conf-$RANDOM-$$$_exesuf"
1520 TMPH="$I/mplayer-conf-$RANDOM-$$.h"
1521 TMPS="$I/mplayer-conf-$RANDOM-$$.S"
1522
1523 rm -f "$TMPLOG"
1524 echo configuration: $_configuration > "$TMPLOG"
1525 echo >> "$TMPLOG"
1526
1527
1528 if test "$_runtime_cpudetection" = yes && ! x86 && ! ppc; then
1529   die "Runtime CPU detection only works for x86, x86-64 and PPC!"
1530 fi
1531
1532
1533 # Checking CC version...
1534 # Intel C++ Compilers (no autoselect, use CC=/some/binary ./configure)
1535 if test "$(basename $_cc)" = "icc" || test "$(basename $_cc)" = "ecc"; then
1536   echocheck "$_cc version"
1537   cc_vendor=intel
1538   cc_name=$($_cc -V 2>&1 | head -n 1 | cut -d ',' -f 1)
1539   cc_version=$($_cc -V 2>&1 | head -n 1 | cut -d ',' -f 2 | cut -d ' ' -f 3)
1540   _cc_major=$(echo $cc_version | cut -d '.' -f 1)
1541   _cc_minor=$(echo $cc_version | cut -d '.' -f 2)
1542   # TODO verify older icc/ecc compatibility
1543   case $cc_version in
1544     '')
1545       cc_version="v. ?.??, bad"
1546       cc_fail=yes
1547       ;;
1548     10.1|11.0|11.1)
1549       cc_version="$cc_version, ok"
1550       ;;
1551     *)
1552       cc_version="$cc_version, bad"
1553       cc_fail=yes
1554       ;;
1555   esac
1556   echores "$cc_version"
1557 else
1558   for _cc in "$_cc" cc gcc ; do
1559     cc_name_tmp=$($_cc -v 2>&1 | tail -n 1 | cut -d ' ' -f 1)
1560     if test "$cc_name_tmp" = "gcc"; then
1561     cc_name=$cc_name_tmp
1562     echocheck "$_cc version"
1563     cc_vendor=gnu
1564     cc_version=$($_cc -dumpversion 2>&1)
1565     case $cc_version in
1566       2.96*)
1567         cc_fail=yes
1568         ;;
1569       *)
1570         _cc_major=$(echo $cc_version | cut -d '.' -f 1)
1571         _cc_minor=$(echo $cc_version | cut -d '.' -f 2)
1572         _cc_mini=$(echo $cc_version | cut -d '.' -f 3)
1573         ;;
1574     esac
1575     echores "$cc_version"
1576     break
1577     fi
1578   done
1579 fi # icc
1580 test "$cc_fail" = yes && die "unsupported compiler version"
1581
1582 if test -z "$_target" && x86 ; then
1583   cat > $TMPC << EOF
1584 int main(void) {
1585     int test[(int)sizeof(char *)-7];
1586     return 0;
1587 }
1588 EOF
1589   cc_check && host_arch=x86_64 || host_arch=i386
1590 fi
1591
1592 echo "Detected operating system: $system_name"
1593 echo "Detected host architecture: $host_arch"
1594
1595 echocheck "host cc"
1596 test "$_host_cc" || _host_cc=$_cc
1597 echores $_host_cc
1598
1599 echocheck "cross compilation"
1600 if test $_cross_compile = auto ; then
1601   cat > $TMPC << EOF
1602 int main(void) { return 0; }
1603 EOF
1604   _cross_compile=yes
1605   cc_check && "$TMPEXE" && _cross_compile=no
1606 fi
1607 echores $_cross_compile
1608
1609 if test $_cross_compile = yes; then
1610   tmp_run() {
1611     return 0
1612   }
1613 fi
1614
1615 # ---
1616
1617 # now that we know what compiler should be used for compilation, try to find
1618 # out which assembler is used by the $_cc compiler
1619 if test "$_as" = auto ; then
1620   _as=$($_cc -print-prog-name=as)
1621   test -z "$_as" && _as=as
1622 fi
1623
1624 if test "$_nm" = auto ; then
1625   _nm=$($_cc -print-prog-name=nm)
1626   test -z "$_nm" && _nm=nm
1627 fi
1628
1629 # XXX: this should be ok..
1630 _cpuinfo="echo"
1631
1632 if test "$_runtime_cpudetection" = no ; then
1633
1634 # Cygwin has /proc/cpuinfo, but only supports Intel CPUs
1635 # FIXME: Remove the cygwin check once AMD CPUs are supported
1636 if test -r /proc/cpuinfo && ! cygwin; then
1637   # Linux with /proc mounted, extract CPU information from it
1638   _cpuinfo="cat /proc/cpuinfo"
1639 elif test -r /compat/linux/proc/cpuinfo && ! x86_32 ; then
1640   # FreeBSD with Linux emulation /proc mounted,
1641   # extract CPU information from it
1642   _cpuinfo="cat /compat/linux/proc/cpuinfo"
1643 elif darwin && ! x86 ; then
1644   # use hostinfo on Darwin
1645   _cpuinfo="hostinfo"
1646 elif aix; then
1647   # use 'lsattr' on AIX
1648   _cpuinfo="lsattr -E -l proc0 -a type"
1649 elif x86; then
1650   # all other OSes try to extract CPU information from a small helper
1651   # program cpuinfo instead
1652   $_cc -o cpuinfo$_exesuf cpuinfo.c
1653   _cpuinfo="./cpuinfo$_exesuf"
1654 fi
1655
1656 if x86 ; then
1657   # gather more CPU information
1658   pname=$($_cpuinfo | grep 'model name' | cut -d ':' -f 2 | head -n 1)
1659   pvendor=$($_cpuinfo | grep 'vendor_id' | cut -d ':' -f 2  | cut -d ' ' -f 2 | head -n 1)
1660   pfamily=$($_cpuinfo | grep 'cpu family' | cut -d ':' -f 2 | cut -d ' ' -f 2 | head -n 1)
1661   pmodel=$($_cpuinfo | grep -v 'model name' | grep 'model' | cut -d ':' -f 2 | cut -d ' ' -f 2 | head -n 1)
1662   pstepping=$($_cpuinfo | grep 'stepping' | cut -d ':' -f 2 | cut -d ' ' -f 2 | head -n 1)
1663
1664   exts=$($_cpuinfo | egrep 'features|flags' | cut -d ':' -f 2 | head -n 1)
1665
1666   pparam=$(echo $exts | sed -e s/k6_mtrr/mtrr/ -e s/cyrix_arr/mtrr/ -e s/centaur_mcr/mtrr/ \
1667                             -e s/xmm/sse/ -e s/kni/sse/)
1668
1669   for ext in $pparam ; do
1670     eval test \"\$_$ext\" = auto 2>/dev/null && eval _$ext=kernel_check
1671   done
1672
1673   # SSE implies MMX2, but not all SSE processors report the mmxext CPU flag.
1674   test $_sse = kernel_check && _mmxext=kernel_check
1675
1676   echocheck "CPU vendor"
1677   echores "$pvendor ($pfamily:$pmodel:$pstepping)"
1678
1679   echocheck "CPU type"
1680   echores "$pname"
1681 fi
1682
1683 fi # test "$_runtime_cpudetection" = no
1684
1685 if x86 && test "$_runtime_cpudetection" = no ; then
1686   extcheck() {
1687     if test "$1" = kernel_check ; then
1688       echocheck "kernel support of $2"
1689       cat > $TMPC <<EOF
1690 #include <stdlib.h>
1691 #include <signal.h>
1692 void catch() { exit(1); }
1693 int main(void) {
1694   signal(SIGILL, catch);
1695   __asm__ volatile ("$3":::"memory"); return 0;
1696 }
1697 EOF
1698
1699       if cc_check && tmp_run ; then
1700         eval _$2=yes
1701         echores "yes"
1702         _optimizing="$_optimizing $2"
1703         return 0
1704       else
1705         eval _$2=no
1706         echores "failed"
1707         echo "It seems that your kernel does not correctly support $2."
1708         echo "To use $2 extensions in MPlayer, you have to upgrade/recompile your kernel!"
1709         return 1
1710       fi
1711     fi
1712     return 0
1713   }
1714
1715   extcheck $_mmx      "mmx"      "emms"
1716   extcheck $_mmxext   "mmxext"   "sfence"
1717   extcheck $_3dnow    "3dnow"    "femms"
1718   extcheck $_3dnowext "3dnowext" "pswapd %%mm0, %%mm0"
1719   extcheck $_sse      "sse"      "xorps %%xmm0, %%xmm0" || _gcc3_ext="$_gcc3_ext -mno-sse"
1720   extcheck $_sse2     "sse2"     "xorpd %%xmm0, %%xmm0" || _gcc3_ext="$_gcc3_ext -mno-sse2"
1721   extcheck $_ssse3    "ssse3"    "pabsd %%xmm0, %%xmm0"
1722   extcheck $_cmov     "cmov"     "cmovb %%eax,%%ebx"
1723
1724   echocheck "mtrr support"
1725   if test "$_mtrr" = kernel_check ; then
1726     _mtrr="yes"
1727     _optimizing="$_optimizing mtrr"
1728   fi
1729   echores "$_mtrr"
1730
1731   if test "$_gcc3_ext" != ""; then
1732     # if we had to disable sse/sse2 because the active kernel does not
1733     # support this instruction set extension, we also have to tell
1734     # gcc3 to not generate sse/sse2 instructions for normal C code
1735     cat > $TMPC << EOF
1736 int main(void) { return 0; }
1737 EOF
1738     cc_check $_march $_gcc3_ext && _march="$_march $_gcc3_ext"
1739   fi
1740
1741 fi
1742
1743
1744 def_fast_64bit='#define HAVE_FAST_64BIT 0'
1745 def_fast_unaligned='#define HAVE_FAST_UNALIGNED 0'
1746 _arch_all='X86 X86_32 X86_64 IA64 SPARC ARM AVR32 SH4 PPC PPC64 ALPHA MIPS SGI_MIPS PA_RISC S390 S390X VAX BFIN XTENSA GENERIC'
1747 case "$host_arch" in
1748   i[3-9]86|x86|x86pc|k5|k6|k6-2|k6-3|pentium*|athlon*|i586-i686)
1749   _arch='X86 X86_32'
1750   _target_arch="ARCH_X86 = yes"
1751   _target_subarch="ARCH_X86_32 = yes"
1752   def_fast_unaligned='#define HAVE_FAST_UNALIGNED 1'
1753   iproc=486
1754   proc=i486
1755
1756
1757   if test "$_runtime_cpudetection" = no ; then
1758   case "$pvendor" in
1759   AuthenticAMD)
1760     case "$pfamily" in
1761     3) proc=i386 iproc=386 ;;
1762     4) proc=i486 iproc=486 ;;
1763     5) iproc=586       # LGB: models are: K5/SSA5 K5 K5 K5 ? ? K6 K6 K6-2 K6-3
1764         # K6 model 13 are the K6-2+ and K6-III+, only differing in cache size.
1765         if test "$pmodel" -eq 9 -o "$pmodel" -eq 13; then
1766                 proc=k6-3
1767         elif test "$pmodel" -eq 5 -o "$pmodel" -eq 10; then
1768                 proc=geode
1769         elif test "$pmodel" -ge 8; then
1770                 proc=k6-2
1771         elif test "$pmodel" -ge 6; then
1772                 proc=k6
1773         else
1774                 proc=i586
1775         fi
1776         ;;
1777     6) iproc=686
1778         # It's a bit difficult to determine the correct type of Family 6
1779         # AMD CPUs just from their signature. Instead, we check directly
1780         # whether it supports SSE.
1781         if test "$_sse" = yes; then
1782                 # gcc treats athlon-xp, athlon-4 and athlon-mp similarly.
1783                 proc=athlon-xp
1784         else
1785                 # Again, gcc treats athlon and athlon-tbird similarly.
1786                 proc=athlon
1787         fi
1788         ;;
1789     15) iproc=686
1790         # k8 cpu-type only supported in gcc >= 3.4.0, but that will be
1791         # caught and remedied in the optimization tests below.
1792         proc=k8
1793         ;;
1794
1795     *) proc=k8 iproc=686 ;;
1796     esac
1797     ;;
1798   GenuineIntel)
1799     case "$pfamily" in
1800     3) proc=i386 iproc=386 ;;
1801     4) proc=i486 iproc=486 ;;
1802     5) iproc=586
1803         if test "$pmodel" -eq 4 || test "$pmodel" -eq 8; then
1804                 proc=pentium-mmx # 4 is desktop, 8 is mobile
1805         else
1806                 proc=i586
1807         fi
1808         ;;
1809     6) iproc=686
1810         if test "$pmodel" -ge 15; then
1811                 proc=core2
1812         elif test "$pmodel" -eq 9 -o "$pmodel" -ge 13; then
1813                 proc=pentium-m
1814         elif test "$pmodel" -ge 7; then
1815                 proc=pentium3
1816         elif test "$pmodel" -ge 3; then
1817                 proc=pentium2
1818         else
1819                 proc=i686
1820         fi
1821         ;;
1822     15) iproc=686
1823         # A nocona in 32-bit mode has no more capabilities than a prescott.
1824         if test "$pmodel" -ge 3; then
1825                 proc=prescott
1826         else
1827                 proc=pentium4
1828         fi
1829         test $_fast_cmov = "auto" && _fast_cmov=no
1830         ;;
1831     *) proc=prescott iproc=686 ;;
1832     esac
1833     ;;
1834   CentaurHauls)
1835     case "$pfamily" in
1836     5) iproc=586
1837         if test "$pmodel" -ge 8; then
1838                 proc=winchip2
1839         elif test "$pmodel" -ge 4; then
1840                 proc=winchip-c6
1841         else
1842                 proc=i586
1843         fi
1844         ;;
1845     6) iproc=686
1846         if test "$pmodel" -ge 9; then
1847                 proc=c3-2
1848         else
1849                 proc=c3
1850                 iproc=586
1851         fi
1852         ;;
1853     *) proc=i686 iproc=i686 ;;
1854     esac
1855     ;;
1856   unknown)
1857     case "$pfamily" in
1858     3) proc=i386 iproc=386 ;;
1859     4) proc=i486 iproc=486 ;;
1860     *) proc=i586 iproc=586 ;;
1861     esac
1862     ;;
1863   *)
1864     proc=i586 iproc=586 ;;
1865   esac
1866   fi # test "$_runtime_cpudetection" = no
1867
1868
1869     # check that gcc supports our CPU, if not, fall back to earlier ones
1870     # LGB: check -mcpu and -march swithing step by step with enabling
1871     # to fall back till 386.
1872
1873     # gcc >= 3.4.0  doesn't support -mcpu, we have to use -mtune instead
1874
1875     if [ "$cc_vendor" = "gnu" ] && ([ "$_cc_major" -gt 3 ] || ( [ "$_cc_major" = 3 ] && [ "$_cc_minor" -ge 4 ])) ; then
1876         cpuopt=-mtune
1877     else
1878         cpuopt=-mcpu
1879     fi
1880
1881     echocheck "GCC & CPU optimization abilities"
1882 cat > $TMPC << EOF
1883 int main(void) { return 0; }
1884 EOF
1885   if test "$_runtime_cpudetection" = no ; then
1886     cc_check -march=native && proc=native
1887     if test "$proc" = "k8"; then
1888       cc_check -march=$proc $cpuopt=$proc || proc=athlon-xp
1889     fi
1890     if test "$proc" = "athlon-xp"; then
1891       cc_check -march=$proc $cpuopt=$proc || proc=athlon
1892     fi
1893     if test "$proc" = "k6-3" || test "$proc" = "k6-2"; then
1894       cc_check -march=$proc $cpuopt=$proc  || proc=k6
1895     fi
1896     if test "$proc" = "k6" || test "$proc" = "c3"; then
1897       if ! cc_check -march=$proc $cpuopt=$proc; then
1898         if cc_check -march=i586 $cpuopt=i686; then
1899           proc=i586-i686
1900         else
1901           proc=i586
1902         fi
1903       fi
1904     fi
1905     if test "$proc" = "prescott" ; then
1906       cc_check -march=$proc $cpuopt=$proc || proc=pentium4
1907     fi
1908     if test "$proc" = "core2" ; then
1909       cc_check -march=$proc $cpuopt=$proc || proc=pentium-m
1910     fi
1911     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
1912       cc_check -march=$proc $cpuopt=$proc  || proc=i686
1913     fi
1914     if test "$proc" = "i686" || test "$proc" = "pentium-mmx" || test "$proc" = "winchip-c6" || test "$proc" = "winchip2"; then
1915       cc_check -march=$proc $cpuopt=$proc  || proc=i586
1916     fi
1917     if test "$proc" = "i586"; then
1918       cc_check -march=$proc $cpuopt=$proc  || proc=i486
1919     fi
1920     if test "$proc" = "i486" ; then
1921       cc_check -march=$proc $cpuopt=$proc  || proc=i386
1922     fi
1923     if test "$proc" = "i386" ; then
1924       cc_check -march=$proc $cpuopt=$proc  || proc=error
1925     fi
1926     if test "$proc" = "error" ; then
1927         echores "CPU optimization disabled. CPU not recognized or your compiler is too old."
1928       _mcpu=""
1929       _march=""
1930       _optimizing=""
1931     elif test "$proc" = "i586-i686"; then
1932       _march="-march=i586"
1933       _mcpu="$cpuopt=i686"
1934       _optimizing="$proc"
1935     else
1936       _march="-march=$proc"
1937       _mcpu="$cpuopt=$proc"
1938       _optimizing="$proc"
1939     fi
1940   else # if test "$_runtime_cpudetection" = no
1941     _mcpu="$cpuopt=generic"
1942     # at least i486 required, for bswap instruction
1943     _march="-march=i486"
1944     cc_check $_mcpu || _mcpu="$cpuopt=i686"
1945     cc_check $_mcpu || _mcpu=""
1946     cc_check $_march $_mcpu || _march=""
1947   fi
1948
1949     ## Gabucino : --target takes effect here (hopefully...) by overwriting
1950     ##             autodetected mcpu/march parameters
1951     if test "$_target" ; then
1952       # TODO: it may be a good idea to check GCC and fall back in all cases
1953       if test "$host_arch" = "i586-i686"; then
1954         _march="-march=i586"
1955         _mcpu="$cpuopt=i686"
1956       else
1957         _march="-march=$host_arch"
1958         _mcpu="$cpuopt=$host_arch"
1959       fi
1960
1961       proc="$host_arch"
1962
1963       case "$proc" in
1964         i386) iproc=386 ;;
1965         i486) iproc=486 ;;
1966         i586|k5|k6|k6-2|k6-3|pentium|pentium-mmx) iproc=586 ;;
1967         i686|athlon*|pentium*) iproc=686 ;;
1968         *) iproc=586 ;;
1969       esac
1970     fi
1971
1972     if test $_cmov = "yes" && test $_fast_cmov = "auto" ; then
1973         _fast_cmov="yes"
1974     else
1975         _fast_cmov="no"
1976     fi
1977
1978     echores "$proc"
1979     ;;
1980
1981   ia64)
1982     _arch='IA64'
1983     _target_arch='ARCH_IA64 = yes'
1984     def_fast_64bit='#define HAVE_FAST_64BIT 1'
1985     iproc='ia64'
1986     ;;
1987
1988   x86_64|amd64)
1989     _arch='X86 X86_64'
1990     _target_subarch='ARCH_X86_64 = yes'
1991     _target_arch="ARCH_X86 = yes"
1992     def_fast_unaligned='#define HAVE_FAST_UNALIGNED 1'
1993     def_fast_64bit='#define HAVE_FAST_64BIT 1'
1994     iproc='x86_64'
1995
1996     # gcc >= 3.4.0  doesn't support -mcpu, we have to use -mtune instead
1997     if test "$cc_vendor" = "gnu" && test "$_cc_major" -gt 3 -o "$_cc_major" -eq 3 -a "$_cc_minor" -ge 4 ; then
1998         cpuopt=-mtune
1999     else
2000         cpuopt=-mcpu
2001     fi
2002     test $_fast_cmov = "auto" && _fast_cmov=yes
2003     if test "$_runtime_cpudetection" = no ; then
2004       case "$pvendor" in
2005       AuthenticAMD)
2006         proc=k8;;
2007       GenuineIntel)
2008         case "$pfamily" in
2009         6) proc=core2;;
2010         *)
2011           # 64-bit prescotts exist, but as far as GCC is concerned they
2012           # have the same capabilities as a nocona.
2013           proc=nocona
2014           ;;
2015         esac
2016         ;;
2017       *)
2018         proc=error;;
2019       esac
2020     fi # test "$_runtime_cpudetection" = no
2021
2022     echocheck "GCC & CPU optimization abilities"
2023 cat > $TMPC << EOF
2024 int main(void) { return 0; }
2025 EOF
2026     # This is a stripped-down version of the i386 fallback.
2027     if test "$_runtime_cpudetection" = no ; then
2028       cc_check -march=native && proc=native
2029       # --- AMD processors ---
2030       if test "$proc" = "k8"; then
2031         cc_check -march=$proc $cpuopt=$proc || proc=athlon-xp
2032       fi
2033       # This will fail if gcc version < 3.3, which is ok because earlier
2034       # versions don't really support 64-bit on amd64.
2035       # Is this a valid assumption? -Corey
2036       if test "$proc" = "athlon-xp"; then
2037         cc_check -march=$proc $cpuopt=$proc || proc=error
2038       fi
2039       # --- Intel processors ---
2040       if test "$proc" = "core2"; then
2041         cc_check -march=$proc $cpuopt=$proc || proc=nocona
2042       fi
2043       if test "$proc" = "nocona"; then
2044         cc_check -march=$proc $cpuopt=$proc || proc=pentium4
2045       fi
2046       if test "$proc" = "pentium4"; then
2047         cc_check -march=$proc $cpuopt=$proc || proc=error
2048       fi
2049
2050       _march="-march=$proc"
2051       _mcpu="$cpuopt=$proc"
2052       if test "$proc" = "error" ; then
2053         echores "CPU optimization disabled. CPU not recognized or your compiler is too old."
2054         _mcpu=""
2055         _march=""
2056       fi
2057     else # if test "$_runtime_cpudetection" = no
2058       # x86-64 is an undocumented option, an intersection of k8 and nocona.
2059       _march="-march=x86-64"
2060       _mcpu="$cpuopt=generic"
2061       cc_check $_mcpu || _mcpu="x86-64"
2062       cc_check $_mcpu || _mcpu=""
2063       cc_check $_march $_mcpu || _march=""
2064     fi
2065
2066     _optimizing=""
2067
2068     echores "$proc"
2069     ;;
2070
2071   sparc|sparc64)
2072     _arch='SPARC'
2073     _target_arch='ARCH_SPARC = yes'
2074     iproc='sparc'
2075     if test "$host_arch" = "sparc64" ; then
2076       _vis='yes'
2077       proc='ultrasparc'
2078       def_fast_64bit='#define HAVE_FAST_64BIT 1'
2079     elif sunos ; then
2080         echocheck "CPU type"
2081         karch=$(uname -m)
2082         case "$(echo $karch)" in
2083             sun4) proc=v7 ;;
2084             sun4c) proc=v7 ;;
2085             sun4d) proc=v8 ;;
2086             sun4m) proc=v8 ;;
2087             sun4u) proc=ultrasparc _vis='yes' ;;
2088             sun4v) proc=v9 ;;
2089             *) proc=v8 ;;
2090         esac
2091         echores "$proc"
2092     else
2093         proc=v8
2094     fi
2095     _mcpu="-mcpu=$proc"
2096     _optimizing="$proc"
2097     ;;
2098
2099   arm|armv4l|armv5tel)
2100     _arch='ARM'
2101     _target_arch='ARCH_ARM = yes'
2102     iproc='arm'
2103     ;;
2104
2105   avr32)
2106     _arch='AVR32'
2107     _target_arch='ARCH_AVR32 = yes'
2108     def_fast_unaligned='#define HAVE_FAST_UNALIGNED 1'
2109     iproc='avr32'
2110     ;;
2111
2112   sh|sh4)
2113     _arch='SH4'
2114     _target_arch='ARCH_SH4 = yes'
2115     iproc='sh4'
2116     ;;
2117
2118   ppc|ppc64|powerpc|powerpc64)
2119     _arch='PPC'
2120     def_dcbzl='#define HAVE_DCBZL 0'
2121     _target_arch='ARCH_PPC = yes'
2122     def_fast_unaligned='#define HAVE_FAST_UNALIGNED 1'
2123     iproc='ppc'
2124
2125     if test "$host_arch" = "ppc64" -o "$host_arch" = "powerpc64" ; then
2126       _arch='PPC PPC64'
2127       _target_subarch='ARCH_PPC64 = yes'
2128       def_fast_64bit='#define HAVE_FAST_64BIT 1'
2129     fi
2130     echocheck "CPU type"
2131     case $system_name in
2132       Linux)
2133         proc=$($_cpuinfo | grep 'cpu' | cut -d ':' -f 2 | cut -d ',' -f 1 | cut -b 2- | head -n 1)
2134         if test -n "$($_cpuinfo | grep altivec)"; then
2135             test $_altivec = auto && _altivec=yes
2136         fi
2137         ;;
2138       Darwin)
2139         proc=$($_cpuinfo | grep "Processor type" | cut -f 3 -d ' ' | sed 's/ppc//')
2140         if [ $(sysctl -n hw.vectorunit) -eq 1 -o \
2141             "$(sysctl -n hw.optional.altivec 2> /dev/null)" = "1" ]; then
2142             test $_altivec = auto && _altivec=yes
2143         fi
2144         ;;
2145       NetBSD)
2146         # only gcc 3.4 works reliably with AltiVec code under NetBSD
2147         case $cc_version in
2148             2*|3.0*|3.1*|3.2*|3.3*)
2149                 ;;
2150             *)
2151                 if [ $(sysctl -n machdep.altivec) -eq 1 ]; then
2152                     test $_altivec = auto && _altivec=yes
2153                 fi
2154                 ;;
2155         esac
2156         ;;
2157       AIX)
2158         proc=$($_cpuinfo | grep 'type' | cut -f 2 -d ' ' | sed 's/PowerPC_//')
2159         ;;
2160     esac
2161     if test "$_altivec" = yes; then
2162         echores "$proc altivec"
2163     else
2164         _altivec=no
2165         echores "$proc"
2166     fi
2167
2168     echocheck "GCC & CPU optimization abilities"
2169
2170     if test -n "$proc"; then
2171         case "$proc" in
2172             601) _march='-mcpu=601' _mcpu='-mtune=601' ;;
2173             603) _march='-mcpu=603' _mcpu='-mtune=603' ;;
2174             603e|603ev) _march='-mcpu=603e' _mcpu='-mtune=603e' ;;
2175             604|604e|604r|604ev) _march='-mcpu=604' _mcpu='-mtune=604' ;;
2176             740|740/750|745/755) _march='-mcpu=740' _mcpu='-mtune=740' ;;
2177             750|750CX) _march='-mcpu=750' _mcpu='-mtune=750' ;;
2178             POWER)  _march='-mcpu=power'  _mcpu='-mtune=power'  ;;
2179             POWER2) _march='-mcpu=power2' _mcpu='-mtune=power2' ;;
2180             POWER3) _march='-mcpu=power3' _mcpu='-mtune=power3' ;;
2181             *) ;;
2182         esac
2183         # gcc 3.1(.1) and up supports 7400 and 7450
2184         if test "$_cc_major" -ge "3" && test "$_cc_minor" -ge "1" || test "$_cc_major" -ge "4"; then
2185             case "$proc" in
2186                 7400*|7410*) _march='-mcpu=7400' _mcpu='-mtune=7400' ;;
2187                 7447*|7450*|7455*) _march='-mcpu=7450' _mcpu='-mtune=7450' ;;
2188                 *) ;;
2189             esac
2190         fi
2191         # gcc 3.2 and up supports 970
2192         if test "$_cc_major" -ge "3" && test "$_cc_minor" -ge "3" || test "$_cc_major" -ge "4"; then
2193             case "$proc" in
2194                 970*|PPC970*) _march='-mcpu=970' _mcpu='-mtune=970'
2195                       def_dcbzl='#define HAVE_DCBZL 1' ;;
2196                 *) ;;
2197             esac
2198         fi
2199         # gcc 3.3 and up supports POWER4
2200         if test "$_cc_major" -ge "3" && test "$_cc_minor" -ge "3" || test "$_cc_major" -ge "4"; then
2201             case "$proc" in
2202                 POWER4) _march='-mcpu=power4' _mcpu='-mtune=power4' ;;
2203                 *) ;;
2204             esac
2205         fi
2206         # gcc 3.4 and up supports 440*
2207         if test "$_cc_major" -ge "3" && test "$_cc_minor" -ge "4" || test "$_cc_major" -ge "4"; then
2208             case "$proc" in
2209                 440EP*) _march='-mcpu=440fp' _mcpu='-mtune=440fp' ;;
2210                 440G* ) _march='-mcpu=440'   _mcpu='-mtune=440'   ;;
2211                 *) ;;
2212             esac
2213         fi
2214         # gcc 4.0 and up supports POWER5
2215         if test "$_cc_major" -ge "4"; then
2216             case "$proc" in
2217                 POWER5*) _march='-mcpu=power5' _mcpu='-mtune=power5' ;;
2218                 *) ;;
2219             esac
2220         fi
2221     fi
2222
2223     if test -n "$_mcpu"; then
2224         _optimizing=$(echo $_mcpu | cut -c 8-)
2225         echores "$_optimizing"
2226     else
2227         echores "none"
2228     fi
2229
2230     ;;
2231
2232   alpha*)
2233     _arch='ALPHA'
2234     _target_arch='ARCH_ALPHA = yes'
2235     iproc='alpha'
2236
2237     echocheck "CPU type"
2238     cat > $TMPC << EOF
2239 int main(void) {
2240     unsigned long ver, mask;
2241     __asm__ ("implver %0" : "=r" (ver));
2242     __asm__ ("amask %1, %0" : "=r" (mask) : "r" (-1));
2243     printf("%ld-%x\n", ver, ~mask);
2244     return 0;
2245 }
2246 EOF
2247     $_cc -o "$TMPEXE" "$TMPC"
2248     case $("$TMPEXE") in
2249
2250         0-0)    proc="ev4";   _mvi="0";;
2251         1-0)    proc="ev5";   _mvi="0";;
2252         1-1)    proc="ev56";  _mvi="0";;
2253         1-101)  proc="pca56"; _mvi="1";;
2254         2-303)  proc="ev6";   _mvi="1";;
2255         2-307)  proc="ev67";  _mvi="1";;
2256         2-1307) proc="ev68";  _mvi="1";;
2257     esac
2258     echores "$proc"
2259
2260     echocheck "GCC & CPU optimization abilities"
2261     if test "$proc" = "ev68" ; then
2262       cc_check -mcpu=$proc || proc=ev67
2263     fi
2264     if test "$proc" = "ev67" ; then
2265       cc_check -mcpu=$proc || proc=ev6
2266     fi
2267     _mcpu="-mcpu=$proc"
2268     echores "$proc"
2269
2270     _optimizing="$proc"
2271     ;;
2272
2273   mips)
2274     _arch='SGI_MIPS'
2275     _target_arch='ARCH_SGI_MIPS = yes'
2276     iproc='sgi-mips'
2277
2278     if irix ; then
2279         echocheck "CPU type"
2280         proc=$(hinv -c processor | grep CPU | cut -d " " -f3)
2281         case "$(echo $proc)" in
2282             R3000) _march='-mips1' _mcpu='-mtune=r2000' ;;
2283             R4000) _march='-mips3' _mcpu='-mtune=r4000' ;;
2284             R4400) _march='-mips3' _mcpu='-mtune=r4400' ;;
2285             R4600) _march='-mips3' _mcpu='-mtune=r4600' ;;
2286             R5000) _march='-mips4' _mcpu='-mtune=r5000' ;;
2287             R8000|R10000|R12000|R14000|R16000) _march='-mips4' _mcpu='-mtune=r8000' ;;
2288         esac
2289         # gcc < 3.x does not support -mtune.
2290         if test "$cc_vendor" = "gnu" && test "$_cc_major" -lt 3 ; then
2291             _mcpu=''
2292         fi
2293         echores "$proc"
2294     fi
2295
2296     ;;
2297
2298   hppa)
2299     _arch='PA_RISC'
2300     _target_arch='ARCH_PA_RISC = yes'
2301     iproc='PA-RISC'
2302     ;;
2303
2304   s390)
2305     _arch='S390'
2306     _target_arch='ARCH_S390 = yes'
2307     iproc='390'
2308     ;;
2309
2310   s390x)
2311     _arch='S390X'
2312     _target_arch='ARCH_S390X = yes'
2313     iproc='390x'
2314     ;;
2315
2316   vax)
2317     _arch='VAX'
2318     _target_arch='ARCH_VAX = yes'
2319     iproc='vax'
2320     ;;
2321
2322   xtensa)
2323     _arch='XTENSA'
2324     _target_arch='ARCH_XTENSA = yes'
2325     iproc='xtensa'
2326     ;;
2327
2328   generic)
2329     _arch='GENERIC'
2330     _target_arch='ARCH_GENERIC = yes'
2331     ;;
2332
2333   *)
2334     echo "The architecture of your CPU ($host_arch) is not supported by this configure script"
2335     echo "It seems nobody has ported MPlayer to your OS or CPU type yet."
2336     die "unsupported architecture $host_arch"
2337     ;;
2338 esac # case "$host_arch" in
2339
2340 if test "$_runtime_cpudetection" = yes ; then
2341   if x86 ; then
2342     test "$_cmov"     != no && _cmov=yes
2343     x86_32 && _cmov=no
2344     test "$_mmx"      != no && _mmx=yes
2345     test "$_3dnow"    != no && _3dnow=yes
2346     test "$_3dnowext" != no && _3dnowext=yes
2347     test "$_mmxext"   != no && _mmxext=yes
2348     test "$_sse"      != no && _sse=yes
2349     test "$_sse2"     != no && _sse2=yes
2350     test "$_ssse3"    != no && _ssse3=yes
2351     test "$_mtrr"     != no && _mtrr=yes
2352   fi
2353   if ppc; then
2354     _altivec=yes
2355   fi
2356 fi
2357
2358
2359 # endian testing
2360 echocheck "byte order"
2361 if test "$_big_endian" = auto ; then
2362   cat > $TMPC <<EOF
2363 short ascii_name[] = { (('M'<<8)|'P'),(('l'<<8)|'a'),(('y'<<8)|'e'),(('r'<<8)|'B'),
2364                        (('i'<<8)|'g'),(('E'<<8)|'n'),(('d'<<8)|'i'),(('a'<<8)|'n'),0};
2365 int main(void) { return (int)ascii_name; }
2366 EOF
2367   if cc_check ; then
2368     if strings $TMPEXE | grep -q -l MPlayerBigEndian ; then
2369       _big_endian=yes
2370     else
2371       _big_endian=no
2372     fi
2373   else
2374     echo ${_echo_n} "failed to autodetect byte order, defaulting to ${_echo_c}"
2375   fi
2376 fi
2377 if test "$_big_endian" = yes ; then
2378   _byte_order='big-endian'
2379   def_words_endian='#define WORDS_BIGENDIAN 1'
2380   def_bigendian='#define HAVE_BIGENDIAN 1'
2381 else
2382   _byte_order='little-endian'
2383   def_words_endian='#undef WORDS_BIGENDIAN'
2384   def_bigendian='#define HAVE_BIGENDIAN 0'
2385 fi
2386 echores "$_byte_order"
2387
2388
2389 echocheck "extern symbol prefix"
2390 cat > $TMPC << EOF
2391 int ff_extern;
2392 EOF
2393 cc_check -c || die "Symbol mangling check failed."
2394 sym=$($_nm -P -g $TMPEXE)
2395 extern_prefix=${sym%%ff_extern*}
2396 def_extern_asm="#define EXTERN_ASM $extern_prefix"
2397 def_extern_prefix="#define EXTERN_PREFIX \"$extern_prefix\""
2398 echores $extern_prefix
2399
2400
2401 echocheck "assembler support of -pipe option"
2402 cat > $TMPC << EOF
2403 int main(void) { return 0; }
2404 EOF
2405 cc_check -pipe && _pipe="-pipe" && echores "yes" || echores "no"
2406
2407
2408 echocheck "compiler support of named assembler arguments"
2409 _named_asm_args=yes
2410 def_named_asm_args="#define NAMED_ASM_ARGS 1"
2411 if test "$cc_vendor" = "gnu" && test "$_cc_major" -lt 3 \
2412      -o "$_cc_major" -eq 3 -a "$_cc_minor" = 0 ; then
2413   _named_asm_args=no
2414   def_named_asm_args="#undef NAMED_ASM_ARGS"
2415 fi
2416 echores $_named_asm_args
2417
2418
2419 if darwin && test "$cc_vendor" = "gnu" ; then
2420 echocheck "GCC support of -mstackrealign"
2421 # GCC 4.2 and some earlier Apple versions support this flag on x86. Since
2422 # Mac OS X/Intel has an ABI different from Windows this is needed to avoid
2423 # crashes when loading Win32 DLLs. Unfortunately some gcc versions create
2424 # wrong code with this flag, but this can be worked around by adding
2425 # -fno-unit-at-a-time as described in the blog post at
2426 # http://www.dribin.org/dave/blog/archives/2006/12/05/missing_third_param/
2427 cat > $TMPC << EOF
2428 __attribute__((noinline)) static int foo3(int i1, int i2, int i3) { return i3; }
2429 int main(void) { return foo3(1,2,3) == 3 ? 0 : 1; }
2430 EOF
2431   cc_check -O4 -mstackrealign && tmp_run && cflags_stackrealign=-mstackrealign
2432   test -z "$cflags_stackrealign" && cc_check -O4 -mstackrealign -fno-unit-at-a-time \
2433     && tmp_run && cflags_stackrealign="-mstackrealign -fno-unit-at-a-time"
2434   test -n "$cflags_stackrealign" && echores "yes" || echores "no"
2435 fi # if darwin && test "$cc_vendor" = "gnu" ; then
2436
2437
2438 # Checking for CFLAGS
2439 _install_strip="-s"
2440 if test "$_profile" != "" || test "$_debug" != "" ; then
2441   CFLAGS="-W -Wall -O2 $_march $_mcpu $_pipe $_debug $_profile"
2442   _install_strip=
2443 elif test -z "$CFLAGS" ; then
2444   if test "$cc_vendor" = "intel" ; then
2445     CFLAGS="-O2 $_march $_mcpu $_pipe -fomit-frame-pointer -wd167 -wd556 -wd144"
2446   elif test "$cc_vendor" != "gnu" ; then
2447     CFLAGS="-O2 $_march $_mcpu $_pipe"
2448   else
2449     CFLAGS="-Wall -Wno-switch -Wpointer-arith -Wredundant-decls -O4 $_march $_mcpu $_pipe -ffast-math -fomit-frame-pointer"
2450     extra_ldflags="$extra_ldflags -ffast-math"
2451   fi
2452 else
2453   _warn_CFLAGS=yes
2454 fi
2455
2456 cat > $TMPC << EOF
2457 int main(void) { return 0; }
2458 EOF
2459 if test "$cc_vendor" = "gnu" ; then
2460   cc_check -std=gnu99 && CFLAGS="-std=gnu99 $CFLAGS"
2461   cc_check -Wdeclaration-after-statement && CFLAGS="-Wdeclaration-after-statement $CFLAGS"
2462   cc_check -Wno-pointer-sign && CFLAGS="-Wno-pointer-sign $CFLAGS"
2463   cc_check -Wdisabled-optimization && CFLAGS="-Wdisabled-optimization $CFLAGS"
2464   cc_check -Wundef && CFLAGS="-Wundef $CFLAGS"
2465 else
2466   CFLAGS="-D_ISOC99_SOURCE -D_BSD_SOURCE $CFLAGS"
2467 fi
2468
2469 cc_check -mno-omit-leaf-frame-pointer && cflags_no_omit_leaf_frame_pointer="-mno-omit-leaf-frame-pointer"
2470
2471
2472 if test -n "$LDFLAGS" ; then
2473   extra_ldflags="$extra_ldflags $LDFLAGS"
2474   _warn_CFLAGS=yes
2475 elif test "$cc_vendor" = "intel" ; then
2476   extra_ldflags="$extra_ldflags -i-static"
2477 fi
2478 if test -n "$CPPFLAGS" ; then
2479   extra_cflags="$extra_cflags $CPPFLAGS"
2480   _warn_CFLAGS=yes
2481 fi
2482
2483
2484
2485 if x86_32 ; then
2486   # Checking assembler (_as) compatibility...
2487   # Added workaround for older as that reads from stdin by default - atmos
2488   as_version=$(echo '' | $_as -version 2>&1 | sed -n 's/^.*assembler \(version \)*\([0-9.]*\).*$/\2/p')
2489   echocheck "assembler ($_as $as_version)"
2490
2491   _pref_as_version='2.9.1'
2492   echo 'nop' > $TMPS
2493   if test "$_mmx" = yes ; then
2494     echo 'emms' >> $TMPS
2495   fi
2496   if test "$_3dnow" = yes ; then
2497     _pref_as_version='2.10.1'
2498     echo 'femms' >> $TMPS
2499   fi
2500   if test "$_3dnowext" = yes ; then
2501     _pref_as_version='2.10.1'
2502     echo 'pswapd        %mm0, %mm0' >> $TMPS
2503   fi
2504   if test "$_mmxext" = yes ; then
2505     _pref_as_version='2.10.1'
2506     echo 'movntq        %mm0, (%eax)' >> $TMPS
2507   fi
2508   if test "$_sse" = yes ; then
2509     _pref_as_version='2.10.1'
2510     echo 'xorps %xmm0, %xmm0' >> $TMPS
2511   fi
2512   #if test "$_sse2" = yes ; then
2513   #  _pref_as_version='2.11'
2514   #  echo 'xorpd %xmm0, %xmm0' >> $TMPS
2515   #fi
2516   if test "$_cmov" = yes ; then
2517     _pref_as_version='2.10.1'
2518     echo 'cmovb %eax, %ebx' >> $TMPS
2519   fi
2520   if test "$_ssse3" = yes ; then
2521     _pref_as_version='2.16.92'
2522     echo 'pabsd %xmm0, %xmm1' >> $TMPS
2523   fi
2524   $_as $TMPS -o $TMPEXE > /dev/null 2>&1 || as_verc_fail=yes
2525
2526   if test "$as_verc_fail" != yes ; then
2527     echores "ok"
2528   else
2529     _res_comment="Upgrade binutils to ${_pref_as_version} or use --disable-ssse3 etc."
2530     echores "failed"
2531     die "obsolete binutils version"
2532   fi
2533
2534 fi #if x86_32
2535
2536 echocheck ".align is a power of two"
2537 if test "$_asmalign_pot" = auto ; then
2538 _asmalign_pot=no
2539 cat > $TMPC << EOF
2540 int main(void) { __asm__ (".align 3"); return 0; }
2541 EOF
2542 cc_check && _asmalign_pot=yes
2543 fi
2544 if test "$_asmalign_pot" = "yes" ; then
2545   def_asmalign_pot='#define ASMALIGN(ZEROBITS) ".align " #ZEROBITS "\n\t"'
2546 else
2547   def_asmalign_pot='#define ASMALIGN(ZEROBITS) ".align 1<<" #ZEROBITS "\n\t"'
2548 fi
2549 echores $_asmalign_pot
2550
2551 if x86 ; then
2552 echocheck "10 assembler operands"
2553 ten_operands=no
2554 def_ten_operands='#define HAVE_TEN_OPERANDS 0'
2555 cat > $TMPC << EOF
2556 int main(void) {
2557     int x=0;
2558     __asm__ volatile(
2559         ""
2560         :"+&rm"(x), "+&rm"(x), "+&rm"(x), "+&rm"(x), "+&rm"(x), "+&rm"(x)
2561     );
2562     return 0;
2563 }
2564 EOF
2565 cc_check && ten_operands=yes && def_ten_operands='#define HAVE_TEN_OPERANDS 1'
2566 echores $ten_operands
2567
2568 echocheck "ebx availability"
2569 ebx_available=no
2570 def_ebx_available='#define HAVE_EBX_AVAILABLE 0'
2571 cat > $TMPC << EOF
2572 int main(void) {
2573     int x;
2574     __asm__ volatile(
2575         "xor %0, %0"
2576         :"=b"(x)
2577         // just adding ebx to clobber list seems unreliable with some
2578         // compilers, e.g. Haiku's gcc 2.95
2579     );
2580     // and the above check does not work for OSX 64 bit...
2581     __asm__ volatile("":::"%ebx");
2582     return 0;
2583 }
2584 EOF
2585 cc_check && ebx_available=yes && def_ebx_available='#define HAVE_EBX_AVAILABLE 1'
2586 echores $ebx_available
2587
2588 echocheck "PIC"
2589 pic=no
2590 cat > $TMPC << EOF
2591 int main(void) {
2592 #if !(defined(__PIC__) || defined(__pic__) || defined(PIC))
2593 #error PIC not enabled
2594 #endif
2595     return 0;
2596 }
2597 EOF
2598 cc_check && pic=yes && extra_cflags="$extra_cflags -DPIC"
2599 echores $pic
2600
2601 echocheck "yasm"
2602 if test -z "$YASMFLAGS" ; then
2603   if darwin ; then
2604     x86_64 && objformat="macho64" || objformat="macho"
2605   elif win32 ; then
2606     objformat="win32"
2607   else
2608     objformat="elf"
2609   fi
2610   # currently tested for Linux x86, x86_64
2611   YASMFLAGS="-f $objformat"
2612   x86_64 && YASMFLAGS="$YASMFLAGS -DARCH_X86_64 -m amd64"
2613   test "$pic" = "yes" && YASMFLAGS="$YASMFLAGS -DPIC"
2614   case "$objformat" in
2615     elf) test $_debug && YASMFLAGS="$YASMFLAGS -g dwarf2" ;;
2616     *)                   YASMFLAGS="$YASMFLAGS -DPREFIX"  ;;
2617   esac
2618 else
2619   _warn_CFLAGS=yes
2620 fi
2621
2622 echo "pabsw xmm0, xmm0" > $TMPS
2623 yasm_check || _yasm=""
2624 if test $_yasm ; then
2625   test "$_mmx" = "yes" && fft_mmx="yes"
2626   def_yasm='#define HAVE_YASM 1'
2627   _have_yasm="yes"
2628   echores "$_yasm"
2629 else
2630   def_yasm='#define HAVE_YASM 0'
2631   fft_mmx="no"
2632   _have_yasm="no"
2633   echores "no"
2634 fi
2635
2636 echocheck "bswap"
2637 def_bswap='#define HAVE_BSWAP 0'
2638 echo 'bswap %eax' > $TMPS
2639 $_as $TMPS -o $TMPEXE > /dev/null 2>&1 && def_bswap='#define HAVE_BSWAP 1' && bswap=yes || bswap=no
2640 echores "$bswap"
2641 fi #if x86
2642
2643
2644 #FIXME: This should happen before the check for CFLAGS..
2645 def_altivec_h='#define HAVE_ALTIVEC_H 0'
2646 if ppc && ( test "$_altivec" = yes || test "$_runtime_cpudetection" = yes ) ; then
2647
2648     # check if AltiVec is supported by the compiler, and how to enable it
2649     echocheck "GCC AltiVec flags"
2650     cat > $TMPC << EOF
2651 int main(void) { return 0; }
2652 EOF
2653     if $(cc_check -maltivec -mabi=altivec) ; then
2654     _altivec_gcc_flags="-maltivec -mabi=altivec"
2655     # check if <altivec.h> should be included
2656     cat > $TMPC << EOF
2657 #include <altivec.h>
2658 int main(void) { return 0; }
2659 EOF
2660         if $(cc_check $_altivec_gcc_flags) ; then
2661             def_altivec_h='#define HAVE_ALTIVEC_H 1'
2662             inc_altivec_h='#include <altivec.h>'
2663         else
2664         cat > $TMPC << EOF
2665 int main(void) { return 0; }
2666 EOF
2667             if $(cc_check -faltivec) ; then
2668                 _altivec_gcc_flags="-faltivec"
2669             else
2670                 _altivec=no
2671                 _altivec_gcc_flags="none, AltiVec disabled"
2672             fi
2673         fi
2674     fi
2675     echores "$_altivec_gcc_flags"
2676
2677     # check if the compiler supports braces for vector declarations
2678     cat > $TMPC << EOF
2679 $inc_altivec_h
2680 int main(void) { (vector int) {1}; return 0; }
2681 EOF
2682     cc_check $_altivec_gcc_flags || die "You need a compiler that supports {} in AltiVec vector declarations."
2683
2684     # Disable runtime cpudetection if we cannot generate AltiVec code or
2685     # AltiVec is disabled by the user.
2686     test "$_runtime_cpudetection" = yes && test "$_altivec" = no \
2687         && _runtime_cpudetection=no
2688
2689     # Show that we are optimizing for AltiVec (if enabled and supported).
2690     test "$_runtime_cpudetection" = no && test "$_altivec" = yes \
2691         && _optimizing="$_optimizing altivec"
2692
2693     # If AltiVec is enabled, make sure the correct flags turn up in CFLAGS.
2694     test "$_altivec" = yes && CFLAGS="$CFLAGS $_altivec_gcc_flags"
2695 fi
2696
2697 if ppc ; then
2698 def_xform_asm='#define HAVE_XFORM_ASM 0'
2699 xform_asm=no
2700 echocheck "XFORM ASM support"
2701   cat > $TMPC << EOF
2702 int main(void) { __asm__ volatile ("lwzx %1, %y0" :: "Z"(*(int*)0), "r"(0)); return 0; }
2703 EOF
2704 cc_check && xform_asm=yes && def_xform_asm='#define HAVE_XFORM_ASM 1'
2705 echores "$xform_asm"
2706 fi
2707
2708 if arm ; then
2709   echocheck "ARM pld instruction"
2710   cat > $TMPC << EOF
2711 int main(void) { __asm__ volatile ("pld [r0]"); return 0; }
2712 EOF
2713   pld=no
2714   cc_check && pld=yes
2715   echores "$pld"
2716
2717   echocheck "ARMv5TE (Enhanced DSP Extensions)"
2718   if test $_armv5te = "auto" ; then
2719     cat > $TMPC << EOF
2720 int main(void) { __asm__ volatile ("qadd r0, r0, r0"); return 0; }
2721 EOF
2722     _armv5te=no
2723     cc_check && _armv5te=yes
2724   fi
2725   echores "$_armv5te"
2726
2727   echocheck "ARMv6 (SIMD instructions)"
2728   if test $_armv6 = "auto" ; then
2729     cat > $TMPC << EOF
2730 int main(void) { __asm__ volatile ("sadd16 r0, r0, r0"); return 0; }
2731 EOF
2732     _armv6=no
2733     cc_check && _armv6=yes
2734   fi
2735   echores "$_armv6"
2736
2737   echocheck "ARMv6t2 (SIMD instructions)"
2738   if test $_armv6t2 = "auto" ; then
2739     cat > $TMPC << EOF
2740 int main(void) { __asm__ volatile ("movt r0, #0"); return 0; }
2741 EOF
2742     _armv6t2=no
2743     cc_check && _armv6t2=yes
2744   fi
2745   echores "$_armv6"
2746
2747   echocheck "ARM VFP"
2748   if test $_armvfp = "auto" ; then
2749     cat > $TMPC << EOF
2750 int main(void) { __asm__ volatile ("fadds s0, s0, s0"); return 0; }
2751 EOF
2752     _armvfp=no
2753     cc_check && _armvfp=yes
2754   fi
2755   echores "$_armvfp"
2756
2757   echocheck "ARM NEON"
2758   if test $neon = "auto" ; then
2759     cat > $TMPC << EOF
2760 int main(void) { __asm__ volatile ("vadd.i16 q0, q0, q0"); return 0; }
2761 EOF
2762     neon=no
2763     cc_check && neon=yes
2764   fi
2765   echores "$neon"
2766
2767   echocheck "iWMMXt (Intel XScale SIMD instructions)"
2768   if test $_iwmmxt = "auto" ; then
2769     cat > $TMPC << EOF
2770 int main(void) { __asm__ volatile ("wunpckelub wr6, wr4"); return 0; }
2771 EOF
2772     _iwmmxt=no
2773     cc_check && _iwmmxt=yes
2774   fi
2775   echores "$_iwmmxt"
2776 fi
2777
2778 _cpuexts_all='ALTIVEC MMX MMX2 AMD3DNOW AMD3DNOWEXT SSE SSE2 SSSE3 FAST_CMOV CMOV PLD ARMV5TE ARMV6 ARMV6T2 ARMVFP NEON IWMMXT MMI VIS MVI'
2779 test "$_altivec"   = yes && _cpuexts="ALTIVEC $_cpuexts"
2780 test "$_mmx"       = yes && _cpuexts="MMX $_cpuexts"
2781 test "$_mmxext"    = yes && _cpuexts="MMX2 $_cpuexts"
2782 test "$_3dnow"     = yes && _cpuexts="AMD3DNOW $_cpuexts"
2783 test "$_3dnowext"  = yes && _cpuexts="AMD3DNOWEXT $_cpuexts"
2784 test "$_sse"       = yes && _cpuexts="SSE $_cpuexts"
2785 test "$_sse2"      = yes && _cpuexts="SSE2 $_cpuexts"
2786 test "$_ssse3"     = yes && _cpuexts="SSSE3 $_cpuexts"
2787 test "$_cmov"      = yes && _cpuexts="CMOV $_cpuexts"
2788 test "$_fast_cmov" = yes && _cpuexts="FAST_CMOV $_cpuexts"
2789 test "$pld"        = yes && _cpuexts="PLD $_cpuexts"
2790 test "$_armv5te"   = yes && _cpuexts="ARMV5TE $_cpuexts"
2791 test "$_armv6"     = yes && _cpuexts="ARMV6 $_cpuexts"
2792 test "$_armv6t2"   = yes && _cpuexts="ARMV6T2 $_cpuexts"
2793 test "$_armvfp"    = yes && _cpuexts="ARMVFP $_cpuexts"
2794 test "$neon"       = yes && _cpuexts="NEON $_cpuexts"
2795 test "$_iwmmxt"    = yes && _cpuexts="IWMMXT $_cpuexts"
2796 test "$_vis"       = yes && _cpuexts="VIS $_cpuexts"
2797 test "$_mvi"       = yes && _cpuexts="MVI $_cpuexts"
2798
2799 # Checking kernel version...
2800 if x86_32 && linux ; then
2801   _k_verc_problem=no
2802   kernel_version=$(uname -r 2>&1)
2803   echocheck "$system_name kernel version"
2804   case "$kernel_version" in
2805     '') kernel_version="?.??"; _k_verc_fail=yes;;
2806     [0-1].[0-9].[0-9]*|2.[0-3].[0-9]*)
2807       _k_verc_problem=yes;;
2808   esac
2809   if test "$_k_verc_problem" = yes && test "$_sse" = yes ; then
2810     _k_verc_fail=yes
2811   fi
2812   if test "$_k_verc_fail" ; then
2813     echores "$kernel_version, fail"
2814     echo "WARNING! If you want to run MPlayer on this system, get prepared for problems!"
2815     echo "2.2.x has limited SSE support. Upgrade the kernel or use --disable-sse if you"
2816     echo "experience crashes. MPlayer tries to autodetect if your kernel correctly"
2817     echo "supports SSE, but you have been warned! If you are using a kernel older than"
2818     echo "2.2.x you must upgrade it to get SSE support!"
2819 #    die "Your kernel is too old for this CPU." # works fine on some 2.2.x so don't die (later check will test)
2820   else
2821     echores "$kernel_version, ok"
2822   fi
2823 fi
2824
2825 ######################
2826 # MAIN TESTS GO HERE #
2827 ######################
2828
2829
2830 echocheck "-lposix"
2831 cat > $TMPC <<EOF
2832 int main(void) { return 0; }
2833 EOF
2834 if cc_check -lposix ; then
2835   extra_ldflags="$extra_ldflags -lposix"
2836   echores "yes"
2837 else
2838   echores "no"
2839 fi
2840
2841 echocheck "-lm"
2842 cat > $TMPC <<EOF
2843 int main(void) { return 0; }
2844 EOF
2845 if cc_check -lm ; then
2846   _ld_lm="-lm"
2847   echores "yes"
2848 else
2849   _ld_lm=""
2850   echores "no"
2851 fi
2852
2853
2854 echocheck "langinfo"
2855 if test "$_langinfo" = auto ; then
2856   cat > $TMPC <<EOF
2857 #include <langinfo.h>
2858 int main(void) { nl_langinfo(CODESET); return 0; }
2859 EOF
2860   _langinfo=no
2861   cc_check && _langinfo=yes
2862 fi
2863 if test "$_langinfo" = yes ; then
2864   def_langinfo='#define HAVE_LANGINFO 1'
2865 else
2866   def_langinfo='#undef HAVE_LANGINFO'
2867 fi
2868 echores "$_langinfo"
2869
2870
2871 echocheck "language"
2872 # Set preferred languages, "all" uses English as main language.
2873 test -z "$language" && language=$LINGUAS
2874 test -z "$language_doc" && language_doc=$language
2875 test -z "$language_man" && language_man=$language
2876 test -z "$language_msg" && language_msg=$language
2877 language_doc=$(echo $language_doc | tr , " ")
2878 language_man=$(echo $language_man | tr , " ")
2879 language_msg=$(echo $language_msg | tr , " ")
2880
2881 test "$language_doc" = "all" && language_doc=$doc_lang_all
2882 test "$language_man" = "all" && language_man=$man_lang_all
2883 test "$language_msg" = "all" && language_msg=en
2884
2885 # Prune non-existing translations from language lists.
2886 # Set message translation to the first available language.
2887 # Fall back on English.
2888 for lang in $language_doc ; do
2889   test -d DOCS/xml/$lang && tmp_language_doc="$tmp_language_doc $lang"
2890 done
2891 language_doc=$tmp_language_doc
2892 test -z "$language_doc" && language_doc=en
2893
2894 for lang in $language_man ; do
2895   test -d DOCS/man/$lang && tmp_language_man="$tmp_language_man $lang"
2896 done
2897 language_man=$tmp_language_man
2898 test -z "$language_man" && language_man=en
2899
2900 for lang in $language_msg ; do
2901   test -f "help/help_mp-${lang}.h" && tmp_language_msg=$lang && break
2902 done
2903 language_msg=$tmp_language_msg
2904 test -z "$language_msg" && language_msg=en
2905 _mp_help="help/help_mp-${language_msg}.h"
2906 echores "messages: $language_msg - man pages: $language_man - documentation: $language_doc"
2907
2908
2909 echocheck "enable sighandler"
2910 if test "$_sighandler" = yes ; then
2911   def_sighandler='#define CONFIG_SIGHANDLER 1'
2912 else
2913   def_sighandler='#undef CONFIG_SIGHANDLER'
2914 fi
2915 echores "$_sighandler"
2916
2917 echocheck "runtime cpudetection"
2918 if test "$_runtime_cpudetection" = yes ; then
2919   _optimizing="Runtime CPU-Detection enabled"
2920   def_runtime_cpudetection='#define CONFIG_RUNTIME_CPUDETECT 1'
2921 else
2922   def_runtime_cpudetection='#define CONFIG_RUNTIME_CPUDETECT 0'
2923 fi
2924 echores "$_runtime_cpudetection"
2925
2926
2927 echocheck "restrict keyword"
2928 for restrict_keyword in restrict __restrict __restrict__ ; do
2929   echo "void foo(char * $restrict_keyword p); int main(void) { return 0; }" > $TMPC
2930   if cc_check; then
2931     def_restrict_keyword=$restrict_keyword
2932     break;
2933   fi
2934 done
2935 if [ -n "$def_restrict_keyword" ]; then
2936   echores "$def_restrict_keyword"
2937 else
2938   echores "none"
2939 fi
2940 # Avoid infinite recursion loop ("#define restrict restrict")
2941 if [ "$def_restrict_keyword" != "restrict" ]; then
2942   def_restrict_keyword="#define restrict $def_restrict_keyword"
2943 else
2944   def_restrict_keyword=""
2945 fi
2946
2947
2948 echocheck "__builtin_expect"
2949 # GCC branch prediction hint
2950 cat > $TMPC << EOF
2951 int foo(int a) {
2952     a = __builtin_expect(a, 10);
2953     return a == 10 ? 0 : 1;
2954 }
2955 int main(void) { return foo(10) && foo(0); }
2956 EOF
2957 _builtin_expect=no
2958 cc_check && _builtin_expect=yes
2959 if test "$_builtin_expect" = yes ; then
2960   def_builtin_expect='#define HAVE_BUILTIN_EXPECT 1'
2961 else
2962   def_builtin_expect='#undef HAVE_BUILTIN_EXPECT'
2963 fi
2964 echores "$_builtin_expect"
2965
2966
2967 echocheck "kstat"
2968 cat > $TMPC << EOF
2969 #include <kstat.h>
2970 int main(void) { (void) kstat_open(); (void) kstat_close(0); return 0; }
2971 EOF
2972 _kstat=no
2973 cc_check -lkstat && _kstat=yes
2974 if test "$_kstat" = yes ; then
2975   def_kstat="#define HAVE_LIBKSTAT 1"
2976   extra_ldflags="$extra_ldflags -lkstat"
2977 else
2978   def_kstat="#undef HAVE_LIBKSTAT"
2979 fi
2980 echores "$_kstat"
2981
2982
2983 echocheck "posix4"
2984 # required for nanosleep on some systems
2985 cat > $TMPC << EOF
2986 #include <time.h>
2987 int main(void) { (void) nanosleep(0, 0); return 0; }
2988 EOF
2989 _posix4=no
2990 cc_check -lposix4 && _posix4=yes
2991 if test "$_posix4" = yes ; then
2992   extra_ldflags="$extra_ldflags -lposix4"
2993 fi
2994 echores "$_posix4"
2995
2996 for func in llrint log2 lrint lrintf round roundf truncf; do
2997 echocheck $func
2998 cat > $TMPC << EOF
2999 #include <math.h>
3000 int main(void) { long (*foo)(float); foo = $func; (void)(*foo)(0.0); return 0; }
3001 EOF
3002 eval _$func=no
3003 cc_check -D_ISOC99_SOURCE $_ld_lm && eval _$func=yes
3004 if eval test "x\$_$func" = "xyes"; then
3005   eval def_$func="\"#define HAVE_$(echo $func | tr '[a-z]' '[A-Z]') 1\""
3006   echores yes
3007 else
3008   eval def_$func="\"#define HAVE_$(echo $func | tr '[a-z]' '[A-Z]') 0\""
3009   echores no
3010 fi
3011 done
3012
3013
3014 echocheck "mkstemp"
3015 cat > $TMPC << EOF
3016 #include <stdlib.h>
3017 int main(void) { char a;  mkstemp(&a); return 0; }
3018 EOF
3019 _mkstemp=no
3020 cc_check && _mkstemp=yes
3021 if test "$_mkstemp" = yes ; then
3022   def_mkstemp='#define HAVE_MKSTEMP 1'
3023 else
3024   def_mkstemp='#undef HAVE_MKSTEMP'
3025 fi
3026 echores "$_mkstemp"
3027
3028
3029 echocheck "nanosleep"
3030 # also check for nanosleep
3031 cat > $TMPC << EOF
3032 #include <time.h>
3033 int main(void) { (void) nanosleep(0, 0); return 0; }
3034 EOF
3035 _nanosleep=no
3036 cc_check && _nanosleep=yes
3037 if test "$_nanosleep" = yes ; then
3038   def_nanosleep='#define HAVE_NANOSLEEP 1'
3039 else
3040   def_nanosleep='#undef HAVE_NANOSLEEP'
3041 fi
3042 echores "$_nanosleep"
3043
3044
3045 echocheck "socklib"
3046 # for Solaris (socket stuff is in -lsocket, gethostbyname and friends in -lnsl):
3047 # for BeOS (socket stuff is in -lsocket, gethostbyname and friends in -lbind):
3048 cat > $TMPC << EOF
3049 #include <netdb.h>
3050 #include <sys/socket.h>
3051 int main(void) { (void) gethostbyname(0); (void) socket(AF_INET, SOCK_STREAM, 0); return 0; }
3052 EOF
3053 _socklib=no
3054 for _ld_tmp in "" "-lsocket -lbind" "-lsocket -ldnet" "-lsocket -lnsl" "-lnsl" "-lsocket" ; do
3055   cc_check $_ld_tmp && _ld_sock="$_ld_tmp" && _socklib=yes && break
3056 done
3057 test $_socklib = yes && test $_winsock2_h = auto && _winsock2_h=no
3058 if test $_winsock2_h = auto ; then
3059   _winsock2_h=no
3060   cat > $TMPC << EOF
3061 #include <winsock2.h>
3062 int main(void) { (void) gethostbyname(0); return 0; }
3063 EOF
3064   cc_check -lws2_32 && _ld_sock="-lws2_32" && _winsock2_h=yes
3065 fi
3066 test "$_ld_sock" && _res_comment="using $_ld_sock"
3067 echores "$_socklib"
3068
3069
3070 if test $_winsock2_h = yes ; then
3071   _ld_sock="-lws2_32"
3072   def_winsock2_h='#define HAVE_WINSOCK2_H 1'
3073 else
3074   def_winsock2_h='#define HAVE_WINSOCK2_H 0'
3075 fi
3076
3077
3078 echocheck "arpa/inet.h"
3079 arpa_inet_h=no
3080 def_arpa_inet_h='#define HAVE_ARPA_INET_H 0'
3081 cat > $TMPC << EOF
3082 #include <arpa/inet.h>
3083 int main(void) { return 0; }
3084 EOF
3085 cc_check && arpa_inet_h=yes && def_arpa_inet_h='#define HAVE_ARPA_INET_H 1'
3086 echores "$arpa_inet_h"
3087
3088
3089 echocheck "inet_pton()"
3090 def_inet_pton='#define HAVE_INET_PTON 0'
3091 inet_pton=no
3092 cat > $TMPC << EOF
3093 #include <sys/types.h>
3094 #include <sys/socket.h>
3095 #include <arpa/inet.h>
3096 int main(void) { (void) inet_pton(0, 0, 0); return 0; }
3097 EOF
3098 for _ld_tmp in "$_ld_sock" "$_ld_sock -lresolv" ; do
3099   cc_check $_ld_tmp && inet_pton=yes && break
3100 done
3101 if test $inet_pton = yes ; then
3102   test $_ld_tmp && _res_comment="using $_ld_tmp"
3103   def_inet_pton='#define HAVE_INET_PTON 1'
3104 fi
3105 echores "$inet_pton"
3106
3107
3108 echocheck "inet_aton()"
3109 def_inet_aton='#define HAVE_INET_ATON 0'
3110 inet_aton=no
3111 cat > $TMPC << EOF
3112 #include <sys/types.h>
3113 #include <sys/socket.h>
3114 #include <arpa/inet.h>
3115 int main(void) { (void) inet_aton(0, 0); return 0; }
3116 EOF
3117 for _ld_tmp in "$_ld_sock" "$_ld_sock -lresolv" ; do
3118   cc_check $_ld_tmp && inet_aton=yes && break
3119 done
3120 if test $inet_aton = yes ; then
3121   test $_ld_tmp && _res_comment="using $_ld_tmp"
3122   def_inet_aton='#define HAVE_INET_ATON 1'
3123 fi
3124 echores "$inet_aton"
3125
3126
3127 echocheck "socklen_t"
3128 _socklen_t=no
3129 for header in "sys/socket.h" "ws2tcpip.h" "sys/types.h" ; do
3130   cat > $TMPC << EOF
3131 #include <$header>
3132 int main(void) { socklen_t v = 0; return v; }
3133 EOF
3134   cc_check && _socklen_t=yes && break
3135 done
3136 if test "$_socklen_t" = yes ; then
3137   def_socklen_t='#define HAVE_SOCKLEN_T 1'
3138 else
3139   def_socklen_t='#define HAVE_SOCKLEN_T 0'
3140 fi
3141 echores "$_socklen_t"
3142
3143
3144 echocheck "closesocket()"
3145 _closesocket=no
3146 cat > $TMPC << EOF
3147 #include <winsock2.h>
3148 int main(void) { closesocket(~0); return 0; }
3149 EOF
3150 cc_check $_ld_sock && _closesocket=yes
3151 if test "$_closesocket" = yes ; then
3152   def_closesocket='#define HAVE_CLOSESOCKET 1'
3153 else
3154   def_closesocket='#define HAVE_CLOSESOCKET 0'
3155 fi
3156 echores "$_closesocket"
3157
3158
3159 echocheck "network"
3160 test $_winsock2_h = no && test $inet_pton = no &&
3161   test $inet_aton = no && _network=no
3162 if test "$_network" = yes ; then
3163   def_network='#define CONFIG_NETWORK 1'
3164   extra_ldflags="$extra_ldflags $_ld_sock"
3165   _inputmodules="network $_inputmodules"
3166 else
3167   _noinputmodules="network $_noinputmodules"
3168   def_network='#undef CONFIG_NETWORK'
3169   _ftp=no
3170 fi
3171 echores "$_network"
3172
3173
3174 echocheck "inet6"
3175 if test "$_inet6" = auto ; then
3176   cat > $TMPC << EOF
3177 #include <sys/types.h>
3178 #if !defined(_WIN32) || defined(__CYGWIN__)
3179 #include <sys/socket.h>
3180 #include <netinet/in.h>
3181 #else
3182 #include <ws2tcpip.h>
3183 #endif
3184 int main(void) { struct sockaddr_in6 six; socket(AF_INET6, SOCK_STREAM, AF_INET6); return 0; }
3185 EOF
3186   _inet6=no
3187   if cc_check $_ld_sock ; then
3188     _inet6=yes
3189   fi
3190 fi
3191 if test "$_inet6" = yes ; then
3192   def_inet6='#define HAVE_AF_INET6 1'
3193 else
3194   def_inet6='#undef HAVE_AF_INET6'
3195 fi
3196 echores "$_inet6"
3197
3198
3199 echocheck "gethostbyname2"
3200 if test "$_gethostbyname2" = auto ; then
3201 cat > $TMPC << EOF
3202 #include <sys/types.h>
3203 #include <sys/socket.h>
3204 #include <netdb.h>
3205 int main(void) { gethostbyname2("", AF_INET); return 0; }
3206 EOF
3207   _gethostbyname2=no
3208   if cc_check ; then
3209     _gethostbyname2=yes
3210   fi
3211 fi
3212 if test "$_gethostbyname2" = yes ; then
3213   def_gethostbyname2='#define HAVE_GETHOSTBYNAME2 1'
3214 else
3215   def_gethostbyname2='#undef HAVE_GETHOSTBYNAME2'
3216 fi
3217 echores "$_gethostbyname2"
3218
3219
3220 echocheck "inttypes.h (required)"
3221 cat > $TMPC << EOF
3222 #include <inttypes.h>
3223 int main(void) { return 0; }
3224 EOF
3225 _inttypes=no
3226 cc_check && _inttypes=yes
3227 echores "$_inttypes"
3228
3229 if test "$_inttypes" = no ; then
3230   echocheck "bitypes.h (inttypes.h predecessor)"
3231   cat > $TMPC << EOF
3232 #include <sys/bitypes.h>
3233 int main(void) { return 0; }
3234 EOF
3235   cc_check && _inttypes=yes
3236   if test "$_inttypes" = yes ; then
3237     die "You don't have inttypes.h, but sys/bitypes.h is present. Please copy etc/inttypes.h into the include path, and re-run configure."
3238   else
3239     die "Cannot find header either inttypes.h or bitypes.h. There is no chance for compilation to succeed."
3240   fi
3241 fi
3242
3243
3244 echocheck "int_fastXY_t in inttypes.h"
3245 cat > $TMPC << EOF
3246 #include <inttypes.h>
3247 int main(void) {
3248 volatile int_fast16_t v= 0;
3249 return v; }
3250 EOF
3251 _fast_inttypes=no
3252 cc_check && _fast_inttypes=yes
3253 if test "$_fast_inttypes" = no ; then
3254   def_fast_inttypes='
3255     typedef signed char int_fast8_t;
3256     typedef signed int  int_fast16_t;
3257     typedef signed int  int_fast32_t;
3258     typedef signed long long int_fast64_t;
3259     typedef unsigned char uint_fast8_t;
3260     typedef unsigned int  uint_fast16_t;
3261     typedef unsigned int  uint_fast32_t;
3262     typedef unsigned long long uint_fast64_t;'
3263 fi
3264 echores "$_fast_inttypes"
3265
3266
3267 echocheck "malloc.h"
3268 cat > $TMPC << EOF
3269 #include <malloc.h>
3270 int main(void) { (void) malloc(0); return 0; }
3271 EOF
3272 _malloc=no
3273 cc_check && _malloc=yes
3274 if test "$_malloc" = yes ; then
3275   def_malloc_h='#define HAVE_MALLOC_H 1'
3276 else
3277   def_malloc_h='#define HAVE_MALLOC_H 0'
3278 fi
3279 # malloc.h emits a warning in FreeBSD and OpenBSD
3280 freebsd || openbsd || dragonfly && def_malloc_h='#define HAVE_MALLOC_H 0'
3281 echores "$_malloc"
3282
3283
3284 echocheck "memalign()"
3285 # XXX restrict to x86 ? extend to other CPUs/cacheline sizes ?
3286 def_memalign_hack='#define CONFIG_MEMALIGN_HACK 0'
3287 cat > $TMPC << EOF
3288 #include <malloc.h>
3289 int main(void) { (void) memalign(64, sizeof(char)); return 0; }
3290 EOF
3291 _memalign=no
3292 cc_check && _memalign=yes
3293 if test "$_memalign" = yes ; then
3294   def_memalign='#define HAVE_MEMALIGN 1'
3295 else
3296   def_memalign='#define HAVE_MEMALIGN 0'
3297   def_map_memalign='#define memalign(a,b) malloc(b)'
3298   darwin || def_memalign_hack='#define CONFIG_MEMALIGN_HACK 1'
3299 fi
3300 echores "$_memalign"
3301
3302
3303 echocheck "posix_memalign()"
3304 posix_memalign=no
3305 def_posix_memalign='#define HAVE_POSIX_MEMALIGN 0'
3306 cat > $TMPC << EOF
3307 #define _XOPEN_SOURCE 600
3308 #include <stdlib.h>
3309 int main(void) { posix_memalign(NULL, 0, 0); }
3310 EOF
3311 cc_check && posix_memalign=yes && def_posix_memalign='#define HAVE_POSIX_MEMALIGN 1'
3312 echores "$posix_memalign"
3313
3314
3315 echocheck "alloca.h"
3316 cat > $TMPC << EOF
3317 #include <alloca.h>
3318 int main(void) { (void) alloca(0); return 0; }
3319 EOF
3320 _alloca=no
3321 cc_check && _alloca=yes
3322 if cc_check ; then
3323   def_alloca_h='#define HAVE_ALLOCA_H 1'
3324 else
3325   def_alloca_h='#undef HAVE_ALLOCA_H'
3326 fi
3327 echores "$_alloca"
3328
3329
3330 echocheck "fastmemcpy"
3331 if test "$_fastmemcpy" = yes ; then
3332   def_fastmemcpy='#define CONFIG_FASTMEMCPY 1'
3333 else
3334   def_fastmemcpy='#undef CONFIG_FASTMEMCPY'
3335 fi
3336 echores "$_fastmemcpy"
3337
3338
3339 echocheck "mman.h"
3340 cat > $TMPC << EOF
3341 #include <sys/types.h>
3342 #include <sys/mman.h>
3343 int main(void) { (void) mmap(0, 0, 0, 0, 0, 0); return 0; }
3344 EOF
3345 _mman=no
3346 cc_check && _mman=yes
3347 if test "$_mman" = yes ; then
3348   def_mman_h='#define HAVE_SYS_MMAN_H 1'
3349 else
3350   def_mman_h='#undef HAVE_SYS_MMAN_H'
3351   os2 && _need_mmap=yes
3352 fi
3353 echores "$_mman"
3354
3355 cat > $TMPC << EOF
3356 #include <sys/types.h>
3357 #include <sys/mman.h>
3358 int main(void) { void *p = MAP_FAILED; return 0; }
3359 EOF
3360 _mman_has_map_failed=no
3361 cc_check && _mman_has_map_failed=yes
3362 if test "$_mman_has_map_failed" = yes ; then
3363   def_mman_has_map_failed=''
3364 else
3365   def_mman_has_map_failed='#define MAP_FAILED ((void *) -1)'
3366 fi
3367
3368 echocheck "dynamic loader"
3369 cat > $TMPC << EOF
3370 #include <stddef.h>
3371 #include <dlfcn.h>
3372 int main(void) { dlopen(NULL, 0); dlclose(NULL); dlsym(NULL, NULL); return 0; }
3373 EOF
3374 _dl=no
3375 for _ld_tmp in "" "-ldl" ; do
3376   cc_check $_ld_tmp && _ld_dl="$_ld_tmp" && _dl=yes && break
3377 done
3378 if test "$_dl" = yes ; then
3379   def_dl='#define HAVE_LIBDL 1'
3380 else
3381   def_dl='#undef HAVE_LIBDL'
3382 fi
3383 echores "$_dl"
3384
3385
3386 echocheck "dynamic a/v plugins support"
3387 if test "$_dl" = no ; then
3388   _dynamic_plugins=no
3389 fi
3390 if test "$_dynamic_plugins" = yes ; then
3391   def_dynamic_plugins='#define CONFIG_DYNAMIC_PLUGINS 1'
3392 else
3393   def_dynamic_plugins='#undef CONFIG_DYNAMIC_PLUGINS'
3394 fi
3395 echores "$_dynamic_plugins"
3396
3397
3398 def_threads='#define HAVE_THREADS 0'
3399
3400 echocheck "pthread"
3401 if linux ; then
3402   THREAD_CFLAGS=-D_REENTRANT
3403 elif freebsd || netbsd || openbsd || bsdos ; then
3404   THREAD_CFLAGS=-D_THREAD_SAFE
3405 fi
3406 if test "$_pthreads" = auto ; then
3407 cat > $TMPC << EOF
3408 #include <pthread.h>
3409 void* func(void *arg) { return arg; }
3410 int main(void) { pthread_t tid; return pthread_create(&tid, 0, func, 0) == 0 ? 0 : 1; }
3411 EOF
3412 _pthreads=no
3413 if ! hpux ; then
3414   for _ld_tmp in "-lpthreadGC2" "" "-lpthread" "-pthread" ; do
3415     # for crosscompilation, we cannot execute the program, be happy if we can link statically
3416     cc_check $THREAD_CFLAGS $_ld_tmp && (tmp_run || test "$_ld_static") && _ld_pthread="$_ld_tmp" && _pthreads=yes && break
3417   done
3418 fi
3419 fi
3420 if test "$_pthreads" = yes ; then
3421   test $_ld_pthread && _res_comment="using $_ld_pthread"
3422   def_pthreads='#define HAVE_PTHREADS 1'
3423   def_threads='#define HAVE_THREADS 1'
3424   extra_cflags="$extra_cflags $THREAD_CFLAGS"
3425 else
3426   _res_comment="v4l, v4l2, ao_nas, win32 loader disabled"
3427   def_pthreads='#undef HAVE_PTHREADS'
3428   _nas=no ; _tv_v4l1=no ; _tv_v4l2=no
3429   mingw32 || _win32dll=no
3430 fi
3431 echores "$_pthreads"
3432
3433 if cygwin ; then
3434   if test "$_pthreads" = yes ; then
3435     def_pthread_cache="#define PTHREAD_CACHE 1"
3436   else
3437     _stream_cache=no
3438     def_stream_cache="#undef CONFIG_STREAM_CACHE"
3439   fi
3440 fi
3441
3442 echocheck "w32threads"
3443 if test "$_pthreads" = yes ; then
3444   _res_comment="using pthread instead"
3445   _w32threads=no
3446 fi
3447 if test "$_w32threads" = auto ; then
3448   _w32threads=no
3449   mingw32 && _w32threads=yes
3450 fi
3451 test "$_w32threads" = yes && def_threads='#define HAVE_THREADS 1'
3452 echores "$_w32threads"
3453
3454 echocheck "rpath"
3455 netbsd &&_rpath=yes
3456 if test "$_rpath" = yes ; then
3457   for I in $(echo $extra_ldflags | sed 's/-L//g') ; do
3458     tmp="$tmp $(echo $I | sed 's/.*/ -L& -Wl,-R&/')"
3459   done
3460 extra_ldflags=$tmp
3461 fi
3462 echores "$_rpath"
3463
3464 echocheck "iconv"
3465 if test "$_iconv" = auto ; then
3466   cat > $TMPC << EOF
3467 #include <stdio.h>
3468 #include <unistd.h>
3469 #include <iconv.h>
3470 #define INBUFSIZE 1024
3471 #define OUTBUFSIZE 4096
3472
3473 char inbuffer[INBUFSIZE];
3474 char outbuffer[OUTBUFSIZE];
3475
3476 int main(void) {
3477   size_t numread;
3478   iconv_t icdsc;
3479   char *tocode="UTF-8";
3480   char *fromcode="cp1250";
3481   if ((icdsc = iconv_open(tocode, fromcode)) != (iconv_t)(-1)) {
3482     while ((numread = read(0, inbuffer, INBUFSIZE))) {
3483       char *iptr=inbuffer;
3484       char *optr=outbuffer;
3485       size_t inleft=numread;
3486       size_t outleft=OUTBUFSIZE;
3487       if (iconv(icdsc, (const char **)&iptr, &inleft, &optr, &outleft)
3488           != (size_t)(-1)) {
3489         write(1, outbuffer, OUTBUFSIZE - outleft);
3490       }
3491     }
3492     if (iconv_close(icdsc) == -1)
3493       ;
3494   }
3495   return 0;
3496 }
3497 EOF
3498   _iconv=no
3499   for _ld_tmp in "" "-liconv" "-liconv $_ld_dl" ; do
3500     cc_check $_ld_lm $_ld_tmp && extra_ldflags="$extra_ldflags $_ld_tmp" && \
3501       _iconv=yes && break
3502   done
3503 fi
3504 if test "$_iconv" = yes ; then
3505   def_iconv='#define CONFIG_ICONV 1'
3506 else
3507   def_iconv='#undef CONFIG_ICONV'
3508 fi
3509 echores "$_iconv"
3510
3511
3512 echocheck "soundcard.h"
3513 _soundcard_h=no
3514 def_soundcard_h='#undef HAVE_SOUNDCARD_H'
3515 def_sys_soundcard_h='#undef HAVE_SYS_SOUNDCARD_H'
3516 for _soundcard_header in "sys/soundcard.h" "soundcard.h"; do
3517   cat > $TMPC << EOF
3518 #include <$_soundcard_header>
3519 int main(void) { return 0; }
3520 EOF
3521   cc_check && _soundcard_h=yes && _res_comment="$_soundcard_header" && break
3522 done
3523
3524 if test "$_soundcard_h" = yes ; then
3525   if test $_soundcard_header = "sys/soundcard.h"; then
3526     def_sys_soundcard_h='#define HAVE_SYS_SOUNDCARD_H 1'
3527   else
3528     def_soundcard_h='#define HAVE_SOUNDCARD_H 1'
3529   fi
3530 fi
3531 echores "$_soundcard_h"
3532
3533
3534 echocheck "sys/dvdio.h"
3535 cat > $TMPC << EOF
3536 #include <unistd.h>
3537 #include <sys/dvdio.h>
3538 int main(void) { return 0; }
3539 EOF
3540 _dvdio=no
3541 cc_check && _dvdio=yes
3542 if test "$_dvdio" = yes ; then
3543   def_dvdio='#define DVD_STRUCT_IN_SYS_DVDIO_H 1'
3544 else
3545   def_dvdio='#undef DVD_STRUCT_IN_SYS_DVDIO_H'
3546 fi
3547 echores "$_dvdio"
3548
3549
3550 echocheck "sys/cdio.h"
3551 cat > $TMPC << EOF
3552 #include <unistd.h>
3553 #include <sys/cdio.h>
3554 int main(void) { return 0; }
3555 EOF
3556 _cdio=no
3557 cc_check && _cdio=yes
3558 if test "$_cdio" = yes ; then
3559   def_cdio='#define DVD_STRUCT_IN_SYS_CDIO_H 1'
3560 else
3561   def_cdio='#undef DVD_STRUCT_IN_SYS_CDIO_H'
3562 fi
3563 echores "$_cdio"
3564
3565
3566 echocheck "linux/cdrom.h"
3567 cat > $TMPC << EOF
3568 #include <sys/types.h>
3569 #include <linux/cdrom.h>
3570 int main(void) { return 0; }
3571 EOF
3572 _cdrom=no
3573 cc_check && _cdrom=yes
3574 if test "$_cdrom" = yes ; then
3575   def_cdrom='#define DVD_STRUCT_IN_LINUX_CDROM_H 1'
3576 else
3577   def_cdrom='#undef DVD_STRUCT_IN_LINUX_CDROM_H'
3578 fi
3579 echores "$_cdrom"
3580
3581
3582 echocheck "dvd.h"
3583 cat > $TMPC << EOF
3584 #include <dvd.h>
3585 int main(void) { return 0; }
3586 EOF
3587 _dvd=no
3588 cc_check && _dvd=yes
3589 if test "$_dvd" = yes ; then
3590   def_dvd='#define DVD_STRUCT_IN_DVD_H 1'
3591 else
3592   def_dvd='#undef DVD_STRUCT_IN_DVD_H'
3593 fi
3594 echores "$_dvd"
3595
3596
3597 if bsdos; then
3598 echocheck "BSDI dvd.h"
3599 cat > $TMPC << EOF
3600 #include <dvd.h>
3601 int main(void) { return 0; }
3602 EOF
3603 _bsdi_dvd=no
3604 cc_check && _bsdi_dvd=yes
3605 if test "$_bsdi_dvd" = yes ; then
3606   def_bsdi_dvd='#define DVD_STRUCT_IN_BSDI_DVDIOCTL_DVD_H 1'
3607 else
3608   def_bsdi_dvd='#undef DVD_STRUCT_IN_BSDI_DVDIOCTL_DVD_H'
3609 fi
3610 echores "$_bsdi_dvd"
3611 fi #if bsdos
3612
3613
3614 if hpux; then
3615 # also used by AIX, but AIX does not support VCD and/or libdvdread
3616 echocheck "HP-UX SCSI header"
3617 cat > $TMPC << EOF
3618 #include <sys/scsi.h>
3619 int main(void) { return 0; }
3620 EOF