blob: 093f33aed598f86bded22bbc73664d0297afe983 [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"],
165}
166
Roland Levillain9c53ca62018-10-31 19:51:43 +0000167art_cc_library {
168 name: "libvixl",
Paul Duffin1d441a72019-07-08 15:20:52 +0100169 visibility: libvixl_visibility,
Pirama Arumuga Nainar67fa1c72018-04-18 23:03:04 -0700170 defaults: [
Paul Duffind1a83472019-07-12 15:30:36 +0100171 "libvixl-defaults",
Pirama Arumuga Nainar67fa1c72018-04-18 23:03:04 -0700172 "vixl-release",
Roland Levillain9c53ca62018-10-31 19:51:43 +0000173 "vixl-arm",
Pirama Arumuga Nainar67fa1c72018-04-18 23:03:04 -0700174 "vixl-arm64",
175 "dex2oat-pgo-defaults",
176 ],
Pirama Arumuga Nainar9048d872018-01-04 11:18:07 -0800177
Yi Kongf6111722018-04-06 14:10:43 -0700178 target: {
179 android: {
180 lto: {
Paul Duffin56af64d2019-07-08 15:19:49 +0100181 thin: true,
Yi Kongf6111722018-04-06 14:10:43 -0700182 },
183 },
184 },
Jiyong Park5c997a02020-04-28 18:22:11 +0900185
186 apex_available: [
Martin Stjernholm60328822020-10-12 15:11:13 +0100187 "com.android.art",
Jiyong Park5c997a02020-04-28 18:22:11 +0900188 "com.android.art.debug",
Jiyong Park5c997a02020-04-28 18:22:11 +0900189 ],
Serban Constantinescu98eabc72016-08-16 14:33:45 +0100190}
191
Roland Levillain9c53ca62018-10-31 19:51:43 +0000192art_cc_library {
193 name: "libvixld",
Paul Duffin1d441a72019-07-08 15:20:52 +0100194 visibility: libvixl_visibility,
Pirama Arumuga Nainar67fa1c72018-04-18 23:03:04 -0700195 defaults: [
Paul Duffind1a83472019-07-12 15:30:36 +0100196 "libvixl-defaults",
Roland Levillain9c53ca62018-10-31 19:51:43 +0000197 "vixl-debug",
Pirama Arumuga Nainar67fa1c72018-04-18 23:03:04 -0700198 "vixl-arm",
Roland Levillain9c53ca62018-10-31 19:51:43 +0000199 "vixl-arm64",
Pirama Arumuga Nainar67fa1c72018-04-18 23:03:04 -0700200 ],
Jiyong Park5c997a02020-04-28 18:22:11 +0900201
202 apex_available: [
Martin Stjernholm60328822020-10-12 15:11:13 +0100203 "com.android.art",
Jiyong Park5c997a02020-04-28 18:22:11 +0900204 "com.android.art.debug",
205 ],
Serban Constantinescu98eabc72016-08-16 14:33:45 +0100206}
207
208//######## VIXL HOST TESTS #########
209//
210// We only support 64bit host builds for now.
211// To run all the tests: vixl-test-runner --run_all
212//
Dan Willemsen7168b852017-10-06 11:27:01 -0700213cc_test_host {
Serban Constantinescu98eabc72016-08-16 14:33:45 +0100214 name: "vixl-test-runner",
Dan Willemsen7168b852017-10-06 11:27:01 -0700215 gtest: false,
Paul Duffin56af64d2019-07-08 15:19:49 +0100216 defaults: [
217 "vixl-debug",
218 "vixl-arm",
219 "vixl-arm64",
220 ],
Paul Duffind1a83472019-07-12 15:30:36 +0100221 local_include_dirs: [
222 "test",
223 ],
Serban Constantinescu98eabc72016-08-16 14:33:45 +0100224 srcs: [
225 "test/*.cc",
226 "test/aarch32/*.cc",
227 "test/aarch64/*.cc",
228 ],
Paul Duffind1a83472019-07-12 15:30:36 +0100229 static_libs: [
230 "libvixld",
231 ],
Dan Willemsen7168b852017-10-06 11:27:01 -0700232 data: [
233 "test/test-trace-reference/*",
234 ],
Serban Constantinescu98eabc72016-08-16 14:33:45 +0100235 enabled: false,
236 target: {
Dan Willemsenbe06b802017-10-02 10:41:10 -0700237 linux_glibc_x86_64: {
Serban Constantinescu98eabc72016-08-16 14:33:45 +0100238 enabled: true,
239 },
240 },
241}