#!/usr/bin/bash -norc
# Make the makefile
#
# Set the following variable as appropriate for the kind of tagging
# PHRASE="Use_FSM"
# PHRASE="Use_Parser"
PHRASE="No_Phrase"
#
# Set up list of relevant source and object files for phrase type
case "$PHRASE" in
Use_FSM)
  PHRASESRC="phrase.c fsm.c"
  PHRASEOBJ="phrase.o fsm.o"
  ;;
Use_Parser)
 PHRASESRC="phrase.c parser.c"
 PHRASEOBJ="phrase.o parser.o"
 ;;
No_Phrase)
 PHRASESRC=""
 PHRASEOBJ=""
 ;;
esac
#
# First construct the base part of it
cat > makefile <<End
# Makefile for labeller (standard version)
# Does not include some of the minor utilities.
CC = gcc
CCOPT = -g -ansi -W -Wall -D$PHRASE -c
LINK = gcc
LINKOPT =
LINKLIB =
LIB = ar
LIBOPT = rc
RANLIB = ranlib
# LIBOPT1 = -s
DOLINK = \$(LINK) \$(LINKOPT) -o \$@
LABELLIB = labellib.a
.c.o:
	\$(CC) \$(CCOPT) \$<

# Main target
all: cmptran dephrase dmerge dtinfo exdict label outcomp readtr rules

# Library
labellib.a: common.o unkcommon.o diction.o unkdiction.o io.o list.o low.o map.o trans.o
	\$(LIB) \$(LIBOPT) \$@ \$?
	\$(RANLIB) \$@
#	\$(LIB) \$(LIBOPT1) \$@

# Targets
cmptran: cmptran.o \$(LABELLIB)
	\$(DOLINK) cmptran.o \$(LABELLIB) \$(LINKLIB)
dephrase: dephrase.o \$(LABELLIB)
	\$(DOLINK) dephrase.o \$(LABELLIB) \$(LINKLIB)
dmerge: dmerge.o \$(LABELLIB)
	\$(DOLINK) dmerge.o \$(LABELLIB) \$(LINKLIB)
dtinfo: dtinfo.o \$(LABELLIB)
	\$(DOLINK) dtinfo.o \$(LABELLIB) \$(LINKLIB)
exdict: exdict.o \$(LABELLIB)
	\$(DOLINK) exdict.o \$(LABELLIB) \$(LINKLIB)
label: analyse.o mainl.o label.o stack.o $PHRASEOBJ \$(LABELLIB)
	\$(DOLINK) analyse.o mainl.o label.o stack.o $PHRASEOBJ \$(LABELLIB) -lm \$(LINKLIB)
outcomp: outcomp.o \$(LABELLIB)
	\$(DOLINK) outcomp.o \$(LABELLIB) \$(LINKLIB)
readtr: readtr.o \$(LABELLIB)
	\$(DOLINK) readtr.o \$(LABELLIB) \$(LINKLIB)
rules: rules.o \$(LABELLIB)
	\$(DOLINK) rules.o \$(LABELLIB) \$(LINKLIB)

# c -> o
End
#
# Insert dependencies
gcc -MM -D$PHRASE analyse.c cmptran.c common.c unkcommon.c dephrase.c diction.c unkdiction.c dmerge.c \
 dtinfo.c exdict.c io.c label.c list.c low.c mainl.c map.c outcomp.c \
readtr.c rules.c stack.c trans.c $PHRASESRC >> makefile
#
# Force remaking
touch *.c
