aboutsummaryrefslogtreecommitdiff
path: root/Makefile
blob: 134e338dc3eb90af132b13e387629dc8413a560e (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
40
41
42
43
44
45
46
47

.PHONY: kpl_test_memory kpl_test_thread clean rsync_list

MAKEFLAGS := -j$(shell nproc)

CC := gcc
OO := -g -Og
FFLAGS := -fno-omit-frame-pointer -fhardened
WFLAGS := -Wall -Wextra -Wstack-protector
CFLAGS = -std=gnu99 $(FLAGS) -I./include $(OO) $(FFLAGS) $(WFLAGS)
CCOBJ = $(CC) $(CFLAGS) -o $@ $^

SOURCE_OBJECTS := $(patsubst %.c, %.o, $(wildcard ./source/*.c))
TEST_OBJECTS := $(patsubst %.c, %.o, $(wildcard ./test/*.c))

ifdef KPL_COLOR_OFF
FLAGS += -DKPL_COLOR_OFF
endif

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

clean:
	@rm -fv kpl
	@rm -fv kpl_test
	@find -type f -name "*.o" -exec rm -v {} \;

rsync_list:
	@echo "include/"
	@echo "include/*/"
	@echo "source/"
	@echo "test/"
	@echo "*.c"
	@echo "*.h"
	@echo "Makefile"