MC_SRC = ../src/monocypher.c

HEX_TEST_SRC = ../src/hex.c hextest.c
MC_TEST_SRC = $(MC_SRC) mctest.c
B2_TEST_SRC = $(MC_SRC) b2test.c
UTIL_TEST_SRC = ../src/util.c utiltest.c

CFLAGS += -Wall -Wextra -Wpedantic -ggdb -Og -std=gnu99 -Wshadow \
			-Wformat=2 -Wundef -Werror=return-type \
			-Wdouble-promotion -Wmissing-prototypes \
			-Wstrict-prototypes -Wconversion

ifneq ($(CC),clang)
	CFLAGS += -fhardened
endif

INCLUDE += -I../src

test: all
	./hextest
	./b2test
	./mctest
	./utiltest

all: hextest mctest b2test utiltest

hextest: $(HEX_TEST_SRC)
	$(CC) $(CFLAGS) $(INCLUDE) $(HEX_TEST_SRC) -o hextest

mctest: $(MC_TEST_SRC)
	$(CC) $(CFLAGS) $(INCLUDE) $(MC_TEST_SRC) -o mctest

b2test: $(B2_TEST_SRC)
	$(CC) $(CFLAGS) $(INCLUDE) $(B2_TEST_SRC) -o $@

utiltest: $(UTIL_TEST_SRC)
	$(CC) $(CFLAGS) $(INCLUDE) $(UTIL_TEST_SRC) -o $@

clean:
	rm -f hextest mctest b2test

.PHONY: monocypher

.PHONY: clean
