#! /bin/sh
######################################
##### Model Transformation Tools #####
######################################
# Bourne shell script: mtt_p2c
# Pascal to c converter for MTT
# Uses the wonderful GNU p2c by Dave Gillespie, daveg@csvax.cs.caltech.edu.
# P.J.Gawthrop July 1998
# Copyright (c) P.J.Gawthrop 1998
###############################################################
## Version control history
###############################################################
## $Id$
## $Log$
## Revision 1.11 2001/03/29 19:24:14 gawthrop
## Can now use c representations of crs when using -c option
##
## Revision 1.10 2000/09/15 09:01:41 peterg
## Updated internal comments
##
## Revision 1.9 2000/05/16 18:56:58 peterg
## Now realised that libp2c.a avoids many probs - so simplified it.
##
## Revision 1.8 2000/05/11 19:34:50 peterg
## *** empty log message ***
##
## Revision 1.7 1999/08/29 06:14:27 peterg
## No longer remove "PASCAL_MAIN"
##
## Revision 1.6 1999/04/20 06:17:15 peterg
## Fudge to avoid a bizzare bug (?) in p2c which corrupts "zero_matrix"
##
## Revision 1.5 1998/08/12 14:14:18 peterg
## Added pretty heading and explicitly include p2c header.
##
## Revision 1.4 1998/07/29 13:56:34 peterg
## Replces p2c include by local include.
##
## Revision 1.3 1998/07/27 20:32:51 peterg
## Now gives immediate warnings
##
## Revision 1.2 1998/07/25 16:35:43 peterg
## Sorted out log files etc
##
## Revision 1.1 1998/07/25 16:28:38 peterg
## Initial revision
##
###############################################################
# Options
info=''
while [ -n "`echo $1 | grep '^-'`" ]; do
case $1 in
-I )
info=info;
;;
*)
echo "$1 is an invalid argument - ignoring" ;;
esac
shift
done
# Inform user
echo Creating $1_$2.c
# Use p2c to do the translation
p2c -V $1_$2.p | grep Warning # > mtt_p2c.log 2>> mtt_p2c.log
cat $1_$2.log >> mtt_p2c.log
mv $1_$2.c mtt_junk.c
# Change p2c.h include.
#mv $1_$2.c mtt_junk1#
#cat mtt_junk1 | grep -v 'p2c/p2c.h'> mtt_junk2
# pretty heading
DATE=`date`
cat <<EOF >$1_$2.c
/* C program $1_$2.c */
/* Generated by MTT on $DATE */
/* Compile with gcc -lm -lp2c $1_$2.c -o $1_$2.out */
/* Note that p2c must be correctly installed so that p2c.h and libp2c.a are accessible */
/* Header file for user-defined crs (implemented in c) */
#include "$1_cr.h"
EOF
#cat<<EOF >>$1_$2.c
#/* The following is the header file included here for completeness */
#EOF
#cat $MTTPATH/trans/c/p2c.h >> $1_$2.c
#cat <<EOF >> $1_$2.c
#/* End of the header file. */
#
#
#EOF
## The sed item is to avoid a bizzare bug (?) in p2c which corrupts "zero_matrix"
###cat mtt_junk2 | sed 's/zero_matrix/mttmat/g'>> $1_$2.c
## Sort out the pascal EOF, PASCAL_MAIN etc
cat mtt_junk.c |\
grep -v PASCAL_MAIN >> $1_$2.c
if [ -n "$info" ]; then
cat mtt_p2c.log
fi
# Remove the garbage
rm -f mtt_junk.c