#include "../imake.defs"

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

DEFINES=-DARCHSTR=\"$(PVM_ARCH)\" -DIMA_$(PVM_ARCH) $(HENCE_DEFINES) \
	-DPVM3 -I$(PVM_INCLUDEDIR) -DNEW_TRACE
LOCAL_LIBRARIES=libhence3.a libmaster3.a libslave3.a $(HLIBS)
SLAVELIB = libslave3.a

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 tfwrite.c \
       trace.c type.c wrap.c yucky.h
SUBDIRS = liballoc libdl librb
INCLUDES = -I./include

ComplexProgramTarget(master)

master: $(HLIBS)

master: libhence3.a libmaster3.a libslave3.a

NormalLibraryTarget(hence3,$(MAINOBJS))

InstallLibrary(hence3,$(PVM_LIBDIR))

NormalLibraryTarget(master3,$(MASOBJS))

InstallLibrary(master3,$(PVM_LIBDIR))

NormalLibraryTarget(slave3,$(SLAVEOBJS))

InstallLibrary(slave3,$(PVM_LIBDIR))

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

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

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

grparse.c: grparse.y grparse.inc
	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 grparse.inc lex.yy.c

CleanSubdirs($(SUBDIRS))

DependSubdirs($(SUBDIRS))

MakefileSubdirs($(SUBDIRS))

InstallSubdirs($(SUBDIRS))

install::
	DEST_DIR=$(PVM_INCLUDEDIR) ; \@@\
	[ -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 )

unrcs::
	for x in $(SRCS) ; do co -u $$x ; done
