xref: /aosp_15_r20/external/vixl/Android.bp (revision f5c631da2f1efdd72b5fd1e20510e4042af13d77)
1*f5c631daSSadaf Ebrahimi// Copyright (C) 2016 The Android Open Source Project
2*f5c631daSSadaf Ebrahimi// All rights reserved.
3*f5c631daSSadaf Ebrahimi//
4*f5c631daSSadaf Ebrahimi// Redistribution and use in source and binary forms, with or without
5*f5c631daSSadaf Ebrahimi// modification, are permitted provided that the following conditions
6*f5c631daSSadaf Ebrahimi// are met:
7*f5c631daSSadaf Ebrahimi//  * Redistributions of source code must retain the above copyright
8*f5c631daSSadaf Ebrahimi//    notice, this list of conditions and the following disclaimer.
9*f5c631daSSadaf Ebrahimi//  * Redistributions in binary form must reproduce the above copyright
10*f5c631daSSadaf Ebrahimi//    notice, this list of conditions and the following disclaimer in
11*f5c631daSSadaf Ebrahimi//    the documentation and/or other materials provided with the
12*f5c631daSSadaf Ebrahimi//    distribution.
13*f5c631daSSadaf Ebrahimi//
14*f5c631daSSadaf Ebrahimi// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
15*f5c631daSSadaf Ebrahimi// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
16*f5c631daSSadaf Ebrahimi// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
17*f5c631daSSadaf Ebrahimi// FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
18*f5c631daSSadaf Ebrahimi// COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
19*f5c631daSSadaf Ebrahimi// INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
20*f5c631daSSadaf Ebrahimi// BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS
21*f5c631daSSadaf Ebrahimi// OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED
22*f5c631daSSadaf Ebrahimi// AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
23*f5c631daSSadaf Ebrahimi// OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
24*f5c631daSSadaf Ebrahimi// OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
25*f5c631daSSadaf Ebrahimi// SUCH DAMAGE.
26*f5c631daSSadaf Ebrahimi//
27*f5c631daSSadaf Ebrahimi//
28*f5c631daSSadaf Ebrahimi// Copyright (c) 2016 VIXL authors
29*f5c631daSSadaf Ebrahimi// All rights reserved.
30*f5c631daSSadaf Ebrahimi//
31*f5c631daSSadaf Ebrahimi// Redistribution and use in source and binary forms, with or without
32*f5c631daSSadaf Ebrahimi// modification, are permitted provided that the following conditions
33*f5c631daSSadaf Ebrahimi// are met:
34*f5c631daSSadaf Ebrahimi// 1. Redistributions of source code must retain the above copyright
35*f5c631daSSadaf Ebrahimi//    notice, this list of conditions and the following disclaimer.
36*f5c631daSSadaf Ebrahimi// 2. Redistributions in binary form must reproduce the above copyright
37*f5c631daSSadaf Ebrahimi//    notice, this list of conditions and the following disclaimer in the
38*f5c631daSSadaf Ebrahimi//    documentation and/or other materials provided with the distribution.
39*f5c631daSSadaf Ebrahimi// 3. The name of the company may not be used to endorse or promote
40*f5c631daSSadaf Ebrahimi//    products derived from this software without specific prior written
41*f5c631daSSadaf Ebrahimi//    permission.
42*f5c631daSSadaf Ebrahimi//
43*f5c631daSSadaf Ebrahimi// THIS SOFTWARE IS PROVIDED BY ARM LTD ``AS IS'' AND ANY EXPRESS OR IMPLIED
44*f5c631daSSadaf Ebrahimi// WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
45*f5c631daSSadaf Ebrahimi// MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
46*f5c631daSSadaf Ebrahimi// IN NO EVENT SHALL ARM LTD BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
47*f5c631daSSadaf Ebrahimi// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED
48*f5c631daSSadaf Ebrahimi// TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
49*f5c631daSSadaf Ebrahimi// PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
50*f5c631daSSadaf Ebrahimi// LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
51*f5c631daSSadaf Ebrahimi// NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
52*f5c631daSSadaf Ebrahimi// SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
53*f5c631daSSadaf Ebrahimi
54*f5c631daSSadaf Ebrahimipackage {
55*f5c631daSSadaf Ebrahimi    default_visibility: ["//visibility:private"],
56*f5c631daSSadaf Ebrahimi    default_applicable_licenses: ["external_vixl_license"],
57*f5c631daSSadaf Ebrahimi}
58*f5c631daSSadaf Ebrahimi
59*f5c631daSSadaf Ebrahimi// Added automatically by a large-scale-change
60*f5c631daSSadaf Ebrahimi// See: http://go/android-license-faq
61*f5c631daSSadaf Ebrahimilicense {
62*f5c631daSSadaf Ebrahimi    name: "external_vixl_license",
63*f5c631daSSadaf Ebrahimi    visibility: [":__subpackages__"],
64*f5c631daSSadaf Ebrahimi    license_kinds: [
65*f5c631daSSadaf Ebrahimi        "SPDX-license-identifier-BSD",
66*f5c631daSSadaf Ebrahimi    ],
67*f5c631daSSadaf Ebrahimi    license_text: [
68*f5c631daSSadaf Ebrahimi        "LICENCE",
69*f5c631daSSadaf Ebrahimi    ],
70*f5c631daSSadaf Ebrahimi}
71*f5c631daSSadaf Ebrahimi
72*f5c631daSSadaf Ebrahimicc_defaults {
73*f5c631daSSadaf Ebrahimi    name: "vixl-common",
74*f5c631daSSadaf Ebrahimi    host_supported: true,
75*f5c631daSSadaf Ebrahimi    cflags: [
76*f5c631daSSadaf Ebrahimi        "-Wall",
77*f5c631daSSadaf Ebrahimi        "-Werror",
78*f5c631daSSadaf Ebrahimi        "-Wimplicit-fallthrough",
79*f5c631daSSadaf Ebrahimi    ],
80*f5c631daSSadaf Ebrahimi    cppflags: [
81*f5c631daSSadaf Ebrahimi        "-DVIXL_GENERATE_SIMULATOR_INSTRUCTIONS_VALUE=0",
82*f5c631daSSadaf Ebrahimi        "-Wextra",
83*f5c631daSSadaf Ebrahimi        "-fdiagnostics-show-option",
84*f5c631daSSadaf Ebrahimi        "-Wredundant-decls",
85*f5c631daSSadaf Ebrahimi        "-Wunreachable-code",
86*f5c631daSSadaf Ebrahimi        "-pedantic",
87*f5c631daSSadaf Ebrahimi
88*f5c631daSSadaf Ebrahimi        // Explicitly enable the write-strings warning. VIXL uses
89*f5c631daSSadaf Ebrahimi        // const correctly when handling string constants.
90*f5c631daSSadaf Ebrahimi        "-Wwrite-strings",
91*f5c631daSSadaf Ebrahimi
92*f5c631daSSadaf Ebrahimi        // Explicitly disable 'missing-return' warnings because a lot of them are false positive.
93*f5c631daSSadaf Ebrahimi        // VIXL often creates stubs and compile-time configurations with things like
94*f5c631daSSadaf Ebrahimi        // VIXL_UNIMPLEMENTED(). Properly satisfying -Wmissing-noreturn requires that functions are
95*f5c631daSSadaf Ebrahimi        // annotated at their _declarations_, which means #ifdefs in header files.
96*f5c631daSSadaf Ebrahimi        // Conditional compilation in headers can result in incorrect behaviour when
97*f5c631daSSadaf Ebrahimi        // libvixl.so is built with different flags than the code using it. Disabling this
98*f5c631daSSadaf Ebrahimi        // warning allows VIXL to simplify the headers, and should make VIXL more robust.
99*f5c631daSSadaf Ebrahimi        "-Wno-missing-noreturn",
100*f5c631daSSadaf Ebrahimi
101*f5c631daSSadaf Ebrahimi        "-DVIXL_CODE_BUFFER_MALLOC",
102*f5c631daSSadaf Ebrahimi    ],
103*f5c631daSSadaf Ebrahimi    native_coverage: false,
104*f5c631daSSadaf Ebrahimi    sanitize: {
105*f5c631daSSadaf Ebrahimi        recover: ["shift-exponent"],
106*f5c631daSSadaf Ebrahimi    },
107*f5c631daSSadaf Ebrahimi}
108*f5c631daSSadaf Ebrahimi
109*f5c631daSSadaf Ebrahimiart_cc_defaults {
110*f5c631daSSadaf Ebrahimi    name: "vixl-arm",
111*f5c631daSSadaf Ebrahimi    defaults: ["vixl-common"],
112*f5c631daSSadaf Ebrahimi    codegen: {
113*f5c631daSSadaf Ebrahimi        arm: {
114*f5c631daSSadaf Ebrahimi            srcs: ["src/aarch32/*.cc"],
115*f5c631daSSadaf Ebrahimi            cppflags: [
116*f5c631daSSadaf Ebrahimi                "-DVIXL_INCLUDE_TARGET_T32",
117*f5c631daSSadaf Ebrahimi            ],
118*f5c631daSSadaf Ebrahimi        },
119*f5c631daSSadaf Ebrahimi    },
120*f5c631daSSadaf Ebrahimi}
121*f5c631daSSadaf Ebrahimi
122*f5c631daSSadaf Ebrahimiart_cc_defaults {
123*f5c631daSSadaf Ebrahimi    name: "vixl-arm64",
124*f5c631daSSadaf Ebrahimi    defaults: ["vixl-common"],
125*f5c631daSSadaf Ebrahimi    codegen: {
126*f5c631daSSadaf Ebrahimi        arm64: {
127*f5c631daSSadaf Ebrahimi            srcs: ["src/aarch64/*.cc"],
128*f5c631daSSadaf Ebrahimi            cppflags: [
129*f5c631daSSadaf Ebrahimi                "-DVIXL_INCLUDE_SIMULATOR_AARCH64",
130*f5c631daSSadaf Ebrahimi                "-DVIXL_INCLUDE_TARGET_A64",
131*f5c631daSSadaf Ebrahimi            ],
132*f5c631daSSadaf Ebrahimi        },
133*f5c631daSSadaf Ebrahimi    },
134*f5c631daSSadaf Ebrahimi}
135*f5c631daSSadaf Ebrahimi
136*f5c631daSSadaf Ebrahimicc_defaults {
137*f5c631daSSadaf Ebrahimi    name: "vixl-debug",
138*f5c631daSSadaf Ebrahimi    defaults: ["vixl-common"],
139*f5c631daSSadaf Ebrahimi    cppflags: [
140*f5c631daSSadaf Ebrahimi        "-DVIXL_DEBUG",
141*f5c631daSSadaf Ebrahimi        "-UNDEBUG",
142*f5c631daSSadaf Ebrahimi
143*f5c631daSSadaf Ebrahimi        "-O2",
144*f5c631daSSadaf Ebrahimi        "-ggdb3",
145*f5c631daSSadaf Ebrahimi    ],
146*f5c631daSSadaf Ebrahimi}
147*f5c631daSSadaf Ebrahimi
148*f5c631daSSadaf Ebrahimicc_defaults {
149*f5c631daSSadaf Ebrahimi    name: "vixl-release",
150*f5c631daSSadaf Ebrahimi    defaults: ["vixl-common"],
151*f5c631daSSadaf Ebrahimi    cppflags: [
152*f5c631daSSadaf Ebrahimi        "-O3",
153*f5c631daSSadaf Ebrahimi    ],
154*f5c631daSSadaf Ebrahimi}
155*f5c631daSSadaf Ebrahimi
156*f5c631daSSadaf Ebrahimilibvixl_visibility = [
157*f5c631daSSadaf Ebrahimi    "//art:__subpackages__",
158*f5c631daSSadaf Ebrahimi]
159*f5c631daSSadaf Ebrahimi
160*f5c631daSSadaf Ebrahimi// Defaults for the libvixl[d] libraries
161*f5c631daSSadaf Ebrahimicc_defaults {
162*f5c631daSSadaf Ebrahimi    name: "libvixl-defaults",
163*f5c631daSSadaf Ebrahimi    srcs: ["src/*.cc"],
164*f5c631daSSadaf Ebrahimi    export_include_dirs: ["src"],
165*f5c631daSSadaf Ebrahimi    min_sdk_version: "S",
166*f5c631daSSadaf Ebrahimi
167*f5c631daSSadaf Ebrahimi    static: {
168*f5c631daSSadaf Ebrahimi        cflags: [
169*f5c631daSSadaf Ebrahimi            "-fvisibility=hidden",
170*f5c631daSSadaf Ebrahimi        ],
171*f5c631daSSadaf Ebrahimi    },
172*f5c631daSSadaf Ebrahimi    shared: {
173*f5c631daSSadaf Ebrahimi        cflags: [
174*f5c631daSSadaf Ebrahimi            "-fvisibility=protected",
175*f5c631daSSadaf Ebrahimi        ],
176*f5c631daSSadaf Ebrahimi    },
177*f5c631daSSadaf Ebrahimi}
178*f5c631daSSadaf Ebrahimi
179*f5c631daSSadaf Ebrahimiart_cc_library {
180*f5c631daSSadaf Ebrahimi    name: "libvixl",
181*f5c631daSSadaf Ebrahimi    visibility: libvixl_visibility,
182*f5c631daSSadaf Ebrahimi    defaults: [
183*f5c631daSSadaf Ebrahimi        "libvixl-defaults",
184*f5c631daSSadaf Ebrahimi        "vixl-release",
185*f5c631daSSadaf Ebrahimi        "vixl-arm",
186*f5c631daSSadaf Ebrahimi        "vixl-arm64",
187*f5c631daSSadaf Ebrahimi    ],
188*f5c631daSSadaf Ebrahimi
189*f5c631daSSadaf Ebrahimi    target: {
190*f5c631daSSadaf Ebrahimi        android: {
191*f5c631daSSadaf Ebrahimi            lto: {
192*f5c631daSSadaf Ebrahimi                thin: true,
193*f5c631daSSadaf Ebrahimi            },
194*f5c631daSSadaf Ebrahimi        },
195*f5c631daSSadaf Ebrahimi    },
196*f5c631daSSadaf Ebrahimi
197*f5c631daSSadaf Ebrahimi    apex_available: [
198*f5c631daSSadaf Ebrahimi        "com.android.art",
199*f5c631daSSadaf Ebrahimi        "com.android.art.debug",
200*f5c631daSSadaf Ebrahimi    ],
201*f5c631daSSadaf Ebrahimi}
202*f5c631daSSadaf Ebrahimi
203*f5c631daSSadaf Ebrahimiart_cc_library {
204*f5c631daSSadaf Ebrahimi    name: "libvixld",
205*f5c631daSSadaf Ebrahimi    visibility: libvixl_visibility,
206*f5c631daSSadaf Ebrahimi    defaults: [
207*f5c631daSSadaf Ebrahimi        "libvixl-defaults",
208*f5c631daSSadaf Ebrahimi        "vixl-debug",
209*f5c631daSSadaf Ebrahimi        "vixl-arm",
210*f5c631daSSadaf Ebrahimi        "vixl-arm64",
211*f5c631daSSadaf Ebrahimi    ],
212*f5c631daSSadaf Ebrahimi
213*f5c631daSSadaf Ebrahimi    apex_available: [
214*f5c631daSSadaf Ebrahimi        "com.android.art",
215*f5c631daSSadaf Ebrahimi        "com.android.art.debug",
216*f5c631daSSadaf Ebrahimi    ],
217*f5c631daSSadaf Ebrahimi}
218*f5c631daSSadaf Ebrahimi
219*f5c631daSSadaf Ebrahimi//######## VIXL HOST TESTS #########
220*f5c631daSSadaf Ebrahimi//
221*f5c631daSSadaf Ebrahimi// We only support 64bit host builds for now.
222*f5c631daSSadaf Ebrahimi// To run all the tests: vixl-test-runner --run_all
223*f5c631daSSadaf Ebrahimi//
224*f5c631daSSadaf Ebrahimicc_test_host {
225*f5c631daSSadaf Ebrahimi    name: "vixl-test-runner",
226*f5c631daSSadaf Ebrahimi    gtest: false,
227*f5c631daSSadaf Ebrahimi    defaults: [
228*f5c631daSSadaf Ebrahimi        "vixl-debug",
229*f5c631daSSadaf Ebrahimi        "vixl-arm",
230*f5c631daSSadaf Ebrahimi        "vixl-arm64",
231*f5c631daSSadaf Ebrahimi    ],
232*f5c631daSSadaf Ebrahimi    local_include_dirs: [
233*f5c631daSSadaf Ebrahimi        "test",
234*f5c631daSSadaf Ebrahimi    ],
235*f5c631daSSadaf Ebrahimi    exclude_srcs: [
236*f5c631daSSadaf Ebrahimi        "test/test-donkey.cc",
237*f5c631daSSadaf Ebrahimi    ],
238*f5c631daSSadaf Ebrahimi    srcs: [
239*f5c631daSSadaf Ebrahimi        "test/*.cc",
240*f5c631daSSadaf Ebrahimi        "test/aarch32/*.cc",
241*f5c631daSSadaf Ebrahimi        "test/aarch64/*.cc",
242*f5c631daSSadaf Ebrahimi    ],
243*f5c631daSSadaf Ebrahimi    static_libs: [
244*f5c631daSSadaf Ebrahimi        "libvixld",
245*f5c631daSSadaf Ebrahimi    ],
246*f5c631daSSadaf Ebrahimi    data: [
247*f5c631daSSadaf Ebrahimi        "test/test-trace-reference/*",
248*f5c631daSSadaf Ebrahimi    ],
249*f5c631daSSadaf Ebrahimi    enabled: false,
250*f5c631daSSadaf Ebrahimi    target: {
251*f5c631daSSadaf Ebrahimi        linux_glibc_x86_64: {
252*f5c631daSSadaf Ebrahimi            enabled: true,
253*f5c631daSSadaf Ebrahimi        },
254*f5c631daSSadaf Ebrahimi        linux_musl_x86_64: {
255*f5c631daSSadaf Ebrahimi            enabled: true,
256*f5c631daSSadaf Ebrahimi        },
257*f5c631daSSadaf Ebrahimi    },
258*f5c631daSSadaf Ebrahimi}
259*f5c631daSSadaf Ebrahimi
260*f5c631daSSadaf Ebrahimicc_genrule {
261*f5c631daSSadaf Ebrahimi    name: "vixl-test-timestamp",
262*f5c631daSSadaf Ebrahimi    srcs: [
263*f5c631daSSadaf Ebrahimi        ":libc++",
264*f5c631daSSadaf Ebrahimi        ":vixl-test-runner",
265*f5c631daSSadaf Ebrahimi        "test/test-trace-reference/**/*",
266*f5c631daSSadaf Ebrahimi    ],
267*f5c631daSSadaf Ebrahimi    compile_multilib: "first",
268*f5c631daSSadaf Ebrahimi    host_supported: true,
269*f5c631daSSadaf Ebrahimi    device_supported: false,
270*f5c631daSSadaf Ebrahimi    cmd: "echo 'Running vixl tests' && " +
271*f5c631daSSadaf Ebrahimi        "cp $(location :vixl-test-runner) $(genDir)/ && " +
272*f5c631daSSadaf Ebrahimi        // Copy needed share libs for vixl-test-runner
273*f5c631daSSadaf Ebrahimi        "cp $(location :libc++) $(genDir)/ && " +
274*f5c631daSSadaf Ebrahimi        "mkdir -p $(genDir)/test/test-trace-reference/ && " +
275*f5c631daSSadaf Ebrahimi        "cp $(locations test/test-trace-reference/**/*) $(genDir)/test/test-trace-reference/ && " +
276*f5c631daSSadaf Ebrahimi        "cd $(genDir) && " +
277*f5c631daSSadaf Ebrahimi        "./vixl-test-runner --run_all 2>&1 && " +
278*f5c631daSSadaf Ebrahimi        "./vixl-test-runner --run_all --debugger 2>&1 && " +
279*f5c631daSSadaf Ebrahimi        "echo 'vixl tests PASSED' && " +
280*f5c631daSSadaf Ebrahimi        "touch vixl-test-timestamp.txt",
281*f5c631daSSadaf Ebrahimi    out: ["vixl-test-timestamp.txt"],
282*f5c631daSSadaf Ebrahimi    enabled: false,
283*f5c631daSSadaf Ebrahimi    target: {
284*f5c631daSSadaf Ebrahimi        linux_glibc_x86_64: {
285*f5c631daSSadaf Ebrahimi            enabled: true,
286*f5c631daSSadaf Ebrahimi        },
287*f5c631daSSadaf Ebrahimi        linux_musl_x86_64: {
288*f5c631daSSadaf Ebrahimi            enabled: true,
289*f5c631daSSadaf Ebrahimi        },
290*f5c631daSSadaf Ebrahimi    },
291*f5c631daSSadaf Ebrahimi}
292*f5c631daSSadaf Ebrahimi
293*f5c631daSSadaf Ebrahimiphony_rule {
294*f5c631daSSadaf Ebrahimi    name: "run-vixl-tests",
295*f5c631daSSadaf Ebrahimi    phony_deps: [
296*f5c631daSSadaf Ebrahimi        "vixl-test-timestamp",
297*f5c631daSSadaf Ebrahimi    ],
298*f5c631daSSadaf Ebrahimi}
299