-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathMakefile
121 lines (94 loc) · 1.88 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
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
PWD := $(CURDIR)
INC=$(PWD)/include
INC_PARAMS=$(INC:%=-I%)
CC ?= clang
CFLAGS:=-g
CFLAGS+=-Wall
CFLAGS+=-O1
CFLAGS+=-pthread
CFLAGS+=-fPIC
CFLAGS+=-std=c11
DEBUG_FLAGS=
ifneq ($(strip $(debug)),)
DEBUG_FLAGS+=-fsanitize=thread
DEBUG_FLAGS+=-D'CONFIG_DEBUG'
CFLAGS+=$(DEBUG_FLAGS)
endif
SRC:=src/centralized_barrier/centralized_barrier.c
SRC+=src/rcu/rcu.c
SRC+=src/safe_ptr/safe_ptr.c
SRC+=src/futex.c
SRC+=src/thread/thread.c
SRC+=src/taskflow/taskflow.c
SRC+=src/workqueue/workqueue.c
#SRC+=src/mlrcu/mlrcu.c
OBJ:=$(SRC:.c=.o)
STATIC_BIN=libmthpc.a
DYNAMIC_BIN=libmthpc.so
ifneq ($(strip $(static)),)
LD=ar
LDFLAGS=crsv
LD_BIN=$(STATIC_BIN)
LD_TO=
LD_GEN=ranlib
LD_GEN_TARGET=$(STATIC_BIN)
BIN=$(STATIC_BIN)
else
LD=$(CC)
LDFLAGS=-shared
LDFLAGS+=$(DEBUG_FLAGS)
LD_BIN=$(DYNAMIC_BIN)
LD_TO=-o
LD_GEN=
LD_GEN_TARGET=
BIN=$(DYNAMIC_BIN)
endif
BUILD_DIR=mthpc
ifeq ($(quiet),1)
MTHPC_CC=@$(CC)
MTHPC_LD=@$(LD)
MTHPC_LD_GEN=@$(LD_GEN)
MTHPC_RM=@rm
MTHPC_MKDIR=@mkdir
MTHPC_CP=@cp
MTHPC_MV=@mv
else
MTHPC_CC=$(CC)
MTHPC_LD=$(LD)
MTHPC_LD_GEN=$(LD_GEN)
MTHPC_RM=rm
MTHPC_MKDIR=mkdir
MTHPC_CP=cp
MTHPC_MV=mv
endif
%.o: %.c
$(MTHPC_CC) $(CFLAGS) $(INC_PARAMS) -c $< -o $@
lib: $(OBJ)
$(MTHPC_LD) $(LDFLAGS) $(LD_TO) $(LD_BIN) $(OBJ)
$(MTHPC_LD_GEN) $(LD_GEN_TARGET)
build: lib
$(MTHPC_RM) -rf $(BUILD_DIR)
$(MTHPC_MKDIR) $(BUILD_DIR)
$(MTHPC_MKDIR) $(BUILD_DIR)/include
$(MTHPC_CP) -r include/mthpc $(BUILD_DIR)/include/.
$(MTHPC_MV) $(BIN) $(BUILD_DIR)/.
clean:
$(MTHPC_RM) -f src/*.o
$(MTHPC_RM) -f src/*/*.o
$(MTHPC_RM) -f $(STATIC_BIN)
$(MTHPC_RM) -f $(DYNAMIC_BIN)
cleanall: clean
$(MTHPC_RM) -rf $(BUILD_DIR)
cscope:
find $(PWD) -name "*.c" -o -name "*.h" > $(PWD)/cscope.files
cscope -b -q
compile_command:
# https://clangd.llvm.org/installation.html
bear -- make
make clean
indent:
clang-format -i include/*/*.[ch]
clang-format -i src/*/*.[ch]
ifeq ($(quiet), 1)
.SILENT:
endif