#!/bin/bash
# $Id: xtwi 1172 2019-06-29 07:27:24Z mueller $
# SPDX-License-Identifier: GPL-3.0-or-later
# Copyright 2013-2019 by Walter F.J. Mueller <W.F.J.Mueller@gsi.de>
#
# Xilinx Tool Wrapper script for ISE:
#   define XTWI_PATH
#   usage  xwti <ise command>
#
#  Revision History:
# Date         Rev Version  Comment
# 2017-04-01   862   1.2.1  add usr_local/bin and bin_xilinx_wrapper to PATH
# 2016-08-28   804   1.2    BUGFIX: add ":." to PATH even under BARE_PATH
# 2016-02-21   735   1.1    use BARE_PATH ect to provide clean environment
# 2013-10-12   539   1.0    Initial version
#
# Note: For Xilinx ISE installations with an install path <ipath> holds
#         <ipath>/ISE_DS        dir with settings(32|64).sh 
#         <ipath>/ISE_DS/ISE    XILINX env var will point here
#

# store arg list on vars (will be dropped later to source scripts)
arglist_val=$@
arglist_num=$#
#
# check whether ISE already setup ($XILINX defined)
if [ -z "$XILINX" ]
then
  # check whether $XTWI_PATH defined
  if [ -z "$XTWI_PATH" ]
  then
    echo "XTWI_PATH not defined"
    exit 1
  fi

  # provide clean environment when BARE_PATH ect defined
  #   add prepend $HOME/usr_local/bin to path
  #   add append $RETROBASE/tools/bin and '.' to path
  #   '.' is needed to start tb's, which usually are in cwd
  if [ -n "$BARE_PATH" ]
  then
    export PATH=$HOME/usr_local/bin:$BARE_PATH:$RETROBASE/tools/bin:.
    unset LD_LIBRARY_PATH
    if [ -n "$BARE_LD_LIBRARY_PATH" ]
    then
      export LD_LIBRARY_PATH=$BARE_LD_LIBRARY_PATH
    fi 
  fi

  # add bin_xilinx_wrapper to path (for firefox ect interceptors)
  export PATH=$RETROBASE/tools/bin_xilinx_wrapper:$PATH

  # check whether 32 or 64 bit system (uname -m gives 'i686' or 'x86_64')
  if [ `uname -m` = "x86_64" ]
  then
    settings_filename=$XTWI_PATH/ISE_DS/settings64.sh
  else
    settings_filename=$XTWI_PATH/ISE_DS/settings32.sh
  fi
  if [ ! -e "$settings_filename" ]
  then
    echo "can't locate init script '$settings_filename'"
    exit 1
  fi

  # drop arg list, suppress output
  set --
  . $settings_filename > /dev/null

  # check that XILINX defined
  if [ -z "$XILINX" ]
  then
    echo "Failed to setup XILINX"
    exit 1
  fi

else
  echo "XILINX already defined"
fi

if [ $arglist_num != 0 ]
then
  exec $arglist_val
fi
