COMM
COMM  Copyright (C) 1990-1999 by CERN/IT/PDP/DM
COMM  All rights reserved
COMM
COMM       @(#)Imakefile	1.54 06/18/99 CERN IT-PDP/DM Jean-Philippe Baud
 
COMM 	Make tape daemon programs. 

#if ultrix
DMPSHELL = /bin/sh5
#else
DMPSHELL = /bin/sh
#endif
#if BuildRtcopyClient != YES
DUMPTAPE = dumptape
IDUMPTAPE = FileName($(BIN),dumptape)
MANDUMP = $(MANDIR)/dumptape.$(MANSUFFIX)
#endif
#if UseFhs
FHSFLAG = -DFHS
FHSLIB = DepLibraryTargetName(fhs,fhs)
#if _WIN32
LIBFHS = ..\fhs\fhs.lib
#else
LIBFHS = -L../fhs -lfhs
#endif
#endif
#if UseTms
TMS = TMS
TMSLIB = DepLibraryTargetName(tms,tms)
#if _WIN32
LIBTMS = ..\tms\tms.lib
#else
LIBTMS = -L../tms -ltms
#endif
#else
TMS = NOTMS
#endif
#if sgi
#if OSMajorVersion >= 6
LIBS = -L../lib -lshift
#else
LIBS = -L../lib -lshift -lsun
#endif
#else
#if linux
LIBS = -L../lib -lshift -lnsl
#else
#if sun
#if SOLARIS
LIBS = -L../lib -lshift -lsocket -lnsl
#else
LIBS = -L../lib -lshift -lkvm
#endif
#else
#if defined(_AIX) && defined(_IBMR2)
LIBS = -L../lib -lshift -lodm
#else
#if _WIN32
LIBS = ..\lib\shift.lib wsock32.lib advapi32.lib
#else
LIBS = -L../lib -lshift
#endif
#endif
#endif
#endif
#endif
NOMORETAPES = FileName(OperatorDir,nomoretapes)
NOTMSDAEMON = FileName(OperatorDir,notmsdaemon)
OPSGRP = OperatorGid
SPOOL = TapeSpool
SYSCODE = SystemIdForHdr1
#if Accounting
SACCTDIR = SacctDir
SACCTFILE = SacctDir/sacct
ACCTFILE = -DACCTFILE=\"$(SACCTFILE)\"
SCONFIGFILE = ShiftConfigFile
CONFIGFILE = -DCONFIGFILE=\"$(SCONFIGFILE)\"
TAPEACCT = tapeacct.Osuf
#endif
TPCONFIG = TapeConfigFile
#if defined(_AIX) && defined(_IBMR2)
IBMR2_OBJS = getdvrnam.o CuDv.o CuDvDr.o
#if defined(RS6000PCTA)
PCTAFLAG = -DRS6000PCTA
#endif
#if defined(ADSTAR)
ADSTARFLG = -DADSTAR
#endif
#endif
#if defined(SONYRAW)
SONYRFLG = -DSONYRAW
SONYR_OBJ = sonysubr.o
#endif
#if UseDMSCapi
DMSC = DMSCDir
DMSCFLG = -DDMSCAPI
DMSCINC = -I$(DMSC)/include
DMSCLIB = $(DMSC)/lib/libfbs.a
LIBDMSC = -L$(DMSC)/lib -lfbs
#endif
#if HasCDK
CDK = CDKDir
CDKFLG = -DCDK
CDKINC = -I$(CDK)/src/h
CDKLIB = $(CDK)/lib/libapi.a $(CDK)/lib/libutl.a $(CDK)/lib/libipc.a $(CDK)/lib/libcl.a
LIBCDK = -L$(CDK)/lib -lapi -lutl -lapi -lipc -lcl
#endif

COMM######################### FLAGS ##############################

DFLAGS = -DBIN=\"$(BIN)\" \
	 -DLOGFILE=\"$(SPOOL)/log\" \
	 -DREQPIPE=\"$(SPOOL)/cmd_pipe\" \
	 -DSYSCODE=\"$(SYSCODE)\" \
	 -DTPCONFIG=\"$(TPCONFIG)\" \
	 -D$(TMS) $(FHSFLAG) $(PCTAFLAG) $(ADSTARFLG) $(ACCTFLAG) $(ACCTFILE) \
	 $(CONFIGFILE) $(SONYRFLG) $(CDKFLG) $(DMSCFLG)

CFLAGS =	$(DFLAGS) $(CDKINC) $(DMSCINC)

COMM######################### DEPENDENCY LIBRARIES ###############

GLOBLIB = DepLibraryTargetName(lib,shift)

COMM######################### RULES ##############################

MANPAGES = $(MANDIR)/reserv.$(MANSUFFIX) $(MANDIR)/rls.$(MANSUFFIX) \
	   $(MANDIR)/smc.$(MANSUFFIX) \
	   $(MANDIR)/tape_oper.$(MANSUFFIX) $(MANDIR)/tpconfig.$(MANSUFFIX) \
	   $(MANDIR)/tpdaemon.$(MANSUFFIX) $(MANDIR)/tplabel.$(MANSUFFIX) \
	   $(MANDIR)/tpinfo.$(MANSUFFIX) $(MANDIR)/tplblinfo.$(MANSUFFIX) \
	   $(MANDIR)/tpmnt.$(MANSUFFIX) $(MANDIR)/tprstat.$(MANSUFFIX) \
	   $(MANDIR)/tpstat.$(MANSUFFIX) $(LIBMANDIR)/usrlbl.$(LIBMANSUFFIX)
#if Accounting && BuildTpusage
MANSSTAT = $(MANDIR)/tpusage.$(MANSUFFIX)
EMANSSTAT = $(EXPORTMAN)/man1/tpusage.$(MANSUFFIX)
#endif
PROGS  = ProgramTargetName(dmpfil) \
	 ProgramTargetName(dmplbl) \
	 dumplabel \
	 ProgramTargetName(mounttape) \
	 ProgramTargetName(nextvol) \
	 ProgramTargetName(reserv) \
	 ProgramTargetName(rls) \
	 ProgramTargetName(smc) \
	 ProgramTargetName(tpconfig) \
	 ProgramTargetName(tpdaemon) \
	 tpdump \
	 ProgramTargetName(tpinfo) \
	 ProgramTargetName(tplabel) \
	 ProgramTargetName(tplblinfo) \
	 ProgramTargetName(tpmnt) \
	 ProgramTargetName(tprstat) \
	 ProgramTargetName(tpstat) \
	 ProgramTargetName(unloadtps)
#if Accounting && BuildTpusage
PROGS_Z = ProgramTargetName(tpusage)
#endif

IPROGS = FileName($(BIN),ProgramTargetName(dmpfil)) \
	 FileName($(BIN),ProgramTargetName(dmplbl)) \
	 FileName($(BIN),dumplabel) \
	 FileName($(BIN),ProgramTargetName(mounttape)) \
	 FileName($(BIN),ProgramTargetName(nextvol)) \
	 FileName($(BIN),ProgramTargetName(reserv)) \
	 FileName($(BIN),ProgramTargetName(rls)) \
	 FileName($(BIN),ProgramTargetName(smc)) \
	 FileName($(BIN),ProgramTargetName(tpconfig)) \
	 FileName($(BIN),ProgramTargetName(tpdaemon)) \
	 FileName($(BIN),tpdump) \
	 FileName($(BIN),ProgramTargetName(tpinfo)) \
	 FileName($(BIN),ProgramTargetName(tplabel)) \
	 FileName($(BIN),ProgramTargetName(tplblinfo)) \
	 FileName($(BIN),ProgramTargetName(tpmnt)) \
	 FileName($(BIN),ProgramTargetName(tprstat)) \
	 FileName($(BIN),ProgramTargetName(tpstat)) \
	 FileName($(BIN),ProgramTargetName(unloadtps))
#if Accounting && BuildTpusage
IPROGS_Z = FileName($(BIN),ProgramTargetName(tpusage))
EPROGS_Z = $(EXPORTBIN)/tpusage
#endif

MOUNTTAPE_OBJS	=	mounttape.Osuf \
			asc2ebc.Osuf \
			buildhdrlbl.Osuf \
			buildvollbl.Osuf \
			ebc2asc.Osuf \
			getunitstat.Osuf \
			lddisplay.Osuf \
			omsg.Osuf \
			posittape.Osuf \
			rbtsubr.Osuf \
			readlbl.Osuf \
			rwndtape.Osuf \
			send2tpd.Osuf \
			sendrep.Osuf \
			sendscsicmd.Osuf \
			skiptape.Osuf \
			smcsubr.Osuf \
			$(SONYR_OBJ) \
			tperror.Osuf \
			tplogit.Osuf \
			unldtape.Osuf \
			usrmsg.Osuf \
			writelbl.Osuf \
			wrttpmrk.Osuf
NEXTVOL_OBJS	=	nextvol.Osuf \
			chkdirw.Osuf \
			findpgrp.Osuf \
			savelabel.Osuf \
			send2tpd.Osuf \
			tplogit.Osuf
RESERV_OBJS	=	reserv.Osuf \
			findpgrp.Osuf \
			send2tpd.Osuf \
			tplogit.Osuf
RLS_OBJS	=	rls.Osuf \
			chkdirw.Osuf \
			findpgrp.Osuf \
			send2tpd.Osuf \
			tplogit.Osuf
TPCONFIG_OBJS	=	tpconfig.Osuf \
			findpgrp.Osuf \
			send2tpd.Osuf \
			tplogit.Osuf
TPDAEMON_OBJS	=	tpdaemon.Osuf \
			checkjobdied.Osuf \
			cvtden.Osuf \
			findpgrp.Osuf \
			sendrep.Osuf \
			tplogit.Osuf
TPINFO_OBJS	=	tpinfo.Osuf \
			cvtden.Osuf \
			findpgrp.Osuf \
			send2tpd.Osuf \
			tplogit.Osuf
TPLABEL_OBJS	=	tplabel.Osuf \
			cvtden.Osuf \
			findpgrp.Osuf \
			send2tpd.Osuf \
			tplogit.Osuf
TPMNT_OBJS	=	tpmnt.Osuf \
			chkdirw.Osuf \
			cvtden.Osuf \
			findpgrp.Osuf \
			savelabel.Osuf \
			send2tpd.Osuf \
			tplogit.Osuf
TPRSTAT_OBJS	=	tprstat.Osuf \
			findpgrp.Osuf \
			send2tpd.Osuf \
			tplogit.Osuf
TPSTAT_OBJS	=	tpstat.Osuf \
			findpgrp.Osuf \
			send2tpd.Osuf \
			tplogit.Osuf
UNLOADTPS_OBJS	=	unloadtps.Osuf \
			getunitstat.Osuf \
			lddisplay.Osuf \
			omsg.Osuf \
			rbtsubr.Osuf \
			send2tpd.Osuf \
			sendscsicmd.Osuf \
			smcsubr.Osuf \
			tperror.Osuf \
			$(SONYR_OBJ) \
			tplogit.Osuf \
			usrmsg.Osuf \
			unldtape.Osuf
TPLIB_OBJS	=	asc2ebc.Osuf \
			ebc2asc.Osuf \
			getcompstat.Osuf \
			getlabelinfo.Osuf \
			tperror.Osuf \
			usrlbl.Osuf \
			usrreadlbl.Osuf \
			usrrwndtape.Osuf \
			usrskiptape.Osuf \
			usrsmcsubr.Osuf \
			usrusrmsg.Osuf \
			usrwritelbl.Osuf \
			usrwrttpmrk.Osuf

#if BuildTape
all: $(PROGS) $(DUMPTAPE) $(PROGS_Z) LibraryTargetName(tape)
#else
all: $(PROGS_Z)
#endif

sendscsicmd.c:	DepSourceName(common,sendscsicmd.c)
	RemoveFile(sendscsicmd.c)
	$(CP) DepSourceName(common,sendscsicmd.c) sendscsicmd.c
usrreadlbl.c:	readlbl.c
	RemoveFile(usrreadlbl.c)
	$(CP) readlbl.c usrreadlbl.c
usrrwndtape.c:	rwndtape.c
	RemoveFile(usrrwndtape.c)
	$(CP) rwndtape.c usrrwndtape.c
usrskiptape.c:	skiptape.c
	RemoveFile(usrskiptape.c)
	$(CP) skiptape.c usrskiptape.c
usrsmcsubr.c:	smcsubr.c
	RemoveFile(usrsmcsubr.c)
	$(CP) smcsubr.c usrsmcsubr.c
usrusrmsg.c:	usrmsg.c
	RemoveFile(usrusrmsg.c)
	$(CP) usrmsg.c usrusrmsg.c
usrwritelbl.c:	writelbl.c
	RemoveFile(usrwritelbl.c)
	$(CP) writelbl.c usrwritelbl.c
usrwrttpmrk.c:	wrttpmrk.c
	RemoveFile(usrwrttpmrk.c)
	$(CP) wrttpmrk.c usrwrttpmrk.c

sendscsicmd.Osuf:	sendscsicmd.c tape.h ../h/scsictl.h
	$(CC) -c -DTAPE sendscsicmd.c
usrreadlbl.Osuf:	usrreadlbl.c tape.h taperr.h
	$(CC) -c -DNOTRACE $(PCTAFLAG) $(ADSTARFLG) usrreadlbl.c
usrrwndtape.Osuf:	usrrwndtape.c tape.h
	$(CC) -c -DNOTRACE usrrwndtape.c
usrskiptape.Osuf:	usrskiptape.c tape.h
	$(CC) -c -DNOTRACE usrskiptape.c
usrsmcsubr.Osuf:	usrsmcsubr.c tape.h ../h/scsictl.h smc.h
	$(CC) -c -DNOTRACE usrsmcsubr.c
usrusrmsg.Osuf:	usrusrmsg.c tape.h
	$(CC) -c -DNOTRACE usrusrmsg.c
usrwritelbl.Osuf:	usrwritelbl.c tape.h
	$(CC) -c -DNOTRACE usrwritelbl.c
usrwrttpmrk.Osuf:	usrwrttpmrk.c tape.h
	$(CC) -c -DNOTRACE usrwrttpmrk.c

NormalProgramTarget(dmpfil,dmpfil.Osuf cvtden.Osuf tperror.Osuf $(IBMR2_OBJS), \
 $(GLOBLIB),$(LIBS))

NormalProgramTarget(dmplbl,dmplbl.Osuf cvtden.Osuf tperror.Osuf $(IBMR2_OBJS), \
 $(GLOBLIB),$(LIBS))

dumplabel:	dumplabel.sh
	sed -e s!DMPSHELL!$(DMPSHELL)! \
		-e s!NOMORETAPES!$(NOMORETAPES)! \
		-e s!NOTMSDAEMON!$(NOTMSDAEMON)! \
		-e s!USINGTMS!$(TMS)! \
		-e s!BIN!$(BIN)! dumplabel.sh > dumplabel

LinkFile(dumptape,tpdump)

NormalProgramTarget(mounttape,$(MOUNTTAPE_OBJS) $(TAPEACCT), \
 $(GLOBLIB) $(TMSLIB) $(FHSLIB) $(CDKLIB) $(DMSCLIB), \
 $(LIBFHS) $(LIBTMS) $(LIBS) $(LIBCDK) $(LIBDMSC))

NormalProgramTarget(nextvol,$(NEXTVOL_OBJS),NullParameter,$(LIBS))

NormalProgramTarget(reserv,$(RESERV_OBJS),NullParameter,$(LIBS))

NormalProgramTarget(rls,$(RLS_OBJS),NullParameter,$(LIBS))

NormalProgramTarget(smc,smc.Osuf,$(GLOBLIB),$(LIBS))

NormalProgramTarget(tpconfig,$(TPCONFIG_OBJS),NullParameter,$(LIBS))

NormalProgramTarget(tpdaemon,$(TPDAEMON_OBJS) $(IBMR2_OBJS) $(TAPEACCT), \
 $(GLOBLIB),$(LIBS))

tpdump:		dumptape.sh
	sed -e s!DMPSHELL!$(DMPSHELL)! \
		-e s!NOMORETAPES!$(NOMORETAPES)! \
		-e s!NOTMSDAEMON!$(NOTMSDAEMON)! \
		-e s!USINGTMS!$(TMS)! \
		-e s!BIN!$(BIN)! dumptape.sh > tpdump

NormalProgramTarget(tpinfo,$(TPINFO_OBJS),NullParameter,$(LIBS))

NormalProgramTarget(tplabel,$(TPLABEL_OBJS),$(TMSLIB) $(GLOBLIB),$(LIBTMS) $(LIBS))

NormalProgramTarget(tplblinfo,tplblinfo.Osuf getlabelinfo.Osuf,$(GLOBLIB),$(LIBS))

NormalProgramTarget(tpmnt,$(TPMNT_OBJS),$(TMSLIB) $(GLOBLIB),$(LIBTMS) $(LIBS))

NormalProgramTarget(tprstat,$(TPRSTAT_OBJS),NullParameter,$(LIBS))

NormalProgramTarget(tpstat,$(TPSTAT_OBJS),NullParameter,$(LIBS))

NormalProgramTarget(tpusage,tpusage.Osuf,NullParameter,$(LIBS))

NormalProgramTarget(unloadtps,$(UNLOADTPS_OBJS) $(TAPEACCT), \
 $(GLOBLIB) $(TMSLIB) $(FHSLIB) $(CDKLIB) $(DMSCLIB), \
 $(LIBFHS) $(LIBTMS) $(LIBS) $(LIBCDK) $(LIBDMSC))

NormalLibraryTarget(tape,$(TPLIB_OBJS) $(IBMR2_OBJS))

MakeDepLibrary(lib,shift)
#if UseTms
MakeDepLibrary(tms,tms)
#endif
#if UseFhs
MakeDepLibrary(fhs,fhs)
#endif

#if BuildTape
install: $(BIN) $(IPROGS) $(IDUMPTAPE) $(IPROGS_Z) $(SPOOL) $(SACCTDIR)
#else
install: $(BIN) $(IPROGS_Z)
#endif

InstallProgram(dmpfil,$(BIN),root,bin,755)
InstallProgram(dmplbl,$(BIN),root,bin,755)
$(BIN)/dumplabel:	dumplabel
	-mv $(BIN)/dumplabel $(BIN)/OLDdumplabel
	cp dumplabel $(BIN)
	chown root $(BIN)/dumplabel
	chgrp bin $(BIN)/dumplabel
	chmod 755 $(BIN)/dumplabel
$(BIN)/dumptape:	tpdump
	-mv $(BIN)/dumptape $(BIN)/OLDdumptape
	ln $(BIN)/tpdump $(BIN)/dumptape
InstallProgram(mounttape,$(BIN),root,$(OPSGRP),6750)
InstallProgram(nextvol,$(BIN),root,bin,6755)
InstallProgram(reserv,$(BIN),root,bin,6755)
InstallProgram(rls,$(BIN),root,bin,6755)
InstallProgram(smc,$(BIN),root,bin,6755)
InstallProgram(tpconfig,$(BIN),root,$(OPSGRP),6750)
InstallProgram(tpdaemon,$(BIN),root,$(OPSGRP),6750)
$(BIN)/tpdump:	tpdump
	-mv $(BIN)/tpdump $(BIN)/OLDtpdump
	cp tpdump $(BIN)
	chown root $(BIN)/tpdump
	chgrp bin $(BIN)/tpdump
	chmod 755 $(BIN)/tpdump
InstallProgram(tpinfo,$(BIN),root,bin,6755)
InstallProgram(tplabel,$(BIN),root,bin,6755)
InstallProgram(tplblinfo,$(BIN),root,bin,0755)
InstallProgram(tpmnt,$(BIN),root,bin,6755)
InstallProgram(tprstat,$(BIN),root,bin,6755)
InstallProgram(tpstat,$(BIN),root,bin,6755)
InstallProgram(tpusage,$(BIN),root,bin,755)
InstallProgram(unloadtps,$(BIN),root,$(OPSGRP),6750)

MakeDir($(BIN),root,bin,0755)
MakeDir($(SPOOL),root,bin,0755)

#if Accounting
MakeDir($(SACCTDIR),root,bin,0777)
#endif

#if BuildTape
install.man: $(MANDIR) $(MANPAGES) $(MANDUMP) $(MANSSTAT)
#else
install.man: $(MANDIR) $(MANSSTAT)
#endif

MakeDir($(MANDIR),root,bin,0755)

IMANPAGE(dumptape,$(MANDIR),$(MANSUFFIX))
IMANPAGE(reserv,$(MANDIR),$(MANSUFFIX))
IMANPAGE(rls,$(MANDIR),$(MANSUFFIX))
IMANPAGE(smc,$(MANDIR),$(MANSUFFIX))
IMANPAGE(tape_oper,$(MANDIR),$(MANSUFFIX))
IMANPAGE(tpconfig,$(MANDIR),$(MANSUFFIX))
IMANPAGE(tpdaemon,$(MANDIR),$(MANSUFFIX))
IMANPAGE(tpinfo,$(MANDIR),$(MANSUFFIX))
IMANPAGE(tplabel,$(MANDIR),$(MANSUFFIX))
IMANPAGE(tplblinfo,$(MANDIR),$(MANSUFFIX))
IMANPAGE(tpmnt,$(MANDIR),$(MANSUFFIX))
IMANPAGE(tprstat,$(MANDIR),$(MANSUFFIX))
IMANPAGE(tpstat,$(MANDIR),$(MANSUFFIX))
IMANPAGE(tpusage,$(MANDIR),$(MANSUFFIX))
IMANPAGE(usrlbl,$(LIBMANDIR),$(LIBMANSUFFIX))

export: $(EPROGS_Z)
IEXPORT(tpusage,$(EXPORTBIN))

exportman: $(EMANSSTAT)
EMANPAGE(tpusage,$(EXPORTMAN)/man1,$(MANSUFFIX))

exportshr:

COMM###################### CLEANING RULES #######################

clean:
	-@RemoveFiles(FilesToClean)

clobber:	clean
	-@RemoveFiles($(PROGS) $(PROGS_Z) $(DUMPTAPE) LibraryTargetName(tape))

Makefiles:

FORCE:

COMM####################### DEPENDENCIES ##########################

buildhdrlbl.Osuf:	tape.h
buildvollbl.Osuf:	tape.h
checkjobdied.Osuf:	tape.h
cvtden.Osuf:	tape.h
dmpfil.Osuf:	tape.h
dmplbl.Osuf:	tape.h
findpgrp.Osuf:	tape.h
getlabelinfo.Osuf:	tape.h
getunitstat.Osuf:	tape.h
lddisplay.Osuf:	tape.h ../h/scsictl.h
mounttape.Osuf:	tape.h ../h/sacct.h
nextvol.Osuf:	tape.h
omsg.Osuf:	tape.h
posittape.Osuf:	tape.h
rbtsubr.Osuf:	tape.h
readlbl.Osuf:	tape.h taperr.h
reserv.Osuf:	tape.h
rwndtape.Osuf:	tape.h
rls.Osuf:	tape.h
savelabel.Osuf:	tape.h
send2tpd.Osuf:	tape.h
sendrep.Osuf:	tape.h
smc.Osuf:	tape.h smc.h
smcsubr.Osuf:	tape.h ../h/scsictl.h smc.h
skiptape.Osuf:	tape.h
tapeacct.Osuf:	../h/sacct.h
tpconfig.Osuf:	tape.h
tpdaemon.Osuf:	tape.h ../h/sacct.h
tperror.Osuf:	tape.h taperr.h
tplabel.Osuf:	tape.h
tplblinfo.Osuf:	tape.h
tplogit.Osuf:	tape.h
tpmnt.Osuf:	tape.h
tprstat.Osuf:	tape.h
tpstat.Osuf:	tape.h
tpusage.Osuf:	../h/sacct.h
unldtape.Osuf:	tape.h
unloadtps.Osuf:	tape.h ../h/sacct.h
usrlbl.Osuf:	tape.h
usrmsg.Osuf:	tape.h
writelbl.Osuf:	tape.h
wrttpmrk.Osuf:	tape.h
#if defined(_AIX) && defined(_IBMR2)
getdvrnam.o:	CuDv.h CuDvDr.h
CuDv.o:		CuDv.h
CuDvDr.o:	CuDvDr.h

CuDv.c CuDv.h:	CuDv.cre
	odmcreate -h CuDv
CuDvDr.c CuDvDr.h:	CuDvDr.cre
	odmcreate -h CuDvDr

CuDv.cre:
	odmshow PdDv CuDv > CuDv.cre
CuDvDr.cre:
	odmshow CuDvDr > CuDvDr.cre
#endif
#if defined(SONYRAW)
sonysubr.Osuf:	tape.h ../h/scsictl.h
#endif
