-
Notifications
You must be signed in to change notification settings - Fork 3
/
BUILD
119 lines (110 loc) · 2.06 KB
/
BUILD
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
licenses(["notice"])
exports_files([
"LICENSE",
"NOTICE",
])
COPTS = [
"-UNDEBUG",
"-faligned-new",
]
LINKOPTS = [
"-lpthread",
]
LIBS = [
"@libprim//:prim",
"@librnd//:rnd",
"@numactl//:numa",
"@zlib//:zlib",
]
cc_library(
name = "des",
srcs = glob(
["src/**/*.cc"],
exclude = ["src/**/*_TEST*"],
),
hdrs = glob(
[
"src/**/*.h",
"src/**/*.tcc",
],
exclude = ["src/**/*_TEST*"],
),
copts = COPTS,
includes = [
"src",
],
linkopts = LINKOPTS,
visibility = ["//visibility:public"],
deps = LIBS,
alwayslink = 1,
)
cc_library(
name = "test_lib",
testonly = 1,
srcs = glob([
"src/**/*_TEST*.cc",
]),
hdrs = glob([
"src/**/*_TEST*.h",
"src/**/*_TEST*.tcc",
]),
copts = COPTS,
visibility = ["//visibility:private"],
deps = [
":des",
"@googletest//:gtest_main",
] + LIBS,
alwayslink = 1,
)
cc_test(
name = "des_test",
args = [
"--gtest_color=yes",
],
copts = COPTS,
linkopts = LINKOPTS,
visibility = ["//visibility:public"],
deps = [
":test_lib",
] + LIBS,
)
genrule(
name = "lint",
srcs = glob([
"src/**/*.cc",
]) + glob([
"src/**/*.h",
"src/**/*.tcc",
]),
outs = ["linted"],
cmd = """
python3 $(location @cpplint//:cpplint) \
--root=$$(pwd)/src \
--headers=h,tcc \
--extensions=cc,h,tcc \
--quiet $(SRCS) > $@
echo // $$(date) > $@
""",
tools = [
"@cpplint",
],
visibility = ["//visibility:public"],
)
genrule(
name = "format_check",
srcs = glob([
"src/**/*.cc",
"src/**/*.h",
"src/**/*.tcc",
]),
outs = ["format_checked"],
cmd = """
cp $(location @clang_format//file) .clang-format
clang-format --style=file --dry-run --Werror $(SRCS)
echo // $$(date) > $@
""",
tools = [
"@clang_format//file",
],
visibility = ["//visibility:public"],
)