#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.2.1.1 95/10/11 10:32:55 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)

LIBS =	${LIBVOL} \
	${LIBVV} \
	${LIBUTIL} \
	${LIBRPC2} \
	${LIBSE} \
	${LIBRDS} \
	${LIBSEG} \
	${LIBRVMLWP} \
	${LIBOLDLWP} \
	${LIBSYSENT} \
	-lmach -lm -lcs


# Keep these in alphabetical order, and 1 per line for easy
# comparison with ls output 
CFILES=	dumpstuff.c \
	listinodes.c \
	parserecdump.c\
	physio.c \
	readstuff.c \
	vol-ancient.c \
	vol-backup.c \
	vol-clone.c \
	vol-create.c \
	vol-dump.c \
	vol-dumpmem.c  \
	vol-elapse.c \
	vol-info.c \
	vol-lock.c \
	vol-lookup.c   \
	vol-makevldb.c \
	vol-makevrdb.c \
	vol-maxid.c \
	vol-peekpoke.c \
	vol-purge.c \
	vol-restore.c \
	vol-rvmsize.c  \
	vol-salvage.c \
	vol-setlogparms.c  \
	vol-setvv.c \
	vol-showvnode.c \
	vol-timing.c \
	vol-tracerpc.c\
	vol-printstats.c\
	vol-showcallbacks.c\
	vol-rvmtrunc.c\
	volclient.c \
	volutil.c \
	vvlist.c


HFILES= voldump.h volutil.h \
	dump.h dumpstream.h vol-dumprecstore.h vol-rcvheap.h volutil.private.h vvlist.h \
	${INCLDIR}/srv.h ${INCLDIR}/errors.h \
	${INCLDIR}/srvsignal.h ${INCLDIR}/fssync.h ${INCLDIR}/index.h \
	${INCLDIR}/nfs.h ${INCLDIR}/partition.h ${INCLDIR}/recov.h \
	${INCLDIR}/viceinode.h ${INCLDIR}/vldb.h ${INCLDIR}/cvnode.h \
	${INCLDIR}/voldefs.h ${INCLDIR}/volinodes.h ${INCLDIR}/volume.h


LOCALOBJS=readstuff.o dumpstuff.o vvlist.o

# Keep these in alphabetical order, and 1 per line for easy
# comparison with ls output 
VOLUTILOBJS = \
	listinodes.o \
	physio.o \
	vol-ancient.o \
	vol-backup.o \
	vol-clone.o \
	vol-create.o \
	vol-dump.o \
	vol-dumpmem.o \
	vol-elapse.o \
	vol-info.o \
	vol-lock.o \
	vol-lookup.o \
	vol-makevldb.o \
	vol-makevrdb.o \
	vol-maxid.o \
	vol-peekpoke.o \
	vol-purge.o \
	vol-restore.o \
	vol-rvmsize.o \
	vol-salvage.o \
	vol-setvv.o \
	vol-setlogparms.o \
	vol-showvnode.o \
	vol-timing.o \
	vol-tracerpc.o\
	vol-printstats.o\
	vol-showcallbacks.o\
	vol-rvmtrunc.o\
	volutil.o \
	${LOCALOBJS}

VOLCLIENTOBJS=volclient.o volutil.client.o voldump.server.o

OBJS=${VOLUTILOBJS} ${VOLCLIENTOBJS}


all:	libvolutil.a volutil parserecdump backup readdump merge

libvolutil.a:	${VOLUTILOBJS} volutil.server.o voldump.client.o
	-rm -f libvolutil.a
	ar rv libvolutil.a ${VOLUTILOBJS} volutil.server.o voldump.client.o
	ranlib libvolutil.a

parserecdump:	parserecdump.c vol-dumprecstore.h

local.a: ${LOCALOBJS}
	ar u local.a ${LOCALOBJS}
	ranlib local.a

${OBJS}: ${HFILES}
${LOCALOBJS}: ${HFILES}

.c.o:
	$(CC) $(CFLAGS) -c $*.c

volutil.h volutil.client.c volutil.server.c: $(VOLUTIL_RPC2)
	${RP2GEN} ${RP2FLAGS} -n $(VOLUTIL_RPC2)

voldump.h voldump.client.c voldump.server.c: $(VOLDUMP_RPC2)
	${RP2GEN} ${RP2FLAGS} -n $(VOLDUMP_RPC2)

vol-create.o: volutil.private.h 

vol-newvldb: vol-newvldb.sh

volutil:    ${VOLCLIENTOBJS}
	${CC} $(CFLAGS) $(LIBFLAGS) -o volutil $> ${LIBS} 

merge: merge.o dumpstream.o dumpstuff.o
	$(CC) $(CFLAGS) $(LIBFLAGS) -o merge $> ${LIBS}

backup: backup.o volutil.client.o voldump.server.o
	$(CC) $(CFLAGS) $(LIBFLAGS) -o backup $> ${LIBS}

readdump: readdump.o dumpstream.o dumpstuff.o
	$(CC) $(CFLAGS) $(LIBFLAGS) -o readdump $> ${LIBS}

libinstall: all
	-chmod 0644 ${LIBVOLUTIL}
	${INSTALL} libvolutil.a ${LIBVOLUTIL}

bininstall: volutil parserecdump merge backup readdump
	-chmod 0755 ${BINDIR}/volutil ${BINDIR}/parserecdump ${BINDIR}/merge \
			${BINDIR}/backup ${BINDIR}/readdump
	${INSTALL} $> ${BINDIR}

hdrinstall: volutil.private.h 
	-chmod 0644 ${INCLDIR}/volutil.private.h
	${INSTALL} $> ${INCLDIR}

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


install: libinstall bininstall hdrinstall srcinstall
