#ifndef _BLURB_
#define _BLURB_
#/*
#
#            Coda: an Experimental Distributed File System
#                             Release 3.1
#
#          Copyright (c) 1987-1995 Carnegie Mellon University
#                         All Rights Reserved
#
#Permission  to  use, copy, modify and distribute this software and its
#documentation is hereby granted,  provided  that  both  the  copyright
#notice  and  this  permission  notice  appear  in  all  copies  of the
#software, derivative works or  modified  versions,  and  any  portions
#thereof, and that both notices appear in supporting documentation, and
#that credit is given to Carnegie Mellon University  in  all  documents
#and publicity pertaining to direct or indirect use of this code or its
#derivatives.
#
#CODA IS AN EXPERIMENTAL SOFTWARE SYSTEM AND IS  KNOWN  TO  HAVE  BUGS,
#SOME  OF  WHICH MAY HAVE SERIOUS CONSEQUENCES.  CARNEGIE MELLON ALLOWS
#FREE USE OF THIS SOFTWARE IN ITS "AS IS" CONDITION.   CARNEGIE  MELLON
#DISCLAIMS  ANY  LIABILITY  OF  ANY  KIND  FOR  ANY  DAMAGES WHATSOEVER
#RESULTING DIRECTLY OR INDIRECTLY FROM THE USE OF THIS SOFTWARE  OR  OF
#ANY DERIVATIVE WORK.
#
#Carnegie  Mellon  encourages  users  of  this  software  to return any
#improvements or extensions that  they  make,  and  to  grant  Carnegie
#Mellon the rights to redistribute these changes without encumbrance.
#*/
#
#static char *rcsid = "$Header: Makefile,v 3.4.1.1 95/10/11 10:24:15 raiff Exp $";
#endif /*_BLURB_*/

#/*
#
#                         IBM COPYRIGHT NOTICE
#
#                          Copyright (C) 1986
#             International Business Machines Corporation
#                         All Rights Reserved
#
#This  file  contains  some  code identical to or derived from the 1986
#version of the Andrew File System ("AFS"), which is owned by  the  IBM
#Corporation.    This  code is provded "AS IS" and IBM does not warrant
#that it is free of infringement of  any  intellectual  rights  of  any
#third  party.    IBM  disclaims  liability of any kind for any damages
#whatsoever resulting directly or indirectly from use of this  software
#or  of  any  derivative work.  Carnegie Mellon University has obtained
#permission to distribute this code, which is based on Version 2 of AFS
#and  does  not  contain the features and enhancements that are part of
#Version 3 of AFS.  Version 3 of  AFS  is  commercially  available  and
#supported by Transarc Corporation, Pittsburgh, PA.
#
#*/

# Which C compiler to use
CC = $(CC?$(CC):CC)
cc = $(PLAINC?$(PLAINC):cc)

#Turn off data collection
CFLAGS = $(CFLAGS) -DVENUS -DTIMING -DDISABLE_VMON -DVENUSDEBUG -DRVM_USELWP
#CFLAGS = $(CFLAGS) -DVENUS -DTIMING -DVENUSDEBUG -DRVM_USELWP 

MACHLIBS = -lmach

LIBS=	$(LIBUTIL)\
	$(LIBRDS)\
	$(LIBSEG)\
	$(LIBRVMLWP)\
	$(LIBOLDLWP)\
	$(LIBRPC2)\
	$(LIBSE)\
	$(LIBFAIL)\
	$(LIBSYSENT)\
	$(LIBVV)\
	$(DIR_O)\
	$(LIBRPCLIB)\
	$(LIBTRACE)

HEADERS=	vice.h			\
		mond.h			\
		admon.h			\
		adsrv.h			\
		callback.h		\
		$(INCLDIR)/rpc2.h	\
		$(INCLDIR)/se.h		\
		$(INCLDIR)/timer.h 	\
		$(INCLDIR)/auth2.h	\
		$(INCLDIR)/fail.h	\
		$(INCLDIR)/fcon.h

CFILES= advice.c advice_daemon.c binding.c comm.c comm_daemon.c compress.c daemon.c fso0.c fso1.c fso_cachefile.c fso_cfscalls0.c fso_cfscalls1.c fso_cfscalls2.c fso_daemon.c fso_dir.c hdb.c hdb_daemon.c local_cml.c local_daemon.c local_fso.c local_subtree.c local_repair.c local_vol.c mariner.c venusrecov.c sighand.c simulate.c user.c venusutil.c venus.c venuscb.c venusvm.c venusvol.c vol_daemon.c vol_cml.c vol_reintegrate.c vol_repair.c vol_resolve.c vol_vcb.c vol_vsr.c vol_COP2.c vproc.c vproc_pathname.c vproc_pioctl.c vproc_vfscalls.c worker.c

HFILES= advice.h adviceconn.h advice_daemon.h binding.h comm.h fso.h hdb.h local.h mariner.h venusrecov.h sighand.h simulate.h user.h venuscb.h venusstats.h venusvm.h venus.private.h venusvol.h vproc.h worker.h

VOBJS = advice.o advice_daemon.o admon.client.o adsrv.server.o binding.o callback.server.o comm.o comm_daemon.o compress.o daemon.o fso0.o fso1.o fso_cachefile.o fso_cfscalls0.o fso_cfscalls1.o fso_cfscalls2.o fso_daemon.o fso_dir.o hdb.o hdb_daemon.o local_cml.o local_daemon.o local_fso.o local_subtree.o local_repair.o local_vol.o mariner.o venusrecov.o sighand.o simulate.o user.o venusutil.o venus.o venuscb.o venusvm.o vice.client.o vice.multi.o mond.client.o venusvol.o vol_daemon.o vol_cml.o vol_reintegrate.o vol_repair.o vol_resolve.o vol_vcb.o vol_vsr.o vol_COP2.o vproc.o vproc_pathname.o vproc_pioctl.o vproc_vfscalls.o worker.o

all: venus

venus:  ${VOBJS} dummy.o $(LIBS) 
	$(CC) ${CFLAGS} $(LIBFLAGS) -o venus ${VOBJS} dummy.o $(LIBS) $(MACHLIBS) -lm -lsys

# When the new plumber works it should be linked in here too.
venus.plumber:  ${VOBJS} $(LIBPLUMBER) $(LIBS) 
	$(CC) ${CFLAGS} $(LIBFLAGS) -o venus.plumber ${VOBJS} $(LIBPLUMBER) $(LIBS) $(MACHLIBS) -lm -lsys

callback.server.c callback.h: $(CALLBACK_RPC2)
	${RP2GEN} -n $(RP2FLAGS) ${CALLBACK_RPC2}

vice.client.c vice.multi.c vice.h: $(VICE_RPC2)
	${RP2GEN} -n $(RP2FLAGS) $(VICE_RPC2)

mond.client.c mond.h: $(MOND_RPC2)
	${RP2GEN} -n $(RP2FLAGS) $(MOND_RPC2)

admon.client.c admon.h: $(ADMON_RPC2)
	${RP2GEN} -n $(RP2FLAGS) $(ADMON_RPC2)

adsrv.server.c adsrv.h: $(ADSRV_RPC2)
	${RP2GEN} -n $(RP2FLAGS) $(ADSRV_RPC2)

advice.o: advice.c advice.h admon.h adsrv.h adviceconn.h mond.h

advice_daemon.o: advice_daemon.c adsrv.h admon.h adviceconn.h mond.h

binding.o: binding.c binding.h

comm.o: comm.c comm.h venus.private.h fso.h mariner.h simulate.h\
	user.h vproc.h venusvm.h venusvol.h worker.h $(HEADERS) 

comm_daemon.o: comm_daemon.c comm.h venus.private.h venusrecov.h\
	vproc.h simulate.h $(HEADERS)

compress.o: compress.c
	cc $(CFLAGS) -c compress.c -o compress.o

daemon.o: daemon.c vproc.h venus.private.h venusvol.h $(INCLDIR)/cfs/cfs.h $(HEADERS)

fso0.o: fso0.c advice.h advice_daemon.h comm.h fso.h hdb.h local.h\
	mariner.h simulate.h user.h venus.private.h venusvol.h\
	vproc.h worker.h $(HEADERS)

fso1.o: fso1.c advice.h comm.h fso.h local.h mariner.h simulate.h user.h \
	venusrecov.h venus.private.h venusvol.h vproc.h worker.h \
	$(INCLDIR)/venusioctl.h $(INCLDIR)/cfs/cfs.h $(HEADERS)

fso_cachefile.o: fso_cachefile.c fso.h venus.private.h $(HEADERS)

fso_cfscalls0.o: fso.h fso_cfscalls0.c venus.private.h comm.h\
	mariner.h venuscb.h vproc.h venusvol.h worker.h $(INCLDIR)/cfs/cfs.h $(HEADERS)

fso_cfscalls1.o: fso.h fso_cfscalls1.c venus.private.h comm.h\
	mariner.h venuscb.h vproc.h venusvol.h worker.h $(INCLDIR)/cfs/cfs.h $(HEADERS)

fso_cfscalls2.o: fso.h fso_cfscalls2.c venus.private.h local.h comm.h\
	mariner.h venuscb.h vproc.h venusvol.h worker.h $(INCLDIR)/cfs/cfs.h $(HEADERS)

fso_daemon.o: fso.h fso_daemon.c venus.private.h mariner.h simulate.h\
	vproc.h $(HEADERS)

fso_dir.o: fso.h fso_dir.c venus.private.h local.h\
	venusrecov.h simulate.h $(HEADERS)

hdb.o: hdb.c advice_daemon.h adviceconn.h advice.h fso.h hdb.h \
	mariner.h simulate.h user.h venus.private.h vproc.h \
	venusvol.h worker.h $(INCLDIR)/dir.h $(HEADERS)

hdb_daemon.o: hdb_daemon.c hdb.h venus.private.h vproc.h $(HEADERS)

local_cml.o: local.h venus.private.h fso.h venusvol.h vproc.h $(HEADERS)

local_daemon.o: local.h venus.private.h venusrecov.h vproc.h $(HEADERS)

local_fso.o: local.h venuscb.h venusrecov.h venusvol.h venus.private.h\
	fso.h $(HEADERS)

local_repair.o: local.h venusvol.h venus.private.h fso.h vproc.h $(HEADERS)

local_subtree.o: local.h venusrecov.h fso.h venusvol.h $(HEADERS)

local_vol.o: local.h venusvol.h $(HEADERS)

mariner.o: mariner.c mariner.h venus.private.h comm.h fso.h simulate.h\
	user.h venuscb.h vproc.h venusvol.h worker.h $(HEADERS)

venusrecov.o: venusrecov.c venusrecov.h venus.private.h local.h\
	fso.h hdb.h mariner.h worker.h $(HEADERS)

sighand.o: sighand.c sighand.h venus.private.h comm.h venusrecov.h\
	worker.h mariner.h $(HEADERS)

simulate.o: simulate.c simulate.h venus.private.h fso.h venusrecov.h\
	vproc.h $(HEADERS)

user.o: user.c user.h venus.private.h comm.h hdb.h mariner.h\
	worker.h $(HEADERS)

venusutil.o: venusutil.c venus.private.h comm.h fso.h hdb.h mariner.h\
	venusrecov.h simulate.h user.h venuscb.h venusrecov.h\
	venusstats.h venusvm.h vproc.h venusvol.h worker.h $(INCLDIR)/cfs/cfs.h $(HEADERS)

venus.o: venus.c venus.private.h local.h fso.h comm.h hdb.h mariner.h\
	simulate.h vproc.h venusvol.h vstab.h sighand.h user.h\
	venuscb.h venusvm.h advice_daemon.h $(HEADERS)

venuscb.o: venuscb.c comm.h mariner.h venuscb.h venus.private.h $(HEADERS)

venusvm.o: venusvm.c venusvm.h venus.private.h callback.h mond.h\
	mariner.h simulate.h vproc.h venusrecov.h $(HEADERS)

vice.client.o: vice.client.c vice.h

vice.multi.o: vice.multi.c vice.h

mond.client.o: mond.client.c mond.h

venusvol.o: venusvol.c venusvol.h venus.private.h local.h comm.h\
	fso.h mariner.h venusrecov.h simulate.h user.h\
	vproc.h venuscb.h $(HEADERS)

vol_cml.o: vol_cml.c fso.h local.h mariner.h venuscb.h \
        venus.private.h venusvol.h vproc.h $(HEADERS)

vol_daemon.o: vol_daemon.c venusvol.h venus.private.h local.h \
	simulate.h vproc.h $(HEADERS)

vol_reintegrate.o: vol_reintegrate.c venusvol.h comm.h fso.h mariner.h \
	venus.private.h vice.h vproc.h user.h local.h advice_daemon.h $(HEADERS)

vol_repair.o: vol_repair.c venusvol.h venus.private.h local.h\
	comm.h fso.h mariner.h vproc.h worker.h $(HEADERS)

vol_resolve.o: vol_resolve.c venusvol.h venus.private.h comm.h\
	fso.h mariner.h vproc.h $(HEADERS)

vol_vcb.o: vol_vcb.c venusvol.h venus.private.h comm.h fso.h\
	mariner.h venuscb.h vproc.h $(HEADERS)

vol_vsr.o: vol_vsr.c venusvol.h venus.private.h venusvm.h\
	vice.h mond.h mariner.h local.h $(HEADERS)

vol_COP2.o: vol_COP2.c venusvol.h venus.private.h comm.h\
	mariner.h $(HEADERS)

vproc.o: vproc.c vproc.h venus.private.h local.h venusrecov.h\
	user.h venusvol.h 

vproc_pathname.o: vproc.h vproc_pathname.c venus.private.h\
	venusrecov.h venusvol.h

vproc_pioctl.o: vproc.h vproc_pioctl.c venus.private.h local.h \
	vproc.h fso.h hdb.h user.h venusstats.h venusvol.h \
	$(INCLDIR)/venusioctl.h $(HEADERS)

vproc_vfscalls.o: vproc.h vproc_vfscalls.c venus.private.h vproc.h\
	fso.h hdb.h local.h worker.h $(INCLDIR)/cfs/cfs.h

worker.o: worker.c worker.h venus.private.h comm.h fso.h mariner.h\
	simulate.h venuscb.h venusstats.h venusvol.h vproc.h\
	 worker.h $(INCLDIR)/cfs/cfs.h $(HEADERS)

clean:
	-rm -rf *.o venus venus.plumber vice.h mond.h callback.h vice.client.c mond.client.c callback.server.c vice.server.c mond.server.c callback.client.c admon.client.c admon.h admon.multi.c admon.server.c adsrv.client.c adsrv.h adsrv.multi.c adsrv.server.c callback.multi.c mond.multi.c vice.multi.c

bininstall: venus
	-chmod 0755 ${BINDIR}/venus
	${INSTALL} venus ${BINDIR}

hdrinstall: advice.h hdb.h
	-chmod 0644 ${INCLDIR}/advice.h
	-chmod 0644 ${INCLDIR}/hdb.h
	${INSTALL} $> ${INCLDIR}

srcinstall:
# Manually setenv SUPPRESS_ALPHACI if you want to suppress the RCS checkin by alphaci
	SRCDIR=$(SRCDIR); export SRCDIR; $(ALPHACI)

install: bininstall hdrinstall srcinstall

