# (C) Copyright International Business Machines Corporation 23 January 
# 1990.  All Rights Reserved. 
#  
# See the file USERAGREEMENT distributed with this software for full 
# terms and conditions of use. 
# File: Makefile
# Author: David F. Bacon
# SCCS Info: @(#)Makefile	1.25 3/21/90

include ../make/includefile

LIBDIRS =	-L../lib -L../cherm -L../cfunc -L../fe -L.
EXTRACFLAGS = 	-DMTYPESTRING=\"$(MTYPE)\"

# Set following to "/usr/lib/debug/malloc.o" to load in malloc_debug support
MALLOCDEBUG =
LIBS	=	$(MALLOCDEBUG) -lhermi -lcfunc -lfe ../fe/integrated.o \
		-ll -lcherm -lhaux $(IRISLIBS)

LINTLIBS =	-lhaux -lcherm -lcfunc

HDRS	=	../include/li.h ../include/stdnil.h \
		../include/sysdep.h ../include/storage.h \
		../include/ops.h ../include/ops_parm.h recursiv.h \
		../include/table.h ../include/tblrep.h tablefuncs.h \
		trigger.h

PDOBJS =	avlsubs.o
PDSRCS =	avlsubs.c

TABLEOBJS=	t_vec.o t_chs.o t_avl.o t_linklist.o
TABLESRCS=	t_vec.c t_chs.c t_avl.c t_linklist.c

OPOBJS	=	o_ubiq.o o_scalar.o o_bool.o o_int.o o_record.o o_enum.o \
		o_ports.o o_nomin.o o_cntl.o o_var.o o_call.o o_prog.o \
		o_bottom.o o_undone.o o_proc.o tbldes.o o_poly.o \
		o_table.o $(TABLEOBJS) mainloop.o schedule.o distrib.o pilxdr.o
OPSRCS	=	o_ubiq.c o_scalar.c o_bool.c o_int.c o_record.c o_enum.c \
		o_ports.c o_nomin.c o_cntl.c o_var.c o_call.c o_prog.c \
		o_bottom.c o_undone.c o_proc.c tbldes.c o_poly.c \
		o_table.c $(TABLESRCS) mainloop.c schedule.c distrib.c pilxdr.c

MAINOBJS=	main.o
MAINSRCS=	main.c

AUXOBJS	=	excep.o recursiv.o debug.o hxdr.o keycomp.o xdr.o \
		print.o cfunc.o makeroot.o trace.o fakemalloc.o \
		func2op.o opnames.o profile.o hpaths.o
AUXSRCS	=	excep.c recursiv.c debug.c hxdr.c keycomp.c xdr.c \
		print.c cfunc.c makeroot.c trace.c fakemalloc.c \
		func2op.c opnames.c profile.c hpaths.c

OBJECTS	=	$(AUXOBJS) $(OPOBJS) $(PDOBJS)
SOURCES	=	$(AUXSRCS) $(OPSRCS) $(PDSRCS)

LLIBSRC	=	$(SOURCES)

all:	hermi

install:	all
	cp hermi $(HERMI)

pre-fe: libhermi.a

hermi: $(MAINOBJS) libhermi.a 
	$(CC) -o $@ $(CFLAGS) $(MAINOBJS) $(LIBS)

libhermi.a: $(OBJECTS)
	ar r libhermi.a $?
	$(RANLIB) libhermi.a

llib-lhermi.ln: hermi
	$(LINT) -Chermi $(LFLAGS) $(LLIBSRC) > /dev/null

lint: llib-lhermi.ln 
	$(LINT) $(LFLAGS) $(MAINSRCS) $(LLIBSRC)

t_chs.c: t_vector.cc 
	sed s/PRAGMA/chs/g <t_vector.cc >t_chs.c

t_vec.c: t_vector.cc 
	sed s/PRAGMA/vec/g <t_vector.cc >t_vec.c

excep.c: excep.ch
	$(CHERM) excep.ch | $(CHERM2) >excep.c

cfunc.c: cfunc.ch
	$(CHERM) cfunc.ch | $(CHERM2) >cfunc.c

makeroot.c: makeroot.ch
	$(CHERM) makeroot.ch | $(CHERM2) >makeroot.c

profile.c: profile.ch 
	$(CHERM) profile.ch | $(CHERM2) >profile.c

func2op.c opnames.c: opcodes.awk ../interface/greencard
	awk -f opcodes.awk ../interface/greencard

$(OBJECTS): $(HDRS)

# for debugging lazy copy of tables

deephermi: $(MAINOBJS) deeptable.o libhermi.a 
	$(CC) -o $@ $(CFLAGS) $(MAINOBJS) deeptable.o $(LIBS)

deeptable.o: o_table.c
	$(CC) $(CFLAGS) -DDODEEPCOPY -c -o deeptable.o o_table.c

clean:
	rm -f core *~ *~%~ *.o hermi a.out t_vec.c t_chs.c excep.c cfunc.c \
	  makeroot.c libhermi.a llib-lhermi.ln deephermi profile.c \
	  func2op.c opnames.c opfuncdefs.h

