SRC:= day5.c

OPT_FLAGS?= -O3 -march=native -pipe -flto \
	 -march=native -fgraphite -fopenmp -floop-parallelize-all -ftree-parallelize-loops=4 \
	 -floop-interchange -ftree-loop-distribution -floop-strip-mine -floop-block \
	 -fno-stack-check -fno-strict-aliasing 

CFLAGS?=$(OPT_FLAGS)
LDFLAGS?=-O3 -flto

CFLAGS+= -Wall -pedantic --std=gnu11 

.PHONY: all
all: part1 part2

.PHONY: test
test: part1-test part2-test

inpu%.h: inpu%
	@rm -f $@
	while read line; do \
		echo "\"$$line\"," >> $@; \
	done < $<

part1-test: $(SRC) | input-test.h
	$(CC) $^ -DTEST -DDEBUG $(CFLAGS) -o $@ $(LDFLAGS)

part2-test: $(SRC) | input-test.h
	$(CC) $^ -DTEST -DDEBUG -DPART2 $(CFLAGS) -o $@ $(LDFLAGS)

part1: $(SRC) | input.h
	$(CC) $^ $(CFLAGS) -o $@ $(LDFLAGS)
	strip $@

part2: $(SRC) | input.h
	$(CC) $^ -DPART2 $(CFLAGS) -o $@ $(LDFLAGS)
	strip $@

clean:
	rm -f part{1,2}{,-test}
	rm -f input{,-test}.h