.SILENT:
SIM = hh65
ID = 65

SHELL = /bin/sh
FC = rtef77
AS = assemble
ASOPTS = 2 3 4 5 17
FCOPTS = 3 4 5 6
CC = cc
MAKE = /usr/opt/ultrix/usr/bin/make

TOP = /usr/asi/baseline_1
INCDIR = $(TOP)/src/inc/$(SIM)
LIBDIR = $(TOP)/lib$(ID)
SYSDIR = $(TOP)/system$(ID)
BINDIR = $(TOP)/bin$(ID)

.SUFFIXES: .m .s .f .o .a

.f.o:
	echo -n "Compiling and archiving $< ... " ; \
	ncd rte$(ID) ; \
	if grep "^ *INCLUDE" $< > /dev/null ; then \
		INCFILES=`grep "^ *INCLUDE" $< | awk '{ print "$(INCDIR)/" tolower($$2) }'` ; \
		rteput -a $$INCFILES ; \
	fi ; \
	if \
		$(FC) -opt $(FCOPTS) $*.f -c $*.o > $*.lo ; \
	then \
		rm -f $*.lo ; \
		echo "OK" ; \
	else \
		echo "ERROR: See file $*.lo" ; \
	fi

.s.o:
	- echo -n "Compiling and archiving $< ... " ; \
	ncd rte$(ID) ; \
	if grep "^ *INCLUDE" $< > /dev/null ; then \
		INCFILES=`grep "^ *INCLUDE" $< | awk '{ print "$(INCDIR)/" tolower($$2) }'` ; \
		rteput -a $$INCFILES ; \
	fi ; \
	rteput -a $*.s ; \
	tsmcmd create $*.lo  ; \
	tsmcmd create $*.o  ; \
	tsmcmd as lo to $*.lo  ; \
	tsmcmd as go to $*.o  ; \
	tsmcmd as si to $*.s  ; \
	tsmcmd "as mac to m.mpxmac bloc=n" ; \
	tsmcmd "as ma2 to m.mac$(ID) bloc=n" ; \
	tsmcmd option $(ASOPTS) ; \
	tsmcmd "$(AS)" > /dev/null
#
	- ncd rte$(ID) ; \
	rteget -a $*.lo  ; \
	rteget $*.o  ; \
	tsmcmd delete $*.lo  ; \
	tsmcmd delete $*.o  ; \
	tsmcmd delete $*.s  ; \
	ERRORS=`grep "ERRORS IN" $*.lo | awk '{ print $$2 }'` ; \
	if [ $$ERRORS -ne 0 ] ; then \
		echo "ERROR: See file $*.lo" ; \
	else \
		rm -f $*.lo ; \
		echo "OK" ; \
	fi

.m.o:
	- echo -n "Archiving assembler macro $< ... " ; \
	ncd rte$(ID) ; \
	rteput -a $*.m ; \
	if ar t $@ $*.o > /dev/null 2> /dev/null ; then \
		MACNAME=`grep DEFM $*.m | awk '{ print $$1 }'` ; \
		MACCMD1="/REPLACE $$MACNAME" ; \
		MACCMD2="/END" ; \
		MACCMD3="/EXIT" ; \
	else \
		MACCMD1="/APPEND" ; \
		MACCMD2="" ; \
		MACCMD3="" ; \
	fi ; \
	if [ -f $@ ] ; then \
		rteput $(SYSDIR)/m.mac$(ID) ; \
	else \
		MACCMD1="/CREATE" ; \
		MACCMD2="" ; \
		MACCMD3="" ; \
		tsmcmd "as slo to dev=nu" ; \
		tsmcmd "volmgr cre f m.mac$(ID) size=128 zero=y" > /dev/null ; \
	fi ; \
	tsmcmd "as si to $*.m" ; \
	tsmcmd "as mac to m.mac$(ID) bloc=n" \
	tsmcmd "maclibr" > $*.lo ; \
	tsmcmd "$$MACCMD1" ; \
	tsmcmd "$$MACCMD2" ; \
	tsmcmd "$$MACCMD3" ; \
	echo $$MACCMD1
#
	- ncd rte$(ID) ; \
	rteget m.mac$(ID) ; \
	mv m.mac$(ID) $(SYSDIR) ; \
	cp $*.m $*.o ; \
	ar -rs $@ $*.o ; \
	rm $*.o ; \
	tsmcmd "delete $*.m"

all: setup

setup:
	- echo -n "Setting up required data files and libraries ... " ; \
	ncd rte$(ID) ; \
	rteput $(SYSDIR)/m.mpxmac ; \
	rteput $(SYSDIR)/m.mac$(ID) ; \
	echo "OK" ; \
	OBJECTS=`ls *.[fs] | sed -e 's/\.[fs]/.o/'` ; \
	$(MAKE) $$OBJECTS cleanup "ASOPTS=$(ASOPTS)" "FCOPTS=$(FCOPTS)"

cleanup:
	- echo -n "Cleaning up ... " ; \
	ncd rte$(ID) ; \
	tsmcmd "delete m.mac$(ID)" ; \
	tsmcmd "delete m.mpxmac" ; \
	echo "OK"
