#include "../imake.defs"

MASOBJS = grparse.o node.o arc.o check.o cost.o execute.o manip.o	anc.o 
MAINOBJS = exp.o array.o eval.o param.o pvmhelp.o print.o trace.o \
           type.o hstrings.o rbhelp.o
SLAVEOBJS = slave.o req.o wrap.o
SLAVELIB = libslave.a
HLIBS = librb/librb.a libdl/libdl.a liballoc/liballoc.a

DEFINES=-DARCHSTR=\"$(ARCH)\" -DIMA_$(ARCH) $(HENCE_DEFINES)
LOCAL_LIBRARIES=libhence.a libmaster.a libslave.a $(HLIBS)
SYS_LIBRARIES=$(LIBPVM) $(HENCE_LIBRARIES) -lm
OBJS = master.o
SRCS = anc.c arc.c array.c check.c cost.c eval.c eval.h execute.c exp.c \
       fslave.c grparse.l grparse.y hstrings.c manip.c master.c node.c \
       param.c print.c pvmhelp.c rbhelp.c rbhelp.h req.c slave.c trace.c \
       type.c wrap.c yucky.h
SUBDIRS = liballoc libdl librb
INCLUDES = -I./include

ComplexProgramTarget(master)

master: $(HLIBS)

master: libhence.a libmaster.a libslave.a

NormalLibraryTarget(hence,$(MAINOBJS))

InstallLibrary(hence,$(HENCELIBDIR))

NormalLibraryTarget(master,$(MASOBJS))

InstallLibrary(master,$(HENCELIBDIR))

NormalLibraryTarget(slave,$(SLAVEOBJS))

InstallLibrary(slave,$(HENCELIBDIR))

librb/librb.a:
	@sh -c 'set -x; cd librb ; $(MAKE) ARCH=$(ARCH)'

libdl/libdl.a:
	@sh -c 'set -x; cd libdl ; $(MAKE) ARCH=$(ARCH)'

liballoc/liballoc.a:
	@sh -c 'set -x; cd liballoc ; $(MAKE) ARCH=$(ARCH)'

grparse.c: grparse.y
	yacc grparse.y
	sed -e '/^# *[0-9]/d' -e '/^# *line/d' < y.tab.c > grparse.c
	$(CC) $(CFLAGS) -c grparse.c

grparse.o: grparse.c grparse.inc

#grparse.o: grparse.inc y.tab.c
#	sed -e '/^# *[0-9]/d' -e '/^# *line/d' < y.tab.c > grparse.c
#	$(CC) $(CFLAGS) -c grparse.c
#	$(CC) $(CFLAGS) -o y.tab.o -c y.tab.c
#
#y.tab.c: grparse.y
#	yacc grparse.y

grparse.inc: grparse.l
	lex -t grparse.l > grparse.inc

libs: libhence.a libslave.a librb/librb.a libdl/libdl.a liballoc/liballoc.a

clean::
	rm -f y.tab.c grparse.c lex.yy.c

CleanSubdirs($(SUBDIRS))

DependSubdirs($(SUBDIRS))

MakefileSubdirs($(SUBDIRS))

InstallSubdirs($(SUBDIRS))

install::
	DEST_DIR=$(HENCEINCLUDEDIR) ; \@@\
	[ -d $$DEST_DIR ] || mkdir $$DEST_DIR ; \@@\
	[ `( cd $$DEST_DIR;pwd )` != `( cd ./include;pwd)` ] && \@@\
		( cd ./include ; \@@\
                  for file in *.h ; do \@@\
		      rm -f $$DEST_DIR/$$file; \@@\
		      cp $$file $$DEST_DIR; \@@\
                   done )
