CC ?= cc
CFLAGS := -std=c11 -O2 -Wall -Wextra -Werror -Wpedantic -Iinclude
BUILD := build
CORE := src/cabinet.c src/protocol.c
.PHONY: all test clean sanitizers
all: $(BUILD)/cabinet_host $(BUILD)/core_tests
$(BUILD):
	mkdir -p $(BUILD)
$(BUILD)/cabinet_host: $(CORE) src/host_main.c include/cabinet.h | $(BUILD)
	$(CC) $(CFLAGS) $(CORE) src/host_main.c -o $@
$(BUILD)/core_tests: $(CORE) tests/core_tests.c include/cabinet.h | $(BUILD)
	$(CC) $(CFLAGS) $(CORE) tests/core_tests.c -o $@
test: all
	./$(BUILD)/core_tests
	python3 tests/runner_test.py ./$(BUILD)/cabinet_host
sanitizers: | $(BUILD)
	$(CC) $(CFLAGS) -O1 -g -fsanitize=address,undefined $(CORE) tests/core_tests.c -o $(BUILD)/core_tests_sanitized
	./$(BUILD)/core_tests_sanitized
clean:
	rm -f $(BUILD)/cabinet_host $(BUILD)/core_tests $(BUILD)/core_tests_sanitized
