##
## Makefile for the DK backup system.
##
##		Dan Romike		   Nov 1986
##		Copywrite (c)  Tektronix, Inc. 1986
##
## VARS
##
CFLAGS= -O -DUW -DVAX
CC=  cc $(CFLAGS)
M= Makefile
DTAPE=/dev/rtms0
NTAPE=/dev/rtms4
##
## Operations account and and it's group id. We change the group
## ownership to oper's so that operations can run backups without
## becoming super-user.
## OPER=oper
## OPERGID=0
OPER=operator
OPERGID=5
##
##  Name of the backup directory. Change this name for a different
##  backup dir.
##
DK=/usr/misc/dk
BIN=$(DK)/bin
BOOT=$(DK)/boot
##
##  Name of entry in password file.
##
DKLOGIN= dkbackup
##
##  Name of the recover directory when dkrecover recovers files.
##
R=$(ROOT)/usr/dkrecover
UDIR=$R/userfiles
CDIR=$R/ctrlfiles
##
##  Name of the local man directories.
##
MAN=/usr/man
MAND1= $(ROOT)$(MAN)/man1
MAND8= $(ROOT)$(MAN)/man8
CATD1= $(ROOT)$(MAN)/man1
CATD8= $(ROOT)$(MAN)/man8
##
##  Name of local directory. Change this for alternate.
##
L=   $(ROOT)/usr/misc/dk
##
H= dklabel.h \
   dkpacket.h
##
##  C source code.
##
C= dkread.c \
   dkwrite.c \
   dkerr.c \
   dkpk.c \
   dkrskel.c \
   dkrsh.c \
   dkdumpck.c \
   dkrstfix.c
##
## Compiled/executable code
##
EXE= \
   dkread \
   dkwrite \
   dkerr \
   dkpk \
   dkrskel \
   dkrsh \
   dkrstfix \
   dkdumpck
##
## Executable shell scripts
##
SHSRC= \
   dk.sh \
   dkbackup.sh \
   dkws.sh \
   dkrexec.sh \
   dkwexec.sh \
   dkrebuild.sh \
   dkrecover.sh \
   dkmkboot.sh \
   dkrboot.sh \
   dkrtab.sh \
   dkpwd.sh \
   dkrhosts.sh \
   dksched.sh \
   dkblks.sh \
   recoverfile.sh\
   wsrestore.sh
#  wsrecover.sh

SH= \
   dk \
   dkbackup \
   dkws \
   dkrexec \
   dkwexec \
   dkrebuild \
   dkrecover \
   dkmkboot \
   dkrboot \
   dkrtab \
   dkpwd \
   dkrhosts \
   dksched \
   dkblks \
   wsrestore \
   recoverfile
#  wsrecover

##
## Section 8 man page entries
##
MAN8= \
   dk.8 \
   dkbackup.8 \
   dkmkboot.8 \
   dkpk.8 \
   dkread.8  \
   dkrboot.8 \
   dkrebuild.8 \
   dkrecover.8 \
   dkrexec.8 \
   dkrsh.8 \
   dkrskel.8 \
   dkerr.8 \
   dkwexec.8 \
   dkwrite.8 \
   dkws.8 \
   dkrtab.8 \
   dkrhosts.8 \
   dksched.8 \
   dkblks.8 \
   dkrstfix.8 \
   dkdumpck.8 \
   wsrestore.8
#  wsrecover.8
##
## Section 1 man page entries
##
MAN1=  recoverfile.1
##
## MAKES
## 
all: $(EXE) $(SH)
sh: $(SH) checksh
check: checksh checkman

dkread: xdkread.c $H
	$(CC) xdkread.c -o $@

xdkread.c: dkread.c $H dkrskel.sed dkrskel.c
	cc -E dkrskel.c | sed -f dkrskel.sed | cat - dkread.c > xdkread.c

dkwrite: dkwrite.c $H
	$(CC) $@.c -o $@

dkerr: dkerr.c
	$(CC) $@.c -o $@

dkrskel: dkrskel.c $H
	$(CC) $@.c -o $@

dkpk: dkpk.c $H
	$(CC) $@.c -o $@

dkrsh: dkrsh.c
	$(CC) $@.c -o $@

dkrecover: dkrecover.sh $M
	sed -e '/^set DK=/s:(\(.*\)):($(DK)):' \
	    -e '/^set RDIR=/s:(\(.*\)):($R):' \
	    -e '/^set OPER=/s:(\(.*\)):($(OPER)):' \
	    -e '/^set DTAPE=/s:(\(.*\)):($(DTAPE)):' $@.sh > $@
	chmod +x $@

dkrboot: dkrboot.sh $M
	sed -e '/^set DK=/s:(\(.*\)):($(DK)):'\
	    -e '/^set DTAPE=/s:(\(.*\)):($(DTAPE)):' \
	    -e '/^set NTAPE=/s:(\(.*\)):($(NTAPE)):' $@.sh > $@
	chmod +x $@

dkbackup: dkbackup.sh $M
	sed -e '/^DK=/s:=\(.*\):=$(DK):' \
	    -e '/^DTAPE=/s:=\(.*\):=$(DTAPE):' $@.sh > $@
	chmod +x $@

dkrebuild: dkrebuild.sh $M
	sed -e '/^set DK=/s:(\(.*\)):($(DK)):' $@.sh > $@
	chmod +x $@

wsrecover: wsrecover.sh $M
	sed -e '/^BLOGIN=/s:=\(.*\):=$(DKLOGIN):' $@.sh > $@
	chmod +x $@

wsrestore: wsrestore.sh $M
	sed -e '/^BLOGIN=/s:=\(.*\):=$(DKLOGIN):' $@.sh > $@
	chmod +x $@

recoverfile: recoverfile.sh $M
	sed -e '/^set RDIR=/s:(\(.*\)):($R):' \
	    -e '/^set OPER=/s:(\(.*\)):($(OPER)):' $@.sh > $@
	chmod +x $@

dkmkboot: dkmkboot.sh $M
	sed -e '/^DK=/s:=\(.*\):=$(DK):' \
	    -e '/^DTAPE=/s:=\(.*\):=$(DTAPE):' \
	    -e '/^NTAPE=/s:=\(.*\):=$(NTAPE):' $@.sh > $@
	chmod +x $@

dkrtab: dkrtab.sh $M
	cp $@.sh $@
	chmod +x $@

dkws: dkws.sh $M
	cp $@.sh $@
	chmod +x $@

dk: dk.sh $M
	cp $@.sh $@
	chmod +x $@

dkrexec: dkrexec.sh $M
	sed -e '/^DK=/s:=\(.*\):=$(DK):' $@.sh > $@
	chmod +x $@

dkwexec: dkwexec.sh $M
	cp $@.sh $@
	chmod +x $@

dkpwd: dkpwd.sh $M
	sed -e '/^DK=/s:=\(.*\):=$(DK):' \
	    -e '/^ROOT=/s:=\(.*\):=$(ROOT):' $@.sh > $@
	chmod +x $@
	
dkrhosts: dkrhosts.sh $M
	sed -e '/^set ROOT=/s:(\(.*\)):($(ROOT)):' \
	    -e '/^set DK=/s:(\(.*\)):($(DK)):' $@.sh > $@
	chmod +x $@

dksched: dksched.sh $M
	sed -e '/^set DK=/s:(\(.*\)):($(DK)):' $@.sh > $@
	chmod +x $@

dkblks: dkblks.sh $M
	sed -e '/^set DK=/s:(\(.*\)):($(DK)):' $@.sh > $@
	chmod +x $@

dkinstall: dkinstall.sh $M
	sed -e '/^set DK=/s:(\(.*\)):($(DK)):' \
	    -e '/^set MAN=/s:(\(.*\)):($(MAN)):' $@.sh > $@
	chmod +x $@

install: rootdir all $(SH)
	-cp $(EXE) $(SH) $(BIN)
	-cp recoverfile $L
	chown 0    $(BIN)/dkread $(BIN)/dkwrite
	chmod 4710 $(BIN)/dkread $(BIN)/dkwrite
	chmod 4750 $(BIN)/dkbackup $(BIN)/dkrecover
	chgrp $(OPERGID) $(BIN)/dkread $(BIN)/dkbackup \
		         $(BIN)/dkwrite $(BIN)/dkrecover

man: checkman
	@echo "  MAKEFILE: Installing man pages ..."
	-cp $(MAN8) $(MAND8)
	-cp $(MAN1) $(MAND1)

manformat: dkmacs
	@echo "  MAKEFILE: Formatting man pages for section 8 ..."
	@for i in $(MAN8) ; do\
	   echo "$$i ..." ;\
	   nroff dkmacs $$i > $(CATD8)/$$i ;\
	done
	@echo "  MAKEFILE: Finished section 8."
	@echo "  MAKEFILE: Formatting man pages for section 1 ..."
	@for i in $(MAN1) ; do\
	   echo "$$i ..." ;\
	   nroff dkmacs $$i > $(CATD1)/$$i ;\
	done
	@echo "  MAKEFILE: Finished section 1."

dkmacs: dkmacs.m $M
	sed -e '/^\.ds DK/s:DK\(.*\):DK $(DK):' $@.m > $@
	
listsrc:
	pr -n Makefile $H $C $(SHSRC)

listman:
	ditroff -Psa dkmacs $(MAN1) $(MAN8)

clean:
	rm -f $(EXE) $(SH) a.out core *.o xdkread.c dkmacs *.no

rootdir: $(DK)

$(DK):
	MKDIRS $(DK)/bin $(DK)/lib $(DK)/boot $(UDIR) $(CDIR)
	-cp /dev/null $(DK)/.hushlogin
	-cp -i fstab.skel $(DK)/lib/fstab
	-echo -n '' >> $(DK)/.rhosts

ci:
	ci -l $H $C $(SHSRC) $(MAN1) $(MAN8) dkrskel.sed *.n\
			 < /dev/null > /dev/null 2>&1 &

checksh: $M
	@echo "  MAKEFILE: Checking shell scripts ..."
	-@for i in *.sh ; do \
	   f=`basename $$i .sh` ; \
	   if [ ! -f $$f ] ; then \
	      echo "  MAKEFILE: Missing $$f" ;\
	   fi \
	done

checkman: $M
	@echo "  MAKEFILE: Checking man pages..."
	-@for i in $(EXE) $(SH) ; do \
	   if [ ! -f $$i.[18] ] ; then \
	      echo "  MAKEFILE: Missing man page for $$i";\
	   fi \
	 done


.SUFFIXES: .n .do

.n.do:
	ditroff -t -Psa -ms $< > $@

dit: dk.do dkm.do dki.do

ditprint: dit
	lpr -n -Psa dkm.do dki.do dk.do

alldit:
	make listman
	make ditprint
	lpr -Psa advantages

.SUFFIXES: .n .no

.n.no:
	nroff -ms $< > $@

doc: dk.no dkm.no dki.no

docprint: doc
	@echo -n "  MAKEFILE: Enter printer name: " ;\
	read p ; $$p dk.no dkm.no dki.no ;\
	echo "  MAKEFILE: Documentation submitted to $$p ..."

dr: dkrstfix dkdumpck

dkrstfix: dkrstfix.c
	$(CC) $@.c -o $@

dkdumpck: dkdumpck.c
	$(CC) $@.c -o $@

tape:
	make clean
	tar c .

tarfile:
	make clean
	tar cf /tmp/dk.tar .
