aboutsummaryrefslogtreecommitdiff
path: root/Makefile
blob: e239bc4c1ab2a485aabdf3f8e1fc804e823f15ea (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
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 {} \;