DEBUG=-g +I
#PLATFORM=-DS32
#RANLIB=echo

PLATFORM=-DSUN3
RANLIB=ranlib

#PLATFORM=-DSUN4
#RANLIB=ranlib

#PLATFORM=-DPC_AT
#RANLIB=echo

VAXTOOLS=../../vax/tools

.SUFFIXES:
.SUFFIXES: .junk .ex .o .c .vaxc .C .h .doc .cl .ms

INCL=/home/clarke/bh/src
BH=$(INCL)/Clib

CL=\
dwg_entry.cl \
dwg_extension.cl \
dwg_page.cl \
dwg_special.cl \
dwg_table.cl \
dwg_version.cl \
entry.cl \
er_heap.cl \
error.cl \
erule.cl \
expression.cl \
extension.cl \
lex.cl \
pascal.cl \
rule.cl \
scalddir.cl \
special.cl \
table.cl

C=\
expression.C \
error.C \
erule.C \
dwg_version.C \
dwg_extension.C \
pascal.C \
rule.C \
dwg_entry.C \
dwg_special.C \
dwg_table.C \
extension.C \
entry.C \
table.C \
scalddir.C \
lex.C 

O=\
dwg_entry.o \
erule.o \
table.o \
expression.o \
error.o \
dwg_version.o \
dwg_extension.o \
rule.o \
dwg_special.o \
dwg_table.o \
extension.o \
entry.o \
scalddir.o \
lex.o 

PAS_O=\
lex_p.o \
pascal_p.o \
erule_p.o \
expression_p.o \
error_p.o \
dwg_version_p.o \
dwg_extension_p.o \
rule_p.o \
dwg_entry_p.o \
dwg_special_p.o \
dwg_table_p.o \
extension_p.o \
entry_p.o \
table_p.o \
scalddir_p.o

DERIVED_H=\
table.h \
lex.h \
entry.h \
rule.h \
dwg_entry.h \
dwg_extension.h \
dwg_page.h \
dwg_special.h \
dwg_table.h \
dwg_version.h \
er_heap.h \
error.h \
erule.h \
expression.h \
extension.h \
pascal.h \
scalddir.h \
special.h

LIB_H =\
$(BH)/gavl.h \
$(BH)/GrowingBuf.h \
$(BH)/parsebuf.h \
$(BH)/basictypes.h \
$(BH)/stringt.h \
$(BH)/fault.h \
$(BH)/gring.h \
$(BH)/smallset.h \
$(BH)/heap.h \
$(BH)/avl.h


H=$(DERIVED_H) $(LIB_H)
PASLIB=liberule_pas.a
LIB=liberule.a


PRODUCED= $(DERIVED_H) $(LIB) $(PASLIB)
OPTIONAL= irs.doc
ID_MAP=$(INCL)/id_map

CCFLAGS=-I$(INCL) $(DEBUG) $(OPTIMIZE) $(PASCAL)

final:	$(DERIVED_H) #$(LIB)
	make pascalC
	make "PLATFORM=$(PLATFORM)" "PASCAL=-DPASCAL_XFACE" "DEBUG=$(DEBUG)" $(PAS_O)
	make "RANLIB=$(RANLIB)" $(PASLIB)
	rm -f *_p.C

pascalC:
	rm -f *_p.C
	(for f in $(PAS_O) ; do\
	    fileC=`echo $$f | sed 's/_p\\.o$$/.C/'` ;\
	    filepC=`echo $$f | sed 's/\\.o$$/.C/'` ;\
	    ln -s $$fileC $$filepC ;\
	done)

h: ${DERIVED_H}
doc: irs.doc
correct: h

$(PASLIB): $(PAS_O)
	rm -f $(PASLIB)
	ar crv $(PASLIB) `lorder $(PAS_O) | tsort`
	$(RANLIB) $(PASLIB)

$(LIB): $O
	rm -f $(LIB)
	ar crv $(LIB) `lorder $O | tsort`
	$(RANLIB) $(LIB)

.cl.h:
	nroff -ms macros.ms $*.cl >$*.h
.ms.doc:
	nroff -ms $*.ms >$*.doc
.c.o:		# For compiling .c files produced for PC or other cross compilation
	cc -c $*.c
.C.o :
	CC -c $(PLATFORM) $(CCFLAGS) $*.C
.C.vaxc :
	make -f $(VAXTOOLS)/makefile "ID_MAP=$(ID_MAP)" $*.vaxc
.C.junk :
	CC -E ${PLATFORM} $(CCFLAGS) $*.C | splitlines | sed -e "/^#/d" > $*.junk.c
	CC -c $*.junk.c
vax: $(DERIVED_H) ALWAYS
	make -f makefile.vax "CCFLAGS=$(CCFLAGS)"
pc:
	make -f makefile.pc "CCFLAGS=$(CCFLAGS)"
hardcopy:
	itroff -ms irs.ms
troff:
	make hardcopy

irs.doc: irs.ms macros.ms ${CL}

$O : $H
$(PAS_O) : $H

clean:
	rm -f *..c *.o *_p.C *.out *junk* *~ 
	make -f makefile.vax realclean
	make -f makefile.pc realclean
realclean:
	make clean
	rm -f $(PRODUCED) $(OPTIONAL)

ALWAYS:
	@true
