1// 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 54package { 55 default_visibility: ["//visibility:private"], 56 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 ], 70} 71 72cc_defaults { 73 name: "vixl-common", 74 host_supported: true, 75 clang_cflags: ["-Wimplicit-fallthrough"], 76 cflags: [ 77 "-Wall", 78 "-Werror", 79 ], 80 cppflags: [ 81 "-DVIXL_GENERATE_SIMULATOR_INSTRUCTIONS_VALUE=0", 82 "-Wextra", 83 "-fdiagnostics-show-option", 84 "-Wredundant-decls", 85 "-Wunreachable-code", 86 "-pedantic", 87 88 // Explicitly enable the write-strings warning. VIXL uses 89 // const correctly when handling string constants. 90 "-Wwrite-strings", 91 92 // 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 101 "-DVIXL_CODE_BUFFER_MALLOC", 102 ], 103 native_coverage: false, 104 sanitize: { 105 recover: ["shift-exponent"], 106 }, 107} 108 109art_cc_defaults { 110 name: "vixl-arm", 111 defaults: ["vixl-common"], 112 codegen: { 113 arm: { 114 srcs: ["src/aarch32/*.cc"], 115 cppflags: [ 116 "-DVIXL_INCLUDE_TARGET_T32", 117 ], 118 }, 119 }, 120} 121 122art_cc_defaults { 123 name: "vixl-arm64", 124 defaults: ["vixl-common"], 125 codegen: { 126 arm64: { 127 srcs: ["src/aarch64/*.cc"], 128 cppflags: [ 129 "-DVIXL_INCLUDE_SIMULATOR_AARCH64", 130 "-DVIXL_INCLUDE_TARGET_A64", 131 ], 132 }, 133 }, 134} 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 156libvixl_visibility = [ 157 "//art:__subpackages__", 158] 159 160// Defaults for the libvixl[d] libraries 161cc_defaults { 162 name: "libvixl-defaults", 163 srcs: ["src/*.cc"], 164 export_include_dirs: ["src"], 165 min_sdk_version: "S", 166} 167 168art_cc_library { 169 name: "libvixl", 170 visibility: libvixl_visibility, 171 defaults: [ 172 "libvixl-defaults", 173 "vixl-release", 174 "vixl-arm", 175 "vixl-arm64", 176 "dex2oat-pgo-defaults", 177 ], 178 179 target: { 180 android: { 181 lto: { 182 thin: true, 183 }, 184 }, 185 }, 186 187 apex_available: [ 188 "com.android.art", 189 "com.android.art.debug", 190 ], 191 192 static: { 193 cflags: [ 194 "-fvisibility=hidden", 195 ], 196 }, 197 shared: { 198 cflags: [ 199 "-fvisibility=protected", 200 ], 201 }, 202} 203 204art_cc_library { 205 name: "libvixld", 206 visibility: libvixl_visibility, 207 defaults: [ 208 "libvixl-defaults", 209 "vixl-debug", 210 "vixl-arm", 211 "vixl-arm64", 212 ], 213 214 apex_available: [ 215 "com.android.art", 216 "com.android.art.debug", 217 ], 218} 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// 225cc_test_host { 226 name: "vixl-test-runner", 227 gtest: false, 228 defaults: [ 229 "vixl-debug", 230 "vixl-arm", 231 "vixl-arm64", 232 ], 233 local_include_dirs: [ 234 "test", 235 ], 236 srcs: [ 237 "test/*.cc", 238 "test/aarch32/*.cc", 239 "test/aarch64/*.cc", 240 ], 241 static_libs: [ 242 "libvixld", 243 ], 244 data: [ 245 "test/test-trace-reference/*", 246 ], 247 enabled: false, 248 target: { 249 linux_glibc_x86_64: { 250 enabled: true, 251 }, 252 linux_musl_x86_64: { 253 enabled: true, 254 }, 255 }, 256} 257