#!/bin/bash
KERNELVERSION=`uname -r`
MACHINE=`uname -m`
VIDEODRIVERDIR=/lib/modules/$KERNELVERSION/kernel/drivers/media/video
DRMDRIVERDIR=/lib/modules/$KERNELVERSION/kernel/drivers/char/drm
AGPDRIVERDIR=/lib/modules/$KERNELVERSION/kernel/drivers/char/agp
MODULESDEPDIR=/lib/modules/$KERNELVERSION
MODULESCONFDIR=/etc
#MODULESCONFFILE=$MODULESCONFDIR/modules.conf
OLDMODULESCONFFILE=$MODULESCONFDIR/modules.conf.bak
AUTOLOADFILE=/etc/rc.d/rc.local
OLDAUTOLOADFILE=/etc/rc.d/rc.local.bak
UTILITY_PACKAGE=Utility
PROGRAMNAME=s3utility
PACKAGEDATADIR=/usr/local/share/$PROGRAMNAME
BINDIR=/usr/local/bin
GTK_LIB_PIXMAP=/usr/lib/gtk/themes/engines/libpixmap.so
LIBXV=/usr/X11R6/lib/libXv.so.1.0

echo -e " -------- install start --------"
# VIA/S3G UniChrome familly driver install shell script

if [ "`uname -r | cut -c1-3`" = "2.6" ]; then
    KERNELVER=kernel-2.6
    MODULESCONFFILE=$MODULESCONFDIR/modprobe.conf
else
    KERNELVER=kernel-2.4
    MODULESCONFFILE=$MODULESCONFDIR/modules.conf
fi

BINARY=XServer

if [ "$KERNELVER" = "kernel-2.6" ]; then
    VIDEO_V4L_OBJ=via_v4l_drv.ko
    VIDEO_DEV_OBJ=videodev.ko
	VIDEO_DEV_OBJ_BAK=videodev.ko.bak
    VIDEO_DEV_OBJ2=videodev.ko.gz
	VIDEO_DEV_OBJ2_BAK=videodev.ko.gz.bak
    DRM_OBJ=via.ko
    AGP_OBJ=agpgart.ko       
    VIAAGP_OBJ=via-agp.ko       
else
    VIDEO_V4L_OBJ=via_v4l_drv.o
    VIDEO_DEV_OBJ=videodev.o
    VIDEO_DEV_OBJ_BAK=videodev.o.bak
    VIDEO_DEV_OBJ2=videodev.o.gz
	VIDEO_DEV_OBJ2_BAK=videodev.o.gz.bak
    DRM_OBJ=via.o  
fi

# check kernel version
case "$KERNELVERSION" in
    2.4.2-2)
        OS=RedHat
        VER=7.1
        ;;
    2.4.7-10)
        OS=RedHat
        VER=7.2
        ;;
    2.4.18-3)
        OS=RedHat
        VER=7.3
        ;;
    2.4.23)
        OS=RedHat
        VER=7.3-2
        ;;
    2.4.18-14)
        OS=RedHat
        VER=8.0
        ;;
    2.4.20-8)
        OS=RedHat
        VER=9.0
        ;;
    2.4.22-1.2115.nptl)
        OS=FedoraCore
        VER=1
        ;;
    2.6.5-1.358)
        OS=FedoraCore
        VER=2
        ;;
    2.6.9-1.667)
        OS=FedoraCore
        VER=3
        ;;
    2.4.18-6mdk)
        OS=Mandrake
        VER=8.2
        ;;
    2.4.19-16mdk)
        OS=Mandrake
        VER=9.0
        ;;
    2.4.21-0.13mdk)
        OS=Mandrake
        VER=9.1
        ;;
    2.4.22-10mdk*)
        OS=Mandrake
        VER=9.2
        ;;
    2.6.3-7mdk*)
        OS=Mandrake
        VER=10.0
        ;;
    2.4.25-2mdk*)
        OS=Mandrake
        VER=10.0
        ;;
    2.4.18-4GB)
        OS=SuSE
        VER=8.0
        ;;
    2.4.19-4GB)
        OS=SuSE
        VER=8.1
        ;;
    2.4.20-4GB)
        OS=SuSE
        VER=8.2
        ;;
    2.4.21-99-default)
        OS=SuSE
        VER=9.0
        ;;
    2.4.21-99-athlon)      # if processor is k7/k8
        OS=SuSE
        VER=9.0
        ;;
    2.4.21-201-default)    # x86_64 version
        OS=SuSE
        VER=9.0
        ;;
    2.6.4-52-default)      # i686 version
        OS=SuSE
        VER=9.1
        ;;
    2.4.26-1)
    	OS=RedFlag
    	VER=4.1
        ;;
esac
echo Install $OS $VER VIA/S3G UniChrome familly graphic driver!

echo "Which CPU do you use ? "
echo "1. VIA C3-2(C5N/C5P), Intel Pentium 2/3/4"

read choice

case "$choice" in
    1)
    CPUTYPE=pentium;;
    2)
    CPUTYPE=c3;;
    3)
    CPUTYPE=k7;;
esac
    if [ "$OS" = "Mandrake" -a -e $AGPDRIVERDIR/agpgart.o.gz ] ; then
        gunzip -f $AGPDRIVERDIR/agpgart.o.gz
    fi

    if [ "$OS" = "SuSE" ] ; then
        AUTOLOADFILE=/etc/init.d/boot.local
        OLDAUTOLOADFILE=/etc/init.d/boot.local.bak
    fi

    cp -f $OS/$VER/$CPUTYPE/$BINARY/$VIDEO_V4L_OBJ $VIDEODRIVERDIR/
    
    if [ "$OS" = "Mandrake" ]; then
       if [ "$VER" = "10.0" ] ; then
          mv -f $VIDEODRIVERDIR/$VIDEO_DEV_OBJ2 $VIDEODRIVERDIR/$VIDEO_DEV_OBJ2_BAK
       else
          cp -f $VIDEODRIVERDIR/$VIDEO_DEV_OBJ $VIDEODRIVERDIR/$VIDEO_DEV_OBJ_BAK
       fi
    else
       cp -f $VIDEODRIVERDIR/$VIDEO_DEV_OBJ $VIDEODRIVERDIR/$VIDEO_DEV_OBJ_BAK
    fi 

    cp -f $OS/$VER/$CPUTYPE/$BINARY/$VIDEO_DEV_OBJ $VIDEODRIVERDIR/    
    
    if [ "$MACHINE" = "x86_64" ] ; then
        cp -f $OS/$VER/$CPUTYPE/$BINARY/via_drv.o /usr/X11R6/lib64/modules/drivers
    else
        cp -f $OS/$VER/$CPUTYPE/$BINARY/via_drv.o /usr/X11R6/lib/modules/drivers/
    fi

    if [ ! -d $DRMDRIVERDIR/ ] ; then
        mkdir $DRMDRIVERDIR
    fi
    cp -f $OS/$VER/$CPUTYPE/$BINARY/$DRM_OBJ $DRMDRIVERDIR/

    if [ "$KERNELVER" = "kernel-2.6" ]; then
       if [ "$KERNELVERSION" != "2.6.5-1.358"  -a  "$KERNELVERSION" != "2.6.9-1.667" ] ; then
          cp -f $OS/$VER/$CPUTYPE/$BINARY/$AGP_OBJ $AGPDRIVERDIR/
          cp -f $OS/$VER/$CPUTYPE/$BINARY/$VIAAGP_OBJ $AGPDRIVERDIR/   
       fi
    fi


    cp -f $OS/$VER/$CPUTYPE/$BINARY/libddmpeg.so /usr/X11R6/lib/
    ldconfig

    sed -e '/char-major-81/d' $MODULESCONFFILE > modules.conf.tmp
    echo "alias char-major-81 videodev" >> modules.conf.tmp
    echo "alias char-major-81-0 via_v4l_drv" >> modules.conf.tmp
    echo "alias char-major-81-1 via_v4l_drv" >> modules.conf.tmp
    echo "alias char-major-81-2 via_v4l_drv" >> modules.conf.tmp

    if [ -f modules.conf.tmp ] ; then
        cp modules.conf.tmp $MODULESCONFFILE
        rm modules.conf.tmp
    fi

    if [ "$KERNELVER" = "kernel-2.6" ]; then
      sed -e '/via.o/d' $AUTOLOADFILE > rc.local.tmp
      echo "modprobe via" >> rc.local.tmp

      cp rc.local.tmp $AUTOLOADFILE

      sed -e '/via_v4l_drv/d' $AUTOLOADFILE > rc.local.tmp
      echo "modprobe via_v4l_drv" >> rc.local.tmp

      cp rc.local.tmp $AUTOLOADFILE

    else  
      sed -e '/agpgart.o/d' $AUTOLOADFILE > rc.local.tmp
      echo "modprobe agpgart agp_try_unsupported=1" >> rc.local.tmp

      cp rc.local.tmp $AUTOLOADFILE

      sed -e '/via_v4l_drv/d' $AUTOLOADFILE > rc.local.tmp
      echo "modprobe via_v4l_drv" >> rc.local.tmp

      cp rc.local.tmp $AUTOLOADFILE

      sed -e '/via.o/d' $AUTOLOADFILE > rc.local.tmp
      echo "modprobe via" >> rc.local.tmp

    fi
    if [ -f rc.local.tmp ] ; then
        cp rc.local.tmp $AUTOLOADFILE
        rm -f rc.local.tmp
    fi
    depmod -a

    if [ "$KERNELVER" = "kernel-2.6" ]; then
       if [ "$KERNELVERSION" != "2.6.5-1.358"  -a  "$KERNELVERSION" != "2.6.9-1.667" ] ; then
          rmmod  -f via-agp
          rmmod  -f agpgart
          insmod $AGPDRIVERDIR/agpgart.ko 
          insmod $AGPDRIVERDIR/via-agp.ko
       fi
       modprobe via
       modprobe via_v4l_drv
    else
       modprobe agpgart agp_try_unsupported=1
       modprobe via_v4l_drv
       modprobe via
    fi 

# copy video related config file to home directory
cp .VIAVIDEORC $HOME

# Install Linux utility
echo -e "Now start to install VIA/S3G display utility..."

if [ ! -f $LIBXV ] ; then
  echo ""
  echo "Warning, system cannot find the $LIBXV file."
  if [ "$OS" = "Mandrake" ] ; then
	 echo "Please install XFree86-compact-libs RPM package first."
  else
	 echo "Please install XFree86-libs RPM package first."
  fi
  echo "You can find the package in the installation CD."
  echo ""
  echo "Abort, the utility is not installed."
  exit 0; # Stop to install S3 utility.
fi

echo -e "Put the main program(s3utility) into the bin directory: /usr/local/bin"
install -D --mode=755 $UTILITY_PACKAGE/$PROGRAMNAME  $BINDIR/$PROGRAMNAME
install --directory $PACKAGEDATADIR
install --directory $PACKAGEDATADIR/pixmaps
install --directory $PACKAGEDATADIR/gtkthemes
install --mode=644 $UTILITY_PACKAGE/pixmaps/*.xpm $PACKAGEDATADIR/pixmaps
install --mode=644 $UTILITY_PACKAGE/gtkthemes/*.png $PACKAGEDATADIR/gtkthemes
install --mode=644 $UTILITY_PACKAGE/gtkthemes/gtkrc $PACKAGEDATADIR/gtkthemes
if test ! -e "$GTK_LIB_PIXMAP";
then
    install --directory /usr/lib/gtk
    install --directory /usr/lib/gtk/themes
    install --directory /usr/lib/gtk/themes/engines
    install -D --mode=755 $UTILITY_PACKAGE/lib/libpixmap.so  $GTK_LIB_PIXMAP
fi
echo -e "Utility installation is finished!"

echo -e " -------- vinstall end --------"

