3
# $Id: genlib.sh,v 1.9 2002/10/24 10:28:32 hcl Exp $
5
# /------------------------------------------------------------------\
7
# | A l l i a n c e C A D S y s t e m |
10
# | Author : Jean-Paul CHAPUT |
11
# | E-mail : alliance-users@asim.lip6.fr |
12
# | ================================================================ |
13
# | sh script : "./dpgen/dpgen.sh" |
14
# | **************************************************************** |
17
# \------------------------------------------------------------------/
21
# /------------------------------------------------------------------\
23
# | Functions Definitions |
25
# \------------------------------------------------------------------/
28
# --------------------------------------------------------------------
29
# Function : `print_usage()'.
34
echo " usage: genlib [-cdlknv] [--keep-exec] [--no-exec] [--no-rm-core] \\"
35
echo " [--keep-log] [--verbose] \\"
36
echo " <program> [-e [args]]"
39
echo " [-c|--no-rm-core] : Don't remove core file."
40
echo " [-l|--keep-log] : Keep log file (.grr) after execution."
41
echo " [-k|--keep-exec] : Keep binary after execution."
42
echo " [-m|--keep-makefile] : Keep makefile after execution."
43
echo " [-n|--no-exec] : Do not execute the binary."
44
echo " [-v|--verbose] : Issue more informations."
45
echo " [-e [args]] : [args] are passed to the binary."
50
# --------------------------------------------------------------------
51
# Function : `vecho()'.
56
if [ $1 -gt $VERBOSE ]; then return 0; fi
57
if [ "$2" = "-n" ]; then
58
ECHOFLAGS="-n"; shift;
60
echo $ECHOFLAGS "$2" 2>&1 | tee -a $CSOURCE.grr
64
# /------------------------------------------------------------------\
66
# | Main Part of the Shell Script |
68
# \------------------------------------------------------------------/
70
if [ -z "$ALLIANCE_TOP" ]; then
71
alcbanner "GenLib" "4.0" "Procedural Generation Language" "1991"
73
${ALLIANCE_TOP}/bin/alcbanner "GenLib" "4.0" "Procedural Generation Language" "1991"
78
# --------------------------------------------------------------------
79
# Process the command line.
81
# If no arguments, print usage.
82
if [ $# -eq 0 ]; then print_usage; exit 0; fi
96
# Parse the arguments.
97
while [ $# -gt 0 ]; do
101
--no-rm-core) KEEP_CORE="y";;
102
--keep-makefile) KEEP_MAKEFILE="y";;
103
--keep-exec) KEEP_BIN="y";;
104
--keep-log) KEEP_LOG="y";;
105
--no-exec) EXECUTE="n";;
106
--verbose) VERBOSE=1;;
109
-*) NB=2; CH=`echo $1 | cut -c$NB`
110
while [ "$CH" != "" ]; do
114
m) KEEP_MAKEFILE="y";;
121
e) echo "genlib:warning: misplaced -e option.";
122
print_usage; exit 1;;
123
*) echo "genlib:warning: Invalid option \`$CH' (ignored)."
129
CH=`echo $1 | cut -c$NB`
133
*) PROGRAM=$1; shift; break;;
142
# Parse optionals program arguments.
143
if [ $# -gt 0 ]; then
144
if [ "$1" != "-e" ]; then
146
echo "genlib:warning: ignored \`$1' parameter after program name."
151
shift; ARGUMENTS="$*"
157
# Check arguments coherency.
158
if [ "$PROGRAM" = "not set" ]; then
160
echo "genlib:error: Missing <program> argument."
165
CSOURCE=`basename $PROGRAM .c`
168
# Removing previously generated files.
169
rm -f $CSOURCE.grr $CSOURCE.o > /dev/null 2>&1
172
# --------------------------------------------------------------------
173
# Print the current MBK environment.
175
if [ ! -z "$ALLIANCE_TOP" ]; then ALLIANCE_TOP=$ALLIANCE_TOP; fi
177
vecho 1 " o Current Alliance environment:"
178
vecho 1 " - ALLIANCE_TOP : ${ALLIANCE_TOP-not set}"
179
vecho 1 " o Current MBK environment:"
180
vecho 1 " - MBK_IN_LO : ${MBK_IN_LO-not set}"
181
vecho 1 " - MBK_OUT_LO : ${MBK_OUT_LO-not set}"
182
vecho 1 " - MBK_IN_PH : ${MBK_IN_PH-not set}"
183
vecho 1 " - MBK_OUT_PH : ${MBK_OUT_PH-not set}"
184
vecho 1 " - MBK_WORK_LIB : ${MBK_WORK_LIB-not set}"
185
vecho 1 -n " - MBK_CATA_LIB : "
187
if [ -z "$MBK_CATA_LIB" ]; then
193
STRING=`echo ${MBK_CATA_LIB} | \
194
awk 'BEGIN { FS=":"; } \
195
{ for( i=1; i<=NF; i++) { \
196
printf("%s\n", $i); \
206
vecho 1 " - MBK_CATAL_NAME : ${MBK_CATAL_NAME-not set}"
207
vecho 1 " - MBK_VDD : ${MBK_VDD-not set}"
208
vecho 1 " - MBK_VSS : ${MBK_VSS-not set}"
209
vecho 1 " - RDS_TECHNO_NAME : ${RDS_TECHNO_NAME-not set}"
213
# --------------------------------------------------------------------
216
if [ "$DEVEL" = "y" ]; then
217
ALLIANCE_INSTALL_DIR="__ALLIANCE_INSTALL_DIR__"
218
ALLIANCE_DEVEL_INCLUDE="-I${ALLIANCE_INSTALL_DIR}/include"
219
ALLIANCE_DEVEL_LIB="-L${ALLIANCE_INSTALL_DIR}/lib"
220
export ALLIANCE_INSTALL_DIR ALLIANCE_DEVEL_INCLUDE ALLIANCE_DEVEL_LIB
222
vecho 0 " o Switching to development environment :"
223
vecho 0 " - ALLIANCE_INSTALL_DIR : ${ALLIANCE_INSTALL_DIR-not set}"
227
# --------------------------------------------------------------------
228
# Build and execute the Makefile.
230
vecho 1 " o Program generation."
231
vecho 1 " - Creating Makefile."
233
MAKEFILE="Makefile-$$"
236
# --------------------------------------------------------------------
237
# Start of the Makefile text.
239
cat << EOF > $MAKEFILE
240
ALLIANCE_INCLUDE = $ALLIANCE_TOP/include
241
ALLIANCE_LIB = $ALLIANCE_TOP/lib
243
LOCAL_ALC_IDIR = $ALLIANCE_DEVEL_INCLUDE -I\$(ALLIANCE_INCLUDE)
245
LOCAL_ALC_INCS = \$(LOCAL_ALC_IDIR) \$(LOCAL_ALC_DEFS)
247
LOCAL_ALC_LDIR = $ALLIANCE_DEVEL_LIB -L\$(ALLIANCE_LIB)
248
LOCAL_ALC_LVBE = -lBvl \\
253
LOCAL_ALC_LMGN = -lMgn
254
LOCAL_ALC_LMUT = -lMut
255
LOCAL_ALC_LMLO = -lMlu \\
265
LOCAL_ALC_LMPH = -lMpu \\
270
LOCAL_ALC_LIBS = \$(LOCAL_ALC_LDIR) \\
271
\$(LOCAL_ALC_LVBE) \\
272
\$(LOCAL_ALC_LMGN) \\
273
\$(LOCAL_ALC_LMLO) \\
274
\$(LOCAL_ALC_LMPH) \\
279
# C Flags for normal compilation.
280
LOCAL_CFLAGS = \$(CFLAGS) -c -g
281
LOCAL_OFLAGS = \$(OFLAGS) -o
287
\$(CC) \$(LOCAL_OFLAGS) \$@ \$? \$(LOCAL_ALC_LIBS) \$(LOCAL_STD_LIBS)
290
$CSOURCE.o: $CSOURCE.c
291
\$(CC) \$(LOCAL_CFLAGS) \$(LOCAL_ALC_INCS) \$?
295
rm -f $CSOURCE $CSOURCE.o $CSOURCE.exe
301
# --------------------------------------------------------------------
302
# End of the Makefile text.
305
vecho 1 " - Running Makefile."
307
make -f $MAKEFILE ALLIANCE_TOP=$ALLIANCE_TOP \
308
CSOURCE=$CSOURCE clean all >> $CSOURCE.grr 2>&1
312
if [ $exit_code -ne 0 ]; then
314
if [ $KEEP_MAKEFILE != "y" ]; then rm -f $MAKEFILE; fi
316
echo "genlib:error: Compilation failed."
317
echo "error messages:"
323
if [ "$EXECUTE" = "y" ]; then
325
vecho 1 " o Execute program..."
326
./$CSOURCE $ARGUMENTS; exit_code=$?
328
vecho 1 " - Exit code := $exit_code."
329
if [ $exit_code -ne 0 ]; then
330
if [ $KEEP_MAKEFILE != "y" ]; then rm -f $MAKEFILE; fi
331
echo "genlib:error: Execution failed."
334
if [ "$KEEP_CORE" != "y" ]; then rm -f core >> $CSOURCE.grr 2>&1; fi
337
vecho 1 " o Execution step skipped."
345
vecho 1 " o Remove temporary file."
349
if [ "$KEEP_BIN" != "y" ]; then rm -f $CSOURCE $CSOURCE.exe >> $CSOURCE.grr 2>&1; fi
351
if [ \( $exit_code -eq 0 \) -a \( "$KEEP_LOG" != "y" \) ]; then
352
rm -f $CSOURCE.grr > /dev/null 2>&1