# @(#)Makefile	22.1	12/08/98
#########################################################################
#									#
#  Copyright 1996 Science Applications International Corporation.	#
#									#
#########################################################################

# Where the executable will go

PROGRAM		= MUC_scorer
BINDIR          = ../../bin

# C source files

CSRCS		= MUC_scorer.c \
                  a_list.c \
                  align_CO.c \
                  align_IE.c \
                  align_NE.c \
                  align_sgml.c \
                  catalog_entry.c \
                  clas.c \
                  clas_pair.c \
                  class_def.c \
                  class_score.c \
                  cstring.c \
                  eqclass.c \
                  eqclasset.c \
                  eqmap.c \
                  extentfill.c \
                  hash.c \
                  init_muc.c \
                  inst.c \
                  inst_pair.c \
                  lexeme.c \
                  lexseqfill.c \
                  list.c \
                  map_history.c \
                  massage.c \
                  massage_CO.c \
                  massage_IE.c \
                  massage_NE.c \
                  massage_ST.c \
                  massage_TE.c \
                  massage_TR.c \
                  massage_sgml.c \
                  mfil.c \
                  mfil_pair.c \
                  msort.c \
                  muc_globals.c \
                  muc_strings.c \
                  named_tallies.c \
                  option.c \
                  output_coref.c \
                  output_IE.c \
                  parsers.c \
                  parse_templates.c \
                  partitionset.c \
                  pointerfill.c \
                  refmap.c \
                  report_summary_CO.c \
                  report_summary_NE.c \
                  report_summary_IE.c \
                  score.c \
                  score_coref.c \
                  setfill.c \
                  sfil.c \
                  sfil_pair.c \
                  slot.c \
                  slot_def.c \
                  slot_pair.c \
                  slot_score.c \
                  stringfill.c \
                  table.c \
                  tallies.c \
                  tree.c \
                  utils.c \
                  variables.c

#  C header files

CHDRS           = a_list.h \
                  hash.h \
                  muc.h \
                  muc_defs.h \
                  muc_globals.h \
                  muc_protos.h \
                  table.h


#  yacc source files

YSRCS		= config.y

#  lex source files

LSRCS		= config.l markup.l

SRCS		= $(CSRCS) $(CHDRS) $(YSRCS) $(LSRCS) 
OBJS		= $(CSRCS:.c=.o) \
		  y.config.o l.config.o \
		  l.markup.o

DEBUG		= -ggdb -O0
CFLAGS		= $(DEBUG)
PURIFY		= /usr/local/pure/purify-3.2-solaris2/purify

CC		= gcc
LD		= $(CC)

# Yacc or bison tool and flags

YACC		= yacc
YFLAGS		= -d -l


# Lex or flex tool and flags

LEX             = flex
LEXFLAGS	=


# C preprocessor flags 

CPPFLAGS	= -DSCCSID


# suffix rule(s)

.SUFFIXES:	.o .c .c~ .y .y~ .l .l~ .h .h~

.c.o:
		$(CC) -c $(CFLAGS) $(CPPFLAGS) $<

all:            $(PROGRAM)

install:	all
		cp $(PROGRAM) $(BINDIR)
		chmod +x $(BINDIR)/$(PROGRAM)

# The main file depends on all object files

$(PROGRAM):	$(OBJS)
		$(LD) $(CFLAGS) -o $(PROGRAM) $(OBJS)

pure:		$(OBJS)
		$(PURIFY) $(LD) $(CFLAGS) -o $(PROGRAM) $(OBJS)
	        

# Rules for .y and .l files to avoid name conflicts 
 
y.config.c:	config.y
		$(YACC) $(YFLAGS) config.y
		sed -e 's/yy/config/g' y.tab.h > y.config.h
		sed -e 's/yy/config/g' y.tab.c > y.config.c
		rm y.tab.h
		rm y.tab.c

l.config.c:	config.l 
		$(LEX) $(LEXFLAGS) config.l
		sed -e 's/yy/config/g' lex.yy.c > l.config.c
		rm lex.yy.c 

l.markup.c:	markup.l
		$(LEX) $(LEXFLAGS) markup.l
		sed -e 's/yy/markup_/g' lex.yy.c > l.markup.c
		rm lex.yy.c

#  #include dependencies 

MUC_scorer.o:        muc_defs.h muc.h muc_protos.h muc_globals.h
align_CO.o:          muc_defs.h muc.h muc_protos.h muc_globals.h
align_IE.o:          muc_defs.h muc.h muc_protos.h muc_globals.h
align_NE.o:          muc_defs.h muc.h muc_protos.h muc_globals.h
align_sgml.o:        muc_defs.h muc.h muc_protos.h muc_globals.h
catalog_entry.o:     muc_defs.h muc.h muc_protos.h muc_globals.h
clas.o:              muc_defs.h muc.h muc_protos.h muc_globals.h
clas_pair.o:         muc_defs.h muc.h muc_protos.h muc_globals.h
class_def.o:         muc_defs.h muc.h muc_protos.h muc_globals.h
class_score.o:       muc_defs.h muc.h muc_protos.h muc_globals.h
cstring.o:           muc_defs.h muc.h muc_protos.h muc_globals.h
eqclass.o:           muc_defs.h muc.h muc_protos.h muc_globals.h
eqclasset.o:         muc_defs.h muc.h muc_protos.h muc_globals.h
eqmap.o:             muc_defs.h muc.h muc_protos.h muc_globals.h
init_muc.o:          muc_defs.h muc.h muc_protos.h muc_globals.h
inst.o:              muc_defs.h muc.h muc_protos.h muc_globals.h
inst_pair.o:         muc_defs.h muc.h muc_protos.h muc_globals.h
map_history.o:       muc_defs.h muc.h muc_protos.h muc_globals.h
massage.o:           muc_defs.h muc.h muc_protos.h muc_globals.h
massage_CO.o:        muc_defs.h muc.h muc_protos.h muc_globals.h
massage_IE.o:        muc_defs.h muc.h muc_protos.h muc_globals.h
massage_NE.o:        muc_defs.h muc.h muc_protos.h muc_globals.h
massage_ST.o:        muc_defs.h muc.h muc_protos.h muc_globals.h
massage_TE.o:        muc_defs.h muc.h muc_protos.h muc_globals.h
massage_TR.o:        muc_defs.h muc.h muc_protos.h muc_globals.h
massage_sgml.o:      muc_defs.h muc.h muc_protos.h muc_globals.h
mfil.o:              muc_defs.h muc.h muc_protos.h muc_globals.h
mfil_pair.o:         muc_defs.h muc.h muc_protos.h muc_globals.h
muc_strings.o:       muc_defs.h muc.h muc_protos.h muc_globals.h
named_tallies.o:     muc_defs.h muc.h muc_protos.h muc_globals.h
option.o:            muc_defs.h muc.h muc_protos.h muc_globals.h
output_coref.o:      muc_defs.h muc.h muc_protos.h muc_globals.h
output_IE.o:         muc_defs.h muc.h muc_protos.h muc_globals.h
parse_templates.o:   muc_defs.h muc.h muc_protos.h muc_globals.h
parsers.o:           muc_defs.h muc.h muc_protos.h muc_globals.h
partitionset.o:      muc_defs.h muc.h muc_protos.h muc_globals.h
pointerfill.o:       muc_defs.h muc.h muc_protos.h muc_globals.h
report_summary_CO.c: muc_defs.h muc.h muc_protos.h muc_globals.h
report_summary_NE.c: muc_defs.h muc.h muc_protos.h muc_globals.h
report_summary_IE.c: muc_defs.h muc.h muc_protos.h muc_globals.h
refmap.o:            muc_defs.h muc.h muc_protos.h muc_globals.h
score.o:             muc_defs.h muc.h muc_protos.h muc_globals.h
score_coref.o:       muc_defs.h muc.h muc_protos.h muc_globals.h
setfill.o:           muc_defs.h muc.h muc_protos.h muc_globals.h
sfil.o:              muc_defs.h muc.h muc_protos.h muc_globals.h
sfil_pair.o:         muc_defs.h muc.h muc_protos.h muc_globals.h
slot.o:              muc_defs.h muc.h muc_protos.h muc_globals.h
slot_def.o:          muc_defs.h muc.h muc_protos.h muc_globals.h
slot_pair.o:         muc_defs.h muc.h muc_protos.h muc_globals.h
slot_score.o:        muc_defs.h muc.h muc_protos.h muc_globals.h
stringfill.o:        muc_defs.h muc.h muc_protos.h muc_globals.h
tallies.o:           muc_defs.h muc.h muc_protos.h muc_globals.h
utils.o:             muc_defs.h muc.h muc_protos.h muc_globals.h

l.markup.o:          muc_defs.h muc.h muc_protos.h muc_globals.h 

muc_globals.o:       muc_defs.h muc.h muc_protos.h

y.config.o:          muc_defs.h muc.h muc_protos.h muc_globals.h
l.config.o:          muc_defs.h muc.h muc_protos.h muc_globals.h y.config.h


a_list.o:           muc_defs.h a_list.h
hash.o:             muc_defs.h table.h hash.h
list.o:             muc_defs.h table.h a_list.h
table.o:            muc_defs.h table.h
tree.o:             muc_defs.h table.h
variables.o:        muc_defs.h table.h

# utilities

clean:
			-$(RM) *.o
			-$(RM) $(PROGRAM)
			-$(RM) *~
			-$(RM) ,*

ylclean:		clean
			-$(RM) y.* l.*

sget:
			sccs get $(SRCS)

sclean:
			sccs clean

# before packing up, rebuild the y.* and l.*, too
distclean:		ylclean l.config.c y.config.c l.markup.c
			

