SOURCES=$(wildcard solution*.c??)
SOLUTIONS=$(SOURCES:%.cpp=%)
SOURCE_FILES=*.c *.cpp *.md *.pro input*.txt Makefile output*.txt .gitignore

CC=gcc
CXX=g++

FLAGS=-Wall -Wextra -lm
CFLAGS=$(FLAGS) -std=c11
CXXFLAGS=$(FLAGS) -std=c++11

all: $(SOLUTIONS)

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

%: %.cpp
	$(CXX) $(CXXFLAGS) -o $@ $<

.SILENT: test
test:
	for current in 1 2 3 4 5 6 7 8 9 ; do \
		if [ -f input0$$current.txt ]; \
		then \
			./solution < input0$$current.txt | diff output0$$current.txt - ; \
		fi; \
		if [ -f input00$$current.txt ]; \
		then \
			./solution < input00$$current.txt | diff output00$$current.txt - ; \
		fi; \
	done

zip:
	zip -9 `basename $(PWD)`.zip $(SOURCE_FILES)

7z:
	7z a -mx=9 `basename $(PWD)`.7z $(SOURCE_FILES)


TEST_INPUT=$(wildcard input*.txt)
TEST_OUTPUT=$(TEST_INPUT:input%.txt=output%.txt)

output: $(TEST_OUTPUT) | solution

output%.txt: input%.txt
	./solution < $^ > $@

zip-tests: *.txt
	zip -9 test_cases.zip input*.txt output*.txt

unix-eol:
	for file in *.txt; do \
		tr -d "\r" < $$file > $$file.tmp ; \
		mv $$file.tmp $$file ; \
	done

clean:
	rm -rf $(SOLUTIONS) given *.exe *.dSYM *.zip

clean-dos:
	del /f/q *.exe *.zip
