COMM      @(#)Imakefile	1.44 04/02/99 CERN IT-PDP/DM Jean-Philippe Baud
COMM
COMM  Copyright (C) 1990-1999 by CERN/CN/SW/DC
COMM  All rights reserved
COMM
 
COMM 		Make remote tape access (SERVER) GENERIC

SPOOL = RtcopySpool
COMM####################### SERVER INFORMATION ##################

COMM
COMM Define the remote tape copy daemon log file.
COMM
RTCOPYLOGFILE = $(SPOOL)/rtcopyd.log

COMM
COMM Define the working directory of 
COMM the remote tape copy jobs.
COMM
RTCOPYWORKDIR = RtcopyWorkDir

COMM
COMM Define the file indicating that more
COMM tape request should be submit on the
COMM server.
COMM
NOMORETAPES = FileName(OperatorDir,nomoretapes)
COMM
COMM Define the file indicating the hosts
COMM authorized to use remotely rtcopy server
COMM 
COMM Define the file indicating that the
COMM tms daemon is not available
COMM
NOTMSDAEMON = FileName(OperatorDir,notmsdaemon)
COMM
COMM Define Shift configuration file 
COMM
SHIFTCONF = ShiftConfigFile
COMM
AUTHORIZEDHOSTS = AuthorizedHosts
COMM
COMM Define the file which receives a 
COMM copy of all error messages that a user
COMM is getting when his request aborts.
COMM
CLIENTLOGMSGS = $(SPOOL)/rtcopy.err
COMM
COMM Define domain name for tpread/tpwrite/tpselect
COMM to append it to host name is request 
COMM is aiming an out of site server
COMM
DOMAINNAME= DomainName
COMM
COMM Define spool area for tpsinfod
COMM 
TPSSPOOL = TpsSpool
COMM 
COMM Define log file for tpsinfo daemon
COMM
TPSLOGFILE = $(TPSSPOOL)/tpsinfod.log
COMM

COMM###################### COMMON INFORMATION ###################

#if defined(OSF1DLT)
ISOSF1DLT=-DOSF1DLT
#endif
#if Accounting
ACCTON= -DACCTON
SACCTDIR = SacctDir
SACCTFILE = SacctDir/sacct
ACCTFILE = -DACCTFILE=\"$(SACCTFILE)\"
SCONFIGFILE = ShiftConfigFile
CONFIGFILE = -DCONFIGFILE=\"$(SCONFIGFILE)\"
ERRLISTDIR = FileName(InstallLibDir,rtcopy)
ERRLISTFILE = FileName($(ERRLISTDIR),err_messages)
RTCOPYERRLIST = -DRTCOPYERRLIST=\"$(ERRLISTFILE)\"
TPCONFIGFILE = TapeConfigFile
TPCONFIG = -DTPCONFIG=\"$(TPCONFIGFILE)\"
RTCPACCTPAK=rtcpacct.Osuf
#endif
#if BuildTpsinfoServer
SERVERTPS = ProgramTargetName(tpsinfod)
SERVERTPSINST = FileName($(BIN),ProgramTargetName(tpsinfod))
ESERVERTPSINST = $(EXPORTBIN)/tpsinfod
#endif
#if defined(SONYRAW)
SONYRFLG = -DSONYRAW
#endif

#if UseTms
TMS = TMS
#else
TMS = NOTMS
#endif

COMM
COMM Compilation flags for RTCOPY modules.
COMM
RTCOPYFLAGS = -DCPTPDSK=\"$(BIN)/cptpdsk\" -DCPDSKTP=\"$(BIN)/cpdsktp\" \
	-DTPDUMP=\"$(BIN)/tpdump\" $(ISOSF1DLT) \
        -DLOGFILE=\"$(RTCOPYLOGFILE)\" -DWORKDIR=\"$(RTCOPYWORKDIR)\"   \
        -DNOMORETAPES=\"$(NOMORETAPES)\" \
	-D$(TMS) -DAUTH_HOSTS=\"$(AUTHORIZEDHOSTS)\" \
        -DMSGLOG=\"$(CLIENTLOGMSGS)\" \
	-DDOMAINNAME=\"$(DOMAINNAME)\" \
	-DTPSLOGFILE=\"$(TPSLOGFILE)\" \
	-DBIN=\"$(BIN)\" $(ACCTON) $(SONYRFLG) \
	$(ACCTFILE) $(CONFIGFILE) $(RTCOPYERRLIST) $(TPCONFIG)
	

INCLUDES = ../h 
CFLAGS = -O -I$(INCLUDES) $(CCOPTFLAGS) $(DEFCFLAGS) $(RTCOPYFLAGS)

COMM
COMM Library needed for RTCOPY.
COMM
#if HasUltra
#if _IBMR2
ULTRA = -lulsock -bimport:/usr/lib/usyscall.imp
#else
ULTRA = -lulsock
#endif
#endif
LIBS = $(OPTLIBS)

#if apollo
LD = $(UTIL)/apold
LDLIBS = ../lib/libshift.a
#else
#if cray
LDLIBS = -l../lib/libshift.a 
#else
#if sgi
#if OSMajorVersion >= 6
LDLIBS =  -L../lib -lshift
#else
LDLIBS =  -L../lib -lshift -lsun
#endif
#else
#if _IBMESA
LDLIBS =  -L../lib -lshift -lsecurity
#else
#if linux
LDLIBS = -L../lib -lshift -lnsl
#else
#if SOLARIS
LDLIBS = -L../lib -lshift -lsocket -lnsl
#else
#if _IBMR2
LDLIBS = -L../lib -lshift -lodm
#else
#if __Lynx__
LDLIBS = -L../lib -lshift -lnsl -lbsd
#else
#if _WIN32
LIBS = ..\lib\shift.lib wsock32.lib advapi32.lib mpr.lib
#else
LDLIBS = -L../lib -lshift
#endif
#endif
#endif
#endif
#endif
#endif
#endif
#endif
#endif

#if BuildRtcopyClient
CLIENT = ProgramTargetName(tpread) \
	 ProgramTargetName(tpwrite) \
	 ProgramTargetName(tpselect) \
	 ProgramTargetName(dumptape)
IPROGC = FileName($(BIN),ProgramTargetName(tpread)) \
	 FileName($(BIN),ProgramTargetName(tpwrite)) \
	 FileName($(BIN),ProgramTargetName(tpselect)) \
	 FileName($(BIN),ProgramTargetName(dumptape))
EPROGC = $(EXPORTBIN)/tpread $(EXPORTBIN)/tpwrite $(EXPORTBIN)/tpselect $(EXPORTBIN)/dumptape
MANPAGES_C = $(MANDIR)/tpread.$(MANSUFFIX) \
	     $(MANDIR)/tpwrite.$(MANSUFFIX) \
	     $(MANDIR)/dumptape.$(MANSUFFIX)
EXPORTMANPAGES_C = $(EXPORTMAN)/man1/tpread.$(MANSUFFIX) \
		   $(EXPORTMAN)/man1/tpwrite.$(MANSUFFIX) \
		   $(EXPORTMAN)/man1/dumptape.$(MANSUFFIX)
#endif
#if BuildRtcopyServer
#ifndef apollo
MANPAGES_S = $(MANDIR)/rtcopyd.$(MANSUFFIX)
EXPORTMANPAGES_S = $(EXPORTMAN)/man1/rtcopyd.$(MANSUFFIX)
#if ultrix
RTCOPYSHELL = /bin/sh5
#else
RTCOPYSHELL = /bin/sh
#endif
#if cray
SERVER = ProgramTargetName(rtcopyd) \
	 ProgramTargetName(tptodkU) \
	 ProgramTargetName(dktotpU) \
	 ProgramTargetName(tptodkF) \
	 ProgramTargetName(dktotpF) \
	 cptpdsk cpdsktp \
	 ProgramTargetName(scantp) rtcopy.awk $(SERVERTPS)
IPROGS = FileName($(BIN),ProgramTargetName(rtcopyd)) \
         FileName($(BIN),ProgramTargetName(tptodkU)) \
         FileName($(BIN),ProgramTargetName(dktotpU)) \
         FileName($(BIN),ProgramTargetName(tptodkF)) \
         FileName($(BIN),ProgramTargetName(dktotpF)) \
         FileName($(BIN),cptpdsk) \
         FileName($(BIN),cpdsktp) \
         FileName($(BIN),ProgramTargetName(scantp)) \
         FileName($(BIN),rtcopy.awk) \
	 $(SERVERTPSINST)
EPROGS = $(EXPORTBIN)/rtcopyd  \
	 $(EXPORTBIN)/tptodkU  \
	 $(EXPORTBIN)/dktotpU  \
	 $(EXPORTBIN)/tptodkF  \
	 $(EXPORTBIN)/dktotpF  \
	 $(EXPORTBIN)/cptpdsk \
	 $(EXPORTBIN)/cpdsktp \
	 $(EXPORTBIN)/scantp  \
	 $(EXPORTBIN)/rtcopy.awk \
	 $(ESERVERTPSINST)
#else
SERVER = ProgramTargetName(rtcopyd) \
	 ProgramTargetName(tptodkU) \
	 ProgramTargetName(dktotpU) \
	 ProgramTargetName(tptodkF) \
	 ProgramTargetName(dktotpF) \
	 cptpdsk cpdsktp \
	 ProgramTargetName(tptime) rtcopy.awk $(SERVERTPS)
IPROGS = FileName($(BIN),ProgramTargetName(rtcopyd)) \
         FileName($(BIN),ProgramTargetName(tptodkU)) \
         FileName($(BIN),ProgramTargetName(dktotpU)) \
         FileName($(BIN),ProgramTargetName(tptodkF)) \
         FileName($(BIN),ProgramTargetName(dktotpF)) \
         FileName($(BIN),cptpdsk) \
         FileName($(BIN),cpdsktp) \
         FileName($(BIN),ProgramTargetName(tptime)) \
         FileName($(BIN),rtcopy.awk) \
	 $(SERVERTPSINST)
EPROGS = $(EXPORTBIN)/rtcopyd  \
	 $(EXPORTBIN)/tptodkU  \
	 $(EXPORTBIN)/dktotpU  \
	 $(EXPORTBIN)/tptodkF  \
	 $(EXPORTBIN)/dktotpF  \
	 $(EXPORTBIN)/cptpdsk \
	 $(EXPORTBIN)/cpdsktp \
	 $(EXPORTBIN)/tptime  \
	 $(EXPORTBIN)/rtcopy.awk \
	 $(ESERVERTPSINST)
	
#endif
#endif
#endif
#if Accounting
MANSSTAT = $(MANDIR)/rtstat.$(MANSUFFIX)
EMANSSTAT = $(EXPORTMAN)/man1/rtstat.$(MANSUFFIX)
STATP = ProgramTargetName(rtstat)
ISTATP = FileName($(BIN),ProgramTargetName(rtstat)) $(ERRLISTFILE)
ESTATP = $(EXPORTBIN)/rtstat
ESTATD = $(EXPORTSHR)/lib/rtcopy/err_messages
#endif

COMM
COMM Default rule.
COMM
all:    $(CLIENT) $(SERVER) $(STATP)

COMM########################## CLIENT PART #######################

NormalProgramTarget(tpread,tpread.Osuf tpsinfo.Osuf, \
 DepLibraryTargetName(lib,shift),$(LDLIBS) $(LIBS))

InstallProgram(tpread,$(BIN),root,bin,755)
IEXPORT(tpread,$(EXPORTBIN))

LinkFile(ProgramTargetName(tpwrite),ProgramTargetName(tpread))

InstallProgram(tpwrite,$(BIN),root,bin,755)
IEXPORT(tpwrite,$(EXPORTBIN))

LinkFile(ProgramTargetName(tpselect),ProgramTargetName(tpread))

NormalProgramTarget(dumptape,dumptape.Osuf tpclient.Osuf tpsinfo.Osuf, \
 DepLibraryTargetName(lib,shift),$(LDLIBS) $(LIBS))

InstallProgram(dumptape,$(BIN),root,bin,755)
IEXPORT(dumptape,$(EXPORTBIN))

InstallProgram(tpselect,$(BIN),root,bin,755)
IEXPORT(tpselect,$(EXPORTBIN))

COMM########################## SERVER PART #######################

NormalProgramTarget(rtcopyd,rtcopyd.Osuf $(RTCPACCTPAK), \
 DepLibraryTargetName(lib,shift),$(LDLIBS) $(LIBS))

InstallProgram(rtcopyd,$(BIN),root,bin,755)
IEXPORT(rtcopyd,$(EXPORTBIN))

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

InstallProgram(scantp,$(BIN),root,bin,755)
IEXPORT(scantp,$(EXPORTBIN))

NormalProgramTarget(tptodkU,tptodkU.Osuf tpio.Osuf rtyexit.Osuf, \
 DepLibraryTargetName(lib,shift),$(LDLIBS) $(LIBS) $(ULTRA))

InstallProgram(tptodkU,$(BIN),root,bin,755)
IEXPORT(tptodkU,$(EXPORTBIN))

NormalProgramTarget(tpsinfod,tpsinfod.Osuf,DepLibraryTargetName(lib,shift), \
 $(LDLIBS) $(LIBS))

InstallProgram(tpsinfod,$(BIN),root,bin,755)
IEXPORT(tpsinfod,$(EXPORTBIN))

NormalProgramTarget(dktotpU,dktotpU.Osuf tpio.Osuf rtyexit.Osuf, \
 DepLibraryTargetName(lib,shift),$(LDLIBS) $(LIBS) $(ULTRA))

InstallProgram(dktotpU,$(BIN),root,bin,755)
IEXPORT(dktotpU,$(EXPORTBIN))

NormalProgramTarget(dktotpF,dktotpF.Osuf tpio.Osuf rtyexit.Osuf, \
 DepLibraryTargetName(lib,shift),$(LDLIBS) $(LIBS) $(ULTRA))

InstallProgram(dktotpF,$(BIN),root,bin,755)
IEXPORT(dktotpF,$(EXPORTBIN))

NormalProgramTarget(tptodkF,tptodkF.Osuf tpio.Osuf rtyexit.Osuf, \
 DepLibraryTargetName(lib,shift),$(LDLIBS) $(LIBS) $(ULTRA))

InstallProgram(tptodkF,$(BIN),root,bin,755)
IEXPORT(tptodkF,$(EXPORTBIN))

#if cray
#undef cray
rtcopy.tmpl: rtcopy.cray
	sed -e s!RTCOPYSHELL!$(RTCOPYSHELL)! $? > $@
#define cray
#else
rtcopy.tmpl: rtcopy.shift
	sed -e s!RTCOPYSHELL!$(RTCOPYSHELL)! $? > $@
#endif

cptpdsk:  rtcopy.tmpl
	@rm -f $@
	sed 	-e s!RTCOPYAWKFILE!$(BIN)/rtcopy.awk! \
		-e s!NOTMSDAEMON!$(NOTMSDAEMON)! \
		-e s!NOMORETAPES!$(NOMORETAPES)! \
		-e s!USINGTMS!$(TMS)! \
		-e s!SHIFTBIN!$(BIN)! \
		-e s!SHIFTCONF!$(SHIFTCONF)! $? > $@
	chmod 755 $@

$(BIN)/cptpdsk: cptpdsk
	-mv $(BIN)/$?  $(BIN)/OLD$?
	cp $? $(BIN)/$?
	chown root $(BIN)/$?
	chgrp bin $(BIN)/$?
	chmod 755 $(BIN)/$?
IEXPORT(cptpdsk,$(EXPORTBIN))

cpdsktp:  cptpdsk
	@rm -f $@
	cp $? $@
	chmod 755 $@

$(BIN)/cpdsktp: cpdsktp
	-mv $(BIN)/$?  $(BIN)/OLD$?
	cp $? $(BIN)/$?
	chown root $(BIN)/$?
	chgrp bin $(BIN)/$?
	chmod 755 $(BIN)/$?
IEXPORT(cpdsktp,$(EXPORTBIN))

NormalProgramTarget(tptime,tptime.Osuf,NullParameter,NullParameter)

InstallProgram(tptime,$(BIN),root,bin,755)
IEXPORT(tptime,$(EXPORTBIN))

$(BIN)/rtcopy.awk: rtcopy.awk
	-mv $(BIN)/$?  $(BIN)/OLD$?
	cp $? $(BIN)/$?
	chown root $(BIN)/$?
	chgrp bin $(BIN)/$?
	chmod 755 $(BIN)/$?
IEXPORT(rtcopy.awk,$(EXPORTBIN))

#if Accounting
NormalProgramTarget(rtstat,rtstat.Osuf,DepLibraryTargetName(lib,shift),$(LDLIBS))

InstallProgram(rtstat,$(BIN),root,bin,755)
IEXPORT(rtstat,$(EXPORTBIN))

InstallNonExecFile(err_messages,$(ERRLISTDIR),root,bin,644)

$(ESTATD): err_messages
	-mkdir -p $(@D)
	-mv $(@D)/$? $(@D)/OLD$?
	cp $? $@
#endif

MakeDir($(BIN),root,bin,755)
MakeDir($(RTCOPYWORKDIR),root,bin,777)
MakeDir($(SPOOL),root,bin,755)

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

COMM########################## COMMON PART #######################

#if BuildRtcopyServer
install: $(BIN) $(ERRLISTDIR) $(IPROGC) $(IPROGS) $(ISTATP) $(RTCOPYWORKDIR) $(SPOOL) $(SACCTDIR)
#else
install: $(BIN) $(ERRLISTDIR) $(IPROGC) $(IPROGS) $(ISTATP)
#endif

install.man : $(MANDIR) $(MANPAGES_C) $(MANPAGES_S) $(MANSSTAT)

export: $(EPROGC) $(EPROGS) $(ESTATP)

exportman: $(EXPORTMANPAGES_C) $(EXPORTMANPAGES_S) $(EMANSSTAT)

exportshr: $(ESTATD)

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

IMANPAGE(rtcopyd,$(MANDIR),$(MANSUFFIX))
IMANPAGE(dumptape,$(MANDIR),$(MANSUFFIX))
IMANPAGE(tpread,$(MANDIR),$(MANSUFFIX))
IMANPAGE(tpwrite,$(MANDIR),$(MANSUFFIX))
IMANPAGE(rtstat,$(MANDIR),$(MANSUFFIX))
EMANPAGE(rtcopyd,$(EXPORTMAN)/man1,$(MANSUFFIX))
EMANPAGE(dumptape,$(EXPORTMAN)/man1,$(MANSUFFIX))
EMANPAGE(tpread,$(EXPORTMAN)/man1,$(MANSUFFIX))
EMANPAGE(tpwrite,$(EXPORTMAN)/man1,$(MANSUFFIX))
EMANPAGE(rtstat,$(EXPORTMAN)/man1,$(MANSUFFIX))

clean:
	@echo cleaning in CurDir
	-@RemoveFiles(FilesToClean rtcopy.tmpl)

clobber:        clean
	@echo clobbering in CurDir
	-@$(RM) `echo "$(CLIENT) $(SERVER)" | sed -e s!rtcopy.awk!!` > /dev/null 2>&1

Makefiles:

MakeDepLibrary(lib,shift)

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

tpread.Osuf:	rtcopy.h $(INCLUDES)/marshall.h $(INCLUDES)/log.h \
		$(INCLUDES)/serrno.h
tptodkU.Osuf:	rtcopy.h rtcopyerr.h $(INCLUDES)/rfio.h
dktotpU.Osuf:	rtcopy.h rtcopyerr.h $(INCLUDES)/rfio.h
tptodkF.Osuf:	rtcopy.h rtcopyerr.h $(INCLUDES)/rfio.h
dktotpF.Osuf:	rtcopy.h rtcopyerr.h $(INCLUDES)/rfio.h
rtcopyd.Osuf:	rtcopy.h $(INCLUDES)/sacct.h
rtcpacct.Osuf:	$(INCLUDES)/sacct.h
rtstat.Osuf:	$(INCLUDES)/sacct.h
tpio.Osuf:	rtcopy.h rtcopyerr.h $(INCLUDES)/scsictl.h

FORCE:

