#!/bin/bash
# author: wrn (2000-5-28)
# modified by loli




if test x"$1" = x--help ; then
    echo AYUDA sceptre
    exit 0
    fi

if test x"$1" = x--version ; then
    echo readsumma.sh version 3
    exit 0
    fi



help()
{    echo Modo de empleo: sceptre [opciones] fichero
     echo Opciones:
     echo '  -h              Muestra esta informacion'
     echo '  -v              Muestra la version '  
     echo '  -u <biblioteca> Biblioteca auxiliar para la compilacion'
     echo "     Valor por defecto: $1"   
     echo '  -m <fichero>    Fichero de modelos'
     echo "     Valor por defecto: $2"   
     echo '  -o <carpeta>    Carpeta que recibira los ficheros producidos'
     echo '      por este script o por sceptre1'
     echo "     Valor por defecto: directorio corriente"   
     echo ' Las opciones -v -m y -o se pasan a sceptre1; -h y -u son propias'
     echo 'Fichero:'
     echo '  Archivo de extension .d que describe el circuito a simular'
     echo '  Puede informarse con o sin su extension;'
     echo '     puede estar en directorio distinto del corriente'
     exit; 
}
prefix=/usr/local
exec_prefix=${prefix}
LIBDIR=${exec_prefix}/lib
LIBSCEPTRE=${LIBDIR}/libsceptre.a
LIBSCEPTREAUX=${LIBDIR}/libsceptreaux.a
SHAREDIRSIMUSOL=${exec_prefix}/share/sceptre_simusol
MODELLIB=${HOME}/lib/modellib.dat
USRLIB=${HOME}/lib/usrlib.a
FC='gfortran -fno-automatic  -finit-local-zero -O -W -Wall -Wextra -g'
# FFLAGS=' -fno-automatic  -finit-local-zero -O -W  -Wall -Wextra -g'
#echo $USERLIB $MODELLIB
while getopts ":hvo:m:u:" opt "$@"; do
   case $opt in
     h) help $USRLIB $MODELLIB;;
     v) sceptre1 -v; exit;;
     o) OUTDIR=$OPTARG;;
     m) MODELLIB=$OPTARG;;
     u) USRLIB=$OPTARG;;
#     :) echo "Option -$OPTARG requires an argument" >2&
#        exit 1;;  no funciona
     \?) echo "Invalid option: -$OPTARG" >&2
        exit 1;;
   esac
done
if [ ! -e ${USRLIB} ]; then
   echo ${USRLIB} no es un archivo, usamos -u posible
   USRLIB=${SHAREDIRSIMUSOL}/usrlib.a
fi
if [ ! -e ${MODELLIB} ]; then
   echo ${MODELLIB} no es un archivo, usamos -m posible
   MODELLIB=${SHAREDIRSIMUSOL}/modellib.dat
fi
if [ -z ${OUTDIR} ]; then
    OUTDIR='.'
fi
if [ ! -d ${OUTDIR} ]; then
   echo ${OUTDIR} no es un directorio
   exit 1
fi 
shift $((OPTIND-1))
if [ -z "$1" ]; then
    echo operand missing
    help
fi
DIR=`dirname $1`
rcode=$?
if [ $rcode != 0 ]; then
   echo name \"$1\" is not good for input file 
   exit $rcode
fi

PROPIO=`basename $1 .d`
rcode=$?
if [ $rcode != 0 ]; then
   echo name \"$1\" is not good for input file 
   exit $rcode
fi
INPUT="${DIR}/${PROPIO}"
PROPIO="${OUTDIR}/${PROPIO}"

echo ' S C E P T R E  (LINUX-version)'
echo ' Compiler: ' ${FC} ${FFLAGS}
echo ' User library file ' ${USRLIB}

rm ${PROPIO}.ls1 ${PROPIO}.ini ${PROPIO}.f ${PROPIO}.acs 2>/dev/null 
rm ${PROPIO}.ls2 ${PROPIO}.dat ${PROPIO}.dirac ${PROPIO}.sim 2>/dev/null
rm ${PROPIO}.ls4 ${PROPIO}.ls5 dirac.dat  2>/dev/null
rm ${PROPIO}.for ${PROPIO}_run 2>/dev/null 
SCEPTRE1=${exec_prefix}/bin/sceptre1
${SCEPTRE1} -o $OUTDIR  -m $MODELLIB $INPUT 2>${PROPIO}.ls0

echo ">>${SCEPTRE1} -o $OUTDIR  -m $MODELLIB $INPUT 2>${PROPIO}.ls0"

rcode=$?
if [ $rcode -gt 200 ]; then
   exit $rcode
fi
if [ $rcode != 0 ]; then
    cat ${PROPIO}.ls0
    if [ -e ${PROPIO}.ls1 ]; then
        echo See ${PROPIO}.ls1
    fi
    exit $rcode
fi

if [ ! -s ${PROPIO}.for ]; then
    echo "Fotran program not generated"
    exit 1   
fi
if [ -e ${DIR}/funciones.for ]; then
    cat ${DIR}/funciones.for >${PROPIO}.f
fi

# datasave.dat and pgmsave.for are possibly used by
#    a following continue type .d file
cp ${PROPIO}.for pgmsave.for

#EXTRAS="-ltabularfor -ltabular -lradiafor -lradia"
EXTRAS=""
if test -s extensiones.txt ; then 
    EXTRAS=`cat extensiones.txt`;
    EXTRAS="${EXTRAS%\\n}"
fi;

echo EEE $EXTRAS

sed 's/\$/\_/g' < ${PROPIO}.for >>${PROPIO}.f

 # usrlib.a es independiente de arquitectura en esta instalacion
# lo logico es que vaya en la instalacion normal, pero lo ponemos aca
# por si se compila 
#ar rcs usrlib.a
#ar rcs $USRLIB

 # usrlib.a es independiente de arquitectura en esta instalacion
# lo logico es que vaya en la instalacion normal, pero lo ponemos aca
# por si se compila 

if test -e $USRLIB ; then 
    ${FC} -o ${PROPIO}_run   ${PROPIO}.f ${LIBDIR}/sceptre2.o \
      $USRLIB $LIBSCEPTRE $LIBSCEPTREAUX   ${EXTRAS}  2>${PROPIO}.ls4
     echo ">> ${FC} -o ${PROPIO}_run   ${PROPIO}.f  $USRLIB  ${LIBDIR}/sceptre2.o $LIBSCEPTRE    $LIBSCEPTREAUX ${EXTRAS}"
else
    ${FC} -o ${PROPIO}_run   ${PROPIO}.f ${LIBDIR}/sceptre2.o \
	  $LIBSCEPTRE $LIBSCEPTREAUX   ${EXTRAS}  2>${PROPIO}.ls4
    echo ">> ${FC} -o ${PROPIO}_run   ${PROPIO}.f  ${LIBDIR}/sceptre2.o $LIBSCEPTRE    $LIBSCEPTREAUX ${EXTRAS}"
    fi

# ${LIBDIR}/radiacion.o -lrad
# -lSolTrack
#/usr/local/lib/librad.so.1.0.1 2>${PROPIO}.ls4




rcode=$?
if [ $rcode != 0 ]; then
    echo Return compilation code for ${PROPIO}_run = $rcode
    echo see ${PROPIO}.ls4
    exit $rcode
fi
if [ -s ${PROPIO}.ls4 ]; then
    cat ${PROPIO}.ls4
fi
date
if [ ! -x ${PROPIO}_run ]; then
    echo " Executable ${PROPIO}_run not found"
    exit 10
fi

${PROPIO}_run  2>${PROPIO}.ls5
rcode=$?

rcode=$?
if [  $rcode != 0 ]; then
     echo Return execution code for ${PROPIO}_run = $rcode
     cat ${PROPIO}.ls5
     if [ -s ${PROPIO}.ls2 ]; then
         echo Problems in simulation:
         echo See ${PROPIO}.ls2
     fi
     exit $rcode
fi
if [ -f dirac.dat ]; then
     mv dirac.dat ${PROPIO}.dirac
else 
     rm ${PROPIO}.sim 2>/dev/null
     if [ -s ${PROPIO}.ls2 ]; then
          echo "      see  results in ${PROPIO}.ls2"
     fi

fi

# datasave.dat and pgmsave.for are possibly used by
#    a following continue type .d file
cp ${PROPIO}.dat datasave.dat

exit 0



