#!/bin/bash

package="ati"
driver_rev="3.2.5"
gfx_base_dir="/opt/hp/graphics"
package_dir="${gfx_base_dir}/${package}"
flag="${package_dir}/config_run"

function usage {
    echo "config -i|-e"
    echo "  -i  configure ${package} package"
    echo "  -e  unconfigure ${package} package"
}

if [ $# -lt 1 ]; then
    usage
    exit 1
fi

case "$1" in

    "-i")
        if [ -f "${flag}" ]; then
            exit 0
        fi

        # Make sure no other packages are configured

        for other in ${gfx_base_dir}/*
        do
            if [ "${other}" == "${package}" ]; then
                continue
            fi
            if [ -f ${other}/config_run ]; then
                ${other}/config -e
                if [ $? -ne 0 ]; then
                    echo "Failed to unconfigure "`basename "${other}"`"."
                    exit 1
                fi
            fi
        done

        # Save the existing X and OpenGL stuff.
        for file in /etc/X11/XF86Config-4 \
                    /etc/X11/X \
                    /usr/lib/libGL.* \
                    /usr/lib/libGLcore.* \
                    /usr/X11R6/lib/libGL.* 
        do
            if [ -e "${file}" ]; then
                mkdir -m755 -p "${package_dir}/save/"`dirname "${file}"`
                mv -f "${file}" "${package_dir}/save/${file}"
            fi
        done

        # Install XFree86 link and config files

        cp -d ${package_dir}/X  /etc/X11/
        cp -d ${package_dir}/XF86Config-4.ati /etc/X11/
        if [ -e "/etc/X11/XF86Config-4" ]; then
            mv /etc/X11/XF86Config-4{,.orig}
        fi
	ln -s /etc/X11/XF86Config-4.ati /etc/X11/XF86Config-4

	# Copy kernel module source into place
	cp -dpr ${package_dir}/modules/fglrx /lib/modules/

	# ATI's kernel modules will install the binary module for kernel
        # if it has the right one, otherwise it will build it in place 
	cd /lib/modules/fglrx
	./make_install.sh

	# Copy other ATI driver objects into place 

	cp ${package_dir}/driver/dri/fglrxgnu_dri.so /usr/X11R6/lib/modules/dri/
	cp ${package_dir}/driver/drivers/fglrx_drv.o /usr/X11R6/lib/modules/drivers/
	cp ${package_dir}/driver/linux/libfglrxdrm.a /usr/X11R6/lib/modules/linux/
	cp -d ${package_dir}/lib/*  /usr/X11R6/lib/
        if [ ! -d "/opt/intel/compiler70/ia64/lib" ]; then
	    mkdir -pm755 /opt/intel/compiler70/ia64/lib
	fi
	cp ${package_dir}/intel/*  /opt/intel/compiler70/ia64/lib/
	cp ${package_dir}/include/fglrx_gamma.h  /usr/X11R6/include/X11/extensions/
	cp -d ${package_dir}/bin/* /usr/X11R6/bin/
	cp -d ${package_dir}/src/* /usr/src

	# Now copy ATI's fireglcontrol app stuff in place
        if [ ! -d "/opt/kde3/share/applnk" ]; then
	    mkdir -pm755 /opt/kde3/share/applnk
	fi
	cp ${package_dir}/fireglcontrol/fireglcontrol_kde3.desktop /opt/kde3/share/applnk/
	cp ${package_dir}/fireglcontrol/fireglcontrol.kdelnk /usr/share/applnk
	cp ${package_dir}/fireglcontrol/fireglcontrol.desktop /usr/share/gnome/apps/
	cp ${package_dir}/fireglcontrol/ati.xpm /usr/share/icons/
	cp ${package_dir}/fireglcontrol/ati.xpm /usr/share/pixmaps/
	cp -dpr ${package_dir}/fireglcontrol/fireglcontrol.qt* /usr/X11R6/bin
	ln /usr/X11R6/bin/fireglcontrol.qt2.gcc2.96 /usr/X11R6/bin/fireglcontrol

	# copy ATI license file to HP directory
        if [ -d "/opt/license" ]; then
	    cp -d ${package_dir}/bin/LICENSE* /opt/license/
	else
            mkdir /opt/license
            chmod 666 /opt/license
	    cp -d ${package_dir}/bin/LICENSE* /opt/license/
	fi

	# In case we're installing over top a previous Nvidia driver
        sed '/nvidia/d' < /etc/modules.conf > /etc/modules.conf.tmp
        mv -f /etc/modules.conf.tmp /etc/modules.conf
        sed '/NVdriver/d' < /etc/modules.conf > /etc/modules.conf.tmp
        mv -f /etc/modules.conf.tmp /etc/modules.conf

        ldconfig
        depmod -a
        
        touch "${flag}"
        ;;

    "-e")

        if [ ! -f "${flag}" ]; then
            exit 0
        fi

        # Remove all the files we installed 
        rm -f /etc/X11/X \
              /etc/X11/XF86Config-4 \
              /usr/X11R6/include/extensions/fglrx_gamma.h \
              /usr/X11R6/lib/libGL.so* \
              /usr/X11R6/lib/libfglrx_gamma.so* \
              /usr/X11R6/bin/fglrx* \
              /usr/X11R6/bin/firegl* \
              /usr/X11R6/bin/LICENSE.GPL \
              /usr/X11R6/bin/LICENSE.QPL \
	      /opt/kde3/share/applnk/firegl* \
	      /opt/intel/compiler70/ia64/lib/libcxa.* \
	      /usr/X11R6/lib/modules/dri/fglrxgnu_dri.so \
	      /usr/X11R6/lib/modules/drivers/fglrx_drv.so \
	      /usr/X11R6/lib/modules/linux/libfglrxdrm.a \
 	      /usr/share/applnk/firegl* \
	      /usr/share/gnome/apps/firegl* \
	      /usr/share/icons/ati.xpm \
	      /usr/share/pixmaps/ati.xpm \
	      /usr/src/fglrx* \
	      /usr/src/XF86Config.ati
     
        # Restore whatever we saved.
        for file in `cd "${package_dir}/save"; find . ! -type d -print`
        do
            rm -f "/${file}"
            mkdir -m755 -p "/"`dirname "${file}"`
            if [ -e "${package_dir}/save/${file}" ]; then
                mv "${package_dir}/save/${file}" "/${file}"
            fi
        done

        modprobe -r fglrx
        depmod -a
        ldconfig

        rm -f "${flag}"
        ;;

    *)
        usage
        exit 1
        ;;

esac
exit 0
