blob: 9e7473f47bb80ce7eceac1d0ff32f2cfdc43923e [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"],
56}
57
Serban Constantinescu98eabc72016-08-16 14:33:45 +010058cc_defaults {
59 name: "vixl-common",
60 host_supported: true,
Serban Constantinescu98eabc72016-08-16 14:33:45 +010061 srcs: ["src/*.cc"],
62 clang_cflags: ["-Wimplicit-fallthrough"],
Chih-Hung Hsieh5652ef32017-09-29 11:33:41 -070063 cflags: [
64 "-Wall",
65 "-Werror",
66 ],
Serban Constantinescu98eabc72016-08-16 14:33:45 +010067 cppflags: [
68 "-DVIXL_GENERATE_SIMULATOR_INSTRUCTIONS_VALUE=0",
Serban Constantinescu98eabc72016-08-16 14:33:45 +010069 "-Wextra",
Serban Constantinescu98eabc72016-08-16 14:33:45 +010070 "-fdiagnostics-show-option",
71 "-Wredundant-decls",
72 "-Wunreachable-code",
73 "-Wmissing-noreturn",
74 "-pedantic",
Serban Constantinescu98eabc72016-08-16 14:33:45 +010075
76 // Explicitly enable the write-strings warning. VIXL uses
77 // const correctly when handling string constants.
78 "-Wwrite-strings",
Vladimir Marko9b007712018-04-26 16:04:44 +010079
Vladimir Marko9b007712018-04-26 16:04:44 +010080 "-DVIXL_CODE_BUFFER_MALLOC",
Serban Constantinescu98eabc72016-08-16 14:33:45 +010081 ],
82 local_include_dirs: ["src"],
83 native_coverage: false,
84 sanitize: {
85 recover: ["shift-exponent"],
86 },
87}
88
Roland Levillain9c53ca62018-10-31 19:51:43 +000089art_cc_defaults {
Serban Constantinescu98eabc72016-08-16 14:33:45 +010090 name: "vixl-arm",
91 defaults: ["vixl-common"],
Roland Levillain9c53ca62018-10-31 19:51:43 +000092 codegen: {
93 arm: {
94 srcs: ["src/aarch32/*.cc"],
95 cppflags: [
96 "-DVIXL_INCLUDE_TARGET_T32",
97 ],
98 },
99 },
Serban Constantinescu98eabc72016-08-16 14:33:45 +0100100}
101
Roland Levillain9c53ca62018-10-31 19:51:43 +0000102art_cc_defaults {
Serban Constantinescu98eabc72016-08-16 14:33:45 +0100103 name: "vixl-arm64",
104 defaults: ["vixl-common"],
Roland Levillain9c53ca62018-10-31 19:51:43 +0000105 codegen: {
106 arm64: {
107 srcs: ["src/aarch64/*.cc"],
108 cppflags: [
109 "-DVIXL_INCLUDE_SIMULATOR_AARCH64",
110 "-DVIXL_INCLUDE_TARGET_A64",
111 ],
Paul Duffin56af64d2019-07-08 15:19:49 +0100112 },
Roland Levillain9c53ca62018-10-31 19:51:43 +0000113 },
Serban Constantinescu98eabc72016-08-16 14:33:45 +0100114}
115
116cc_defaults {
117 name: "vixl-debug",
118 defaults: ["vixl-common"],
119 cppflags: [
120 "-DVIXL_DEBUG",
121 "-UNDEBUG",
122
123 "-O2",
124 "-ggdb3",
125 ],
126}
127
128cc_defaults {
129 name: "vixl-release",
130 defaults: ["vixl-common"],
131 cppflags: [
132 "-O3",
133 ],
134}
135
Paul Duffin1d441a72019-07-08 15:20:52 +0100136libvixl_visibility = [
137 "//art:__subpackages__",
138]
139
Roland Levillain9c53ca62018-10-31 19:51:43 +0000140art_cc_library {
141 name: "libvixl",
Paul Duffin1d441a72019-07-08 15:20:52 +0100142 visibility: libvixl_visibility,
Pirama Arumuga Nainar67fa1c72018-04-18 23:03:04 -0700143 defaults: [
144 "vixl-release",
Roland Levillain9c53ca62018-10-31 19:51:43 +0000145 "vixl-arm",
Pirama Arumuga Nainar67fa1c72018-04-18 23:03:04 -0700146 "vixl-arm64",
147 "dex2oat-pgo-defaults",
148 ],
Pirama Arumuga Nainar9048d872018-01-04 11:18:07 -0800149
Yi Kongf6111722018-04-06 14:10:43 -0700150 target: {
151 android: {
152 lto: {
Paul Duffin56af64d2019-07-08 15:19:49 +0100153 thin: true,
Yi Kongf6111722018-04-06 14:10:43 -0700154 },
155 },
156 },
Serban Constantinescu98eabc72016-08-16 14:33:45 +0100157}
158
Roland Levillain9c53ca62018-10-31 19:51:43 +0000159art_cc_library {
160 name: "libvixld",
Paul Duffin1d441a72019-07-08 15:20:52 +0100161 visibility: libvixl_visibility,
Pirama Arumuga Nainar67fa1c72018-04-18 23:03:04 -0700162 defaults: [
Roland Levillain9c53ca62018-10-31 19:51:43 +0000163 "vixl-debug",
Pirama Arumuga Nainar67fa1c72018-04-18 23:03:04 -0700164 "vixl-arm",
Roland Levillain9c53ca62018-10-31 19:51:43 +0000165 "vixl-arm64",
Pirama Arumuga Nainar67fa1c72018-04-18 23:03:04 -0700166 ],
Serban Constantinescu98eabc72016-08-16 14:33:45 +0100167}
168
169//######## VIXL HOST TESTS #########
170//
171// We only support 64bit host builds for now.
172// To run all the tests: vixl-test-runner --run_all
173//
Dan Willemsen7168b852017-10-06 11:27:01 -0700174cc_test_host {
Serban Constantinescu98eabc72016-08-16 14:33:45 +0100175 name: "vixl-test-runner",
Dan Willemsen7168b852017-10-06 11:27:01 -0700176 gtest: false,
Paul Duffin56af64d2019-07-08 15:19:49 +0100177 defaults: [
178 "vixl-debug",
179 "vixl-arm",
180 "vixl-arm64",
181 ],
Serban Constantinescu98eabc72016-08-16 14:33:45 +0100182 local_include_dirs: ["test"],
183 srcs: [
184 "test/*.cc",
185 "test/aarch32/*.cc",
186 "test/aarch64/*.cc",
187 ],
Dan Willemsen7168b852017-10-06 11:27:01 -0700188 data: [
189 "test/test-trace-reference/*",
190 ],
Serban Constantinescu98eabc72016-08-16 14:33:45 +0100191 enabled: false,
192 target: {
Dan Willemsenbe06b802017-10-02 10:41:10 -0700193 linux_glibc_x86_64: {
Serban Constantinescu98eabc72016-08-16 14:33:45 +0100194 enabled: true,
195 },
196 },
197}