DEBUG=-g +I

#PLATFORM=-DS32
#RANLIB=echo

PLATFORM=-DSUN3 -DSUN_DEFINED
RANLIB=ranlib

#PLATFORM=-DSUN4
#RANLIB=ranlib

#PLATFORM=-DPC_AT
#RANLIB=echo

#OASYS_DIR = /usr/oasys/dc++1.2Esun3_os4.0
OOPS_DIR = /usr/ds/release/LATEST/oops/src
#OOPS_DIR = /usr/ds/oops/src
#OOPS_DIR = 

NEWCOMP  = /home/andre/hoshah/c++/corcomp
#MYCLIB = /home/andre/hoshah/compsrc/Clib
MYCLIB = /home/andre/hoshah/compsrc/Clib
#MYCLIB = /home/clarke/bh/src/Clib

GENERICS = ${NEWCOMP}/generic
DS_DIR1  = /usr/ds/release/LATEST/libds
#DS_DIR1  = /usr/ds/libds
#DS_DIR1  = 
DS_DIR2  = /usr/ds/release/LATEST/dswidge
#DS_DIR2  = 
#DS_DIR3 = /home/andre/hoshah/c++/ds
DS_DIR3 = /home/andre/hoshah/compsrc/newexpansion

#DS_LIB =
#DS_LIB = ${DS_DIR1}/libds.a ${DS_DIR2}/libdswidge.a

#FIXED_OBJ = streamfix/streamfix.o

CMD_MODULE = ${NEWCOMP}/parser/CMD/CMD_FILE.o ${NEWCOMP}/parser/keyword.o

OOPS = /usr/ds/release/LATEST/oops

OASYS = /usr/oasys/ATT_incl
#OASYS = 

#OASYS_LIB = ${OASYS_DIR}/libcxx.a
OASYS_LIB = 

#OOPS_LIB = 
OOPS_LIB = ${OOPS_DIR}/liboops.a


VAXTOOLS=../../vax/tools

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

INCL=/validcomp/src
BH=$(INCL)/Clib

INCLUDE_DIRS= -I. -g -I${GENERICS} -I${NEWCOMP} -I${MYCLIB} -I${INCL} -I${DS_DIR1} -I${DS_DIR2}  -I${DS_DIR3} -I${OOPS_DIR} -I${OASYS} 
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 \
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 \
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 \
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 

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 \
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=  ${INCLUDE_DIRS} $(DEBUG) -DDEBUG $(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)

#CC -E ${PLATFORM} $(CCFLAGS) $*.C | sed -e "/^#/d" > $*.junk.c
.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 +i -c $(PLATFORM) $(CCFLAGS) $*.C
.C.vaxc :
	make -f $(VAXTOOLS)/makefile "ID_MAP=$(ID_MAP)" $*.vaxc
.C.junk :
	CC -E ${PLATFORM} $(CCFLAGS) $*.C  > $*.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)

testexp: test.o liberule.a
	CC -o testexp test.o liberule.a  ~/c++/ds/ds.o ~/c++/ds/vtab.o  ../Clib/libbh.a \
	${NEWCOMPLIB} ${NEWCOMPFILES}

ALWAYS:
	@true
