aboutsummaryrefslogtreecommitdiff
path: root/Makefile
blob: 5d26db95b6a0a36325a7646e8ada32f42f74fa48 (plain) (blame)
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
CFLAGS += -Wall -Wextra -Wformat -Wformat=2 -Wconversion -Wimplicit-fallthrough -Werror=format-security \
	-Wbidi-chars=any -Werror=implicit -Werror=incompatible-pointer-types -Werror=int-conversion \
	-fno-delete-null-pointer-checks -fstack-clash-protection -fstack-protector-strong -fstrict-flex-arrays=3

DEBUG_CFLAGS = -DDEBUGBUILD -g -Werror -fsanitize=address -O0

PROD_CFLAGS = -O2 -U_FORTIFY_SOURCE -D_FORTIFY_SOURCE=3 -FPIE -pie -Wl,-z,noexecstack -Wl,--as-needed -Wl,--no-copy-dt-needed-entries

CFLAGS += -I include


all: out/split_for_sort out/tree_based_check


debug: out/debug/split_for_sort out/debug/tree_based_check


clean: out
	rm -fv out/debug/*
	rm -fv out/*
	rm -rfv out

out:
	mkdir out

out/debug: out
	mkdir out/debug

# Lazy, not splitting compiler & linker calls
out/split_for_sort: out src/split_for_sort.c include/output.h
	${CC} -o $@ ${CFLAGS} ${PROD_CFLAGS} src/split_for_sort.c

out/debug/split_for_sort_debug: out/debug src/split_for_sort.c include/output.h
	${CC} -o $@ ${CFLAGS} ${DEBUG_CFLAGS} src/split_for_sort.c

out/tree_based_check: out src/tree_based_check.c \
	include/output.h include/hex_conversion.h
	${CC} -o $@ ${CFLAGS} ${PROD_CFLAGS} src/tree_based_check.c

out/debug/tree_based_check: out/debug src/tree_based_check.c \
	include/output.h include/hex_conversion.h
	${CC} -o $@ ${CFLAGS} ${DEBUG_CFLAGS} src/tree_based_check.c