COMM   @(#)Imakefile	1.72 11/11/99 IT-PDP/DM  Jean-Philippe Baud
COMM
COMM  Copyright (C) 1990-1999 by CERN/CN/SW/DC
COMM  All rights reserved
COMM
 
COMM 		Make rfio library and daemon            GENERIC

COMM
COMM Define the file indicating that no more RFIO requests
COMM should be issued.
COMM
NOMORERFIO = FileName(OperatorDir,nomorerfio)

INCLUDES = ../h
SPOOL = RfioSpool
#if  _WIN32
LOGFILE = $(SPOOL)\\rfiod.log
#else
LOGFILE = $(SPOOL)/rfiod.log
#endif 

#if FollowRtLinks
FOLLOWLINKS=-DFollowRtLinks
#endif

#if ClientLogging
LOGGINGO=logging.Osuf
DUMPLOG=ProgramTargetName(dump_log)
DUMPINSTALL=FileName($(BIN),ProgramTargetName(dump_log))
CLIENTLOG=-DCLIENTLOG
#endif

#if MeikoCS2 
SUPPORT_CS2=-DCS2
#endif

#if defined(__osf__) && defined(__alpha) && (OSMajorVersion == 4) 
#if RFIODaemonRealTime
RTFLAGS=-non_shared
RTLIBS=-L/usr/ccs/lib -lrt
#endif
#endif

#ifdef RfioAlarmFile
#if _WIN32
RFIO_ALRM= RfioSpool\\RfioAlarmFile
#else
RFIO_ALRM= RfioSpool/RfioAlarmFile
#endif
#endif

#if BuildHpssServer
HPSSINCLUDES = -I../hpss
HPSSOPTS = -DHPSS -D_THREAD_SAFE -DMAX_THREADS=10 -DRFIO_PRINCIPAL=\"rfiod\" -DRFIO_KEYTAB=\"/krb5/rfiod.keytabs\" 
#if defined(_AIX)
HPSSLIBS=-L../hpss -lrfio_hpss -L/usr/lpp/hpss/lib -lhpss -L/usr/lpp/encina/lib -lEncina -ldce
CC = xlc_r4 -qlanglvl=extended -Dunix -DAIX42
LD = xlc_r4
#endif
#if defined(__osf__) && defined(__alpha)
HPSSLIBS=-L../hpss -lrfio_hpss -L/usr/lpp/hpss/lib -lhpss -L/usr/lpp/encina/lib -lEncina -ldce -laio
CC = cc -threads -DDUXV4
LD = cc -threads
#endif
#endif

#if BuildHpssClient
HPSSCOPTS = -DHPSSCLIENT
HPSSCLIBS = -L../hpss -lhpss_common
#endif

DOMAINNAME= DomainName

RFIOFLAGS=-DNOMORERFIO=\"$(NOMORERFIO)\" $(FOLLOWLINKS) \
	  -DDOMAINNAME=\"$(DOMAINNAME)\" -DLOGFILE=\"$(LOGFILE)\" \
	  -DRFIO_ALRM=\"$(RFIO_ALRM)\"

CFLAGS = -O -I$(INCLUDES) $(HPSSINCLUDES) $(CLIENTLOG) $(CCOPTFLAGS) $(DEFCFLAGS) $(RFIOFLAGS) $(ACCTFLAG) -DFORTRAN $(SUPPORT_CS2) $(CPPUFL) $(HPSSOPTS) $(HPSSCOPTS)

#if cray
CRAYFORTRANO=fortran.Osuf
CRAYFORTRANF=fortran.f
#else
FIOO=fio.Osuf
#endif
#if _WIN32
NTSERVICEO=service.obj
#endif
FFLAGS = $(FFOPTFLAGS) $(FPPUFL)
#if _IBMESA
LDLIBS =  -L../common -lcommon -lsecurity
#else
#if apollo
LDLIBS =  ../common/libcommon.a
#else
#if cray
LDLIBS = -l../common/libcommon.a
#else
#if linux
LDLIBS = -L../common -lcommon -lnsl
#else
#if SOLARIS
LDLIBS = -L../common -lcommon -lsocket -lnsl
#else
#if sgi
#if OSMajorVersion >= 6
LDLIBS =  -L../common -lcommon
#else
LDLIBS =  -L../common -lcommon -lsun
#endif
#else
#if __Lynx__
LDLIBS = -L../common -lcommon -lnsl -lbsd
#else
#if _WIN32
LDLIBS = ..\common\common.lib ws2_32.lib advapi32.lib mpr.lib
#else
LDLIBS = -L../common -lcommon
#endif
#endif
#endif
#endif
#endif
#endif
#endif
#endif
#if _WIN32
RFIOLIB = rfio.lib
#else
RFIOLIB = -L. -lrfio
#endif
#if HasUltra
#if _IBMR2
ULTRA = -lulsock -bimport:/usr/lib/usyscall.imp
#else
ULTRA = -lulsock
#endif
#endif
LIBS = $(OPTLIBS) $(ULTRA)

.PRECIOUS: LibraryTargetName(rfio)

MANPAGES = $(MANDIR)/rfiod.$(MANSUFFIX) \
	   $(MANDIR)/rfcp.$(MANSUFFIX) \
	   $(MANDIR)/rfdir.$(MANSUFFIX) \
	   $(MANDIR)/rfmkdir.$(MANSUFFIX) \
	   $(MANDIR)/rfrename.$(MANSUFFIX) \
	   $(MANDIR)/rfrm.$(MANSUFFIX)

EXPORTMANPAGES = $(EXPORTMAN)/man1/rfiod.$(MANSUFFIX) \
	   $(EXPORTMAN)/man1/rfcp.$(MANSUFFIX) \
	   $(EXPORTMAN)/man1/rfdir.$(MANSUFFIX) \
	   $(EXPORTMAN)/man1/rfmkdir.$(MANSUFFIX) \
	   $(EXPORTMAN)/man1/rfrename.$(MANSUFFIX) \
	   $(EXPORTMAN)/man1/rfrm.$(MANSUFFIX)

#if BuildRfioClient
#if _WIN32
CLIENT = LibraryTargetName(rfio) ProgramTargetName(rfcp) ProgramTargetName(rfstat)
IPROGC = FileName($(BIN),ProgramTargetName(rfcp)) \
	 FileName($(BIN),ProgramTargetName(rfstat))
EPROGC = $(EXPORTBIN)/rfcp $(EXPORTBIN)/rfstat 
#else
CLIENT = LibraryTargetName(rfio) ProgramTargetName(rfcp) ProgramTargetName(rfstat) ProgramTargetName(rfrm) ProgramTargetName(rfdir) ProgramTargetName(rfmkdir) ProgramTargetName(rfrename)
IPROGC = FileName($(BIN),ProgramTargetName(rfcp)) \
	 FileName($(BIN),ProgramTargetName(rfstat)) \
	 FileName($(BIN),ProgramTargetName(rfrm)) \
	 FileName($(BIN),ProgramTargetName(rfdir)) \
	 FileName($(BIN),ProgramTargetName(rfrename)) \
	 FileName($(BIN),ProgramTargetName(rfmkdir))
EPROGC = $(EXPORTBIN)/rfcp $(EXPORTBIN)/rfstat $(EXPORTBIN)/rfrm $(EXPORTBIN)/rfdir $(EXPORTBIN)/rfmkdir $(EXPORTBIN)/rfrename
#endif
#endif
#if BuildRfioServer
SERVER = ProgramTargetName(rfiod)
IPROGS = FileName($(BIN),ProgramTargetName(rfiod))
EPROGS = $(EXPORTBIN)/rfiod
#endif

SRVOBJS = $(NTSERVICEO) rfio_serv.Osuf rfio_calls.Osuf rfio_fcalls.Osuf switch_req.Osuf \
		checkkey.Osuf $(FIOO) $(CRAYFORTRANO) rfstatfs.Osuf alrm.Osuf \
		rfioacct.Osuf

RFIOLIB_OBJS = access.Osuf alrm.Osuf checkkey.Osuf chmod.Osuf chown.Osuf close.Osuf \
		closedir.Osuf connect.Osuf error.Osuf fclose.Osuf feof.Osuf \
		ferror.Osuf fflush.Osuf $(FIOO) fopen.Osuf $(CRAYFORTRANO) \
		fread.Osuf fstat.Osuf fwrite.Osuf fseek.Osuf lockf.Osuf \
		$(LOGGINGO) lseek.Osuf lstat.Osuf lun2fn.Osuf misc.Osuf \
		mkdir.Osuf mstat.Osuf open.Osuf opendir.Osuf parse.Osuf  \
		pclose.Osuf popen.Osuf pread.Osuf preseek.Osuf pwrite.Osuf \
		read.Osuf readdir.Osuf readlink.Osuf rename.Osuf rewinddir.Osuf \
		rfstatfs.Osuf rmdir.Osuf setopt.Osuf stat.Osuf statfs.Osuf stream.Osuf \
		switch_req.Osuf symlink.Osuf write.Osuf xyclose.Osuf xyopen.Osuf \
		xyread.Osuf xywrite.Osuf

all:    $(CLIENT) $(SERVER) $(DUMPLOG)

#if BuildRfioServer
install: $(BIN) $(IPROGC) $(IPROGS) $(SPOOL) $(DUMPINSTALL)
#else
install: $(BIN) $(IPROGC) $(IPROGS) $(DUMPINSTALL)
#endif

export: $(EPROGS) $(EPROGC)

exportman: $(EXPORTMANPAGES)

exportshr:

NormalLibraryTarget(rfio,$(RFIOLIB_OBJS))

#if BuildHpssServer
NormalProgramTarget(rfiod,$(SRVOBJS),DepLibraryTargetName(common,common) \
 DepLibraryTargetName(hpss,rfio_hpss), \
 $(LDLIBS) $(HPSSLIBS))
#else
NormalProgramTarget(rfiod,$(SRVOBJS),DepLibraryTargetName(common,common), \
 $(RTFLAGS) $(RTLIBS) $(LDLIBS))
#endif

#if defined(__osf__) && defined(__alpha) && (OSMajorVersion == 4)
#if RFIODaemonRealTime
rfio_calls.Osuf: rfio_calls.c
	$(CC) $(CFLAGS) -DRFIODaemonRealTime -c rfio_calls.c
#endif
#endif
#if _WIN32
service.c:	..\win32\service.c
	RemoveFile(service.c)
	copy ..\win32\service.c service.c
#endif

NormalProgramTarget(dump_log,dump_log.Osuf,DepLibraryTargetName(common,common), \
 $(LDLIBS))

#if BuildHpssClient
NormalProgramTarget(rfcp,rfcp.Osuf, \
 LibraryTargetName(rfio) DepLibraryTargetName(common,common) DepLibraryTargetName(hpss,hpss_common), \
 $(RFIOLIB) $(HPSSCLIBS) $(LDLIBS))
#else
NormalProgramTarget(rfcp,rfcp.Osuf, \
 LibraryTargetName(rfio) DepLibraryTargetName(common,common),$(RFIOLIB) $(LDLIBS))
#endif

NormalProgramTarget(rfstat,rfstat.Osuf, \
 LibraryTargetName(rfio) DepLibraryTargetName(common,common),$(RFIOLIB) $(LDLIBS))

NormalProgramTarget(rfrm,rfrm.Osuf, \
 LibraryTargetName(rfio) DepLibraryTargetName(common,common),$(RFIOLIB) $(LDLIBS))

NormalProgramTarget(rfdir,rfdir.Osuf, \
 LibraryTargetName(rfio) DepLibraryTargetName(common,common),$(RFIOLIB) $(LDLIBS))

NormalProgramTarget(rfmkdir,rfmkdir.Osuf, \
 LibraryTargetName(rfio) DepLibraryTargetName(common,common),$(RFIOLIB) $(LDLIBS))

NormalProgramTarget(rfrename,rfrename.Osuf, \
 LibraryTargetName(rfio) DepLibraryTargetName(common,common),$(RFIOLIB) $(LDLIBS))

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

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

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

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

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

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

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

InstallProgram(dump_log,$(BIN),root,bin,755)

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

install.man: $(MANDIR) $(MANPAGES)

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

IMANPAGE(rfiod,$(MANDIR),$(MANSUFFIX))
IMANPAGE(rfcp,$(MANDIR),$(MANSUFFIX))
IMANPAGE(rfdir,$(MANDIR),$(MANSUFFIX))
IMANPAGE(rfmkdir,$(MANDIR),$(MANSUFFIX))
IMANPAGE(rfrename,$(MANDIR),$(MANSUFFIX))
IMANPAGE(rfrm,$(MANDIR),$(MANSUFFIX))
EMANPAGE(rfiod,$(EXPORTMAN)/man1,$(MANSUFFIX))
EMANPAGE(rfcp,$(EXPORTMAN)/man1,$(MANSUFFIX))
EMANPAGE(rfdir,$(EXPORTMAN)/man1,$(MANSUFFIX))
EMANPAGE(rfmkdir,$(EXPORTMAN)/man1,$(MANSUFFIX))
EMANPAGE(rfrename,$(EXPORTMAN)/man1,$(MANSUFFIX))
EMANPAGE(rfrm,$(EXPORTMAN)/man1,$(MANSUFFIX))

clean:
	@echo cleaning in CurDir
	-@RemoveFiles(FilesToClean $(CRAYFORTRANF))

clobber:        clean
	@echo clobbering in CurDir
	-@RemoveFiles(ProgramTargetName(rfcp) ProgramTargetName(rfstat))
	-@RemoveFiles(ProgramTargetName(rfrm) ProgramTargetName(rfdir))
	-@RemoveFiles(ProgramTargetName(rfmkdir) ProgramTargetName(rfrename))
	-@RemoveFiles(ProgramTargetName(rfiod) $(DUMPLOG))

Makefiles:

MakeDepLibrary(common,common)
#if BuildHpssServer
MakeDepLibrary(hpss,rfio_hpss)
#endif
#if BuildHpssClient
MakeDepLibrary(hpss,hpss_common)
#endif

FORCE:

COMM
COMM Dependencies
COMM
open.Osuf stream.Osuf: $(INCLUDES)/rfio.h $(INCLUDES)/rfcntl.h $(INCLUDES)/osdep.h $(INCLUDES)/marshall.h

checkkey.Osuf close.Osuf closedir.Osuf connect.Osuf error.Osuf fclose.Osuf feof.Osuf \
ferror.Osuf fflush.Osuf fopen.Osuf fread.Osuf fstat.Osuf fwrite.Osuf fseek.Osuf \
lseek.Osuf lstat.Osuf lun2fn.Osuf mstat.Osuf opendir.Osuf parse.Osuf popen.Osuf pread.Osuf \
preseek.Osuf pwrite.Osuf read.Osuf readdir.Osuf rewinddir.Osuf rfstatfs.Osuf \
stat.Osuf symlink.Osuf write.Osuf xyclose.Osuf xyopen.Osuf xyread.Osuf \
xywrite.Osuf: \
$(INCLUDES)/rfio.h $(INCLUDES)/osdep.h $(INCLUDES)/marshall.h

rfio_calls.Osuf: $(INCLUDES)/rfio.h $(INCLUDES)/rfcntl.h $(INCLUDES)/log.h

rfio_serv.Osuf rfio_fcalls.Osuf: $(INCLUDES)/rfio.h $(INCLUDES)/log.h

rfcp.Osuf rfstat.Osuf: $(INCLUDES)/rfio.h

rfrm.Osuf rfdir.Osuf: $(INCLUDES)/rfio.h

rfmkdir.Osuf rfrename.Osuf: $(INCLUDES)/rfio.h

switch_req.Osuf: $(INCLUDES)/rfio.h $(INCLUDES)/osdep.h $(INCLUDES)/log.h
