#!/bin/bash
# Change the following definition to reflect any given install location
ROOTDIR=/packages/LabSoC/Xilinx
declare -A tools
# tools["ISE"]="ISE"
tools["Vivado"]="VIVADO"
# Echoes
str=''
idt=' '
tab=''
function indent {
tab+="${idt}"
}
function dedent {
tab="${tab/%$idt}"
}
function append {
str+="${1}"
}
function eol {
append $'\n'
}
function log {
append "${tab}${*}"
eol
}
# Common environment variables modifications
function vappend {
tmp="${!1}"
if [ "x${tmp}" == "x" ]; then
export ${1}=${2}
elif [[ "${tmp}" != ${2} && "${tmp}" != ${2}:* && "${tmp}" != *:${2} && "${tmp}" != *:${2}:* ]]; then
export ${1}=${tmp}:${2}
fi
}
function vprepend {
tmp="${!1}"
if [ "x${tmp}" == "x" ]; then
export ${1}=${2}
elif [[ "${tmp}" != ${2} && "${tmp}" != ${2}:* && "${tmp}" != *:${2} && "${tmp}" != *:${2}:* ]]; then
export ${1}=${2}:${tmp}
fi
}
lm_license_file=${LM_LICENSE_FILE}
path=${PATH}
lang=${LANG}
lc_ctype=${LC_CTYPE}
lc_numeric=${LC_NUMERIC}
ld_library_path=${LD_LIBRARY_PATH}
# Architecture
arch="32"
brch=""
uname -a | grep x86_64 > /dev/null
if [ $? -eq 0 ]; then
arch="64"
brch="_x86_64"
fi
echo "Xilinx tools configuration:"
indent
log $'Selected architecture:'
indent
if [ "x${XILINX_ARCH}" = "x" ]; then
XILINX_ARCH="${arch}"
log "None, trying ${XILINX_ARCH} bits. Please set the XILINX_ARCH environment variable to 32 or 64 in order to change this"
else
log "${XILINX_ARCH} bits. Please set the XILINX_ARCH environment variable to 32 or 64 in order to change this"
fi
dedent
for tool in "${!tools[@]}"; do
TOOL=${tools[$tool]}
v="XILINX_${TOOL}_VERSION"
if [ "x${!v}" = "x" ]; then
version=Default
else
version="${!v}"
fi
if [ -d "${ROOTDIR}/$tool" ]; then
log "${tool}:"
indent
log "Selected version: ${version}. Please set the XILINX_${TOOL}_VERSION environment variable to change this. Available versions:"
indent
for n in ${ROOTDIR}/${tool}/*; do
n=$(basename "${n}")
log "${n}"
done
dedent
log "Configuring ${tool}:"
indent
root="${ROOTDIR}/${tool}/${version}"
if [ "${tool}" = "ISE" ]; then
root+="/ISE_DS"
fi
if [ -f "${root}/settings${XILINX_ARCH}.sh" ]; then
log "source ${root}/settings${XILINX_ARCH}.sh"
source ${root}/settings${XILINX_ARCH}.sh
else
log "${root} does not seam to be a valid installation directory for ${tool} (${version} version) ${arch} bits. Skipping ${tool} configuration."
fi
dedent
dedent
elif [ "x${!v}" != "x" ]; then
log "Could not find installation directory of ${tool} (${version} version) ${arch} bits. Skipping ${tool} configuration."
fi
done
# Licenses
log "Licenses:"
indent
export LM_LICENSE_FILE="27000@lmgrd"
log "LM_LICENSE_FILE=${LM_LICENSE_FILE}"
dedent
# Locales
export LANG="en_US.UTF-8"
export LC_CTYPE="en_US.UTF-8"
export LC_NUMERIC="en_US.UTF-8"
# Prompt, message
cp=0
for V in LM_LICENSE_FILE PATH LD_LIBRARY_PATH LANG LC_CTYPE LC_NUMERIC; do
v=${V,,}
if [ "x${!V}" != "x${!v}" ]; then
log "Warning: the $V environment variable has been modified:"
indent
log "Was: ${!v}"
log "Now: ${!V}"
dedent
cp=1
fi
done
if [ "$cp" == 1 ]; then
log 'The prompt is modified to reflect these changes.'
PS1="\[\e[0;31m\]XILINX\[\e[0m\] $PS1"
fi
echo "$str"
str=''
tab=''
Comments