blob: e64dec164587b153ff9643f293306e544c67f5e7 [file] [log] [blame]
Serban Constantinescu98eabc72016-08-16 14:33:45 +01001// Copyright (C) 2016 The Android Open Source Project
2// All rights reserved.
3//
4// Redistribution and use in source and binary forms, with or without
5// modification, are permitted provided that the following conditions
6// are met:
7// * Redistributions of source code must retain the above copyright
8// notice, this list of conditions and the following disclaimer.
9// * Redistributions in binary form must reproduce the above copyright
10// notice, this list of conditions and the following disclaimer in
11// the documentation and/or other materials provided with the
12// distribution.
13//
14// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
15// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
16// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
17// FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
18// COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
19// INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
20// BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS
21// OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED
22// AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
23// OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
24// OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
25// SUCH DAMAGE.
26//
27//
28// Copyright (c) 2016 VIXL authors
29// All rights reserved.
30//
31// Redistribution and use in source and binary forms, with or without
32// modification, are permitted provided that the following conditions
33// are met:
34// 1. Redistributions of source code must retain the above copyright
35// notice, this list of conditions and the following disclaimer.
36// 2. Redistributions in binary form must reproduce the above copyright
37// notice, this list of conditions and the following disclaimer in the
38// documentation and/or other materials provided with the distribution.
39// 3. The name of the company may not be used to endorse or promote
40// products derived from this software without specific prior written
41// permission.
42//
43// THIS SOFTWARE IS PROVIDED BY ARM LTD ``AS IS'' AND ANY EXPRESS OR IMPLIED
44// WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
45// MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
46// IN NO EVENT SHALL ARM LTD BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
47// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED
48// TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
49// PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
50// LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
51// NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
52// SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
53
Paul Duffin1d441a72019-07-08 15:20:52 +010054package {
55 default_visibility: ["//visibility:private"],
Bob Badourcd42a2b2021-02-12 21:41:48 -080056 default_applicable_licenses: ["external_vixl_license"],
57}
58
59// Added automatically by a large-scale-change
60// See: http://go/android-license-faq
61license {
62 name: "external_vixl_license",
63 visibility: [":__subpackages__"],
64 license_kinds: [
65 "SPDX-license-identifier-BSD",
66 ],
67 license_text: [
68 "LICENCE",
69 ],
Paul Duffin1d441a72019-07-08 15:20:52 +010070}
71
Serban Constantinescu98eabc72016-08-16 14:33:45 +010072cc_defaults {
73 name: "vixl-common",
74 host_supported: true,
Serban Constantinescu98eabc72016-08-16 14:33:45 +010075 clang_cflags: ["-Wimplicit-fallthrough"],
Chih-Hung Hsieh5652ef32017-09-29 11:33:41 -070076 cflags: [
77 "-Wall",
78 "-Werror",
79 ],
Serban Constantinescu98eabc72016-08-16 14:33:45 +010080 cppflags: [
81 "-DVIXL_GENERATE_SIMULATOR_INSTRUCTIONS_VALUE=0",
Serban Constantinescu98eabc72016-08-16 14:33:45 +010082 "-Wextra",
Serban Constantinescu98eabc72016-08-16 14:33:45 +010083 "-fdiagnostics-show-option",
84 "-Wredundant-decls",
85 "-Wunreachable-code",
Serban Constantinescu98eabc72016-08-16 14:33:45 +010086 "-pedantic",
Serban Constantinescu98eabc72016-08-16 14:33:45 +010087
88 // Explicitly enable the write-strings warning. VIXL uses
89 // const correctly when handling string constants.
90 "-Wwrite-strings",
Vladimir Marko9b007712018-04-26 16:04:44 +010091
Evgeny Astigeevich39f60172019-10-31 11:48:28 +000092 // Explicitly disable 'missing-return' warnings because a lot of them are false positive.
93 // VIXL often creates stubs and compile-time configurations with things like
94 // VIXL_UNIMPLEMENTED(). Properly satisfying -Wmissing-noreturn requires that functions are
95 // annotated at their _declarations_, which means #ifdefs in header files.
96 // Conditional compilation in headers can result in incorrect behaviour when
97 // libvixl.so is built with different flags than the code using it. Disabling this
98 // warning allows VIXL to simplify the headers, and should make VIXL more robust.
99 "-Wno-missing-noreturn",
100
Vladimir Marko9b007712018-04-26 16:04:44 +0100101 "-DVIXL_CODE_BUFFER_MALLOC",
Serban Constantinescu98eabc72016-08-16 14:33:45 +0100102 ],
Serban Constantinescu98eabc72016-08-16 14:33:45 +0100103 native_coverage: false,
104 sanitize: {
105 recover: ["shift-exponent"],
106 },
107}
108
Roland Levillain9c53ca62018-10-31 19:51:43 +0000109art_cc_defaults {
Serban Constantinescu98eabc72016-08-16 14:33:45 +0100110 name: "vixl-arm",
111 defaults: ["vixl-common"],
Roland Levillain9c53ca62018-10-31 19:51:43 +0000112 codegen: {
113 arm: {
114 srcs: ["src/aarch32/*.cc"],
115 cppflags: [
116 "-DVIXL_INCLUDE_TARGET_T32",
117 ],
118 },
119 },
Serban Constantinescu98eabc72016-08-16 14:33:45 +0100120}
121
Roland Levillain9c53ca62018-10-31 19:51:43 +0000122art_cc_defaults {
Serban Constantinescu98eabc72016-08-16 14:33:45 +0100123 name: "vixl-arm64",
124 defaults: ["vixl-common"],
Roland Levillain9c53ca62018-10-31 19:51:43 +0000125 codegen: {
126 arm64: {
127 srcs: ["src/aarch64/*.cc"],
128 cppflags: [
129 "-DVIXL_INCLUDE_SIMULATOR_AARCH64",
130 "-DVIXL_INCLUDE_TARGET_A64",
131 ],
Paul Duffin56af64d2019-07-08 15:19:49 +0100132 },
Roland Levillain9c53ca62018-10-31 19:51:43 +0000133 },
Serban Constantinescu98eabc72016-08-16 14:33:45 +0100134}
135
136cc_defaults {
137 name: "vixl-debug",
138 defaults: ["vixl-common"],
139 cppflags: [
140 "-DVIXL_DEBUG",
141 "-UNDEBUG",
142
143 "-O2",
144 "-ggdb3",
145 ],
146}
147
148cc_defaults {
149 name: "vixl-release",
150 defaults: ["vixl-common"],
151 cppflags: [
152 "-O3",
153 ],
154}
155
Paul Duffin1d441a72019-07-08 15:20:52 +0100156libvixl_visibility = [
157 "//art:__subpackages__",
158]
159
Paul Duffind1a83472019-07-12 15:30:36 +0100160// Defaults for the libvixl[d] libraries
161cc_defaults {
162 name: "libvixl-defaults",
163 srcs: ["src/*.cc"],
164 export_include_dirs: ["src"],
Nicolas Geoffrayc9187192021-03-03 21:56:54 +0000165 min_sdk_version: "S",
Paul Duffind1a83472019-07-12 15:30:36 +0100166}
167
Roland Levillain9c53ca62018-10-31 19:51:43 +0000168art_cc_library {
169 name: "libvixl",
Paul Duffin1d441a72019-07-08 15:20:52 +0100170 visibility: libvixl_visibility,
Pirama Arumuga Nainar67fa1c72018-04-18 23:03:04 -0700171 defaults: [
Paul Duffind1a83472019-07-12 15:30:36 +0100172 "libvixl-defaults",
Pirama Arumuga Nainar67fa1c72018-04-18 23:03:04 -0700173 "vixl-release",
Roland Levillain9c53ca62018-10-31 19:51:43 +0000174 "vixl-arm",
Pirama Arumuga Nainar67fa1c72018-04-18 23:03:04 -0700175 "vixl-arm64",
176 "dex2oat-pgo-defaults",
177 ],
Pirama Arumuga Nainar9048d872018-01-04 11:18:07 -0800178
Yi Kongf6111722018-04-06 14:10:43 -0700179 target: {
180 android: {
181 lto: {
Paul Duffin56af64d2019-07-08 15:19:49 +0100182 thin: true,
Yi Kongf6111722018-04-06 14:10:43 -0700183 },
184 },
185 },
Jiyong Park5c997a02020-04-28 18:22:11 +0900186
187 apex_available: [
Martin Stjernholm60328822020-10-12 15:11:13 +0100188 "com.android.art",
Jiyong Park5c997a02020-04-28 18:22:11 +0900189 "com.android.art.debug",
Jiyong Park5c997a02020-04-28 18:22:11 +0900190 ],
Vladimir Marko07f36532021-05-06 10:35:31 +0000191
192 static: {
193 cflags: [
194 "-fvisibility=hidden",
195 ],
196 },
197 shared: {
198 cflags: [
199 "-fvisibility=protected",
200 ],
201 },
Serban Constantinescu98eabc72016-08-16 14:33:45 +0100202}
203
Roland Levillain9c53ca62018-10-31 19:51:43 +0000204art_cc_library {
205 name: "libvixld",
Paul Duffin1d441a72019-07-08 15:20:52 +0100206 visibility: libvixl_visibility,
Pirama Arumuga Nainar67fa1c72018-04-18 23:03:04 -0700207 defaults: [
Paul Duffind1a83472019-07-12 15:30:36 +0100208 "libvixl-defaults",
Roland Levillain9c53ca62018-10-31 19:51:43 +0000209 "vixl-debug",
Pirama Arumuga Nainar67fa1c72018-04-18 23:03:04 -0700210 "vixl-arm",
Roland Levillain9c53ca62018-10-31 19:51:43 +0000211 "vixl-arm64",
Pirama Arumuga Nainar67fa1c72018-04-18 23:03:04 -0700212 ],
Jiyong Park5c997a02020-04-28 18:22:11 +0900213
214 apex_available: [
Martin Stjernholm60328822020-10-12 15:11:13 +0100215 "com.android.art",
Jiyong Park5c997a02020-04-28 18:22:11 +0900216 "com.android.art.debug",
217 ],
Serban Constantinescu98eabc72016-08-16 14:33:45 +0100218}
219
220//######## VIXL HOST TESTS #########
221//
222// We only support 64bit host builds for now.
223// To run all the tests: vixl-test-runner --run_all
224//
Dan Willemsen7168b852017-10-06 11:27:01 -0700225cc_test_host {
Serban Constantinescu98eabc72016-08-16 14:33:45 +0100226 name: "vixl-test-runner",
Dan Willemsen7168b852017-10-06 11:27:01 -0700227 gtest: false,
Paul Duffin56af64d2019-07-08 15:19:49 +0100228 defaults: [
229 "vixl-debug",
230 "vixl-arm",
231 "vixl-arm64",
232 ],
Paul Duffind1a83472019-07-12 15:30:36 +0100233 local_include_dirs: [
234 "test",
235 ],
Serban Constantinescu98eabc72016-08-16 14:33:45 +0100236 srcs: [
237 "test/*.cc",
238 "test/aarch32/*.cc",
239 "test/aarch64/*.cc",
240 ],
Paul Duffind1a83472019-07-12 15:30:36 +0100241 static_libs: [
242 "libvixld",
243 ],
Dan Willemsen7168b852017-10-06 11:27:01 -0700244 data: [
245 "test/test-trace-reference/*",
246 ],
Serban Constantinescu98eabc72016-08-16 14:33:45 +0100247 enabled: false,
248 target: {
Dan Willemsenbe06b802017-10-02 10:41:10 -0700249 linux_glibc_x86_64: {
Serban Constantinescu98eabc72016-08-16 14:33:45 +0100250 enabled: true,
251 },
Colin Cross46089112022-03-08 15:12:51 -0800252 linux_musl_x86_64: {
253 enabled: true,
254 },
Serban Constantinescu98eabc72016-08-16 14:33:45 +0100255 },
256}