#!/bin/sh
# Intel(R) Application Debugger for Linux
# Copyright (C) 2000-2012 Intel Corporation. All rights reserved.
INSTALLDIR=/opt/intel/composer_xe_2013.2.146

if [ -z "${INTEL_LICENSE_FILE}" ]
then
    INTEL_LICENSE_FILE="$INSTALLDIR/licenses:/opt/intel/licenses:${HOME}/intel/licenses:/Users/Shared/Library/Application Support/Intel/Licenses"; export INTEL_LICENSE_FILE
else
    INTEL_LICENSE_FILE="${INTEL_LICENSE_FILE}:$INSTALLDIR/licenses:/opt/intel/licenses:${HOME}/intel/licenses:/Users/Shared/Library/Application Support/Intel/Licenses"; export INTEL_LICENSE_FILE
fi

export LD_LIBRARY_PATH="$INSTALLDIR/bin/intel64_mic:$INSTALLDIR/debugger/mic/lib/:$INSTALLDIR/debugger/mic/gui/":$LD_LIBRARY_PATH
export PATH="$INSTALLDIR/bin/intel64_mic:$INSTALLDIR/debugger/mic/gui":$PATH
export IDB_GUI_DEBUGGER="$INSTALLDIR/bin/intel64_mic/iidb_mic"

export IDB_MIC_SLAVE_DEBUGGER="$INSTALLDIR/bin/intel64_mic/idbc_mic"
IDB_ARGUMENTS="$@"
MPM_LAUNCH=`echo " ${IDB_ARGUMENTS}" | grep " \+\(-mpm-launch=1\) \+"`

if [ "${MPM_LAUNCH}" ]; then
  mpm_launch_parm="$1"
  shift
  mpm_cardid_parm="$1"
  shift

  mpm_cardid_regex="-mpm-cardid=([0-9]+)"
  if [[ $mpm_cardid_parm =~ $mpm_cardid_regex ]]; then
    mpm_cardid=${BASH_REMATCH[1]}
  fi

  #find sysfs mountpoint
  #sysfs=`mount | sed -ne 's/.* on \(.*\) type sysfs.*/\1/p'`
  sysfs=/sys
  if [ -d "$sysfs/class/mic" ]; then
    rconnect_regex="-rconnect=tcpip:([^:]+):([0-9]+)"
    card_regex='^.*mic([0-9]+)$'
    for arg in $*
    do
      if [[ $arg =~ $rconnect_regex ]]; then
        rconnect_ip=${BASH_REMATCH[1]}
        rconnect_port=${BASH_REMATCH[2]}
        card_dir=$sysfs/class/mic/mic$mpm_cardid
        card_status=`cat $card_dir/state`
        if [ $card_status == "online" ]; then
          if [ -z "${SINK_LD_LIBRARY_PATH}" ]; then
            SINK_LD_LIBRARY_PATH="/usr/linux-k1om-4.7/linux-k1om/lib64:/opt/intel/mic/myo/lib"; export SINK_LD_LIBRARY_PATH
          else
            SINK_LD_LIBRARY_PATH="${SINK_LD_LIBRARY_PATH}:/usr/linux-k1om-4.7/linux-k1om/lib64:/opt/intel/mic/myo/lib"; export SINK_LD_LIBRARY_PATH
          fi
          /opt/intel/mic/bin/micnativeloadex $INSTALLDIR/debugger/mic/lib/idbserver_mic -d $mpm_cardid -a "-c tcpip:$rconnect_port -x"&
        fi
        break
      fi
    done
  fi
else
  #find sysfs mountpoint
  #sysfs=`mount | sed -ne 's/.* on \(.*\) type sysfs.*/\1/p'`
  sysfs=/sys
  if [ -d "$sysfs/class/mic" ]; then
    rconnect_regex="-rconnect=tcpip:([^:]+):([0-9]+)"
    card_regex='^.*mic([0-9]+)$'
    for arg in $*
    do
      if [[ $arg =~ $rconnect_regex ]]; then
        rconnect_ip=${BASH_REMATCH[1]}
        rconnect_port=${BASH_REMATCH[2]}
	scp $INSTALLDIR/debugger/mic/lib/idbserver_mic $rconnect_ip:idbserver_mic
	ssh $rconnect_ip "./idbserver_mic -c tcpip:$rconnect_port -x"&
      fi
    done
  fi
fi
${IDB_GUI_DEBUGGER}  "$@"
kill -s 15 `jobs -p` 2> /dev/null
