.PHONY: kpl_test_memory kpl_test_thread rsync_list clean MAKEFLAGS := -j$(shell nproc) INCLUDE_DIR := include SOURCE_DIR := source TEST_DIR := test CC := gcc OO := -g -Og FFLAGS := -fno-omit-frame-pointer -fhardened WFLAGS := -Wall -Wextra -Wstack-protector CFLAGS = -std=gnu99 $(FLAGS) -I./$(INCLUDE_DIR) $(OO) $(FFLAGS) $(WFLAGS) CCOBJ = $(CC) $(CFLAGS) -o $@ $^ SOURCE_OBJECTS := $(patsubst %.c, %.o, $(wildcard ./$(SOURCE_DIR)/*.c)) TEST_OBJECTS := $(patsubst %.c, %.o, $(wildcard ./$(TEST_DIR)/*.c)) kpl: OO := -O2 kpl: WFLAGS += -Werror kpl: FLAGS += -DKPL_MAIN kpl: $(SOURCE_OBJECTS) $(CCOBJ) kpl_test: $(SOURCE_OBJECTS) $(TEST_OBJECTS) $(CCOBJ) kpl_test_memory: FFLAGS += -fsanitize=address,leak,undefined kpl_test_memory: kpl_test kpl_test_thread: FFLAGS += -fsanitize=thread kpl_test_thread: kpl_test rsync_list: @echo "$(INCLUDE_DIR)/" @echo "$(INCLUDE_DIR)/*/" @echo "$(SOURCE_DIR)/" @echo "$(TEST_DIR)/" @echo "*.c" @echo "*.h" @echo "Makefile" clean: @rm -fv kpl @rm -fv kpl_test @find -type f -name "*.o" -exec rm -v {} \;