PLATFORM=-DSUN3
REL_PLATFORM=sun3
PFLAGS=-P -L

# End of system dependent stuff (between suns)
INCL=../..

DEBUG = -g

KIT_DIR=bigman:/usr/release/$(REL_PLATFORM)/kits
NOSEC=../shared/unsafe.o
VERS=version.ex

PRODUCED=pcomp.ex pcomp.sex 

#SHDIR=/usr/valid/tools/pascal/shared3.5
SHDIR=../../shared
#OOPS_DIR = /usr/ds/release/LATEST/oops/src
OOPS_DIR = /usr/ds/release/LATEST/sunthree/lib
#OOPS_DIR = /usr/ds/oops/src

#DS_DIR1  = /usr/ds/libds
DS_DIR1  = /usr/ds/release/LATEST/sunthree/lib
DS_DIR2  = /usr/ds/release/LATEST/sunthree/lib

#DS_DIR  = /usr/ds
DS_DIR  = /usr/ds/release/LATEST
NEWCOMP_DIR = /home/andre/hoshah/c++/corcomp
BH_DIR = /validcomp/src

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

OOPS_LIB = ${OOPS_DIR}/liboops.a
NEWCOMP_LIB = ${NEWCOMP_DIR}/tmcinterface/lib/comp_sig_parse.a
DIRV_MOD = ${NEWCOMP_DIR}/parser/CMD/directives.o \
	   ${NEWCOMP_DIR}/parser/CMD/CMD_FILE.o 
PROP_ATTR_MOD = ${NEWCOMP_DIR}/prop_attr.o

ERULES_LIB=/home/andre/hoshah/compsrc/newexpansion/liberule_pas.a 
#ERULES_LIB=/home/andre/hoshah/compsrc/newexpansion/liberule_pas.a 


BH_LIB = ${BH_DIR}/Clib/libbh.a
#BH_LIB = /home/andre/hoshah/Clib/libbh.a

LDS_DIR = /home/andre/hoshah/c++/ds
FIXED_OBJ = ${LDS_DIR}/streamfix/streamfix.o
LDS_OBJ = ${LDS_DIR}/ds_basic.o ${LDS_DIR}/ds.o ${LDS_DIR}/ds_pasxface.o ${LDS_DIR}/ds_cxface.o ${LDS_DIR}/vtab.o

DSV_LIB=${DS_LIB} ${OOPS_LIB} ${NEWCOMP_LIB} 
DSV_OBJ=${FIXED_OBJ} ${LDS_OBJ} ${DIRV_MOD} ${PROP_ATTR_MOD}

# The structures files contain global const, type and var declarations.
# They are broken up into the files consts.ipas types.ipas and vars.ipas
# with entries into those files occurring in the order given here.
STRUCTURES= basic.ps \
string.ps \
unixtypes.ps \
et.ps \
args.ps \
error.ps \
debug.ps \
lexparse.ps \
file.ps \
pipe.ps \
numbtoken.ps \
schema.ps \
signal.ps \
drawing.ps \
directives.ps \
heap.ps \
expansion.ps \
linkercomm.ps \
comperr.ps \
../avl/types.h \
efs.ps \
interrupt.ps

DERIVED_H=consts.h types.h vars.h vopen.h unixtime.h

SRC=\
$(DERIVED_H) \
bittap.p \
comperrout.p \
commandarg.p \
fixsignal.p \
insymbol.p \
expression.p \
$(INCL)/lib/misc/platform.h \
externals.p \
procs.p \
stringio.p \
timeutils.p \
sigstack.p \
sig.p \
width.p \
assertion.p \
expfile.p \
fixsyn.p \
invokes.p \
bindings.p \
pass1.p \
linkercomm.p \
page.p \
../avl/compare.p \
sepcomp.p \
errordoc.p \
comperr.p \
exception.p \
../avl/heap.p \
../avl/debug.p \
../avl/insert.p \
../avl/traverse.p \
args.p \
filename.p \
filedesc.p \
vaxio.p \
fileutil.p \
fileio.p \
pipe.p \
parseutil.p \
numbtoken.p \
schema.p \
make.p \
module.p \
cleanup.p \
readged.p \
readpage.p \
expandtm.p \
expprop.p \
bitunion.p \
directives.p \
textmacro.p \
attributes.p \
interrupt.p \
init.p \
res_param.p \
synonym.p \
bsofbs.p \
pcomp.p

.SUFFIXES: .o .c .p .C
.p.o:
	pc -c $(PLATFORM) $(PFLAGS) $(DEBUG) -I$(INCL) $*.p
.C.o:
	CC -c -O $(DEBUG) ${PLATFORM} -I${INCL} $*.C
.c.o:
	cc -c -O $(DEBUG) ${PLATFORM} -I${INCL} $*.c

PASC_OFILES= $(SHDIR)/ds_vopen.o $(SHDIR)/unixtime.o
OFILES=$(PASC_OFILES) ../shared/misc.o waitfor.o ${SHDIR}/cwrap.o

final: $(PRODUCED)
s32:
	make -f makefile.s32

pmax: pcomp.pmax.o $(PRODUCED)

pcomp.pmax.o: $(SRC)
	/usr/lib/cpp -E -I$(INCL) $(PLATFORM) pcomp.p | sed -e "/^#/d" > pcomp.pmax.p
	pc -c $(PFLAGS) $(DEBUG) -I$(INCL) pcomp.pmax.p
	rm -f pcomp.o pcomp.pmax.p
	ln pcomp.pmax.o pcomp.o


vopen.h:	${SHDIR}/vopen.h
	cp ${SHDIR}/vopen.h .

unixtime.h:	${SHDIR}/unixtime.h
	cp ${SHDIR}/unixtime.h .

clean:
	rm -f *.obj *.o *.i *junk junk* .emacs* core *.pas *~ __ctdt.* $(DERIVED_H)

PCOMP_O=pcomp.o ../shared/fio.o ../shared/ds_fio.o ../shared/remote.o filenames.o \
	$(OFILES) $(ADD) $(ERULES)
pcomp.junk: $(PCOMP_O) $(NOSEC)  
	pc -n -o pcomp.junk $(PCOMP_O) $(NOSEC) ${DSV_OBJ} ${DSV_LIB} ${ERULES_LIB} ${BH_LIB} ${DSV_LIB}-lC
__ctdt.o: pcomp.junk
	-(nm pcomp.junk | /usr/lib/munch >__ctdt.c)
	cc -c __ctdt.c
pcomp.ex: __ctdt.o
	pc -n -g -o pcomp.ex __ctdt.o $(PCOMP_O) $(NOSEC) ${DSV_OBJ}  ${DSV_LIB} ${ERULES_LIB} ${BH_LIB} -lC
pcomp.sex:	pcomp.ex $(VERS)
	-pc -n -o pcomp.sex __ctdt.o $(PCOMP_O) $(PAUTH) -lC
	rm -f pcomp
	ln pcomp.sex pcomp
	$(PROTECT)/scramble pcomp ValidPAGECOMP "`$(VERS)`"
	rm pcomp


$(VERS):	version.o ../shared/misc.o
	pc -o $(VERS) version.o ../shared/misc.o
	
pcomp.o: $(SRC)
consts.h types.h vars.h:	${STRUCTURES}
	sed -f structmung.sed ${STRUCTURES}
