CXX = g++
SFSROOT := /u/6.824
RPCC=$(SFSROOT)/bin/rpcc
CFLAGS = -g -I. -I$(SFSROOT)/include/sfs -I$(SFSROOT)/include -I/usr/local/include -Wall -Werror -Wno-unused
CXXFLAGS := $(CFLAGS)
LIBS = -L$(SFSROOT)/lib -L$(SFSROOT)/lib/sfs -L/usr/local/lib -lclassfs -lsfsmisc -lsvc -lsfscrypt -larpc -lasync -lgmp -ldmalloc

all : blockdbd ccfs

blockdbd : blockdbd.o blockdb.o block_proto.o
	$(CXX) $(CFLAGS) -o blockdbd blockdbd.o blockdb.o block_proto.o $(LIBS)

blockdbd.o : blockdbd.C blockdb.h block_proto.h
blockdb.o : blockdb.C blockdb.h block_proto.h
blockdbc.o : blockdbc.C blockdbc.h block_proto.h

block_proto.h block_proto.C : block_proto.x
	$(RPCC) -c block_proto.x ; $(RPCC) -h block_proto.x

ccfs : ccfs.o blockdbc.o block_proto.o fs.o fsrep.o
	$(CXX) $(CFLAGS) -o ccfs ccfs.o blockdbc.o block_proto.o fs.o $(LIBS)

ccfs.o : ccfs.C blockdb.h block_proto.h fs.h
fs.o : fs.C blockdb.h block_proto.h fs.h fsrep.h
fsrep.h fsrep.C : fsrep.x
	$(RPCC) -c fsrep.x ; $(RPCC) -h fsrep.x

handin:
	tar czf lab-2-handin.tgz *.[Cchx] Makefile
	chmod og= lab-2-handin.tgz

clean:
	rm -f *.o ccfs blockdbd block_proto.C block_proto.h fsrep.C fsrep.h *.core
