-
Notifications
You must be signed in to change notification settings - Fork 0
/
Makefile
76 lines (60 loc) · 1.47 KB
/
Makefile
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
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
PROJECT = rdnstun
DEBUG ?= 1
ifeq ($(DEBUG), 1)
RELEASE ?= 0
else
RELEASE ?= 1
endif
# default
CPPFLAGS ?= -fdiagnostics-color=always
ifeq ($(RELEASE), 0)
CFLAGS ?= -Os -fPIC
else
CFLAGS ?= -O2 -fPIC
endif
LDFLAGS ?= -pie
# debug
ifeq ($(DEBUG), 1)
CFLAGS += -g
endif
ifeq ($(RELEASE), 0)
CPPFLAGS += -DDEBUG
endif
# hardening
CPPFLAGS += -D_FORTIFY_SOURCE=2
CFLAGS += -fstack-protector-strong
LDFLAGS += -Wl,-z,relro
# diagnosis
CWARN ?= -Wall -Wextra -Wpedantic -Werror=format-security \
-Wno-cast-function-type -Wno-missing-field-initializers
ifeq ($(DEBUG), 1)
CWARN += -fanalyzer
endif
CFLAGS += $(CWARN)
# program flags
CPPFLAGS += -D_DEFAULT_SOURCE
CFLAGS += -std=c2x
LDFLAGS += -Wl,--gc-sections -flto=auto -fwhole-program -pthread
# LIBS :=
# PKG_CONFIG ?= pkg-config
# LIBS_CPPFLAGS := $(shell $(PKG_CONFIG) --cflags-only-I $(LIBS))
# LIBS_CFLAGS := $(shell $(PKG_CONFIG) --cflags-only-other $(LIBS))
# LIBS_LDFLAGS := $(shell $(PKG_CONFIG) --libs $(LIBS))
# CPPFLAGS += $(LIBS_CPPFLAGS)
# CFLAGS += $(LIBS_CFLAGS)
# LDFLAGS += $(LIBS_LDFLAGS)
SOURCES := rdnstun.c utils.c chain.c host.c iface.c inet.c log.c
OBJS := $(SOURCES:.c=.o)
PREREQUISITES := $(SOURCES:.c=.d)
THIS_MAKEFILE_LIST := $(MAKEFILE_LIST)
EXE := $(PROJECT)
.PHONY: all
all: $(EXE)
.PHONY: clean
clean:
$(RM) $(EXE) $(OBJS) $(PREREQUISITES)
%.d: %.c
$(CC) -M $(CPPFLAGS) $< | sed 's,.*\.o *:,$(<:.c=.o) $@: $(THIS_MAKEFILE_LIST),' > $@
-include $(PREREQUISITES)
$(EXE): $(OBJS)
$(CC) -o $@ $^ $(LDFLAGS)