#!/bin/sh
# Set initial variables:
CWD=`pwd`
if [ "$TMP" = "" ]; then
   TMP=/tmp
fi
PKG=$TMP/package-mesagl

if [ ! -d $TMP ]; then
   mkdir -p $TMP # location to build the source
fi
if [ ! -d $PKG ]; then
   mkdir -p $PKG # place for the package to be built
fi

# explode the package framework
cd $PKG
tar xvzf $CWD/_mesagl.tar.gz

echo "+==========+"
echo "| Mesa-3.2 |"
echo "+==========+"
cd $TMP

###
### Build necessary support libraries first (libglide2x & headers for an h3)
###
mkdir Glide
cd Glide
tar xvzf $CWD/glide2x.tar.gz
tar xvzf $CWD/swlibs.tar.gz
chmod +x swlibs/include/make/ostype
( cd $TMP/Glide/glide2x ; ln -s $TMP/Glide/swlibs swlibs )
# The Voodoo Banshee and Voodoo3 are known as an "h3"
export FX_GLIDE_HW=h3
make -C glide2x -f makefile.linux

###
### Create a "build help" tree with the headers and libraries needed
###
mkdir -p $TMP/glide/include
mkdir -p $TMP/glide/lib
cat swlibs/lib/libtexus.so.1.1 > $TMP/glide/lib/libtexus.so
cat glide2x/h3/lib/libglide.so.2.60 > $TMP/glide/lib/libglide2x.so
chmod 755 $TMP/glide/lib/*
cat swlibs/fxmisc/3dfx.h > $TMP/glide/include/3dfx.h
cat glide2x/h3/glide/src/glide.h > $TMP/glide/include/glide.h
cat glide2x/h3/glide/src/glidesys.h > $TMP/glide/include/glidesys.h
cat glide2x/h3/glide/src/glideutl.h > $TMP/glide/include/glideutl.h
cat glide2x/h3/incsrc/sst1vid.h > $TMP/glide/include/sst1vid.h
cat glide2x/h3/glide/src/gump.h > $TMP/glide/include/gump.h
cat swlibs/fxmisc/linutil.h > $TMP/glide/include/linutil.h
cat swlibs/texus/lib/texus.h > $TMP/glide/include/texus.h

###
### Build Mesa against Glide
###
cd $TMP
tar xvzf $CWD/MesaLib-3.2.tar.gz
tar xvzf $CWD/MesaDemos-3.2.tar.gz
cd Mesa-3.2
./configure --prefix=/usr/X11R6 \
            --enable-static \
            --enable-shared \
            --disable-3dnow \
            --disable-mmx \
            --with-glide=$TMP/glide
make CFLAGS="-O2 -Wall -fomit-frame-pointer -ffast-math -fexpensive-optimizations -malign-loops=2 -malign-jumps=2 -malign-functions=2 -D_REENTRANT"
( cd widgets-mesa ; ./configure --prefix=/usr/X11R6 --with-x ; make )

###
### Write out the libraries
###
cd $TMP/Mesa-3.2/src/.libs
cp -a libGL.a libGL.so.1.2.030200 $PKG/usr/X11R6/lib
( cd $PKG/usr/X11R6/lib ; ln -sf libGL.so.1.2.030200 libGL.so.1 )
( cd $PKG/usr/X11R6/lib ; ln -sf libGL.so.1 libGL.so )
cd $TMP/Mesa-3.2/src
cp -a libGL.la $PKG/usr/X11R6/lib
cd $TMP/Mesa-3.2/src-glu/.libs
cp -a libGLU.a libGLU.so.1.2.030200 $PKG/usr/X11R6/lib
( cd $PKG/usr/X11R6/lib ; ln -sf libGLU.so.1.2.030200 libGLU.so.1 )
( cd $PKG/usr/X11R6/lib ; ln -sf libGLU.so.1 libGLU.so )
cd $TMP/Mesa-3.2/src-glu
cp -a libGLU.la $PKG/usr/X11R6/lib
cd $TMP/Mesa-3.2/src-glut/.libs
cp -a libglut.a libglut.so.3.7.0 $PKG/usr/X11R6/lib
( cd $PKG/usr/X11R6/lib ; ln -sf libglut.so.3.7.0 libglut.so.3 )
( cd $PKG/usr/X11R6/lib ; ln -sf libglut.so.3 libglut.so )
cd $TMP/Mesa-3.2/src-glut
cp -a libglut.la $PKG/usr/X11R6/lib
cd $TMP/Mesa-3.2/widgets-mesa/src
cp -a libMesaGLw.a $PKG/usr/X11R6/lib
( cd $PKG/usr/X11R6/lib ; rm -f libMesaGL.so libMesaGLU.so )
( cd $PKG/usr/X11R6/lib ; ln -sf libGL.so libMesaGL.so )
( cd $PKG/usr/X11R6/lib ; ln -sf libGLU.so libMesaGLU.so )
chown root.root $PKG/usr/X11R6/lib/*
chmod 755 $PKG/usr/X11R6/lib/*.la
chmod 644 $PKG/usr/X11R6/lib/*.a

###
### Write out the header files
###
cd $TMP/Mesa-3.2/include/GL
cp -a *.h $PKG/usr/X11R6/include/GL
cd $TMP/Mesa-3.2/widgets-mesa/include/GL
cp -a *.h $PKG/usr/X11R6/include/GL
chown root.root $PKG/usr/X11R6/include/GL/*
chmod 644 $PKG/usr/X11R6/include/GL/*

###
### Write out the man pages
###
cd $TMP/Mesa-3.2/widgets-mesa/man
for page in `/bin/ls -1 *.3x`
do
   cat $page | gzip -9c > $PKG/usr/X11R6/man/man3/$page.gz
done
chown root.root $PKG/usr/X11R6/man/man3/*
chmod 644 $PKG/usr/X11R6/man/man3/*

###
### Write out the configuration file
###
cd $TMP/Mesa-3.2/src
cp -a mesa.conf $PKG/usr/X11R6/etc
chown root.root $PKG/usr/X11R6/etc/*
chmod 644 $PKG/usr/X11R6/etc/*

###
### Write out the widgets and demos
###
cd $TMP/Mesa-3.2
cp -a demos xdemos book samples 3Dfx/demos mtdemos ggi/demos \
   $PKG/usr/X11R6/lib/Mesa
cd $TMP/Mesa-3.2/widgets-mesa
cp -a ChangeLog INSTALL README TODO demos $PKG/usr/X11R6/lib/Mesa/widgets-mesa
chown -R root.root $PKG/usr/X11R6/lib/Mesa
chmod 755 $PKG/usr/X11R6/lib/Mesa

###
### Write out the documentation
###
cd $TMP/Mesa-3.2
cp -a docs/* $PKG/usr/doc/Mesa-3.2
chown -R root.root $PKG/usr/doc/Mesa-3.2
chmod 644 $PKG/usr/doc/Mesa-3.2/*
( cd $PKG/usr/doc/Mesa-3.2 ; ln -sf /usr/X11R6/lib/Mesa demos )

# A few housekeeping items
cd $PKG
find . -name CVS -type d -exec rm -rf {} \;
find . -type f -exec chown root.root {} \;

# make the package
cd $PKG
echo "y
n" | makepkg $TMP/mesagl.tgz

# clean up the extra stuff
if [ "$1" = "--cleanup" ]; then
   rm -rf $PKG
   rm -rf $TMP/Mesa-3.2
   rm -rf $TMP/glide
   rm -rf $TMP/Glide
fi
