#!/bin/bash
#
# Initialize the environment for Gluex simulation and analysis software
#
if [[ "$SVN_EDITOR" == "" ]]; then
    SVN_EDITOR=vim
    export SVN_EDITOR
fi
if [[ "$DISPLAY" == "" ]]; then
    DISPLAY=:0
    export DISPLAY
fi

# pointers to top-level packages
ONLINE=/home/halld/online
HALLD_HOME=/home/halld/sim-recon/
HDDS_HOME=$HALLD_HOME/hdds
BMS_OSNAME=`$HALLD_HOME/src/BMS/osrelease.pl`
EVIO_HOME=/home/halld/evio
EVIO_BUILD=$EVIO_HOME/`uname`-`uname -m`
EVIOROOT=$EVIO_BUILD
JANA_LEVEL=0.7.3
JANA_HOME=/home/halld/jana/jana_$JANA_LEVEL/$BMS_OSNAME
JANA_PLUGIN_PATH=$JANA_HOME/plugins:$HALLD_HOME/$BMS_OSNAME/plugins:$ONLINE/monitoring/$BMS_OSNAME/plugins
JANA_CALIB_URL=sqlite:////home/halld/ccdb/sql/ccdb-07-08-2015.sqlite
JANA_GEOMETRY_URL=xmlfile://$HDDS_HOME/main_HDDS.xml
JANA_RESOURCE_DIR=/home/halld/jana/resources
AMPTOOLS=/home/halld/amptools/AmpTools/AmpTools
AMPPLOTTER=/home/halld/amptools/AmpTools/AmpPlotter
export ONLINE HALLD_HOME HDDS_HOME BMS_OSNAME EVIO_HOME EVIO_BUILD EVIOROOT
export JANA_HOME JANA_CALIB_URL JANA_GEOMETRY_URL JANA_RESOURCE_DIR JANA_PLUGIN_PATH
export AMPTOOLS AMPPLOTTER

# this is needed to build evio, but not to use it
#CODA=$EVIO_HOME
#export CODA

# stuff related to the calibration constants db
CCDB_VERSION=1.01
CCDB_HOME=/home/halld/ccdb
source $CCDB_HOME/environment.bash
#CCDB_CONNECTION=mysql://jonesrt@hallddb.jlab.org/ccdb
CCDB_CONNECTION=$JANA_CLIB_URL
export CCDB_HOME CCDB_CONNECTION

#stuff related to the run conditions database
RCDB_HOME=/home/halld/rcdb
source $RCDB_HOME/environment.bash

# stuff for nvidia gpu support library cuda
CUDA_INSTALL_PATH=/usr/local/cuda
export CUDA_INSTALL_PATH
if ! echo $PATH | grep -q "$CUDA_INSTALL_PATH/bin"; then
    PATH=$PATH:$CUDA_INSTALL_PATH/bin
fi
if ! echo $LD_LIBRARY_PATH | grep -q "$CUDA_INSTALL_PATH/lib"; then
    LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$CUDA_INSTALL_PATH/lib:$CUDA_INSTALL_PATH/lib64
fi

# add the appropriate bin directories to path
if ! echo $PATH | grep -q "/home/halld/bin"; then
    PATH=$PATH:/home/halld/bin
fi
if ! echo $PATH | grep -q "$HALLD_HOME/$BMS_OSNAME/bin"; then
    PATH=$PATH:$HALLD_HOME/$BMS_OSNAME/bin
fi
if ! echo $PATH | grep -q "$HDDS_HOME/$BMS_OSNAME/bin"; then
    PATH=$PATH:$HDDS_HOME/$BMS_OSNAME/bin
fi
if ! echo $PATH | grep -q "$EVIO_BUILD/bin"; then
    PATH=$PATH:$EVIO_BUILD/bin
fi

# add the appropriate lib directories to LD_LIBRARY_PATH
if ! echo $LD_LIBRARY | grep -q "$EVIO_BUILD/lib"; then
    LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$EVIO_BUILD/lib
fi

# select the cernlib installation
if [ -z $CERN ]; then
    CERN=/usr/local/cern
    CERN_LEVEL=pro
    CERN_ROOT=$CERN/$CERN_LEVEL
    export CERN CERN_ROOT CERN_LEVEL
    . /etc/profile.d/cern.sh
fi
if [ -z $CERN_LEVEL ]; then
    CERN_LEVEL=pro
    export CERN_LEVEL
fi
if ! echo $PATH | grep -q "$CERN_ROOT/$CERN_LEVEL/bin"; then
    PATH=$PATH:$CERN_ROOT/$CERN_LEVEL/bin
fi

# chose the java vm
JAVAROOT=/usr/java/jdk
export JAVAROOT

# very old stuff, mostly obsolete
CERN_DIR=$CERN_ROOT
export CERN_DIR

# pointers to the Intel compiler
INTELCOMPILER=/usr/local/intel/compiler80
export INTELCOMPILER

# update the LD_LIBRARY_PATH
if ! echo ${LD_LIBRARY_PATH} | grep -q "$XERCESCROOT/lib"; then
    LD_LIBRARY_PATH=${LD_LIBRARY_PATH:="/usr/lib:/usr/local/lib"}:$XERCESCROOT/lib:$XALANCROOT/lib:$INTELCOMPILER/ia32/lib:$ROOTSYS/lib
fi
export LD_LIBRARY_PATH

# put root into the library path, if not already there
if ! echo $LD_LIBRARY_PATH | grep -q "$ROOTSYS/lib"; then
    LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$ROOTSYS/lib
fi

# put root into the path, if not already there
if ! echo $PATH | grep -q "$ROOTSYS/bin"; then
    PATH=$PATH:$ROOTSYS/bin
fi

# add pointers to Geant4 libraries
G4ROOT=/nfs/cern.ch/asis/geant4.10.01.p02/x86_64-debug
GEANT4PY=$G4ROOT/src/environments/g4py
G4WORKDIR=/home/www/docs/halld/glueXmeetings/mtg-10-2015/HDGeant4
if uname -m | grep -q x86_64; then
    CLHEP=/nfs/cern.ch/asis/clhep-2.1.1.0/x86_64
else
    CLHEP=/nfs/cern.ch/asis/clhep-2.1.1.0/i686
fi
export G4ROOT G4WORKDIR CLHEP
if [[ -x $G4ROOT/bin/geant4-site.sh ]]; then
    . $G4ROOT/bin/geant4-site.sh >/dev/null
else
    . $G4ROOT/bin/geant4.sh >/dev/null
fi
if [[ -x $G4ROOT/share/Geant4*/geant4make/geant4make-site.sh ]]; then
    . $G4ROOT/share/Geant4*/geant4make/geant4make-site.sh
else
    . $G4ROOT/share/Geant4*/geant4make/geant4make.sh
fi
CLHEP_DIR=$CLHEP
CLHEP_INCLUDE_DIR=$CLHEP/include
CLHEP_LIB_DIR=$CLHEP/lib
export CLHEP_DIR CLHEP_INCLUDE_DIR CLHEP_LIB_DIR

# pointers for geant4py interface
XERCESC3ROOT=/nfs/direct/packages/xerces/xerces-c-3.1.2.x86_64
LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$XERCESC3ROOT/lib
if [[ -d $GEANT4PY/lib64 ]]; then
    PYTHONPATH=$PYTHONPATH:$GEANT4PY/lib64:$G4WORKDIR/g4py
else
    PYTHONPATH=$PYTHONPATH:$GEANT4PY/lib:$G4WORKDIR/g4py
fi

# pointers to xerces and xalan libraries
XERCESCROOT=/usr/local/xerces
XALANCROOT=/nfs/direct/packages/xerces/xml-xalan/c
XALANJROOT=/nfs/direct/packages/xerces/xalan-j_2_5_1
if ! echo $CLASSPATH | grep -q "$XALANJROOT/bin/xalan.jar"; then
    CLASSPATH=$CLASSPATH:$XALANJROOT/bin/xalan.jar:/nfs/direct/packages/xsdvalid/xsdvalid-24/xsdvalid.jar
fi
export XERCESCROOT XALANCROOT CLASSPATH

if uname -m | grep -q x86_64; then
    lib=lib64
else
    lib=lib
fi
QTMOC="/usr/$lib/qt4/bin/moc"
QTFLAGS="-I/usr/include/QtCore -I/usr/include/QtGui -I/usr/include/QtOpenGL"
QTLIBS="-lQtCore -lQtGui"
GLQTLIBS="-lQtCore -lQtGui -lQtOpenGL"
export QTMOC QTFLAGS QTLIBS GLQTLIBS

function path_fixup()
{
	symbol=$1
	oldstring=$2
	newstring=$3
	newsymbol=""
	for clause in `echo ${!symbol} |\
		       awk -F: '{for(i=1;i<=NF;i++){print $i}}'`
	do
		newsymbol=$newsymbol:`echo $clause |\
			              sed "s&$oldstring&$newstring&"`
	done
	newsymbol=`echo $newsymbol | sed 's/^://'`
	export $symbol=$newsymbol
}

if uname -a | grep -q x86_64
then
	path_fixup JANA_HOME /i686 /x86_64
	path_fixup AMPTOOLS /i686 /x86_64
	path_fixup CLHEP /i686 /x86_64
	path_fixup CLHEP_LIB /i686 /x86_64
	path_fixup CLHEP_LIB_DIR /i686 /x86_64
	path_fixup CLHEP_INCLUDE_DIR /i686 /x86_64
fi

if ! echo ${LD_LIBRARY_PATH} | grep -q "$CLHEP_LIB_DIR"; then
    LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$G4LIB/$G4SYSTEM:$CLHEP_LIB_DIR
fi
unset DYLD_LIBRARY_PATH
