#!/bin/sh

find_target(){
  myexe="$1"
  dir=`dirname $myexe`

  target=`ls -l $myexe | awk '{loc=match($0,"->");target=substr($0,loc+3);print target}'`
  target_strip_slash=`echo $target | sed -e 's=^/=='`

  if [ x"$target_strip_slash" = x"$target" ]; then
  target="$dir/$target"
  fi
  
  if [ -h "$target" ]; then
    echo `find_target "$target" "$dir"`
  else
    echo $target  
  fi
}

if [ -h "$0" ]; then
  target=`find_target "$0"`
else
  target="$0"
fi

mydir=`dirname $target`

mydir_strip_dot=`echo $mydir | sed -e 's/^\.//'`
mydir_strip_dotdot=`echo $mydir | sed -e 's/^\.\.//'`

MGROOT="$mydir/.."

if [ x"$mydir" = x"." ]; then
  MGROOT="$PWD/.."
fi

if [ x"$mydir" != x"$mydir_strip_dot" ]; then
  MGROOT="$PWD/$mydir/.."
fi

if [ x"$mydir" != x"$mydir_strip_dotdot" ]; then
  MGROOT="$PWD/$mydir/.."
fi

if [ "${MGROOT#/}" = "${MGROOT}" ]; then
  #echo "This is a relative path, so let us make it absolute."
  MGROOT="`pwd`/$MGROOT"
fi

#MGROOT=$MGROOT/../

if [ -z $CCP4 ]; then 
  true
else
  if test ! -r "$CCP4/lib/libssm.so.1" -a ! -r "$CCP4/lib/libssm.1.dylib" -a ! -r "$CCP4/bin/libssm.dll"; then 
    echo "Not using CCP4 in $CCP4!"
    unset CCP4
  fi
fi

if [ -z $CCP4 ]; then 
  if [ -r $MGROOT/CCP4 ]; then 
     echo "Using CCP4 in $MGROOT/CCP4"
     CCP4=$MGROOT/CCP4
     export CCP4
  elif [ -r $MGROOT/../../../../bin/ccp4i ]; then 
     echo "Using CCP4 in $MGROOT/../../../.."
     CCP4=$MGROOT/../../../..
     export CCP4
  elif [ -r $MGROOT/../../../../../../../../bin/ccp4i ]; then 
     echo "Using CCP4 in $MGROOT/../../../../../../../.."
     CCP4=$MGROOT/../../../../../../../..
     export CCP4
  fi
fi

if [ -z "$LD_LIBRARY_PATH" ]; then
  LD_LIBRARY_PATH="$CCP4/lib"
else
  LD_LIBRARY_PATH="$CCP4/lib":$LD_FALLBACK_FRAMEWORK_PATH
fi

if [ -z "$DYLD_FALLBACK_LIBRARY_PATH" ]; then
  DYLD_FALLBACK_LIBRARY_PATH="$CCP4/lib"
else
  DYLD_FALLBACK_LIBRARY_PATH="$CCP4/lib":$DYLD_FALLBACK_LIBRARY_PATH
fi

PATH=$CCP4/bin/:$PATH
if [ -r $CCP4/share/ccp4/syminfo.lib ]; then
  SYMINFO=$CCP4/share/ccp4/syminfo.lib
fi
if [ -r $CCP4/lib/data/syminfo.lib ]; then
  SYMINFO=$CCP4/lib/data/syminfo.lib
fi
CLIBD=$CCP4/lib/data/
PROSMART_DIR=$CCP4/bin
MG_PISA_DIR=$CCP4/bin

MONOMER_LIBRARY=${CLIBD}/monomers

if [ -z $PYTHONPATH ]; then
  PYTHONPATH=$MGROOT/..
else
  PYTHONPATH=$MGROOT/..:$PYTHONPATH
fi

if [ -r $MGROOT/../Library/Python/2.7/site-packages ]; then
  echo "Using $MGROOT/../Library/Python/2.7/site-packages"
  PYTHONPATH=$MGROOT/../Library/Python/2.7/site-packages:$PYTHONPATH
fi

#FIXME - Up to here MGROOT probably ought to be MGMASTER, or some such.

export PYTHONPATH

MGROOT=`echo "import os;import ccp4mg;print os.path.dirname(ccp4mg.__file__)" |  python`

CCP4_MG=${MGROOT}
CCP4MG=${MGROOT}
CCP4_MGDATA=${MGROOT}/data
CCP4MG_CIRCLE_TEXTURE_FILE=${MGROOT}/qticons/circles.png

if [ -r "${MGROOT}/imagemagick" ]; then
  export MAGICK_HOME="${MGROOT}/imagemagick"
  PATH="$MAGICK_HOME/bin:$PATH"
  if [ -z "$DYLD_FALLBACK_LIBRARY_PATH" ]; then
    DYLD_FALLBACK_LIBRARY_PATH="$MAGICK_HOME/lib"
  else
    DYLD_FALLBACK_LIBRARY_PATH="$MAGICK_HOME/lib":$DYLD_FALLBACK_LIBRARY_PATH
  fi
  LD_LIBRARY_PATH="$MAGICK_HOME/lib":$LD_LIBRARY_PATH
fi

if [ -r "${CCP4}/Frameworks" ]; then
  echo "Using ${CCP4}/Frameworks"
  DYLD_FRAMEWORK_PATH="${CCP4}/Frameworks"
  export DYLD_FRAMEWORK_PATH
elif [ -r "${MGROOT}/../Frameworks" ]; then
  echo "Using ${MGROOT}/../Frameworks"
  #DYLD_FALLBACK_FRAMEWORK_PATH="${MGROOT}/../Frameworks:/Library/Frameworks:/Network/Library/Frameworks:/System/Library/Frameworks"
  DYLD_FRAMEWORK_PATH="${MGROOT}/../Frameworks"
  export DYLD_FRAMEWORK_PATH
fi

PATH=${MGROOT}/bin:$PATH
PATH=${MGROOT}/ffmpeg/bin:$PATH
PATH=${MGROOT}/imagemagick/bin:$PATH
export PATH

LD_LIBRARY_PATH="$MGROOT/lib":$LD_LIBRARY_PATH

export LD_LIBRARY_PATH
export DYLD_FALLBACK_LIBRARY_PATH

export MGROOT CCP4_MG CCP4MG CCP4_MGDATA CCP4MG_CIRCLE_TEXTURE_FILE CLIBD MONOMER_LIBRARY PROSMART_DIR MG_PISA_DIR SYMINFO

echo "CCP4 is $CCP4"

mydir=`dirname $0`
$mydir/../bin/ccp4-pyqt-python ${MGROOT}/qtgui/main.py $*
