1*f5c631daSSadaf Ebrahimi// Copyright (C) 2016 The Android Open Source Project 2*f5c631daSSadaf Ebrahimi// All rights reserved. 3*f5c631daSSadaf Ebrahimi// 4*f5c631daSSadaf Ebrahimi// Redistribution and use in source and binary forms, with or without 5*f5c631daSSadaf Ebrahimi// modification, are permitted provided that the following conditions 6*f5c631daSSadaf Ebrahimi// are met: 7*f5c631daSSadaf Ebrahimi// * Redistributions of source code must retain the above copyright 8*f5c631daSSadaf Ebrahimi// notice, this list of conditions and the following disclaimer. 9*f5c631daSSadaf Ebrahimi// * Redistributions in binary form must reproduce the above copyright 10*f5c631daSSadaf Ebrahimi// notice, this list of conditions and the following disclaimer in 11*f5c631daSSadaf Ebrahimi// the documentation and/or other materials provided with the 12*f5c631daSSadaf Ebrahimi// distribution. 13*f5c631daSSadaf Ebrahimi// 14*f5c631daSSadaf Ebrahimi// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 15*f5c631daSSadaf Ebrahimi// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT 16*f5c631daSSadaf Ebrahimi// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS 17*f5c631daSSadaf Ebrahimi// FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE 18*f5c631daSSadaf Ebrahimi// COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, 19*f5c631daSSadaf Ebrahimi// INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, 20*f5c631daSSadaf Ebrahimi// BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS 21*f5c631daSSadaf Ebrahimi// OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED 22*f5c631daSSadaf Ebrahimi// AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, 23*f5c631daSSadaf Ebrahimi// OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT 24*f5c631daSSadaf Ebrahimi// OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF 25*f5c631daSSadaf Ebrahimi// SUCH DAMAGE. 26*f5c631daSSadaf Ebrahimi// 27*f5c631daSSadaf Ebrahimi// 28*f5c631daSSadaf Ebrahimi// Copyright (c) 2016 VIXL authors 29*f5c631daSSadaf Ebrahimi// All rights reserved. 30*f5c631daSSadaf Ebrahimi// 31*f5c631daSSadaf Ebrahimi// Redistribution and use in source and binary forms, with or without 32*f5c631daSSadaf Ebrahimi// modification, are permitted provided that the following conditions 33*f5c631daSSadaf Ebrahimi// are met: 34*f5c631daSSadaf Ebrahimi// 1. Redistributions of source code must retain the above copyright 35*f5c631daSSadaf Ebrahimi// notice, this list of conditions and the following disclaimer. 36*f5c631daSSadaf Ebrahimi// 2. Redistributions in binary form must reproduce the above copyright 37*f5c631daSSadaf Ebrahimi// notice, this list of conditions and the following disclaimer in the 38*f5c631daSSadaf Ebrahimi// documentation and/or other materials provided with the distribution. 39*f5c631daSSadaf Ebrahimi// 3. The name of the company may not be used to endorse or promote 40*f5c631daSSadaf Ebrahimi// products derived from this software without specific prior written 41*f5c631daSSadaf Ebrahimi// permission. 42*f5c631daSSadaf Ebrahimi// 43*f5c631daSSadaf Ebrahimi// THIS SOFTWARE IS PROVIDED BY ARM LTD ``AS IS'' AND ANY EXPRESS OR IMPLIED 44*f5c631daSSadaf Ebrahimi// WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF 45*f5c631daSSadaf Ebrahimi// MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. 46*f5c631daSSadaf Ebrahimi// IN NO EVENT SHALL ARM LTD BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, 47*f5c631daSSadaf Ebrahimi// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED 48*f5c631daSSadaf Ebrahimi// TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR 49*f5c631daSSadaf Ebrahimi// PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF 50*f5c631daSSadaf Ebrahimi// LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING 51*f5c631daSSadaf Ebrahimi// NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS 52*f5c631daSSadaf Ebrahimi// SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 53*f5c631daSSadaf Ebrahimi 54*f5c631daSSadaf Ebrahimipackage { 55*f5c631daSSadaf Ebrahimi default_visibility: ["//visibility:private"], 56*f5c631daSSadaf Ebrahimi default_applicable_licenses: ["external_vixl_license"], 57*f5c631daSSadaf Ebrahimi} 58*f5c631daSSadaf Ebrahimi 59*f5c631daSSadaf Ebrahimi// Added automatically by a large-scale-change 60*f5c631daSSadaf Ebrahimi// See: http://go/android-license-faq 61*f5c631daSSadaf Ebrahimilicense { 62*f5c631daSSadaf Ebrahimi name: "external_vixl_license", 63*f5c631daSSadaf Ebrahimi visibility: [":__subpackages__"], 64*f5c631daSSadaf Ebrahimi license_kinds: [ 65*f5c631daSSadaf Ebrahimi "SPDX-license-identifier-BSD", 66*f5c631daSSadaf Ebrahimi ], 67*f5c631daSSadaf Ebrahimi license_text: [ 68*f5c631daSSadaf Ebrahimi "LICENCE", 69*f5c631daSSadaf Ebrahimi ], 70*f5c631daSSadaf Ebrahimi} 71*f5c631daSSadaf Ebrahimi 72*f5c631daSSadaf Ebrahimicc_defaults { 73*f5c631daSSadaf Ebrahimi name: "vixl-common", 74*f5c631daSSadaf Ebrahimi host_supported: true, 75*f5c631daSSadaf Ebrahimi cflags: [ 76*f5c631daSSadaf Ebrahimi "-Wall", 77*f5c631daSSadaf Ebrahimi "-Werror", 78*f5c631daSSadaf Ebrahimi "-Wimplicit-fallthrough", 79*f5c631daSSadaf Ebrahimi ], 80*f5c631daSSadaf Ebrahimi cppflags: [ 81*f5c631daSSadaf Ebrahimi "-DVIXL_GENERATE_SIMULATOR_INSTRUCTIONS_VALUE=0", 82*f5c631daSSadaf Ebrahimi "-Wextra", 83*f5c631daSSadaf Ebrahimi "-fdiagnostics-show-option", 84*f5c631daSSadaf Ebrahimi "-Wredundant-decls", 85*f5c631daSSadaf Ebrahimi "-Wunreachable-code", 86*f5c631daSSadaf Ebrahimi "-pedantic", 87*f5c631daSSadaf Ebrahimi 88*f5c631daSSadaf Ebrahimi // Explicitly enable the write-strings warning. VIXL uses 89*f5c631daSSadaf Ebrahimi // const correctly when handling string constants. 90*f5c631daSSadaf Ebrahimi "-Wwrite-strings", 91*f5c631daSSadaf Ebrahimi 92*f5c631daSSadaf Ebrahimi // Explicitly disable 'missing-return' warnings because a lot of them are false positive. 93*f5c631daSSadaf Ebrahimi // VIXL often creates stubs and compile-time configurations with things like 94*f5c631daSSadaf Ebrahimi // VIXL_UNIMPLEMENTED(). Properly satisfying -Wmissing-noreturn requires that functions are 95*f5c631daSSadaf Ebrahimi // annotated at their _declarations_, which means #ifdefs in header files. 96*f5c631daSSadaf Ebrahimi // Conditional compilation in headers can result in incorrect behaviour when 97*f5c631daSSadaf Ebrahimi // libvixl.so is built with different flags than the code using it. Disabling this 98*f5c631daSSadaf Ebrahimi // warning allows VIXL to simplify the headers, and should make VIXL more robust. 99*f5c631daSSadaf Ebrahimi "-Wno-missing-noreturn", 100*f5c631daSSadaf Ebrahimi 101*f5c631daSSadaf Ebrahimi "-DVIXL_CODE_BUFFER_MALLOC", 102*f5c631daSSadaf Ebrahimi ], 103*f5c631daSSadaf Ebrahimi native_coverage: false, 104*f5c631daSSadaf Ebrahimi sanitize: { 105*f5c631daSSadaf Ebrahimi recover: ["shift-exponent"], 106*f5c631daSSadaf Ebrahimi }, 107*f5c631daSSadaf Ebrahimi} 108*f5c631daSSadaf Ebrahimi 109*f5c631daSSadaf Ebrahimiart_cc_defaults { 110*f5c631daSSadaf Ebrahimi name: "vixl-arm", 111*f5c631daSSadaf Ebrahimi defaults: ["vixl-common"], 112*f5c631daSSadaf Ebrahimi codegen: { 113*f5c631daSSadaf Ebrahimi arm: { 114*f5c631daSSadaf Ebrahimi srcs: ["src/aarch32/*.cc"], 115*f5c631daSSadaf Ebrahimi cppflags: [ 116*f5c631daSSadaf Ebrahimi "-DVIXL_INCLUDE_TARGET_T32", 117*f5c631daSSadaf Ebrahimi ], 118*f5c631daSSadaf Ebrahimi }, 119*f5c631daSSadaf Ebrahimi }, 120*f5c631daSSadaf Ebrahimi} 121*f5c631daSSadaf Ebrahimi 122*f5c631daSSadaf Ebrahimiart_cc_defaults { 123*f5c631daSSadaf Ebrahimi name: "vixl-arm64", 124*f5c631daSSadaf Ebrahimi defaults: ["vixl-common"], 125*f5c631daSSadaf Ebrahimi codegen: { 126*f5c631daSSadaf Ebrahimi arm64: { 127*f5c631daSSadaf Ebrahimi srcs: ["src/aarch64/*.cc"], 128*f5c631daSSadaf Ebrahimi cppflags: [ 129*f5c631daSSadaf Ebrahimi "-DVIXL_INCLUDE_SIMULATOR_AARCH64", 130*f5c631daSSadaf Ebrahimi "-DVIXL_INCLUDE_TARGET_A64", 131*f5c631daSSadaf Ebrahimi ], 132*f5c631daSSadaf Ebrahimi }, 133*f5c631daSSadaf Ebrahimi }, 134*f5c631daSSadaf Ebrahimi} 135*f5c631daSSadaf Ebrahimi 136*f5c631daSSadaf Ebrahimicc_defaults { 137*f5c631daSSadaf Ebrahimi name: "vixl-debug", 138*f5c631daSSadaf Ebrahimi defaults: ["vixl-common"], 139*f5c631daSSadaf Ebrahimi cppflags: [ 140*f5c631daSSadaf Ebrahimi "-DVIXL_DEBUG", 141*f5c631daSSadaf Ebrahimi "-UNDEBUG", 142*f5c631daSSadaf Ebrahimi 143*f5c631daSSadaf Ebrahimi "-O2", 144*f5c631daSSadaf Ebrahimi "-ggdb3", 145*f5c631daSSadaf Ebrahimi ], 146*f5c631daSSadaf Ebrahimi} 147*f5c631daSSadaf Ebrahimi 148*f5c631daSSadaf Ebrahimicc_defaults { 149*f5c631daSSadaf Ebrahimi name: "vixl-release", 150*f5c631daSSadaf Ebrahimi defaults: ["vixl-common"], 151*f5c631daSSadaf Ebrahimi cppflags: [ 152*f5c631daSSadaf Ebrahimi "-O3", 153*f5c631daSSadaf Ebrahimi ], 154*f5c631daSSadaf Ebrahimi} 155*f5c631daSSadaf Ebrahimi 156*f5c631daSSadaf Ebrahimilibvixl_visibility = [ 157*f5c631daSSadaf Ebrahimi "//art:__subpackages__", 158*f5c631daSSadaf Ebrahimi] 159*f5c631daSSadaf Ebrahimi 160*f5c631daSSadaf Ebrahimi// Defaults for the libvixl[d] libraries 161*f5c631daSSadaf Ebrahimicc_defaults { 162*f5c631daSSadaf Ebrahimi name: "libvixl-defaults", 163*f5c631daSSadaf Ebrahimi srcs: ["src/*.cc"], 164*f5c631daSSadaf Ebrahimi export_include_dirs: ["src"], 165*f5c631daSSadaf Ebrahimi min_sdk_version: "S", 166*f5c631daSSadaf Ebrahimi 167*f5c631daSSadaf Ebrahimi static: { 168*f5c631daSSadaf Ebrahimi cflags: [ 169*f5c631daSSadaf Ebrahimi "-fvisibility=hidden", 170*f5c631daSSadaf Ebrahimi ], 171*f5c631daSSadaf Ebrahimi }, 172*f5c631daSSadaf Ebrahimi shared: { 173*f5c631daSSadaf Ebrahimi cflags: [ 174*f5c631daSSadaf Ebrahimi "-fvisibility=protected", 175*f5c631daSSadaf Ebrahimi ], 176*f5c631daSSadaf Ebrahimi }, 177*f5c631daSSadaf Ebrahimi} 178*f5c631daSSadaf Ebrahimi 179*f5c631daSSadaf Ebrahimiart_cc_library { 180*f5c631daSSadaf Ebrahimi name: "libvixl", 181*f5c631daSSadaf Ebrahimi visibility: libvixl_visibility, 182*f5c631daSSadaf Ebrahimi defaults: [ 183*f5c631daSSadaf Ebrahimi "libvixl-defaults", 184*f5c631daSSadaf Ebrahimi "vixl-release", 185*f5c631daSSadaf Ebrahimi "vixl-arm", 186*f5c631daSSadaf Ebrahimi "vixl-arm64", 187*f5c631daSSadaf Ebrahimi ], 188*f5c631daSSadaf Ebrahimi 189*f5c631daSSadaf Ebrahimi target: { 190*f5c631daSSadaf Ebrahimi android: { 191*f5c631daSSadaf Ebrahimi lto: { 192*f5c631daSSadaf Ebrahimi thin: true, 193*f5c631daSSadaf Ebrahimi }, 194*f5c631daSSadaf Ebrahimi }, 195*f5c631daSSadaf Ebrahimi }, 196*f5c631daSSadaf Ebrahimi 197*f5c631daSSadaf Ebrahimi apex_available: [ 198*f5c631daSSadaf Ebrahimi "com.android.art", 199*f5c631daSSadaf Ebrahimi "com.android.art.debug", 200*f5c631daSSadaf Ebrahimi ], 201*f5c631daSSadaf Ebrahimi} 202*f5c631daSSadaf Ebrahimi 203*f5c631daSSadaf Ebrahimiart_cc_library { 204*f5c631daSSadaf Ebrahimi name: "libvixld", 205*f5c631daSSadaf Ebrahimi visibility: libvixl_visibility, 206*f5c631daSSadaf Ebrahimi defaults: [ 207*f5c631daSSadaf Ebrahimi "libvixl-defaults", 208*f5c631daSSadaf Ebrahimi "vixl-debug", 209*f5c631daSSadaf Ebrahimi "vixl-arm", 210*f5c631daSSadaf Ebrahimi "vixl-arm64", 211*f5c631daSSadaf Ebrahimi ], 212*f5c631daSSadaf Ebrahimi 213*f5c631daSSadaf Ebrahimi apex_available: [ 214*f5c631daSSadaf Ebrahimi "com.android.art", 215*f5c631daSSadaf Ebrahimi "com.android.art.debug", 216*f5c631daSSadaf Ebrahimi ], 217*f5c631daSSadaf Ebrahimi} 218*f5c631daSSadaf Ebrahimi 219*f5c631daSSadaf Ebrahimi//######## VIXL HOST TESTS ######### 220*f5c631daSSadaf Ebrahimi// 221*f5c631daSSadaf Ebrahimi// We only support 64bit host builds for now. 222*f5c631daSSadaf Ebrahimi// To run all the tests: vixl-test-runner --run_all 223*f5c631daSSadaf Ebrahimi// 224*f5c631daSSadaf Ebrahimicc_test_host { 225*f5c631daSSadaf Ebrahimi name: "vixl-test-runner", 226*f5c631daSSadaf Ebrahimi gtest: false, 227*f5c631daSSadaf Ebrahimi defaults: [ 228*f5c631daSSadaf Ebrahimi "vixl-debug", 229*f5c631daSSadaf Ebrahimi "vixl-arm", 230*f5c631daSSadaf Ebrahimi "vixl-arm64", 231*f5c631daSSadaf Ebrahimi ], 232*f5c631daSSadaf Ebrahimi local_include_dirs: [ 233*f5c631daSSadaf Ebrahimi "test", 234*f5c631daSSadaf Ebrahimi ], 235*f5c631daSSadaf Ebrahimi exclude_srcs: [ 236*f5c631daSSadaf Ebrahimi "test/test-donkey.cc", 237*f5c631daSSadaf Ebrahimi ], 238*f5c631daSSadaf Ebrahimi srcs: [ 239*f5c631daSSadaf Ebrahimi "test/*.cc", 240*f5c631daSSadaf Ebrahimi "test/aarch32/*.cc", 241*f5c631daSSadaf Ebrahimi "test/aarch64/*.cc", 242*f5c631daSSadaf Ebrahimi ], 243*f5c631daSSadaf Ebrahimi static_libs: [ 244*f5c631daSSadaf Ebrahimi "libvixld", 245*f5c631daSSadaf Ebrahimi ], 246*f5c631daSSadaf Ebrahimi data: [ 247*f5c631daSSadaf Ebrahimi "test/test-trace-reference/*", 248*f5c631daSSadaf Ebrahimi ], 249*f5c631daSSadaf Ebrahimi enabled: false, 250*f5c631daSSadaf Ebrahimi target: { 251*f5c631daSSadaf Ebrahimi linux_glibc_x86_64: { 252*f5c631daSSadaf Ebrahimi enabled: true, 253*f5c631daSSadaf Ebrahimi }, 254*f5c631daSSadaf Ebrahimi linux_musl_x86_64: { 255*f5c631daSSadaf Ebrahimi enabled: true, 256*f5c631daSSadaf Ebrahimi }, 257*f5c631daSSadaf Ebrahimi }, 258*f5c631daSSadaf Ebrahimi} 259*f5c631daSSadaf Ebrahimi 260*f5c631daSSadaf Ebrahimicc_genrule { 261*f5c631daSSadaf Ebrahimi name: "vixl-test-timestamp", 262*f5c631daSSadaf Ebrahimi srcs: [ 263*f5c631daSSadaf Ebrahimi ":libc++", 264*f5c631daSSadaf Ebrahimi ":vixl-test-runner", 265*f5c631daSSadaf Ebrahimi "test/test-trace-reference/**/*", 266*f5c631daSSadaf Ebrahimi ], 267*f5c631daSSadaf Ebrahimi compile_multilib: "first", 268*f5c631daSSadaf Ebrahimi host_supported: true, 269*f5c631daSSadaf Ebrahimi device_supported: false, 270*f5c631daSSadaf Ebrahimi cmd: "echo 'Running vixl tests' && " + 271*f5c631daSSadaf Ebrahimi "cp $(location :vixl-test-runner) $(genDir)/ && " + 272*f5c631daSSadaf Ebrahimi // Copy needed share libs for vixl-test-runner 273*f5c631daSSadaf Ebrahimi "cp $(location :libc++) $(genDir)/ && " + 274*f5c631daSSadaf Ebrahimi "mkdir -p $(genDir)/test/test-trace-reference/ && " + 275*f5c631daSSadaf Ebrahimi "cp $(locations test/test-trace-reference/**/*) $(genDir)/test/test-trace-reference/ && " + 276*f5c631daSSadaf Ebrahimi "cd $(genDir) && " + 277*f5c631daSSadaf Ebrahimi "./vixl-test-runner --run_all 2>&1 && " + 278*f5c631daSSadaf Ebrahimi "./vixl-test-runner --run_all --debugger 2>&1 && " + 279*f5c631daSSadaf Ebrahimi "echo 'vixl tests PASSED' && " + 280*f5c631daSSadaf Ebrahimi "touch vixl-test-timestamp.txt", 281*f5c631daSSadaf Ebrahimi out: ["vixl-test-timestamp.txt"], 282*f5c631daSSadaf Ebrahimi enabled: false, 283*f5c631daSSadaf Ebrahimi target: { 284*f5c631daSSadaf Ebrahimi linux_glibc_x86_64: { 285*f5c631daSSadaf Ebrahimi enabled: true, 286*f5c631daSSadaf Ebrahimi }, 287*f5c631daSSadaf Ebrahimi linux_musl_x86_64: { 288*f5c631daSSadaf Ebrahimi enabled: true, 289*f5c631daSSadaf Ebrahimi }, 290*f5c631daSSadaf Ebrahimi }, 291*f5c631daSSadaf Ebrahimi} 292*f5c631daSSadaf Ebrahimi 293*f5c631daSSadaf Ebrahimiphony_rule { 294*f5c631daSSadaf Ebrahimi name: "run-vixl-tests", 295*f5c631daSSadaf Ebrahimi phony_deps: [ 296*f5c631daSSadaf Ebrahimi "vixl-test-timestamp", 297*f5c631daSSadaf Ebrahimi ], 298*f5c631daSSadaf Ebrahimi} 299