aboutsummaryrefslogtreecommitdiff
path: root/Makefile
diff options
context:
space:
mode:
Diffstat (limited to 'Makefile')
-rw-r--r--Makefile39
1 files changed, 39 insertions, 0 deletions
diff --git a/Makefile b/Makefile
new file mode 100644
index 0000000..e239bc4
--- /dev/null
+++ b/Makefile
@@ -0,0 +1,39 @@
+
+.PHONY: 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) -o $@ $^ $(CFLAGS)
+
+OBJECTS := $(patsubst %.c, %.o, $(wildcard ./source/*.c))
+
+kpl: OO := -O2
+kpl: WFLAGS += -Werror
+kpl: FLAGS += -DKPL_MAIN
+kpl: $(OBJECTS)
+ $(CCOBJ)
+
+TEST_OBJECTS := $(patsubst %.c, %.o, $(wildcard ./test/*.c))
+
+kpl_test: $(OBJECTS) $(TEST_OBJECTS)
+ $(CCOBJ)
+
+kpl_test_error: FFLAGS += -fsanitize=address,leak,undefined
+kpl_test_error: kpl_test
+
+kpl_test_thread: FFLAGS += -fsanitize=thread
+kpl_test_thread: kpl_test
+
+clean:
+ @rm -fv kpl
+ @rm -fv kpl_test
+ @find -type f -name "*.o" -exec rm -v {} \;