#!/bin/sh

set -e

PATH=/sbin:/usr/sbin:/usr/local/sbin:/bin:/usr/bin:/usr/local/bin

if [ "$(id -u)" != "0" -a "$1" != "--help" -a "$1" != "help" -a ! -z "$1" ]; then
    echo "$0: To $1 nvidia-glx, you must be root."
    exit 1
fi


KVER=`uname -r | cut -f 2 -d .`

####################################
# To force TLS libs on put
# USE_TLS=1
# in /etc/defaults/nvidia-glx

# To force TLS libs off put
# USE_TLS=0
# in /etc/defaults/nvidia-glx
#####################################
[ -e /etc/default/nvidia-glx ] && . /etc/default/nvidia-glx

setup_links () {

#symlink libglx.so.{$version} to tls libglx
	 rm -f /usr/X11R6/lib/modules/extensions/libglx.so.1.0.5336 2>/dev/null || true 
	 ln -s /usr/lib/nvidia/libglx-tls.so.1.0.5336 /usr/X11R6/lib/modules/extensions/libglx.so.1.0.5336

#GL tls libs
    	rm -f /usr/lib/tls/libGL.so.1 2>/dev/null || true
	rm -f /usr/lib/tls/libGL.so.1.0.5336 2>/dev/null || true
	rm -f /usr/lib/tls/libGLcore.so.1 2>/dev/null || true
        rm -f /usr/lib/tls/libGLcore.so.1.0.5336 2>/dev/null || true
        rm -f /usr/lib/tls/libGL.la 2>/dev/null || true
        rm -f /usr/lib/tls/libGL.so 2>/dev/null || true
        ln -s /usr/lib/nvidia/libGL.so.1.0.5336 /usr/lib/tls
        ln -s /usr/lib/nvidia/libGLcore.so.1.0.5336 /usr/lib/tls
        ln -s /usr/lib/nvidia/libGL.la /usr/lib/tls
        ln -s /usr/lib/nvidia/libGL.so.1.0.5336 /usr/lib/tls/libGL.so

	ldconfig
}		

remove_links () {
# remove any tls libs
        rm -f /usr/lib/tls/libGL.so.1 2>/dev/null || true
        rm -f /usr/lib/tls/libGL.so.1.0.5336 2>/dev/null || true
        rm -f /usr/lib/tls/libGLcore.so.1 2>/dev/null || true
        rm -f /usr/lib/tls/libGLcore.so.1.0.5336 2>/dev/null || true
        rm -f /usr/lib/tls/libGL.la 2>/dev/null || true
        rm -f /usr/lib/tls/libGL.so 2>/dev/null || true
			
#symlink libglx.so.{$version} to non-tls libglx
        rm -f /usr/X11R6/lib/modules/extensions/libglx.so.1.0.5336 2>/dev/null || true 
        ln -s /usr/lib/nvidia/libglx.so.1.0.5336 /usr/X11R6/lib/modules/extensions/libglx.so.1.0.5336

	ldconfig

}

setup_tls () {
if [ "$USE_TLS" = "1" ]; then
   setup_links
   exit 0
fi
if [ "$USE_TLS" = "0" ]; then
   remove_links
   exit 0
fi

if [ "$KVER" = "6"  ] ; then
   if [ -x /usr/lib/nvidia/tls_test ] ; then
           /usr/lib/nvidia/tls_test /usr/lib/nvidia/tls_test_dso.so
           if [ "$?" = "0" ] ; then
	   #NPTL detected
	   	 setup_links
	   fi
	   if [ "$?" = "1" ] ;then 
	      remove_links
	   fi
   fi
else
    remove_links
fi

}
	   
		   




case "$1" in
     start)
     	   setup_tls
	   ;;
     
     restart|reload|force-reload)
      	  /etc/init.d/nvidia-glx start
          ;;

     stop) 
     :
     ;;
     
     *)
       echo "Usage: /etc/init.d/nvidia-glx {start|stop|restart|reload|force-reload}"
       exit 1
       ;;
esac
	
exit 0
	
	
