CC = g++
INCDIRS = $(patsubst cs202%,-Ics202%,$(wildcard cs202*)) -I.
INCLIBS = $(patsubst cs202%,-Lcs202%,$(wildcard cs202*))
CARGS = $(INCDIRS) -Wall -g
CLIBS = -lncurses -lm $(patsubst %,-l%,$(wildcard cs202*))
OBJS = main.o common.o $(patsubst %.c,%.o,$(wildcard cs202*/*.c)) $(patsubst %.cpp,%.o,$(wildcard cs202*/*.cpp))
TARGET = 202games

%.o: %.c
	$(CC) -c $(CARGS) -o $@ $< 

$(TARGET): $(OBJS)
	for s in cs202*; do make -C $$s; done
	$(CC) $(CARGS) $(INCLIBS) -o $@ $^ $(CLIBS)

clean: 
	for s in cs202*; do make -C $$s clean; done
	rm -f $(TARGET) $(OBJS)