#include "../imake.defs"

#ifdef CrayArchitecture
/* without this, two yaccs might scribble on y.tab.c at the same time */
NPROC=1
#endif
#if defined(sequent) || defined(SequentArchitecture)
/* don't know if this works or not */
PARALLEL=1
#endif

#ifdef PVM3
DEFINES=-DARCHSTR=\"$(ARCH)\" -DIMA_$(ARCH) $(HENCE_DEFINES) -Irb \
	-DPVM3 -I$(PVM3INCLUDEDIR)
LOCAL_LIBRARIES=Hgw/Matrix.o rb/librb.a $(LIBPVM)
#else
DEFINES=-DARCHSTR=\"$(ARCH)\" -DIMA_$(ARCH) $(HENCE_DEFINES) -Irb 
LOCAL_LIBRARIES=Hgw/Matrix.o rb/librb.a
#endif
SYS_LIBRARIES=$(HENCE_LIBRARIES) $(XAWLIB) $(XMULIB) $(XTOOLLIB) $(XEXTLIB) $(XLIB) -lm
OBJS=build.o compose.o config.o costmat.o critic.o eaccess.o execute.o exp.o \
    FileSelect.o funcdefs.o \
    graph.o histo.o \
    hostmap.o misc.o msg.o param.o parse.o psgraph.o psheader.o \
    pvmglue.o subproc.o symtab.o tf.o trace.o unparse.o util.o widgen.o \
    tilde.o filter.o regexp.o \
    widmain.o xdraw.o xgraph.o xsetup.o
SRCS=build.c comn.h compose.c config.c costmat.c costmat.h critic.c defs.h \
    eaccess.c execute.c exp.c exp.h expP.h FileSelect.c filter.c funcdefs.c \
    graph.c graph.h graphP.h histo.c hostmap.c hostmap.h icon.h misc.c misc.h \
    msg.c \
    msg.h param.c param.h parse.h parse.c parseP.h psgraph.c psheader.c \
    pvmglue.c pvmglue.h rb.h subproc.c subproc.h symtab.c symtab.h \
    testgraph.c tf.c tf.h tilde.c trace.c trace.h unparse.c unparse.h util.c \
    widgen.c widmain.c xcomn.h xdraw.c xdraw.h xgraph.c xgraph.h xincl.h \
    xsetup.c regexp.c

SUBDIRS=Hgw rb

ComplexProgramTarget(htool)

htool: Hgw/Matrix.o rb/librb.a

psheader.c: psheader.ps
	rm -f $@
	echo '/* This file generated by make from psheader.ps */' >> $@
	echo '' >> $@
	echo 'char *psheader[] = {' >> $@
	sed -e 's/"/\\"/g' -e 's/^/"/' -e 's/$$/\\n",/' psheader.ps >> $@
	echo '0' >> $@
	echo '};' >> $@

parse.lex.out: parse.lex
	lex parse.lex
	sed -e 's/yy/y1y/g' < lex.yy.c > $@

parse.c: parse.y parse.lex.out
	yacc parse.y
	sed -e '/^# *[0-9]/d' -e '/^# *line/d' -e 's/yy/y1y/g' < y.tab.c > $@

funcdefs.lex.out: funcdefs.lex
	lex funcdefs.lex
	sed -e 's/yy/y2y/g' < lex.yy.c > $@

funcdefs.c: funcdefs.y funcdefs.lex.out
	yacc funcdefs.y
	sed -e '/^# *[0-9]/d' -e '/^# *line/d' -e 's/yy/y2y/g' < y.tab.c > $@

Hgw/Matrix.o: Hgw/Matrix.c Hgw/Matrix.h Hgw/MatrixP.h
	sh -c 'cd Hgw ; make Matrix.o'

rb/librb.a: rb/rb.c rb/rb.h rb/rbP.h
	sh -c 'cd rb ; make librb.a'

rb.h:
	ln -s rb/rb.h rb.h || ln rb/rb.h rb.h

CleanSubdirs($(SUBDIRS))

clean::
	rm -f funcdefs.lex.out parse.lex.out lex.yy.c y.tab.c psheader.c \
	funcdefs.c parse.c

MakefileSubdirs($(SUBDIRS))
