blob: 804c9319f0c695d78635c58f7623b743f8c2c320 [file] [log] [blame]
Roland Levillaind56de912019-06-20 20:55:26 +01001// This Blueprint file loosely follows the logic of cpu_features'
Roland Levillain18318b62019-06-21 19:56:28 +01002// CMakeLists.txt and test/CMakeLists.txt files.
Roland Levillaind56de912019-06-20 20:55:26 +01003
4cc_defaults {
5 name: "cpu_features-defaults",
6 host_supported: true,
7 local_include_dirs: [
8 "include",
9 "include/internal",
10 ],
11 cflags: [
12 // Reserve 1024 bytes on the stack when reading from `/proc/cpuinfo`.
13 "-DSTACK_LINE_READER_BUFFER_SIZE=1024",
Haibo Huang2519d752019-07-12 18:21:31 -070014 "-Wno-gnu-designator",
Roland Levillaind56de912019-06-20 20:55:26 +010015 ],
16}
17
18cc_library {
19 name: "libcpu_features-utils",
20 defaults: ["cpu_features-defaults"],
21 srcs: [
22 "src/filesystem.c",
23 "src/stack_line_reader.c",
24 "src/string_view.c",
25 ],
26}
27
28cc_library {
29 name: "libcpu_features-unix_based_hardware_detection",
30 defaults: ["cpu_features-defaults"],
31 srcs: [
32 "src/hwcaps.c",
33 "src/unix_features_aggregator.c",
34 ],
35 cflags: [
36 "-DHAVE_DLFCN_H",
37 ],
38 target: {
39 bionic: {
40 cflags: [
41 "-DHAVE_STRONG_GETAUXVAL",
42 ],
43 },
44 },
45 static_libs: [
46 "libcpu_features-utils",
47 ],
48}
49
50cc_library {
51 name: "libcpu_features",
52 defaults: [
53 "cpu_features-defaults",
54 ],
55 whole_static_libs: [
56 "libcpu_features-utils",
57 ],
58 arch: {
59 arm: {
60 srcs: [
61 "src/cpuinfo_arm.c",
62 ],
63 whole_static_libs: [
64 "libcpu_features-unix_based_hardware_detection",
65 ],
66 },
67 arm64: {
68 srcs: [
69 "src/cpuinfo_aarch64.c",
70 ],
71 whole_static_libs: [
72 "libcpu_features-unix_based_hardware_detection",
73 ],
Haibo Huang2519d752019-07-12 18:21:31 -070074 cflags: [
75 "-Wno-gnu-designator",
76 ],
Roland Levillaind56de912019-06-20 20:55:26 +010077 },
78 x86: {
79 srcs: [
80 "src/cpuinfo_x86.c",
81 ],
Haibo Huang2519d752019-07-12 18:21:31 -070082 cflags: [
83 "-Wno-unused-variable",
84 ],
Roland Levillaind56de912019-06-20 20:55:26 +010085 },
86 x86_64: {
87 srcs: [
88 "src/cpuinfo_x86.c",
89 ],
Haibo Huang2519d752019-07-12 18:21:31 -070090 cflags: [
91 "-Wno-unused-variable",
92 ],
Roland Levillaind56de912019-06-20 20:55:26 +010093 },
94 },
95}
96
97cc_binary {
98 name: "list_cpu_features",
99 defaults: [
100 "cpu_features-defaults",
101 ],
102 srcs: [
103 "src/utils/list_cpu_features.c",
104 ],
105 static_libs: [
106 "libcpu_features",
107 ],
108}
Roland Levillain18318b62019-06-21 19:56:28 +0100109
110
111// Tests.
112
113cc_defaults {
114 name: "cpu_features-test-defaults",
115 host_supported: true,
116 local_include_dirs: [
117 "include",
118 ],
119 cflags: [
120 "-DCPU_FEATURES_TEST"
121 ],
122}
123
124cc_test_library {
125 name: "libcpu_features-string_view",
126 defaults: ["cpu_features-test-defaults"],
127 srcs: [
128 "src/string_view.c",
129 ],
130}
131
132cc_test_library {
133 name: "libcpu_features-filesystem_for_testing",
134 defaults: ["cpu_features-test-defaults"],
135 cflags: [
136 "-DCPU_FEATURES_MOCK_FILESYSTEM",
137 // TODO: Handle unused parameters in
138 // test/filesystem_for_testing.cc and remove this flag.
139 "-Wno-unused-parameter",
140 ],
141 srcs: [
142 "test/filesystem_for_testing.cc",
143 ],
144}
145
146cc_test_library {
147 name: "libcpu_features-hwcaps_for_testing",
148 defaults: ["cpu_features-test-defaults"],
149 cflags: [
150 "-DCPU_FEATURES_MOCK_GET_ELF_HWCAP_FROM_GETAUXVAL",
151 ],
152 srcs: [
153 "test/hwcaps_for_testing.cc",
154 ],
155 static_libs: [
156 "libcpu_features-string_view",
157 "libcpu_features-filesystem_for_testing",
158 ],
159}
160
161cc_defaults {
162 name: "stack_line_reader-defaults",
163 cflags: [
164 "-DSTACK_LINE_READER_BUFFER_SIZE=1024",
165 ],
166}
167
168cc_test_library {
169 name: "libcpu_features-stack_line_reader",
170 defaults: [
171 "cpu_features-test-defaults",
172 "stack_line_reader-defaults",
173 ],
174 srcs: [
175 "src/stack_line_reader.c",
176 ],
177 static_libs: [
178 "libcpu_features-filesystem_for_testing",
179 "libcpu_features-string_view",
180 ],
181}
182
183cc_test_library {
184 name: "libcpu_features-stack_line_reader_for_test",
185 defaults: ["cpu_features-test-defaults"],
186 cflags: [
187 "-DSTACK_LINE_READER_BUFFER_SIZE=16",
188 ],
189 srcs: [
190 "src/stack_line_reader.c",
191 ],
192 whole_static_libs: [
193 "libcpu_features-filesystem_for_testing",
194 "libcpu_features-string_view",
195 ],
196}
197
198cc_test_library {
199 name: "libcpu_features-all_libraries",
200 defaults: [
201 "cpu_features-test-defaults",
202 "stack_line_reader-defaults",
203 ],
204 srcs: [
205 "src/unix_features_aggregator.c",
206 ],
207 whole_static_libs: [
208 "libcpu_features-filesystem_for_testing",
209 "libcpu_features-hwcaps_for_testing",
210 "libcpu_features-stack_line_reader",
211 "libcpu_features-string_view",
212 ],
213}
214
215cc_test {
216 name: "cpu_features-bit_utils_test",
217 defaults: ["cpu_features-test-defaults"],
218 srcs: [
219 "test/bit_utils_test.cc"
220 ],
221}
222
223cc_test {
224 name: "cpu_features-string_view_test",
225 defaults: ["cpu_features-test-defaults"],
226 srcs: [
227 "test/string_view_test.cc",
228 "src/string_view.c",
229 ],
230 static_libs: [
231 "libcpu_features-string_view",
232 ],
233}
234
235cc_test {
236 name: "cpu_features-stack_line_reader_test",
237 defaults: [
238 "cpu_features-test-defaults",
239 "stack_line_reader-defaults",
240 ],
241 cflags: [
242 // TODO: Handle unused funtions in
243 // test/stack_line_reader_test.cc and remove this flag.
244 "-Wno-unused-function",
245 ],
246 srcs: [
247 "test/stack_line_reader_test.cc",
248 ],
249 static_libs: [
250 "libcpu_features-stack_line_reader_for_test",
251 ],
252}
253
254cc_test {
255 name: "cpu_features-unix_features_aggregator_test",
256 defaults: ["cpu_features-test-defaults"],
257 srcs: [
258 "test/unix_features_aggregator_test.cc",
259 ],
260 static_libs: [
261 "libcpu_features-all_libraries",
262 ],
263}
264
265cc_defaults {
266 name: "cpu_features-cpuinfo-test-defaults",
267 defaults: ["cpu_features-test-defaults"],
268 enabled: false,
269 static_libs: [
270 "libcpu_features-all_libraries",
271 ],
272}
273
274cc_test {
275 name: "cpu_features-cpuinfo_x86_test",
276 defaults: ["cpu_features-cpuinfo-test-defaults"],
277 arch: {
278 x86: {
279 enabled: true,
280 },
281 x86_64: {
282 enabled: true,
283 },
284 },
285 target: {
286 windows: {
287 enabled: false,
288 },
289 },
290 cflags: [
291 "-DCPU_FEATURES_MOCK_CPUID_X86",
Haibo Huang2519d752019-07-12 18:21:31 -0700292 "-Wno-unused-variable",
Roland Levillain18318b62019-06-21 19:56:28 +0100293 ],
294 srcs: [
295 "test/cpuinfo_x86_test.cc",
296 "src/cpuinfo_x86.c",
297 ],
298}
299
300cc_test {
301 name: "cpu_features-cpuinfo_arm_test",
302 defaults: [
303 "cpu_features-cpuinfo-test-defaults",
304 "stack_line_reader-defaults",
305 ],
306 arch: {
307 arm: {
308 enabled: true,
309 },
310 },
311 srcs: [
312 "test/cpuinfo_arm_test.cc",
313 "src/cpuinfo_arm.c",
314 ],
315}
316
317cc_test {
318 name: "cpu_features-cpuinfo_aarch64_test",
319 defaults: [
320 "cpu_features-cpuinfo-test-defaults",
321 "stack_line_reader-defaults",
322 ],
323 arch: {
324 arm64: {
325 enabled: true,
326 },
327 },
Haibo Huang2519d752019-07-12 18:21:31 -0700328 cflags: [
329 "-Wno-gnu-designator",
330 ],
Roland Levillain18318b62019-06-21 19:56:28 +0100331 srcs: [
332 "test/cpuinfo_aarch64_test.cc",
333 "src/cpuinfo_aarch64.c",
334 ],
335}