CC = gcc
CFLAGS = -O3 -g

PROGS = WordCountMR_v3 WordCountMap WordCountSuffle WordCountReduce
HEADERS = MapReduce.h Map.h Reduce.h Errors.h

all: $(PROGS)

WordCountMR_v3: WordCountMR_v3.o Errors.o
	$(CC) $(CFLAGS) WordCountMR_v3.o Errors.o -o WordCountMR_v3

WordCountMap: WordCountMap.o Map.o Errors.o
	$(CC) $(CFLAGS) WordCountMap.o Map.o Errors.o -o WordCountMap

WordCountSuffle: WordCountSuffle.o Errors.o
	$(CC) $(CFLAGS) WordCountSuffle.o Errors.o -o WordCountSuffle

WordCountReduce: WordCountReduce.o Reduce.o Errors.o
	$(CC) $(CFLAGS) WordCountReduce.o Reduce.o Errors.o -o WordCountReduce

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

clean:
	rm -f $(PROGS) *.o

.PHONY: all clean
