-
Notifications
You must be signed in to change notification settings - Fork 5
Expand file tree
/
Copy pathMakefile
More file actions
64 lines (48 loc) · 1.49 KB
/
Makefile
File metadata and controls
64 lines (48 loc) · 1.49 KB
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
-include Makefile.local
# LFLAGS += -fsanitize=thread
# CFLAGS += -fsanitize=thread
# CC = clang-5.0
# LFLAGS += -fsanitize=memory -fno-omit-frame-pointer
# CFLAGS += -fsanitize=memory -fno-omit-frame-pointer
# CFLAGS += -march=native
# LFLAGS += -march=native
# CFLAGS += -pg -no-pie
# LFLAGS += -pg -no-pie
# CFLAGS += -g
CFLAGS += -DNDEBUG
TARGET = server
BUILDDIR = build
SRCDIR = src
INCDIR = include ./src
TPDIR = third_party
DEPFILE = $(BUILDDIR)/.depends
CFLAGS += -Wall -std=gnu99 -O3
CFLAGS += $(foreach d, $(shell find $(INCDIR) -type d),-I$d)
CFLAGS += $(foreach d, $(wildcard $(TPDIR)/*),-I$d) -I$(TPDIR)
LFLAGS += -lpthread
# LFLAGS += -lrt
SOURCES := $(shell find src/ -name '*.c')
OBJECTS := $(SOURCES:$(SRCDIR)/%.c=$(BUILDDIR)/%.o)
TP_SOURCES := $(wildcard $(TPDIR)/*/*.c)
TP_OBJECTS := $(TP_SOURCES:$(TPDIR)/%.c=$(BUILDDIR)/$(TPDIR)/%.o)
ALL_OBJECTS = $(OBJECTS) $(TP_OBJECTS)
$(TARGET): $(ALL_OBJECTS)
$(CC) -o $@ $(ALL_OBJECTS) $(LFLAGS)
ifneq (clean, $(MAKECMDGOALS))
-include $(DEPFILE)
endif
$(DEPFILE):
$(CC) -MM $(CFLAGS) $(SOURCES) | sed -e 's,^[^:]\+: \([^/]\+\)/\([^ ]\+\)\.c,$(BUILDDIR)/\2.o: \1/\2.c,' > $(DEPFILE)
$(OBJECTS): $(BUILDDIR)/%.o : $(SRCDIR)/%.c
@mkdir -p $(dir $@)
$(CC) $(CFLAGS) -c $< -o $@
$(TP_OBJECTS): $(BUILDDIR)/%.o : %.c
@mkdir -p $(dir $@)
$(CC) $(CFLAGS) -c $< -o $@
clangcomp:
@echo $(CFLAGS) | sed -e 's/ -/\n-/g' | grep -v 'Werror' > .clang_complete
clean:
rm -f $(ALL_OBJECTS)
rm -f $(DEPFILE)
rm -f $(TARGET)
.PHONY: clangcomp clean