# CS110 parallel bfs
PROGS = maze_fork
EXTRA_PROGS =
CXX = /usr/bin/g++-5

LIB_SRC = 

WARNINGS = -Wall -pedantic -Wno-unused-function -Wno-vla -Wno-sign-compare
DEPS = -MMD -MF $(@:.o=.d)
DEFINES = 
INCLUDES = -I/afs/ir/class/cs110/local/include

CXXFLAGS = -g $(WARNINGS) -O0 -std=c++0x $(DEFINES) $(INCLUDES)
LDFLAGS = -L/usr/class/cs110/local/lib/

LIB_OBJ = $(patsubst %.cc,%.o,$(patsubst %.S,%.o,$(LIB_SRC)))
LIB_DEP = $(patsubst %.o,%.d,$(LIB_OBJ))
LIB = 

PROGS_SRC = $(patsubst %,%.cc,$(PROGS))
PROGS_OBJ = $(patsubst %.cc,%.o,$(patsubst %.S,%.o,$(PROGS_SRC)))
PROGS_DEP = $(patsubst %.o,%.d,$(PROGS_OBJ))

EXTRA_PROGS_SRC = $(patsubst %,%.cc,$(EXTRA_PROGS))
EXTRA_PROGS_OBJ = $(patsubst %.cc,%.o,$(patsubst %.S,%.o,$(EXTRA_PROGS_SRC)))
EXTRA_PROGS_DEP = $(patsubst %.o,%.d,$(EXTRA_PROGS_OBJ))

default: $(PROGS) $(EXTRA_PROGS)

maze_fork: %:%.o $(LIB)
	$(CXX) $^ $(LDFLAGS) -o $@

$(LIB): $(LIB_OBJ)
	rm -f $@
	ar r $@ $^
	ranlib $@

$(EXTRA_PROGS): %:%.o
	$(CXX) $^ $(LDFLAGS) -o $@

clean::
	#make -C parallelsearch clean
	rm -f $(PROGS) $(PROGS_OBJ) $(PROGS_DEP)
	rm -f $(EXTRA_PROGS) $(EXTRA_PROGS_OBJ) $(EXTRA_PROGS_DEP)
	rm -f $(LIB) $(LIB_DEP) $(LIB_OBJ)

.PHONY: all clean spartan

-include $(LIB_DEP) $(PROGS_DEP) $(EXTRA_PROG_DEP)

