xref: /aosp_15_r20/external/cpu_features/Android.bp (revision eca53ba6d2e951e174b64682eaf56a36b8204c89)
1*eca53ba6SRoland Levillain// This Blueprint file loosely follows the logic of cpu_features'
2*eca53ba6SRoland Levillain// CMakeLists.txt and test/CMakeLists.txt files.
3*eca53ba6SRoland Levillain
4*eca53ba6SRoland Levillainpackage {
5*eca53ba6SRoland Levillain    default_applicable_licenses: ["external_cpu_features_license"],
6*eca53ba6SRoland Levillain}
7*eca53ba6SRoland Levillain
8*eca53ba6SRoland Levillain// Added automatically by a large-scale-change that took the approach of
9*eca53ba6SRoland Levillain// 'apply every license found to every target'. While this makes sure we respect
10*eca53ba6SRoland Levillain// every license restriction, it may not be entirely correct.
11*eca53ba6SRoland Levillain//
12*eca53ba6SRoland Levillain// e.g. GPL in an MIT project might only apply to the contrib/ directory.
13*eca53ba6SRoland Levillain//
14*eca53ba6SRoland Levillain// Please consider splitting the single license below into multiple licenses,
15*eca53ba6SRoland Levillain// taking care not to lose any license_kind information, and overriding the
16*eca53ba6SRoland Levillain// default license using the 'licenses: [...]' property on targets as needed.
17*eca53ba6SRoland Levillain//
18*eca53ba6SRoland Levillain// For unused files, consider creating a 'fileGroup' with "//visibility:private"
19*eca53ba6SRoland Levillain// to attach the license to, and including a comment whether the files may be
20*eca53ba6SRoland Levillain// used in the current project.
21*eca53ba6SRoland Levillain// See: http://go/android-license-faq
22*eca53ba6SRoland Levillainlicense {
23*eca53ba6SRoland Levillain    name: "external_cpu_features_license",
24*eca53ba6SRoland Levillain    visibility: [":__subpackages__"],
25*eca53ba6SRoland Levillain    license_kinds: [
26*eca53ba6SRoland Levillain        "SPDX-license-identifier-Apache-2.0",
27*eca53ba6SRoland Levillain        "SPDX-license-identifier-BSD",
28*eca53ba6SRoland Levillain    ],
29*eca53ba6SRoland Levillain    license_text: [
30*eca53ba6SRoland Levillain        "LICENSE",
31*eca53ba6SRoland Levillain    ],
32*eca53ba6SRoland Levillain}
33*eca53ba6SRoland Levillain
34*eca53ba6SRoland Levillaincc_defaults {
35*eca53ba6SRoland Levillain    name: "cpu_features-defaults",
36*eca53ba6SRoland Levillain    host_supported: true,
37*eca53ba6SRoland Levillain    local_include_dirs: [
38*eca53ba6SRoland Levillain        "include",
39*eca53ba6SRoland Levillain    ],
40*eca53ba6SRoland Levillain    cflags: [
41*eca53ba6SRoland Levillain        // Reserve 1024 bytes on the stack when reading from `/proc/cpuinfo`.
42*eca53ba6SRoland Levillain        "-DSTACK_LINE_READER_BUFFER_SIZE=1024",
43*eca53ba6SRoland Levillain        "-Wno-gnu-designator",
44*eca53ba6SRoland Levillain    ],
45*eca53ba6SRoland Levillain    min_sdk_version: "S",
46*eca53ba6SRoland Levillain}
47*eca53ba6SRoland Levillain
48*eca53ba6SRoland Levillaincc_library {
49*eca53ba6SRoland Levillain    name: "libcpu_features-utils",
50*eca53ba6SRoland Levillain    defaults: ["cpu_features-defaults"],
51*eca53ba6SRoland Levillain    srcs: [
52*eca53ba6SRoland Levillain        "src/filesystem.c",
53*eca53ba6SRoland Levillain        "src/stack_line_reader.c",
54*eca53ba6SRoland Levillain        "src/string_view.c",
55*eca53ba6SRoland Levillain    ],
56*eca53ba6SRoland Levillain    target: {
57*eca53ba6SRoland Levillain        windows: {
58*eca53ba6SRoland Levillain            enabled: true,
59*eca53ba6SRoland Levillain        },
60*eca53ba6SRoland Levillain    },
61*eca53ba6SRoland Levillain    apex_available: [
62*eca53ba6SRoland Levillain        "com.android.art",
63*eca53ba6SRoland Levillain        "com.android.art.debug",
64*eca53ba6SRoland Levillain    ],
65*eca53ba6SRoland Levillain}
66*eca53ba6SRoland Levillain
67*eca53ba6SRoland Levillaincc_library {
68*eca53ba6SRoland Levillain    name: "libcpu_features-hwcaps",
69*eca53ba6SRoland Levillain    defaults: ["cpu_features-defaults"],
70*eca53ba6SRoland Levillain    srcs: [
71*eca53ba6SRoland Levillain        "src/hwcaps.c",
72*eca53ba6SRoland Levillain    ],
73*eca53ba6SRoland Levillain    cflags: [
74*eca53ba6SRoland Levillain        "-DHAVE_DLFCN_H",
75*eca53ba6SRoland Levillain    ],
76*eca53ba6SRoland Levillain    target: {
77*eca53ba6SRoland Levillain        bionic: {
78*eca53ba6SRoland Levillain            cflags: [
79*eca53ba6SRoland Levillain                "-DHAVE_STRONG_GETAUXVAL",
80*eca53ba6SRoland Levillain            ],
81*eca53ba6SRoland Levillain        },
82*eca53ba6SRoland Levillain    },
83*eca53ba6SRoland Levillain    static_libs: [
84*eca53ba6SRoland Levillain        "libcpu_features-utils",
85*eca53ba6SRoland Levillain    ],
86*eca53ba6SRoland Levillain    apex_available: [
87*eca53ba6SRoland Levillain        "com.android.art",
88*eca53ba6SRoland Levillain        "com.android.art.debug",
89*eca53ba6SRoland Levillain    ],
90*eca53ba6SRoland Levillain}
91*eca53ba6SRoland Levillain
92*eca53ba6SRoland Levillaincc_library {
93*eca53ba6SRoland Levillain    name: "libcpu_features",
94*eca53ba6SRoland Levillain    defaults: [
95*eca53ba6SRoland Levillain        "cpu_features-defaults",
96*eca53ba6SRoland Levillain    ],
97*eca53ba6SRoland Levillain    export_include_dirs: ["include"],
98*eca53ba6SRoland Levillain    whole_static_libs: [
99*eca53ba6SRoland Levillain        "libcpu_features-utils",
100*eca53ba6SRoland Levillain    ],
101*eca53ba6SRoland Levillain    arch: {
102*eca53ba6SRoland Levillain        arm: {
103*eca53ba6SRoland Levillain            srcs: [
104*eca53ba6SRoland Levillain                "src/impl_arm_linux_or_android.c",
105*eca53ba6SRoland Levillain            ],
106*eca53ba6SRoland Levillain            whole_static_libs: [
107*eca53ba6SRoland Levillain                "libcpu_features-hwcaps",
108*eca53ba6SRoland Levillain            ],
109*eca53ba6SRoland Levillain        },
110*eca53ba6SRoland Levillain        arm64: {
111*eca53ba6SRoland Levillain            srcs: [
112*eca53ba6SRoland Levillain                "src/impl_aarch64_linux_or_android.c",
113*eca53ba6SRoland Levillain            ],
114*eca53ba6SRoland Levillain            whole_static_libs: [
115*eca53ba6SRoland Levillain                "libcpu_features-hwcaps",
116*eca53ba6SRoland Levillain            ],
117*eca53ba6SRoland Levillain            cflags: [
118*eca53ba6SRoland Levillain                "-Wno-gnu-designator",
119*eca53ba6SRoland Levillain            ],
120*eca53ba6SRoland Levillain        },
121*eca53ba6SRoland Levillain        x86: {
122*eca53ba6SRoland Levillain            srcs: [
123*eca53ba6SRoland Levillain                "src/impl_x86_linux_or_android.c",
124*eca53ba6SRoland Levillain            ],
125*eca53ba6SRoland Levillain            cflags: [
126*eca53ba6SRoland Levillain                "-Wno-unused-variable",
127*eca53ba6SRoland Levillain            ],
128*eca53ba6SRoland Levillain        },
129*eca53ba6SRoland Levillain        x86_64: {
130*eca53ba6SRoland Levillain            srcs: [
131*eca53ba6SRoland Levillain                "src/impl_x86_linux_or_android.c",
132*eca53ba6SRoland Levillain            ],
133*eca53ba6SRoland Levillain            cflags: [
134*eca53ba6SRoland Levillain                "-Wno-unused-variable",
135*eca53ba6SRoland Levillain            ],
136*eca53ba6SRoland Levillain        },
137*eca53ba6SRoland Levillain    },
138*eca53ba6SRoland Levillain    target: {
139*eca53ba6SRoland Levillain        windows: {
140*eca53ba6SRoland Levillain            enabled: true,
141*eca53ba6SRoland Levillain        },
142*eca53ba6SRoland Levillain    },
143*eca53ba6SRoland Levillain    apex_available: [
144*eca53ba6SRoland Levillain        "com.android.art",
145*eca53ba6SRoland Levillain        "com.android.art.debug",
146*eca53ba6SRoland Levillain    ],
147*eca53ba6SRoland Levillain}
148*eca53ba6SRoland Levillain
149*eca53ba6SRoland Levillaincc_binary {
150*eca53ba6SRoland Levillain    name: "list_cpu_features",
151*eca53ba6SRoland Levillain    defaults: [
152*eca53ba6SRoland Levillain        "cpu_features-defaults",
153*eca53ba6SRoland Levillain    ],
154*eca53ba6SRoland Levillain    srcs: [
155*eca53ba6SRoland Levillain        "src/utils/list_cpu_features.c",
156*eca53ba6SRoland Levillain    ],
157*eca53ba6SRoland Levillain    static_libs: [
158*eca53ba6SRoland Levillain        "libcpu_features",
159*eca53ba6SRoland Levillain    ],
160*eca53ba6SRoland Levillain    arch: {
161*eca53ba6SRoland Levillain        // Function `AddCacheInfo` in `src/utils/list_cpu_features.c` is only used on x86/x86_64 and
162*eca53ba6SRoland Levillain        // triggers an error with `-Werror and `-Wunused-function` on other architectures; disable
163*eca53ba6SRoland Levillain        // the latter flag to avoid compilation errors on those architectures.
164*eca53ba6SRoland Levillain        arm: {
165*eca53ba6SRoland Levillain            cflags: [
166*eca53ba6SRoland Levillain                "-Wno-unused-function",
167*eca53ba6SRoland Levillain            ],
168*eca53ba6SRoland Levillain        },
169*eca53ba6SRoland Levillain        arm64: {
170*eca53ba6SRoland Levillain            cflags: [
171*eca53ba6SRoland Levillain                "-Wno-unused-function",
172*eca53ba6SRoland Levillain            ],
173*eca53ba6SRoland Levillain        },
174*eca53ba6SRoland Levillain        x86: {
175*eca53ba6SRoland Levillain            cflags: [
176*eca53ba6SRoland Levillain                "-Wno-deprecated-declarations",
177*eca53ba6SRoland Levillain            ],
178*eca53ba6SRoland Levillain        },
179*eca53ba6SRoland Levillain        x86_64: {
180*eca53ba6SRoland Levillain            cflags: [
181*eca53ba6SRoland Levillain                "-Wno-deprecated-declarations",
182*eca53ba6SRoland Levillain            ],
183*eca53ba6SRoland Levillain        },
184*eca53ba6SRoland Levillain    },
185*eca53ba6SRoland Levillain}
186*eca53ba6SRoland Levillain
187*eca53ba6SRoland Levillain// Tests.
188*eca53ba6SRoland Levillain
189*eca53ba6SRoland Levillaincc_defaults {
190*eca53ba6SRoland Levillain    name: "cpu_features-test-defaults",
191*eca53ba6SRoland Levillain    test_suites: ["device-tests"],
192*eca53ba6SRoland Levillain    host_supported: true,
193*eca53ba6SRoland Levillain    compile_multilib: "both",
194*eca53ba6SRoland Levillain    local_include_dirs: [
195*eca53ba6SRoland Levillain        "include",
196*eca53ba6SRoland Levillain    ],
197*eca53ba6SRoland Levillain    cflags: [
198*eca53ba6SRoland Levillain        "-DCPU_FEATURES_TEST",
199*eca53ba6SRoland Levillain    ],
200*eca53ba6SRoland Levillain}
201*eca53ba6SRoland Levillain
202*eca53ba6SRoland Levillaincc_test_library {
203*eca53ba6SRoland Levillain    name: "libcpu_features-string_view",
204*eca53ba6SRoland Levillain    defaults: ["cpu_features-test-defaults"],
205*eca53ba6SRoland Levillain    srcs: [
206*eca53ba6SRoland Levillain        "src/string_view.c",
207*eca53ba6SRoland Levillain    ],
208*eca53ba6SRoland Levillain}
209*eca53ba6SRoland Levillain
210*eca53ba6SRoland Levillaincc_test_library {
211*eca53ba6SRoland Levillain    name: "libcpu_features-filesystem_for_testing",
212*eca53ba6SRoland Levillain    defaults: ["cpu_features-test-defaults"],
213*eca53ba6SRoland Levillain    cflags: [
214*eca53ba6SRoland Levillain        "-DCPU_FEATURES_MOCK_FILESYSTEM",
215*eca53ba6SRoland Levillain        // TODO: Handle unused parameters in
216*eca53ba6SRoland Levillain        // test/filesystem_for_testing.cc and remove this flag.
217*eca53ba6SRoland Levillain        "-Wno-unused-parameter",
218*eca53ba6SRoland Levillain    ],
219*eca53ba6SRoland Levillain    srcs: [
220*eca53ba6SRoland Levillain        "test/filesystem_for_testing.cc",
221*eca53ba6SRoland Levillain    ],
222*eca53ba6SRoland Levillain}
223*eca53ba6SRoland Levillain
224*eca53ba6SRoland Levillaincc_test_library {
225*eca53ba6SRoland Levillain    name: "libcpu_features-hwcaps_for_testing",
226*eca53ba6SRoland Levillain    defaults: ["cpu_features-test-defaults"],
227*eca53ba6SRoland Levillain    cflags: [
228*eca53ba6SRoland Levillain        "-DCPU_FEATURES_MOCK_GET_ELF_HWCAP_FROM_GETAUXVAL",
229*eca53ba6SRoland Levillain        "-DCPU_FEATURES_TEST",
230*eca53ba6SRoland Levillain    ],
231*eca53ba6SRoland Levillain    srcs: [
232*eca53ba6SRoland Levillain        "src/hwcaps.c",
233*eca53ba6SRoland Levillain        "test/hwcaps_for_testing.cc",
234*eca53ba6SRoland Levillain    ],
235*eca53ba6SRoland Levillain    static_libs: [
236*eca53ba6SRoland Levillain        "libcpu_features-string_view",
237*eca53ba6SRoland Levillain        "libcpu_features-filesystem_for_testing",
238*eca53ba6SRoland Levillain    ],
239*eca53ba6SRoland Levillain}
240*eca53ba6SRoland Levillain
241*eca53ba6SRoland Levillaincc_defaults {
242*eca53ba6SRoland Levillain    name: "stack_line_reader-defaults",
243*eca53ba6SRoland Levillain    cflags: [
244*eca53ba6SRoland Levillain        "-DSTACK_LINE_READER_BUFFER_SIZE=1024",
245*eca53ba6SRoland Levillain    ],
246*eca53ba6SRoland Levillain}
247*eca53ba6SRoland Levillain
248*eca53ba6SRoland Levillaincc_test_library {
249*eca53ba6SRoland Levillain    name: "libcpu_features-stack_line_reader",
250*eca53ba6SRoland Levillain    defaults: [
251*eca53ba6SRoland Levillain        "cpu_features-test-defaults",
252*eca53ba6SRoland Levillain        "stack_line_reader-defaults",
253*eca53ba6SRoland Levillain    ],
254*eca53ba6SRoland Levillain    srcs: [
255*eca53ba6SRoland Levillain        "src/stack_line_reader.c",
256*eca53ba6SRoland Levillain    ],
257*eca53ba6SRoland Levillain    static_libs: [
258*eca53ba6SRoland Levillain        "libcpu_features-filesystem_for_testing",
259*eca53ba6SRoland Levillain        "libcpu_features-string_view",
260*eca53ba6SRoland Levillain    ],
261*eca53ba6SRoland Levillain}
262*eca53ba6SRoland Levillain
263*eca53ba6SRoland Levillaincc_test_library {
264*eca53ba6SRoland Levillain    name: "libcpu_features-stack_line_reader_for_test",
265*eca53ba6SRoland Levillain    defaults: ["cpu_features-test-defaults"],
266*eca53ba6SRoland Levillain    cflags: [
267*eca53ba6SRoland Levillain        "-DSTACK_LINE_READER_BUFFER_SIZE=16",
268*eca53ba6SRoland Levillain    ],
269*eca53ba6SRoland Levillain    srcs: [
270*eca53ba6SRoland Levillain        "src/stack_line_reader.c",
271*eca53ba6SRoland Levillain    ],
272*eca53ba6SRoland Levillain    whole_static_libs: [
273*eca53ba6SRoland Levillain        "libcpu_features-filesystem_for_testing",
274*eca53ba6SRoland Levillain        "libcpu_features-string_view",
275*eca53ba6SRoland Levillain    ],
276*eca53ba6SRoland Levillain}
277*eca53ba6SRoland Levillain
278*eca53ba6SRoland Levillaincc_test_library {
279*eca53ba6SRoland Levillain    name: "libcpu_features-all_libraries",
280*eca53ba6SRoland Levillain    defaults: [
281*eca53ba6SRoland Levillain        "cpu_features-test-defaults",
282*eca53ba6SRoland Levillain        "stack_line_reader-defaults",
283*eca53ba6SRoland Levillain    ],
284*eca53ba6SRoland Levillain    whole_static_libs: [
285*eca53ba6SRoland Levillain        "libcpu_features-filesystem_for_testing",
286*eca53ba6SRoland Levillain        "libcpu_features-hwcaps_for_testing",
287*eca53ba6SRoland Levillain        "libcpu_features-stack_line_reader",
288*eca53ba6SRoland Levillain        "libcpu_features-string_view",
289*eca53ba6SRoland Levillain    ],
290*eca53ba6SRoland Levillain}
291*eca53ba6SRoland Levillain
292*eca53ba6SRoland Levillaincc_test {
293*eca53ba6SRoland Levillain    name: "cpu_features-bit_utils_test",
294*eca53ba6SRoland Levillain    defaults: ["cpu_features-test-defaults"],
295*eca53ba6SRoland Levillain    srcs: [
296*eca53ba6SRoland Levillain        "test/bit_utils_test.cc",
297*eca53ba6SRoland Levillain    ],
298*eca53ba6SRoland Levillain}
299*eca53ba6SRoland Levillain
300*eca53ba6SRoland Levillaincc_test {
301*eca53ba6SRoland Levillain    name: "cpu_features-string_view_test",
302*eca53ba6SRoland Levillain    defaults: ["cpu_features-test-defaults"],
303*eca53ba6SRoland Levillain    srcs: [
304*eca53ba6SRoland Levillain        "test/string_view_test.cc",
305*eca53ba6SRoland Levillain        "src/string_view.c",
306*eca53ba6SRoland Levillain    ],
307*eca53ba6SRoland Levillain    static_libs: [
308*eca53ba6SRoland Levillain        "libcpu_features-string_view",
309*eca53ba6SRoland Levillain    ],
310*eca53ba6SRoland Levillain}
311*eca53ba6SRoland Levillain
312*eca53ba6SRoland Levillaincc_test {
313*eca53ba6SRoland Levillain    name: "cpu_features-stack_line_reader_test",
314*eca53ba6SRoland Levillain    defaults: [
315*eca53ba6SRoland Levillain        "cpu_features-test-defaults",
316*eca53ba6SRoland Levillain        "stack_line_reader-defaults",
317*eca53ba6SRoland Levillain    ],
318*eca53ba6SRoland Levillain    cflags: [
319*eca53ba6SRoland Levillain        // TODO: Handle unused funtions in
320*eca53ba6SRoland Levillain        // test/stack_line_reader_test.cc and remove this flag.
321*eca53ba6SRoland Levillain        "-Wno-unused-function",
322*eca53ba6SRoland Levillain    ],
323*eca53ba6SRoland Levillain    srcs: [
324*eca53ba6SRoland Levillain        "test/stack_line_reader_test.cc",
325*eca53ba6SRoland Levillain    ],
326*eca53ba6SRoland Levillain    static_libs: [
327*eca53ba6SRoland Levillain        "libcpu_features-stack_line_reader_for_test",
328*eca53ba6SRoland Levillain    ],
329*eca53ba6SRoland Levillain}
330*eca53ba6SRoland Levillain
331*eca53ba6SRoland Levillaincc_test {
332*eca53ba6SRoland Levillain    name: "cpu_features-cpuinfo_test",
333*eca53ba6SRoland Levillain    defaults: [
334*eca53ba6SRoland Levillain        "cpu_features-test-defaults",
335*eca53ba6SRoland Levillain    ],
336*eca53ba6SRoland Levillain    static_libs: [
337*eca53ba6SRoland Levillain        "libcpu_features-all_libraries",
338*eca53ba6SRoland Levillain    ],
339*eca53ba6SRoland Levillain    cflags: [
340*eca53ba6SRoland Levillain        "-DSTACK_LINE_READER_BUFFER_SIZE=1024",
341*eca53ba6SRoland Levillain    ],
342*eca53ba6SRoland Levillain    arch: {
343*eca53ba6SRoland Levillain        x86: {
344*eca53ba6SRoland Levillain            cflags: [
345*eca53ba6SRoland Levillain                "-DCPU_FEATURES_MOCK_CPUID_X86",
346*eca53ba6SRoland Levillain                "-Wno-unused-variable",
347*eca53ba6SRoland Levillain                "-Wno-deprecated-declarations",
348*eca53ba6SRoland Levillain            ],
349*eca53ba6SRoland Levillain            srcs: [
350*eca53ba6SRoland Levillain                "test/cpuinfo_x86_test.cc",
351*eca53ba6SRoland Levillain                "src/impl_x86_linux_or_android.c",
352*eca53ba6SRoland Levillain            ],
353*eca53ba6SRoland Levillain        },
354*eca53ba6SRoland Levillain        x86_64: {
355*eca53ba6SRoland Levillain            cflags: [
356*eca53ba6SRoland Levillain                "-DCPU_FEATURES_MOCK_CPUID_X86",
357*eca53ba6SRoland Levillain                "-Wno-unused-variable",
358*eca53ba6SRoland Levillain                "-Wno-deprecated-declarations",
359*eca53ba6SRoland Levillain            ],
360*eca53ba6SRoland Levillain            srcs: [
361*eca53ba6SRoland Levillain                "test/cpuinfo_x86_test.cc",
362*eca53ba6SRoland Levillain                "src/impl_x86_linux_or_android.c",
363*eca53ba6SRoland Levillain            ],
364*eca53ba6SRoland Levillain        },
365*eca53ba6SRoland Levillain        arm: {
366*eca53ba6SRoland Levillain            srcs: [
367*eca53ba6SRoland Levillain                "test/cpuinfo_arm_test.cc",
368*eca53ba6SRoland Levillain                "src/impl_arm_linux_or_android.c",
369*eca53ba6SRoland Levillain            ],
370*eca53ba6SRoland Levillain        },
371*eca53ba6SRoland Levillain        arm64: {
372*eca53ba6SRoland Levillain            cflags: [
373*eca53ba6SRoland Levillain                "-Wno-gnu-designator",
374*eca53ba6SRoland Levillain            ],
375*eca53ba6SRoland Levillain            srcs: [
376*eca53ba6SRoland Levillain                "test/cpuinfo_aarch64_test.cc",
377*eca53ba6SRoland Levillain                "src/impl_aarch64_linux_or_android.c",
378*eca53ba6SRoland Levillain            ],
379*eca53ba6SRoland Levillain        },
380*eca53ba6SRoland Levillain    },
381*eca53ba6SRoland Levillain}
382