blob: 5f63861f3c0331b1c5049b452f92473caecbee2a [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
54cc_defaults {
55 name: "vixl-common",
56 host_supported: true,
Serban Constantinescu98eabc72016-08-16 14:33:45 +010057 srcs: ["src/*.cc"],
58 clang_cflags: ["-Wimplicit-fallthrough"],
Chih-Hung Hsieh5652ef32017-09-29 11:33:41 -070059 cflags: [
60 "-Wall",
61 "-Werror",
62 ],
Serban Constantinescu98eabc72016-08-16 14:33:45 +010063 cppflags: [
64 "-DVIXL_GENERATE_SIMULATOR_INSTRUCTIONS_VALUE=0",
Serban Constantinescu98eabc72016-08-16 14:33:45 +010065 "-Wextra",
Serban Constantinescu98eabc72016-08-16 14:33:45 +010066 "-fdiagnostics-show-option",
67 "-Wredundant-decls",
68 "-Wunreachable-code",
69 "-Wmissing-noreturn",
70 "-pedantic",
Serban Constantinescu98eabc72016-08-16 14:33:45 +010071
72 // Explicitly enable the write-strings warning. VIXL uses
73 // const correctly when handling string constants.
74 "-Wwrite-strings",
Vladimir Marko00bfaca2018-04-26 16:04:44 +010075
76 // As we can load both libvixl-arm.so and libvixl-arm64.so in the
77 // same process, and some functions are emitted in both libraries,
78 // flags for selecting implementation details for these functions
79 // must be shared to emit identical code. Otherwise we can get
80 // undefined behavior, especially with link-time optimization.
81 // b/64359573
82 "-DVIXL_CODE_BUFFER_MALLOC",
Serban Constantinescu98eabc72016-08-16 14:33:45 +010083 ],
84 local_include_dirs: ["src"],
85 native_coverage: false,
86 sanitize: {
87 recover: ["shift-exponent"],
88 },
89}
90
91cc_defaults {
92 name: "vixl-arm",
93 defaults: ["vixl-common"],
Scott Wakeling5767b112016-12-22 09:43:20 +000094 cppflags: [
Scott Wakeling25e9a7a2017-01-23 15:51:39 +000095 "-DVIXL_INCLUDE_TARGET_T32",
Scott Wakeling5767b112016-12-22 09:43:20 +000096 ],
Serban Constantinescu98eabc72016-08-16 14:33:45 +010097 srcs: ["src/aarch32/*.cc"],
98}
99
100cc_defaults {
101 name: "vixl-arm64",
102 defaults: ["vixl-common"],
Scott Wakeling5767b112016-12-22 09:43:20 +0000103 cppflags: [
104 "-DVIXL_INCLUDE_SIMULATOR_AARCH64",
Scott Wakeling25e9a7a2017-01-23 15:51:39 +0000105 "-DVIXL_INCLUDE_TARGET_A64",
Scott Wakeling5767b112016-12-22 09:43:20 +0000106 ],
Serban Constantinescu98eabc72016-08-16 14:33:45 +0100107 srcs: ["src/aarch64/*.cc"],
108}
109
110cc_defaults {
111 name: "vixl-debug",
112 defaults: ["vixl-common"],
113 cppflags: [
114 "-DVIXL_DEBUG",
115 "-UNDEBUG",
116
117 "-O2",
118 "-ggdb3",
119 ],
120}
121
122cc_defaults {
123 name: "vixl-release",
124 defaults: ["vixl-common"],
125 cppflags: [
126 "-O3",
127 ],
128}
129
130cc_library {
131 name: "libvixl-arm64",
Pirama Arumuga Nainarff087852018-04-18 23:03:04 -0700132 defaults: [
133 "vixl-release",
134 "vixl-arm64",
135 "dex2oat-pgo-defaults",
136 ],
Justin Yun5a5a1792017-07-24 15:19:44 +0900137 vendor_available: true,
138 vndk: {
139 enabled: true,
140 },
Serban Constantinescu98eabc72016-08-16 14:33:45 +0100141}
142
143cc_library {
144 name: "libvixld-arm64",
145 defaults: ["vixl-debug", "vixl-arm64"],
146}
147
148cc_library {
149 name: "libvixl-arm",
Pirama Arumuga Nainarff087852018-04-18 23:03:04 -0700150 defaults: [
151 "vixl-release",
152 "vixl-arm",
153 "dex2oat-pgo-defaults",
154 ],
Justin Yun5a5a1792017-07-24 15:19:44 +0900155 vendor_available: true,
156 vndk: {
157 enabled: true,
158 },
Serban Constantinescu98eabc72016-08-16 14:33:45 +0100159}
160
161cc_library {
162 name: "libvixld-arm",
163 defaults: ["vixl-debug", "vixl-arm"],
164}
165
166//######## VIXL HOST TESTS #########
167//
168// We only support 64bit host builds for now.
169// To run all the tests: vixl-test-runner --run_all
170//
Dan Willemsen7168b852017-10-06 11:27:01 -0700171cc_test_host {
Serban Constantinescu98eabc72016-08-16 14:33:45 +0100172 name: "vixl-test-runner",
Dan Willemsen7168b852017-10-06 11:27:01 -0700173 gtest: false,
Serban Constantinescu98eabc72016-08-16 14:33:45 +0100174 defaults: ["vixl-debug", "vixl-arm", "vixl-arm64"],
175 local_include_dirs: ["test"],
176 srcs: [
177 "test/*.cc",
178 "test/aarch32/*.cc",
179 "test/aarch64/*.cc",
180 ],
Dan Willemsen7168b852017-10-06 11:27:01 -0700181 data: [
182 "test/test-trace-reference/*",
183 ],
Serban Constantinescu98eabc72016-08-16 14:33:45 +0100184 enabled: false,
185 target: {
Dan Willemsenbe06b802017-10-02 10:41:10 -0700186 linux_glibc_x86_64: {
Serban Constantinescu98eabc72016-08-16 14:33:45 +0100187 enabled: true,
188 },
189 },
190}