#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.3.2.1 95/10/11 10:08:12 raiff Exp $";
#endif /*_BLURB_*/





SCYLLADIR=/afs/cs.cmu.edu/misc/scylla/@sys/omega
ESQL=$(SCYLLADIR)/bin/esql

CC = $(CC?$(CC):CC)
cc = $(PLAINC?$(PLAINC):cc)

CFLAGS= $(CFLAGS) -DVERSION_CONTROL -DMOND -I$(SCYLLADIR)/incl

RPCLIBS= $(LIBRPC2) $(LIBOLDLWP)

LIBS= $(LIBUTIL)

MACHLIBS= -lmach

SCYLLALIBS=$(SCYLLADIR)/lib/libsql.a		\
	$(SCYLLADIR)/lib/libutil.a		\
	$(SCYLLADIR)/lib/librds.a

# Headers generated by rp2gen
RPC2HEADERS= mond.h

# Headers from the rpc2/lwp package
HEADERS= $(INCLDIR)/lwp.h	\
	  $(INCLDIR)/rpc2.h     \
	  $(INCLDIR)/lock.h

MONDOBJS= bbuf.o data.o mond.server.o vargs.o mond.o wind.o version.o mondutil.o
MONDMONOBJS= mondmon.o
PARSELOGOBJS= parselog.o datalog.o
GRABOBJS= grab.o wind.o data.o vargs.o
UNWINDOBJS= unwind.o db.o vargs.o datalog.o
ADVICEUNWINDOBJS= advice_unwind.o db.o vargs.o advice_parser.o

all: mond mondmon parselog unwind sqlunlock advice_unwind

mondmon.o: mondmon.c

mondmon: mondmon.o
	${CC} ${CFLAGS} -o mondmon ${MONDMONOBJS} ${LIBS}

mond: ${MONDOBJS} ${HEADERS} ${RPC2HEADERS} dummy.o
	${CC} ${CFLAGS} $(LIBFLAGS) -o mond ${MONDOBJS} ${RPCLIBS} ${LIBS} ${MACHLIBS} dummy.o

mond.plumber: ${MONDOBJS} ${HEADERS} ${RPC2HEADERS} ${LIBPLUMBER} ${LIBNEWPLUMBER}
	${CC} ${CFLAGS} $(LIBFLAGS) -o mond.plumber ${MONDOBJS} ${RPCLIBS} ${LIBS} ${MACHLIBS} ${LIBPLUMBER} ${LIBNEWPLUMBER}

unwind: ${UNWINDOBJS} ${HEADERS} ${SCYLLALIBS} ${RPCLIBS} ${LIBS}
	${CC} ${CFLAGS} $(LIBFLAGS) -o unwind ${UNWINDOBJS} ${SCYLLALIBS} ${RPCLIBS} ${LIBS} ${MACHLIBS}

advice_unwind: ${ADVICEUNWINDOBJS} ${HEADERS} ${SCYLLALIBS} ${RPCLIBS} ${LIBS} 
	${CC} ${CFLAGS} $(LIBFLAGS) -o advice_unwind ${ADVICEUNWINDOBJS} ${SCYLLALIBS} ${RPCLIBS} ${LIBS} ${MACHLIBS}

parselog: ${PARSELOGOBJS} ${HEADERS} ${LIBS}
	${CC} ${CFLAGS} -o parselog ${PARSELOGOBJS} ${LIBS}

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

advice_parser.o: advice_parser.c advice_parser.h

advice_unwind.o: advice_unwind.c mondgen.h mond.h advice_parser.h db.h vargs.h datalog.h

bbuf.o: mondgen.h bbuf.c data.h mond.h ${HEADERS}

data.o: data.h mondgen.h mond.h ${INCLDIR}/lock.h

db.o: data.h mondgen.h db.h db.ec ${HEADERS} ${RPC2HEADERS} 
	${ESQL} ${CFLAGS} -e db.ec
	${cc} ${CFLAGS} -c db.c

mond.o: mond.c data.h bbuf.h mondgen.h mond.h version.h mondutil.h ${HEADERS} ${RPC2HEADERS}

mondutil.o: mond.h mondgen.h mondutil.h

sqlunlock: sqlunlock.c
	${CC} ${CFLAGS} -o sqlunlock sqlunlock.c

unwind.o: unwind.c db.h ${HEADERS}

version.o: version.h mond.h $(INCLDIR)/util.h $(INCLDIR)/olist.h $(INCLDIR)/ohash.h

wind.o: data.h mondgen.h mond.h wind.c ${HEADERS}

parselog.o: ${HEADERS} mond.h mondgen.h $(INCLDIR)/util.h datalog.h

datalog.o: ${HEADERS} mond.h mondgen.h $(INCLDIR)/util.h datalog.h vargs.h

clean:
	rm -f *.o mond mondmon parselog sqlunlock unwind advice_unwind db.c mond.h \
		*.client.c *.server.c *.multi.c

bininstall:
	-chmod 0755 ${BINDIR}/mond ${BINDIR}/mondmon ${BINDIR}/parselog \
	            ${BINDIR}/sqlunlock ${BINDIR}/unwind ${BINDIR}/advice_unwind
	${INSTALL} mond mondmon parselog sqlunlock unwind advice_unwind ${BINDIR}

srcinstall: trunclog.sh
	SRCDIR=$(SRCDIR); export SRCDIR; $(ALPHACI)
	-chmod 0755 ${BINDIR}/trunclog.sh
	${INSTALL} trunclog.sh ${BINDIR}

install: all bininstall srcinstall
