Mercurial > mplayer.hg
diff configure @ 1:3b5f5d1c5041
Initial revision
author | arpi_esp |
---|---|
date | Sat, 24 Feb 2001 20:28:24 +0000 |
parents | |
children | ad89e009076b |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/configure Sat Feb 24 20:28:24 2001 +0000 @@ -0,0 +1,783 @@ +#!/bin/sh + +# +# MPlayer configurator. (C) 2000 Pontscho/fresh!mindworkz +# pontscho@makacs.poliod.hu +# +# some changes by A'rpi/ESP-team: +# - some english bugfix :) +# - removed _??exists flags, _?? is enough... +# - creating only config.mak files instead of whole Makefiles +# +# some changes by LGB (Gábor Lénárt): +# - SOME gcc may support 'k7', so I added tests for ALL CPU type optimization +# switches with the ability to find out the best optimization for your CPU. +# - Help moved to the begining to avoid tests if user only wants help. +# - A one lined help to indicate detailed help for users +# - Fixed /tmp race (PIDs can be predicted, I added random numbers as well) +# +# some changes by A'rpi/ESP-team: +# - the --win32libdir patch by Aaron Hope applied +# - some english bugfix again :) +# - cpu type selection changed: +# ( k7->k6->k5-> ) || (i686->pentiumpro-> ) pentium-> i486 -> i386 -> error! +# - cpu type for AMD/family=5 changed k6->k5 +# +# some changes by LGB: +# - Ehhh, AMD K6-2 returns with cpuid 5 ;-) Changing back Arpi's last change :) +# More info: AMD K6-2 reports with family 5, duron with 6, so I attached +# much finer CPU type detection based on Linux kernel's one :) +# (k5: 5, model<6, k6: 5, model>=6, k7: 6, model=any) +# - On some exit point (error) temporary files were not deleted. Fixed. +# - $TMP and $TMP2 are renamed to $TMPC and $TMPO ;-) +# - Some useless { ... } are removed +# +# some changes by A'rpi/ESP-team: +# - added 'athlon' target for the new athlongcc [Ian Kumlien] +# - applied _win32libdir=-L patch by Magnus Pfeffer +# +# -- + + +# LGB: Help moved here. + +if [ "$1" = "--help" -o "$1" = "-help" -o "$1" = "-h" ]; then +cat << EOF + +usage: $0 [options] + +params: + --enable-mmx build with mmx support [autodetect] + --enable-3dnow build with 3dnow! support [autodetect] + --enable-sse build with sse support [autodetect] + --enable-gl build with OpenGL render support [autodetect] + --enable-sdl build with SDL render support [def.: disabled!] + --enable-mga build with mga_vid support [autodetect, if /dev/mga_vid + is available] + --enable-xmga build with mga_vid X Window support [autodetect, + if both /dev/mga_vid and x11 are available] + --enable-xv build with Xv render support for X 4.x [autodetect] + --enable-x11 build with X11 render support [autodetect] + --enable-mlib build with MLIB support ( only Solaris ) + + --enable-termcap use termcap database for key codes + --enable-xmmp use XMMP audio drivers + --enable-lirc enable LIRC (remote control) support + + --with-x11libdir=DIR X library files are in DIR + --with-win32libdir=DIR windows codec files + + --size-x=SIZE default screen width + --size-y=SIZE default screen height +EOF +exit 0 +fi + +# LGB: Some inital help + +echo "You can get detailed help on configure with: $0 --help" +echo "Please wait while ./configure discovers your software and hardware environment!" + +# LGB: temporary files + +TMPC="/tmp/mplayer-conf-${RANDOM}-$$-${RANDOM}.c" +TMPO="/tmp/mplayer-conf-${RANDOM}-$$-${RANDOM}.o" + + +# --- + +# config files +CCONF='config.h' +MCONF='config.mak' + +# --- + +TAB=`echo -n -e "\t"` +pname=`cat /proc/cpuinfo | grep 'model name' | cut -d ':' -f 2` +pparam=`cat /proc/cpuinfo | grep 'features' | cut -d ':' -f 2` +if [ -z "$pparam" ]; then + pparam=`cat /proc/cpuinfo | grep 'flags' | cut -d ':' -f 2` +fi +pvendor=`cat /proc/cpuinfo | grep 'vendor_id' | cut -d ':' -f 2 | cut -d ' ' -f 2` +pfamily=`cat /proc/cpuinfo | grep 'cpu family' | cut -d ':' -f 2 | cut -d ' ' -f 2` +pmodel=`cat /proc/cpuinfo | grep "model$TAB" | cut -d ':' -f 2 | cut -d ' ' -f 2` +pstepping=`cat /proc/cpuinfo | grep 'stepping' | cut -d ':' -f 2 | cut -d ' ' -f 2` + +_mmx=no +_3dnow=no +_mtrr=no +_sse=no +_mga=no +_gl=no +_sdl=no +_xv=no +_x11=no +_3dfx=no +_syncfb=no +_mlib=no +_mpg123=no +_xmga=no +_lirc=no + +_x=1 +_y=1 + +_gllib= +_sdllib= +_x11lib= +_xvlib= +_xlibdir= + +for i in `echo $pparam`; do + + case "$i" in + 3dnow) + _3dnow=yes + _mpg123=yes + ;; + mmx) + _mmx=yes + ;; + mtrr) + _mtrr=yes + ;; + k6_mtrr) + _mtrr=yes + ;; + xmm) + _sse=yes + ;; + sse) + _sse=yes + ;; + kni) + _sse=yes + ;; + esac + +done + +if [ -e /usr/X11R6 ]; then + _x11libdir=-L/usr/X11R6/lib +else + if [ -e /usr/X11 ]; then + _x11libdir=-L/usr/X11/lib + fi +fi + +_win32libdirnotify=no +if [ -e /usr/lib/win32 ]; then + _win32libdir=/usr/lib/win32 +else + if [ -e /usr/local/lib/win32 ]; then + _win32libdir=/usr/local/lib/win32 + else +# This is our default: + _win32libdir=/usr/lib/win32 + _win32libdirnotify=yes + fi +fi + + +if [ -e /dev/mga_vid ]; then + _mga=yes + _syncfb=yes +fi + +proc=pentium + +case "$pvendor" in + AuthenticAMD) + case "$pfamily" in + 3) + proc=i386 + ;; + 4) + proc=i486 + ;; + 5) + if [ $pmodel -ge 6 ]; then # LGB: models are: K5/SSA5 K5 K5 K5 ? ? K6 K6 K6-2 K6-3 + proc=k6 + else + proc=k5 + fi + ;; + 6|7) # LGB: Though it seems Athlon CPUs returns with "6" + proc=k7 + ;; + *) + proc=pentium + ;; + esac + ;; + GenuineIntel) + case "$pfamily" in + 3) + proc=i386 + ;; + 4) + proc=i486 + ;; + 5) + proc=pentium + ;; + 6) + proc=i686 + ;; + *) + proc=pentium + ;; + esac + ;; + unknown) # added by Gabucino - upon Tibcu's request + case "$pfamily" in + 3) + proc=i386 + ;; + 4) + proc=i486 + ;; + *) + proc=pentium + ;; + esac + ;; + *) + proc=pentium + ;; +esac + +# --- + +cat > $TMPC << EOF +int main( void ) { return 0; } +EOF + +# check that gcc supports our cpu, if not, fallback to pentium +# LGB: check -mcpu and -march swithing step by step with enabling +# to fall back till 386. + +#echo -n "Checking your GCC CPU optimalization abilities: " +if [ "$proc" = "k7" ]; then +# echo -n "trying k7 " + gcc $TMPC -o $TMPO -march=$proc -mcpu=$proc &> /dev/null || proc=athlon +fi +if [ "$proc" = "athlon" ]; then +# echo -n "trying athlon " + gcc $TMPC -o $TMPO -march=$proc -mcpu=$proc &> /dev/null || proc=k6 +fi +if [ "$proc" = "k6" ]; then +# echo -n "trying k6 " + gcc $TMPC -o $TMPO -march=$proc -mcpu=$proc &> /dev/null || proc=k5 +fi +if [ "$proc" = "k5" ]; then +# echo -n "trying k5 " + gcc $TMPC -o $TMPO -march=$proc -mcpu=$proc &> /dev/null || proc=pentium +fi +if [ "$proc" = "i686" ]; then +# echo -n "trying i686 " + gcc $TMPC -o $TMPO -march=$proc -mcpu=$proc &> /dev/null || proc=pentiumpro +fi +if [ "$proc" = "pentiumpro" ]; then +# echo -n "trying pentiumpro " + gcc $TMPC -o $TMPO -march=$proc -mcpu=$proc &> /dev/null || proc=pentium +fi +if [ "$proc" = "pentium" ]; then +# echo -n "trying pentium " + gcc $TMPC -o $TMPO -march=$proc -mcpu=$proc &> /dev/null || proc=i486 +fi +if [ "$proc" = "i486" ]; then +# echo -n "trying i486 " + gcc $TMPC -o $TMPO -march=$proc -mcpu=$proc &> /dev/null || proc=i386 +fi +if [ "$proc" = "i386" ]; then +# echo -n "trying i386 " + gcc $TMPC -o $TMPO -march=$proc -mcpu=$proc &> /dev/null || proc=error +fi +if [ "$proc" = "error" ]; then + echo + echo "Your gcc does not support even \"i386\" for '-march' and '-mcpu'." >&2 + rm -f $TMPC $TMPO + exit +fi +#echo "DONE (${proc})." + + +# check GL & X11 & Xext & Xv & SDL & termcap libs + +gcc $TMPC -o $TMPO $_x11libdir/ -lGL &> /dev/null && _gl=yes +gcc $TMPC -o $TMPO $_x11libdir -lX11 -lXext &> /dev/null && _x11=yes +gcc $TMPC -o $TMPO $_x11libdir -lXv &> /dev/null && _xv=yes +gcc $TMPC -o $TMPO $_x11libdir -L/usr/local/lib/ -lpthread &> /dev/null || \ + { echo "Lib pthread not found."; rm -f $TMPC $TMPO ; exit 1; } + +# SDL disabled by default (0.11pre22-) because of the compilation problems +# this is very buggy & experimental code, use it only if you really need it!! +_have_sdl=no +gcc $TMPC -o $TMPO $_x11libdir -L/usr/local/lib/ -lSDL -lpthread &> /dev/null && _have_sdl=yes + +_termcap=no +gcc $TMPC -o $TMPO -ltermcap &> /dev/null && _termcap=yes + +_binutils=no +as libac3/downmix/downmix_i386.S -o $TMPO &> /dev/null && _binutils=yes + +cat > $TMPC << EOF +#include <GL/gl.h> +int main( void ) { return 0; } +EOF + +gcc $TMPC -o $TMPO $_x11libdir/ -lGL &> /dev/null || \ + { _gl=no; echo "GL includes not found!";} + +rm -f $TMPC $TMPO + + +if [ $_x11 = 'yes' ]; then + if [ $_mga = 'yes' ]; then + _xmga=yes + fi +fi + +# --- + +# check for the parameters. + +for ac_option +do + case "$ac_option" in + --enable-sse) + _sse=yes + ;; + --enable-3dnow) + _3dnow=yes + ;; + --enable-mmx) + _mmx=yes + ;; + --enable-gl) + _gl=yes + ;; + --enable-sdl) + _sdl=yes + ;; + --enable-mga) + _mga=yes + ;; + --enable-xmga) + _xmga=yes + ;; + --enable-xv) + _xv=yes + ;; + --enable-x11) + _x11=yes + ;; + --enable-3dfx) + _3dfx=yes + ;; + --enable-syncfb) + _syncfb=yes + ;; + --enable-mlib) + _mlib=yes + ;; + --enable-termcap) + _termcap=yes + ;; + --enable-xmmp) + _xmmp=yes + ;; + --enable-lirc) + _lirc=yes + ;; + --disable-sse) + _sse=no + ;; + --disable-3dnow) + _3dnow=no + ;; + --disable-mmx) + _mmx=no + ;; + --disable-gl) + _gl=no + ;; + --disable-sdl) + _sdl=no + ;; + --disable-mga) + _mga=no + ;; + --disable-xmga) + _xmga=no + ;; + --disable-xv) + _xv=no + ;; + --disable-x11) + _x11=no + ;; + --disable-mlib) + _mlib=no + ;; + --disable-termcap) + _termcap=no + ;; + --with-x11libdir=*) + _x11libdir=-L`echo $ac_option | cut -d '=' -f 2` + ;; + --with-win32libdir=*) + _win32libdir=`echo $ac_option | cut -d '=' -f 2` + ;; + --size-x=*) + _x=`echo $ac_option | cut -d '=' -f 2` + ;; + --size-y=*) + _y=`echo $ac_option | cut -d '=' -f 2` + ;; + esac +done + +# to screen. + +echo "Checking for cpu vendor ... $pvendor ( $pfamily:$pmodel:$pstepping )" +echo "Checking for cpu type ... $pname" +echo "Optimizing to ... $proc" +echo "Checking for mmx support ... $_mmx" +echo "Checking for 3dnow support ... $_3dnow" +echo "Checking for sse support ... $_sse" +echo "Checking for mtrr support ... $_mtrr" +echo "Screen size ... ${_x}x${_y}" +echo "Checking for X11 libs ... $_x11libdir" +echo "Checking mga_vid device ... $_mga" +echo "Checking for xmga ... $_xmga" +echo "Checking for SDL ... $_sdl" +echo "Checking for OpenGL ... $_gl" +echo "Checking for Xv ... $_xv" +echo "Checking for X11 ... $_x11" + +# write conf files. + +if [ $_gl = yes ]; then + _gllib='-lGL' +fi + +if [ $_x11 = yes ]; then + _x11lib='-lX11 -lXext' +fi + +if [ $_xv = yes ]; then + _xvlib='-lXv' +fi + +if [ $_sdl = yes ]; then + _sdllib='-lSDL -lpthread' +fi + +if [ "$_termcap" = "yes" ]; then + _termcap='#define USE_TERMCAP' + _libtermcap='-ltermcap' +else + _termcap='#undef USE_TERMCAP' + _libtermcap='' +fi + +if [ "$_xmmp" = "yes" ]; then + _xmmpaudio='#define USE_XMMP_AUDIO' + _xmmplibs='-Llibxmm -lxmm' +else + _xmmpaudio='#undef USE_XMMP_AUDIO' +fi + +if [ "$_lirc" = "yes" ]; then + _lircdefs='#define HAVE_LIRC' + _lirclibs='-llirc_client' +else + _lircdefs='#undef HAVE_LIRC' + _lirclibs='' +fi + + +echo +echo "Creating $MCONF" +cat > $MCONF << EOF + +# -------- Generated by ./configure ----------- + +AR=ar +CC=gcc +# OPTFLAGS=-O4 -march=$proc -mcpu=$proc -pipe -fomit-frame-pointer -ffast-math +OPTFLAGS=-O4 -march=$proc -mcpu=$proc -pipe -ffast-math +# LIBS=-L/usr/lib -L/usr/local/lib $_x11libdir $_gllib $_sdllib $_x11lib $_xvlib +X_LIBS=$_x11libdir $_gllib $_sdllib $_x11lib $_xvlib +TERMCAP_LIB=$_libtermcap +XMM_LIBS = $_xmmplibs +LIRC_LIBS = $_lirclibs +WIN32_PATH=-DWIN32_PATH=\"$_win32libdir\" + +EOF +# echo 'CFLAGS=$(OPTFLAGS) -Wall -DMPG12PLAY' >> config.mak + +echo "Creating $CCONF" + +if [ "$_mmx" = "yes" ]; then + _mmx='#define HAVE_MMX' +else + _mmx='#undef HAVE_MMX' +fi + +if [ $_3dnow = yes ]; then + _3dnowm='#define HAVE_3DNOW' +else + _3dnowm='#undef HAVE_3DNOW' +fi + +if [ $_sse = yes ]; then + _ssem='#define HAVE_SSE' +else + _ssem='#undef HAVE_SSE' +fi + +# --- + +_vosrc='' + +if [ $_mlib = yes ]; then + _mlib='#define HAVE_MLIB' + _vosrc=$_vosrc' yuv2rgb_mlib.c' +else + _mlib='#undef HAVE_MLIB' +fi + +# --- + +if [ $_gl = yes ]; then + _gl='#define HAVE_GL' + _vosrc=$_vosrc' vo_gl.c' +else + _gl='#undef HAVE_GL' +fi + +if [ $_sdl = yes ]; then + _sdldef='#define HAVE_SDL' + _vosrc=$_vosrc' vo_sdl.c' +else + _sdldef='#undef HAVE_SDL' +fi + +if [ $_x11 = yes ]; then + _x11='#define HAVE_X11' + _vosrc=$_vosrc' vo_x11.c' +else + _x11='#undef HAVE_X11' +fi + +if [ $_xv = yes ]; then + _xv='#define HAVE_XV' + _vosrc=$_vosrc' vo_xv.c' +else + _xv='#undef HAVE_XV' +fi + +# --- + +if [ $_mga = yes ]; then + _mga='#define HAVE_MGA' + _vosrc=$_vosrc' vo_mga.c' +else + _mga='#undef HAVE_MGA' +fi +if [ $_xmga = yes ]; then + _vosrc=$_vosrc' vo_xmga.c' +fi + +if [ $_syncfb = yes ]; then + _syncfb='#define HAVE_SYNCFB' + _vosrc=$_vosrc' vo_syncfb.c' +else + _syncfb='#undef HAVE_SYNCFB' +fi + +if [ $_3dfx = yes ]; then + _3dfx='#define HAVE_3DFX' + _vosrc=$_vosrc' vo_3dfx.c' +else + _3dfx='#undef HAVE_3DFX' +fi + +if [ $_mpg123 = yes ]; then + _mpg123='#define DEFAULT_MPG123' +else + _mpg123='#undef DEFAULT_MPG123' +fi + +cat > $CCONF << EOF + +/* -------- Generated by ./configure ----------- */ + +/* Define this to enable avg. byte/sec-based AVI sync method by default: + (use -bps or -nobps commandline option for run-time method selection) */ +#undef AVI_SYNC_BPS + +/* Undefine this if you want soundcard-only timing by default: + You can still change this with the -alsa or -noalsa command-line option! + (This function was originally impemented to solve ALSA driver's big + buffer problems, but it seems to be useful for every soundcard drivers) */ +#define ALSA_TIMER + +/* Undefine this if your soundcard driver has no working select(). + If you have kernel Oops, player hangups, or just no audio, you should + try to recompile MPlayer with this option disabled! */ +#define HAVE_AUDIO_SELECT + +/* You have a choice for MP3 decoding: mp3lib(mpg123) or Win32(l3codeca.acm) + #define this if you prefer mpg123 (with 3Dnow! support) than l3codeca.acm + (with mmx/sse optimizations) + You can still change it runtime using -afm 1 (mpg123) or -afm 4 (l3codeca)*/ +$_mpg123 + +/* XMMP support: (test code) */ +$_xmmpaudio +#define LIBDIR "/usr/local/lib" +#define PLUGINDIR LIBDIR "/xmmp/Plugins" +#define XMMP_AUDIO_DRIVER PLUGINDIR "/Sound/oss.so" + +/* LIRC (remote control, see www.lirc.org) support: */ +$_lircdefs + +/* Define if your processor stores words with the most significant + byte first (like Motorola and SPARC, unlike Intel and VAX). */ +/* #define WORDS_BIGENDIAN */ + +#define ARCH_X86 + +///////////////////////////////////////////////////////////////////////////// +// +// NOTE: Instead of modifying these here, use the --enable/--disable options +// of the ./configure script! See ./configure --help for details. +// +///////////////////////////////////////////////////////////////////////////// + +/* termcap flag for getch2.c */ +$_termcap + +/* Extension defines */ +$_mlib // available only on solaris +$_3dnowm // only define if you have 3DNOW (AMD k6-2, AMD Athlon, iDT WinChip, etc.) +$_mmx // only define if you have MMX +$_ssem // only define if you have SSE (Intel Pentium III or Celeron II) + +/* libvo options */ +#define SCREEN_SIZE_X $_x +#define SCREEN_SIZE_Y $_y +$_x11 +$_xv +$_gl +$_sdldef +$_3dfx +$_mga +$_syncfb + +#if defined(HAVE_GL)||defined(HAVE_X11)|defined(HAVE_XV) +#define X11_FULLSCREEN +#endif + +EOF + +echo "Creating libvo/config.mak" + +_voobj=`echo $_vosrc | sed -e 's/\.c/\.o/g'` + +cat > libvo/config.mak << EOF + +include ../config.mak + +OPTIONAL_SRCS=$_vosrc +OPTIONAL_OBJS=$_voobj + +EOF + +echo "Creating libac3/config.mak" + +if [ $_sse = yes ]; then + _downmixc='downmix/downmix_kni.S' + _downmixo='downmix/downmix_kni.o' +else +if [ $_binutils = yes ]; then + _downmixc='downmix/downmix_i386.S' + _downmixo='downmix/downmix_i386.o' +else +_downmixc='downmix/downmix.c' +_downmixo='downmix/downmix.o' +cat << EOF + +!!! Warning! fallback to slow downmix.c due the old binutils. +!!! Upgrade for better audio decoding performance. + +EOF +fi +fi + +cat > libac3/config.mak << EOF + +include ../config.mak + +OPTIONAL_SRCS = $_downmixc +OPTIONAL_OBJS = $_downmixo + +EOF + +echo "Creating mp3lib/config.mak" + +if [ $_3dnow = yes ]; then + _3dnowobjectsrcs='dct36_3dnow.s dct64_3dnow.s decode_3dnow.s' + _3dnowobjectobjs='dct36_3dnow.o dct64_3dnow.o decode_3dnow.o' +else + _3dnowobjectsrcs= + _3dnowobjectobjs= +fi + +cat > mp3lib/config.mak << EOF + +include ../config.mak + +OPTIONAL_SRCS = $_3dnowobjectsrcs +OPTIONAL_OBJS = $_3dnowobjectobjs + +EOF + +cat << EOF + +Config files successfully generated by ./configure ! +Please check config.h and config.mak files, tune CPU +and optimization flags if you don't like these defaults. +You can compile the program with 'make dep;make' and +install with 'make install'. Good luck! + +EOF + +if [ $_mtrr = yes ]; then + echo "Please check mtrr settings at /proc/mtrr (see DOCS/MTRR)" + echo +fi + +if [ $_sdl = no ]; then +if [ $_have_sdl = yes ]; then + echo "You have libSDL installed, but SDL support is disabled by default." + echo "If you want to compile MPlayer with SDL support, re-run ./configure" + echo "with --enable-sdl. But it's very buggy & experimental code, use it" + echo "only if you really need it! And it works(?) *ONLY* with SDL v1.1.7 !" + echo "(SDL driver is NOT supported, so do NOT report bugs relating to SDL!)" + echo +fi +fi + +if [ $_win32libdirnotify = yes ]; then + echo "Missing WIN32 codecs dir at $_win32libdir !" + echo "Make it and copy DLL files to there! (You can get them from your windows" + echo "directory or download ftp://thot.banki.hu/esp-team/linux/MPlayer/w32codec.zip" +else + echo "Ok, Win32 codecs directory at $_win32libdir already exists." +fi +