xref: /aosp_15_r20/external/cpu_features/BUILD.bazel (revision eca53ba6d2e951e174b64682eaf56a36b8204c89)
1*eca53ba6SRoland Levillain# cpu_features, a cross platform C99 library to get cpu features at runtime.
2*eca53ba6SRoland Levillain
3*eca53ba6SRoland Levillainload("@bazel_skylib//lib:selects.bzl", "selects")
4*eca53ba6SRoland Levillainload("//:bazel/platforms.bzl", "PLATFORM_CPU_ARM", "PLATFORM_CPU_ARM64", "PLATFORM_CPU_MIPS", "PLATFORM_CPU_PPC", "PLATFORM_CPU_RISCV32", "PLATFORM_CPU_RISCV64", "PLATFORM_CPU_X86_64")
5*eca53ba6SRoland Levillainload("//:bazel/platforms.bzl", "PLATFORM_OS_MACOS")
6*eca53ba6SRoland Levillain
7*eca53ba6SRoland Levillainpackage(
8*eca53ba6SRoland Levillain    default_visibility = ["//visibility:public"],
9*eca53ba6SRoland Levillain    licenses = ["notice"],
10*eca53ba6SRoland Levillain)
11*eca53ba6SRoland Levillain
12*eca53ba6SRoland Levillainexports_files(["LICENSE"])
13*eca53ba6SRoland Levillain
14*eca53ba6SRoland LevillainINCLUDES = ["include"]
15*eca53ba6SRoland Levillain
16*eca53ba6SRoland LevillainC99_FLAGS = [
17*eca53ba6SRoland Levillain    "-std=c99",
18*eca53ba6SRoland Levillain    "-Wall",
19*eca53ba6SRoland Levillain    "-Wextra",
20*eca53ba6SRoland Levillain    "-Wmissing-declarations",
21*eca53ba6SRoland Levillain    "-Wmissing-prototypes",
22*eca53ba6SRoland Levillain    "-Wno-implicit-fallthrough",
23*eca53ba6SRoland Levillain    "-Wno-unused-function",
24*eca53ba6SRoland Levillain    "-Wold-style-definition",
25*eca53ba6SRoland Levillain    "-Wshadow",
26*eca53ba6SRoland Levillain    "-Wsign-compare",
27*eca53ba6SRoland Levillain    "-Wstrict-prototypes",
28*eca53ba6SRoland Levillain]
29*eca53ba6SRoland Levillain
30*eca53ba6SRoland Levillaincc_library(
31*eca53ba6SRoland Levillain    name = "cpu_features_macros",
32*eca53ba6SRoland Levillain    copts = C99_FLAGS,
33*eca53ba6SRoland Levillain    includes = INCLUDES,
34*eca53ba6SRoland Levillain    textual_hdrs = ["include/cpu_features_macros.h"],
35*eca53ba6SRoland Levillain)
36*eca53ba6SRoland Levillain
37*eca53ba6SRoland Levillaincc_library(
38*eca53ba6SRoland Levillain    name = "cpu_features_cache_info",
39*eca53ba6SRoland Levillain    copts = C99_FLAGS,
40*eca53ba6SRoland Levillain    includes = INCLUDES,
41*eca53ba6SRoland Levillain    textual_hdrs = ["include/cpu_features_cache_info.h"],
42*eca53ba6SRoland Levillain    deps = [":cpu_features_macros"],
43*eca53ba6SRoland Levillain)
44*eca53ba6SRoland Levillain
45*eca53ba6SRoland Levillaincc_library(
46*eca53ba6SRoland Levillain    name = "bit_utils",
47*eca53ba6SRoland Levillain    copts = C99_FLAGS,
48*eca53ba6SRoland Levillain    includes = INCLUDES,
49*eca53ba6SRoland Levillain    textual_hdrs = ["include/internal/bit_utils.h"],
50*eca53ba6SRoland Levillain    deps = [":cpu_features_macros"],
51*eca53ba6SRoland Levillain)
52*eca53ba6SRoland Levillain
53*eca53ba6SRoland Levillaincc_test(
54*eca53ba6SRoland Levillain    name = "bit_utils_test",
55*eca53ba6SRoland Levillain    srcs = ["test/bit_utils_test.cc"],
56*eca53ba6SRoland Levillain    includes = INCLUDES,
57*eca53ba6SRoland Levillain    deps = [
58*eca53ba6SRoland Levillain        ":bit_utils",
59*eca53ba6SRoland Levillain        "@com_google_googletest//:gtest_main",
60*eca53ba6SRoland Levillain    ],
61*eca53ba6SRoland Levillain)
62*eca53ba6SRoland Levillain
63*eca53ba6SRoland Levillaincc_library(
64*eca53ba6SRoland Levillain    name = "memory_utils",
65*eca53ba6SRoland Levillain    copts = C99_FLAGS,
66*eca53ba6SRoland Levillain    includes = INCLUDES,
67*eca53ba6SRoland Levillain    textual_hdrs = [
68*eca53ba6SRoland Levillain        "src/copy.inl",
69*eca53ba6SRoland Levillain        "src/equals.inl",
70*eca53ba6SRoland Levillain    ],
71*eca53ba6SRoland Levillain)
72*eca53ba6SRoland Levillain
73*eca53ba6SRoland Levillaincc_library(
74*eca53ba6SRoland Levillain    name = "string_view",
75*eca53ba6SRoland Levillain    srcs = [
76*eca53ba6SRoland Levillain        "src/string_view.c",
77*eca53ba6SRoland Levillain    ],
78*eca53ba6SRoland Levillain    copts = C99_FLAGS,
79*eca53ba6SRoland Levillain    includes = INCLUDES,
80*eca53ba6SRoland Levillain    textual_hdrs = ["include/internal/string_view.h"],
81*eca53ba6SRoland Levillain    deps = [
82*eca53ba6SRoland Levillain        ":cpu_features_macros",
83*eca53ba6SRoland Levillain        ":memory_utils",
84*eca53ba6SRoland Levillain    ],
85*eca53ba6SRoland Levillain)
86*eca53ba6SRoland Levillain
87*eca53ba6SRoland Levillaincc_test(
88*eca53ba6SRoland Levillain    name = "string_view_test",
89*eca53ba6SRoland Levillain    srcs = ["test/string_view_test.cc"],
90*eca53ba6SRoland Levillain    includes = INCLUDES,
91*eca53ba6SRoland Levillain    deps = [
92*eca53ba6SRoland Levillain        ":string_view",
93*eca53ba6SRoland Levillain        "@com_google_googletest//:gtest_main",
94*eca53ba6SRoland Levillain    ],
95*eca53ba6SRoland Levillain)
96*eca53ba6SRoland Levillain
97*eca53ba6SRoland Levillaincc_library(
98*eca53ba6SRoland Levillain    name = "filesystem",
99*eca53ba6SRoland Levillain    srcs = ["src/filesystem.c"],
100*eca53ba6SRoland Levillain    copts = C99_FLAGS,
101*eca53ba6SRoland Levillain    includes = INCLUDES,
102*eca53ba6SRoland Levillain    textual_hdrs = ["include/internal/filesystem.h"],
103*eca53ba6SRoland Levillain    deps = [":cpu_features_macros"],
104*eca53ba6SRoland Levillain)
105*eca53ba6SRoland Levillain
106*eca53ba6SRoland Levillaincc_library(
107*eca53ba6SRoland Levillain    name = "filesystem_for_testing",
108*eca53ba6SRoland Levillain    testonly = 1,
109*eca53ba6SRoland Levillain    srcs = [
110*eca53ba6SRoland Levillain        "src/filesystem.c",
111*eca53ba6SRoland Levillain        "test/filesystem_for_testing.cc",
112*eca53ba6SRoland Levillain    ],
113*eca53ba6SRoland Levillain    hdrs = [
114*eca53ba6SRoland Levillain        "include/internal/filesystem.h",
115*eca53ba6SRoland Levillain        "test/filesystem_for_testing.h",
116*eca53ba6SRoland Levillain    ],
117*eca53ba6SRoland Levillain    defines = ["CPU_FEATURES_MOCK_FILESYSTEM"],
118*eca53ba6SRoland Levillain    includes = INCLUDES,
119*eca53ba6SRoland Levillain    deps = [
120*eca53ba6SRoland Levillain        ":cpu_features_macros",
121*eca53ba6SRoland Levillain    ],
122*eca53ba6SRoland Levillain)
123*eca53ba6SRoland Levillain
124*eca53ba6SRoland Levillaincc_library(
125*eca53ba6SRoland Levillain    name = "stack_line_reader",
126*eca53ba6SRoland Levillain    srcs = ["src/stack_line_reader.c"],
127*eca53ba6SRoland Levillain    copts = C99_FLAGS,
128*eca53ba6SRoland Levillain    defines = ["STACK_LINE_READER_BUFFER_SIZE=1024"],
129*eca53ba6SRoland Levillain    includes = INCLUDES,
130*eca53ba6SRoland Levillain    textual_hdrs = ["include/internal/stack_line_reader.h"],
131*eca53ba6SRoland Levillain    deps = [
132*eca53ba6SRoland Levillain        ":cpu_features_macros",
133*eca53ba6SRoland Levillain        ":filesystem",
134*eca53ba6SRoland Levillain        ":string_view",
135*eca53ba6SRoland Levillain    ],
136*eca53ba6SRoland Levillain)
137*eca53ba6SRoland Levillain
138*eca53ba6SRoland Levillaincc_test(
139*eca53ba6SRoland Levillain    name = "stack_line_reader_test",
140*eca53ba6SRoland Levillain    srcs = [
141*eca53ba6SRoland Levillain        "include/internal/stack_line_reader.h",
142*eca53ba6SRoland Levillain        "src/stack_line_reader.c",
143*eca53ba6SRoland Levillain        "test/stack_line_reader_test.cc",
144*eca53ba6SRoland Levillain    ],
145*eca53ba6SRoland Levillain    defines = ["STACK_LINE_READER_BUFFER_SIZE=16"],
146*eca53ba6SRoland Levillain    includes = INCLUDES,
147*eca53ba6SRoland Levillain    deps = [
148*eca53ba6SRoland Levillain        ":cpu_features_macros",
149*eca53ba6SRoland Levillain        ":filesystem_for_testing",
150*eca53ba6SRoland Levillain        ":string_view",
151*eca53ba6SRoland Levillain        "@com_google_googletest//:gtest_main",
152*eca53ba6SRoland Levillain    ],
153*eca53ba6SRoland Levillain)
154*eca53ba6SRoland Levillain
155*eca53ba6SRoland Levillaincc_library(
156*eca53ba6SRoland Levillain    name = "stack_line_reader_to_use_with_filesystem_for_testing",
157*eca53ba6SRoland Levillain    testonly = 1,
158*eca53ba6SRoland Levillain    srcs = ["src/stack_line_reader.c"],
159*eca53ba6SRoland Levillain    hdrs = ["include/internal/stack_line_reader.h"],
160*eca53ba6SRoland Levillain    copts = C99_FLAGS,
161*eca53ba6SRoland Levillain    defines = ["STACK_LINE_READER_BUFFER_SIZE=1024"],
162*eca53ba6SRoland Levillain    includes = INCLUDES,
163*eca53ba6SRoland Levillain    deps = [
164*eca53ba6SRoland Levillain        ":cpu_features_macros",
165*eca53ba6SRoland Levillain        ":filesystem_for_testing",
166*eca53ba6SRoland Levillain        ":string_view",
167*eca53ba6SRoland Levillain    ],
168*eca53ba6SRoland Levillain)
169*eca53ba6SRoland Levillain
170*eca53ba6SRoland Levillaincc_library(
171*eca53ba6SRoland Levillain    name = "hwcaps",
172*eca53ba6SRoland Levillain    srcs = ["src/hwcaps.c"],
173*eca53ba6SRoland Levillain    copts = C99_FLAGS,
174*eca53ba6SRoland Levillain    defines = selects.with_or({
175*eca53ba6SRoland Levillain        PLATFORM_OS_MACOS: ["HAVE_DLFCN_H"],
176*eca53ba6SRoland Levillain        "//conditions:default": ["HAVE_STRONG_GETAUXVAL"],
177*eca53ba6SRoland Levillain    }),
178*eca53ba6SRoland Levillain    includes = INCLUDES,
179*eca53ba6SRoland Levillain    textual_hdrs = ["include/internal/hwcaps.h"],
180*eca53ba6SRoland Levillain    deps = [
181*eca53ba6SRoland Levillain        ":cpu_features_macros",
182*eca53ba6SRoland Levillain        ":filesystem",
183*eca53ba6SRoland Levillain        ":string_view",
184*eca53ba6SRoland Levillain    ],
185*eca53ba6SRoland Levillain)
186*eca53ba6SRoland Levillain
187*eca53ba6SRoland Levillaincc_library(
188*eca53ba6SRoland Levillain    name = "hwcaps_for_testing",
189*eca53ba6SRoland Levillain    testonly = 1,
190*eca53ba6SRoland Levillain    srcs = [
191*eca53ba6SRoland Levillain        "src/hwcaps.c",
192*eca53ba6SRoland Levillain        "test/hwcaps_for_testing.cc",
193*eca53ba6SRoland Levillain    ],
194*eca53ba6SRoland Levillain    hdrs = [
195*eca53ba6SRoland Levillain        "include/internal/hwcaps.h",
196*eca53ba6SRoland Levillain        "test/hwcaps_for_testing.h",
197*eca53ba6SRoland Levillain    ],
198*eca53ba6SRoland Levillain    defines = [
199*eca53ba6SRoland Levillain        "CPU_FEATURES_MOCK_GET_ELF_HWCAP_FROM_GETAUXVAL",
200*eca53ba6SRoland Levillain        "CPU_FEATURES_TEST",
201*eca53ba6SRoland Levillain    ],
202*eca53ba6SRoland Levillain    includes = INCLUDES,
203*eca53ba6SRoland Levillain    deps = [
204*eca53ba6SRoland Levillain        ":cpu_features_macros",
205*eca53ba6SRoland Levillain        ":filesystem_for_testing",
206*eca53ba6SRoland Levillain        ":string_view",
207*eca53ba6SRoland Levillain    ],
208*eca53ba6SRoland Levillain)
209*eca53ba6SRoland Levillain
210*eca53ba6SRoland Levillaincc_library(
211*eca53ba6SRoland Levillain    name = "cpuinfo",
212*eca53ba6SRoland Levillain    srcs = selects.with_or({
213*eca53ba6SRoland Levillain        PLATFORM_CPU_X86_64: [
214*eca53ba6SRoland Levillain            "src/impl_x86_freebsd.c",
215*eca53ba6SRoland Levillain            "src/impl_x86_linux_or_android.c",
216*eca53ba6SRoland Levillain            "src/impl_x86_macos.c",
217*eca53ba6SRoland Levillain            "src/impl_x86_windows.c",
218*eca53ba6SRoland Levillain        ],
219*eca53ba6SRoland Levillain        PLATFORM_CPU_ARM: ["src/impl_arm_linux_or_android.c"],
220*eca53ba6SRoland Levillain        PLATFORM_CPU_ARM64: [
221*eca53ba6SRoland Levillain            "src/impl_aarch64_linux_or_android.c",
222*eca53ba6SRoland Levillain            "src/impl_aarch64_macos_or_iphone.c",
223*eca53ba6SRoland Levillain            "src/impl_aarch64_windows.c",
224*eca53ba6SRoland Levillain        ],
225*eca53ba6SRoland Levillain        PLATFORM_CPU_MIPS: ["src/impl_mips_linux_or_android.c"],
226*eca53ba6SRoland Levillain        PLATFORM_CPU_PPC: ["src/impl_ppc_linux.c"],
227*eca53ba6SRoland Levillain        PLATFORM_CPU_RISCV32: ["src/impl_riscv_linux.c"],
228*eca53ba6SRoland Levillain        PLATFORM_CPU_RISCV64: ["src/impl_riscv_linux.c"],
229*eca53ba6SRoland Levillain    }),
230*eca53ba6SRoland Levillain    hdrs = selects.with_or({
231*eca53ba6SRoland Levillain        PLATFORM_CPU_X86_64: [
232*eca53ba6SRoland Levillain            "include/cpuinfo_x86.h",
233*eca53ba6SRoland Levillain            "include/internal/cpuid_x86.h",
234*eca53ba6SRoland Levillain            "include/internal/windows_utils.h",
235*eca53ba6SRoland Levillain        ],
236*eca53ba6SRoland Levillain        PLATFORM_CPU_ARM: ["include/cpuinfo_arm.h"],
237*eca53ba6SRoland Levillain        PLATFORM_CPU_ARM64: ["include/cpuinfo_aarch64.h"],
238*eca53ba6SRoland Levillain        PLATFORM_CPU_MIPS: ["include/cpuinfo_mips.h"],
239*eca53ba6SRoland Levillain        PLATFORM_CPU_PPC: ["include/cpuinfo_ppc.h"],
240*eca53ba6SRoland Levillain        PLATFORM_CPU_RISCV32: ["include/cpuinfo_riscv.h"],
241*eca53ba6SRoland Levillain        PLATFORM_CPU_RISCV64: ["include/cpuinfo_riscv.h"],
242*eca53ba6SRoland Levillain    }),
243*eca53ba6SRoland Levillain    copts = C99_FLAGS,
244*eca53ba6SRoland Levillain    defines = selects.with_or({
245*eca53ba6SRoland Levillain        PLATFORM_OS_MACOS: ["HAVE_SYSCTLBYNAME"],
246*eca53ba6SRoland Levillain        "//conditions:default": [],
247*eca53ba6SRoland Levillain    }),
248*eca53ba6SRoland Levillain    includes = INCLUDES,
249*eca53ba6SRoland Levillain    textual_hdrs = selects.with_or({
250*eca53ba6SRoland Levillain        PLATFORM_CPU_X86_64: ["src/impl_x86__base_implementation.inl"],
251*eca53ba6SRoland Levillain        PLATFORM_CPU_ARM64: ["src/impl_aarch64__base_implementation.inl"],
252*eca53ba6SRoland Levillain        "//conditions:default": [],
253*eca53ba6SRoland Levillain    }) + [
254*eca53ba6SRoland Levillain        "src/define_introspection.inl",
255*eca53ba6SRoland Levillain        "src/define_introspection_and_hwcaps.inl",
256*eca53ba6SRoland Levillain    ],
257*eca53ba6SRoland Levillain    deps = [
258*eca53ba6SRoland Levillain        ":bit_utils",
259*eca53ba6SRoland Levillain        ":cpu_features_cache_info",
260*eca53ba6SRoland Levillain        ":cpu_features_macros",
261*eca53ba6SRoland Levillain        ":filesystem",
262*eca53ba6SRoland Levillain        ":hwcaps",
263*eca53ba6SRoland Levillain        ":memory_utils",
264*eca53ba6SRoland Levillain        ":stack_line_reader",
265*eca53ba6SRoland Levillain        ":string_view",
266*eca53ba6SRoland Levillain    ],
267*eca53ba6SRoland Levillain)
268*eca53ba6SRoland Levillain
269*eca53ba6SRoland Levillaincc_library(
270*eca53ba6SRoland Levillain    name = "cpuinfo_for_testing",
271*eca53ba6SRoland Levillain    testonly = 1,
272*eca53ba6SRoland Levillain    srcs = selects.with_or({
273*eca53ba6SRoland Levillain        PLATFORM_CPU_X86_64: [
274*eca53ba6SRoland Levillain            "src/impl_x86_freebsd.c",
275*eca53ba6SRoland Levillain            "src/impl_x86_linux_or_android.c",
276*eca53ba6SRoland Levillain            "src/impl_x86_macos.c",
277*eca53ba6SRoland Levillain            "src/impl_x86_windows.c",
278*eca53ba6SRoland Levillain        ],
279*eca53ba6SRoland Levillain        PLATFORM_CPU_ARM: ["src/impl_arm_linux_or_android.c"],
280*eca53ba6SRoland Levillain        PLATFORM_CPU_ARM64: [
281*eca53ba6SRoland Levillain            "src/impl_aarch64_linux_or_android.c",
282*eca53ba6SRoland Levillain            "src/impl_aarch64_macos_or_iphone.c",
283*eca53ba6SRoland Levillain            "src/impl_aarch64_windows.c",
284*eca53ba6SRoland Levillain        ],
285*eca53ba6SRoland Levillain        PLATFORM_CPU_MIPS: ["src/impl_mips_linux_or_android.c"],
286*eca53ba6SRoland Levillain        PLATFORM_CPU_PPC: ["src/impl_ppc_linux.c"],
287*eca53ba6SRoland Levillain        PLATFORM_CPU_RISCV32: ["src/impl_riscv_linux.c"],
288*eca53ba6SRoland Levillain        PLATFORM_CPU_RISCV64: ["src/impl_riscv_linux.c"],
289*eca53ba6SRoland Levillain    }),
290*eca53ba6SRoland Levillain    hdrs = selects.with_or({
291*eca53ba6SRoland Levillain        PLATFORM_CPU_X86_64: [
292*eca53ba6SRoland Levillain            "include/cpuinfo_x86.h",
293*eca53ba6SRoland Levillain            "include/internal/cpuid_x86.h",
294*eca53ba6SRoland Levillain            "include/internal/windows_utils.h",
295*eca53ba6SRoland Levillain        ],
296*eca53ba6SRoland Levillain        PLATFORM_CPU_ARM: ["include/cpuinfo_arm.h"],
297*eca53ba6SRoland Levillain        PLATFORM_CPU_ARM64: ["include/cpuinfo_aarch64.h"],
298*eca53ba6SRoland Levillain        PLATFORM_CPU_MIPS: ["include/cpuinfo_mips.h"],
299*eca53ba6SRoland Levillain        PLATFORM_CPU_PPC: ["include/cpuinfo_ppc.h"],
300*eca53ba6SRoland Levillain        PLATFORM_CPU_RISCV32: ["include/cpuinfo_riscv.h"],
301*eca53ba6SRoland Levillain        PLATFORM_CPU_RISCV64: ["include/cpuinfo_riscv.h"],
302*eca53ba6SRoland Levillain    }),
303*eca53ba6SRoland Levillain    copts = C99_FLAGS,
304*eca53ba6SRoland Levillain    defines = selects.with_or({
305*eca53ba6SRoland Levillain        PLATFORM_CPU_X86_64: ["CPU_FEATURES_MOCK_CPUID_X86"],
306*eca53ba6SRoland Levillain        "//conditions:default": [],
307*eca53ba6SRoland Levillain    }) + selects.with_or({
308*eca53ba6SRoland Levillain        PLATFORM_OS_MACOS: ["HAVE_SYSCTLBYNAME"],
309*eca53ba6SRoland Levillain        "//conditions:default": [],
310*eca53ba6SRoland Levillain    }),
311*eca53ba6SRoland Levillain    includes = INCLUDES,
312*eca53ba6SRoland Levillain    textual_hdrs = selects.with_or({
313*eca53ba6SRoland Levillain        PLATFORM_CPU_X86_64: ["src/impl_x86__base_implementation.inl"],
314*eca53ba6SRoland Levillain        PLATFORM_CPU_ARM64: ["src/impl_aarch64__base_implementation.inl"],
315*eca53ba6SRoland Levillain        "//conditions:default": [],
316*eca53ba6SRoland Levillain    }) + [
317*eca53ba6SRoland Levillain        "src/define_introspection.inl",
318*eca53ba6SRoland Levillain        "src/define_introspection_and_hwcaps.inl",
319*eca53ba6SRoland Levillain    ],
320*eca53ba6SRoland Levillain    deps = [
321*eca53ba6SRoland Levillain        ":bit_utils",
322*eca53ba6SRoland Levillain        ":cpu_features_cache_info",
323*eca53ba6SRoland Levillain        ":cpu_features_macros",
324*eca53ba6SRoland Levillain        ":filesystem_for_testing",
325*eca53ba6SRoland Levillain        ":hwcaps_for_testing",
326*eca53ba6SRoland Levillain        ":memory_utils",
327*eca53ba6SRoland Levillain        ":stack_line_reader_to_use_with_filesystem_for_testing",
328*eca53ba6SRoland Levillain        ":string_view",
329*eca53ba6SRoland Levillain    ],
330*eca53ba6SRoland Levillain)
331*eca53ba6SRoland Levillain
332*eca53ba6SRoland Levillaincc_test(
333*eca53ba6SRoland Levillain    name = "cpuinfo_test",
334*eca53ba6SRoland Levillain    srcs = selects.with_or({
335*eca53ba6SRoland Levillain        PLATFORM_CPU_ARM64: ["test/cpuinfo_aarch64_test.cc"],
336*eca53ba6SRoland Levillain        PLATFORM_CPU_ARM: ["test/cpuinfo_arm_test.cc"],
337*eca53ba6SRoland Levillain        PLATFORM_CPU_MIPS: ["test/cpuinfo_mips_test.cc"],
338*eca53ba6SRoland Levillain        PLATFORM_CPU_PPC: ["test/cpuinfo_ppc_test.cc"],
339*eca53ba6SRoland Levillain        PLATFORM_CPU_RISCV32: ["test/cpuinfo_riscv_test.cc"],
340*eca53ba6SRoland Levillain        PLATFORM_CPU_RISCV64: ["test/cpuinfo_riscv_test.cc"],
341*eca53ba6SRoland Levillain        PLATFORM_CPU_X86_64: ["test/cpuinfo_x86_test.cc"],
342*eca53ba6SRoland Levillain    }),
343*eca53ba6SRoland Levillain    includes = INCLUDES,
344*eca53ba6SRoland Levillain    deps = [
345*eca53ba6SRoland Levillain        ":cpuinfo_for_testing",
346*eca53ba6SRoland Levillain        ":filesystem_for_testing",
347*eca53ba6SRoland Levillain        ":hwcaps_for_testing",
348*eca53ba6SRoland Levillain        ":string_view",
349*eca53ba6SRoland Levillain        "@com_google_googletest//:gtest_main",
350*eca53ba6SRoland Levillain    ],
351*eca53ba6SRoland Levillain)
352*eca53ba6SRoland Levillain
353*eca53ba6SRoland Levillaincc_binary(
354*eca53ba6SRoland Levillain    name = "list_cpu_features",
355*eca53ba6SRoland Levillain    srcs = ["src/utils/list_cpu_features.c"],
356*eca53ba6SRoland Levillain    copts = C99_FLAGS,
357*eca53ba6SRoland Levillain    includes = INCLUDES,
358*eca53ba6SRoland Levillain    deps = [
359*eca53ba6SRoland Levillain        ":bit_utils",
360*eca53ba6SRoland Levillain        ":cpu_features_macros",
361*eca53ba6SRoland Levillain        ":cpuinfo",
362*eca53ba6SRoland Levillain    ],
363*eca53ba6SRoland Levillain)
364*eca53ba6SRoland Levillain
365*eca53ba6SRoland Levillaincc_library(
366*eca53ba6SRoland Levillain    name = "ndk_compat",
367*eca53ba6SRoland Levillain    srcs = ["ndk_compat/cpu-features.c"],
368*eca53ba6SRoland Levillain    copts = C99_FLAGS,
369*eca53ba6SRoland Levillain    includes = INCLUDES + ["ndk_compat"],
370*eca53ba6SRoland Levillain    textual_hdrs = ["ndk_compat/cpu-features.h"],
371*eca53ba6SRoland Levillain    deps = [
372*eca53ba6SRoland Levillain        ":cpu_features_macros",
373*eca53ba6SRoland Levillain        ":cpuinfo",
374*eca53ba6SRoland Levillain        ":filesystem",
375*eca53ba6SRoland Levillain        ":stack_line_reader",
376*eca53ba6SRoland Levillain        ":string_view",
377*eca53ba6SRoland Levillain    ],
378*eca53ba6SRoland Levillain)
379