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

all : server1 lock_demo lock_tester

server1 : server1.o lock_server.o lock_proto.o
	$(CXX) $(CFLAGS) -o server1 server1.o lock_server.o lock_proto.o $(LIBS)

server1.o : server1.C lock_server.h
	$(CXX) $(CFLAGS) -c server1.C

lock_server.o : lock_server.C lock_server.h lock_proto.h
	$(CXX) $(CFLAGS) -c lock_server.C

lock_tester : lock_tester.o lock_client.o lock_proto.o
	$(CXX) $(CFLAGS) -o lock_tester lock_tester.o lock_client.o lock_proto.o $(LIBS)

lock_tester.o : lock_tester.C lock_client.h
	$(CXX) $(CFLAGS) -c lock_tester.C

lock_client.o : lock_client.C lock_client.h lock_proto.h
	$(CXX) $(CFLAGS) -c lock_client.C

lock_proto.o : lock_proto.C lock_proto.h
	$(CXX) $(CFLAGS) -c lock_proto.C

lock_proto.h lock_proto.C : lock_proto.x
	$(SFSROOT)/bin/rpcc -c lock_proto.x
	$(SFSROOT)/bin/rpcc -h lock_proto.x

lock_demo : lock_demo.o lock_client.o lock_proto.o
	$(CXX) $(CFLAGS) -o lock_demo lock_demo.o lock_client.o lock_proto.o $(LIBS)

lock_demo.o : lock_demo.C lock_client.h
	$(CXX) $(CFLAGS) -c lock_demo.C

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

clean:
	rm -f *.o server1 lock_tester lock_demo lock_proto.C lock_proto.h *.core
