-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathMakefile
More file actions
79 lines (63 loc) · 1.85 KB
/
Copy pathMakefile
File metadata and controls
79 lines (63 loc) · 1.85 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
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
CC = gcc
CFLAGS_BASE = -O2 -Wall -I./include -std=gnu11
# 默认生产模式:关闭 debug() 宏输出
CFLAGS = $(CFLAGS_BASE) -DKVS_NODEBUG
LDFLAGS = -lpthread -luring -ldl -ljemalloc -lrdmacm -libverbs
# 主项目源文件
SRCS = src/core/kvstore.c \
src/core/protocol.c \
src/core/config.c \
src/core/sync_command.c \
src/core/slave_sync.c \
src/core/repl_master.c \
src/network/proactor.c \
src/network/echo_mode.c \
src/network/rdma_sync.c \
src/engines/kvs_array.c \
src/engines/kvs_rbtree.c \
src/engines/kvs_hash.c \
src/engines/kvs_skiplist.c \
src/persistence/ksf.c \
src/persistence/ksf_stream.c \
src/persistence/aof.c \
src/utils/kmem.c \
src/utils/kmem_compat.c \
src/utils/kvs_log.c
OBJS = $(SRCS:.c=.o)
# 测试用例(独立编译)
# TEST_SRCS = tests/testcase.c
# TEST_OBJS = $(TEST_SRCS:.c=.o)
# kmem测试
KMEM_TEST_SRC = tests/test_kmem.c
KMEM_TEST_OBJ = tests/test_kmem.o
KMEM_TEST = tests/test_kmem
TARGET = kvstore
# TESTCASE = tests/testcase
.PHONY: all clean debug
all: $(TARGET) $(TESTCASE)
# Debug 模式:开启 debug() 宏输出
debug: CFLAGS = $(CFLAGS_BASE)
debug: clean $(TARGET)
# 静态模式规则:.o 挨着 .c
$(OBJS): %.o: %.c
$(CC) $(CFLAGS) -c $< -o $@
# $(TEST_OBJS): %.o: %.c
# $(CC) $(CFLAGS) -c $< -o $@
# 主程序(根目录)
$(TARGET): $(OBJS)
$(CC) -o $@ $^ $(LDFLAGS)
@mkdir -p data
# 测试程序(独立,不链接主项目)
# $(TESTCASE): $(TEST_OBJS)
# $(CC) -o $@ $^
# kmem测试程序
$(KMEM_TEST_OBJ): $(KMEM_TEST_SRC)
$(CC) $(CFLAGS) -c $< -o $@
$(KMEM_TEST): $(KMEM_TEST_OBJ) src/utils/kmem.o
$(CC) -o $@ $^ -lpthread
test-kmem: $(KMEM_TEST)
./$(KMEM_TEST)
clean:
rm -f $(OBJS) $(TEST_OBJS) $(TARGET) $(TESTCASE)
rm -f $(KMEM_TEST_OBJ) $(KMEM_TEST)
rm -f src/utils/kmem.o