// Copyright (C) 2016 The Android Open Source Project // All rights reserved. // // Redistribution and use in source and binary forms, with or without // modification, are permitted provided that the following conditions // are met: // * Redistributions of source code must retain the above copyright // notice, this list of conditions and the following disclaimer. // * Redistributions in binary form must reproduce the above copyright // notice, this list of conditions and the following disclaimer in // the documentation and/or other materials provided with the // distribution. // // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS // "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT // LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS // FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE // COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, // INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, // BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS // OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED // AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, // OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT // OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF // SUCH DAMAGE. // // // Copyright (c) 2016 VIXL authors // All rights reserved. // // Redistribution and use in source and binary forms, with or without // modification, are permitted provided that the following conditions // are met: // 1. Redistributions of source code must retain the above copyright // notice, this list of conditions and the following disclaimer. // 2. Redistributions in binary form must reproduce the above copyright // notice, this list of conditions and the following disclaimer in the // documentation and/or other materials provided with the distribution. // 3. The name of the company may not be used to endorse or promote // products derived from this software without specific prior written // permission. // // THIS SOFTWARE IS PROVIDED BY ARM LTD ``AS IS'' AND ANY EXPRESS OR IMPLIED // WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF // MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. // IN NO EVENT SHALL ARM LTD BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, // SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED // TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR // PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF // LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING // NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS // SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. package { default_visibility: ["//visibility:private"], default_applicable_licenses: ["external_vixl_license"], } // Added automatically by a large-scale-change // See: http://go/android-license-faq license { name: "external_vixl_license", visibility: [":__subpackages__"], license_kinds: [ "SPDX-license-identifier-BSD", ], license_text: [ "LICENCE", ], } cc_defaults { name: "vixl-common", host_supported: true, cflags: [ "-Wall", "-Werror", "-Wimplicit-fallthrough", ], cppflags: [ "-DVIXL_GENERATE_SIMULATOR_INSTRUCTIONS_VALUE=0", "-Wextra", "-fdiagnostics-show-option", "-Wredundant-decls", "-Wunreachable-code", "-pedantic", // Explicitly enable the write-strings warning. VIXL uses // const correctly when handling string constants. "-Wwrite-strings", // Explicitly disable 'missing-return' warnings because a lot of them are false positive. // VIXL often creates stubs and compile-time configurations with things like // VIXL_UNIMPLEMENTED(). Properly satisfying -Wmissing-noreturn requires that functions are // annotated at their _declarations_, which means #ifdefs in header files. // Conditional compilation in headers can result in incorrect behaviour when // libvixl.so is built with different flags than the code using it. Disabling this // warning allows VIXL to simplify the headers, and should make VIXL more robust. "-Wno-missing-noreturn", "-DVIXL_CODE_BUFFER_MALLOC", ], native_coverage: false, sanitize: { recover: ["shift-exponent"], }, } art_cc_defaults { name: "vixl-arm", defaults: ["vixl-common"], codegen: { arm: { srcs: ["src/aarch32/*.cc"], cppflags: [ "-DVIXL_INCLUDE_TARGET_T32", ], }, }, } art_cc_defaults { name: "vixl-arm64", defaults: ["vixl-common"], codegen: { arm64: { srcs: ["src/aarch64/*.cc"], cppflags: [ "-DVIXL_INCLUDE_SIMULATOR_AARCH64", "-DVIXL_INCLUDE_TARGET_A64", ], }, }, } cc_defaults { name: "vixl-debug", defaults: ["vixl-common"], cppflags: [ "-DVIXL_DEBUG", "-UNDEBUG", "-O2", "-ggdb3", ], } cc_defaults { name: "vixl-release", defaults: ["vixl-common"], cppflags: [ "-O3", ], } libvixl_visibility = [ "//art:__subpackages__", ] // Defaults for the libvixl[d] libraries cc_defaults { name: "libvixl-defaults", srcs: ["src/*.cc"], export_include_dirs: ["src"], min_sdk_version: "S", static: { cflags: [ "-fvisibility=hidden", ], }, shared: { cflags: [ "-fvisibility=protected", ], }, } art_cc_library { name: "libvixl", visibility: libvixl_visibility, defaults: [ "libvixl-defaults", "vixl-release", "vixl-arm", "vixl-arm64", ], target: { android: { lto: { thin: true, }, }, }, apex_available: [ "com.android.art", "com.android.art.debug", ], } art_cc_library { name: "libvixld", visibility: libvixl_visibility, defaults: [ "libvixl-defaults", "vixl-debug", "vixl-arm", "vixl-arm64", ], apex_available: [ "com.android.art", "com.android.art.debug", ], } //######## VIXL HOST TESTS ######### // // We only support 64bit host builds for now. // To run all the tests: vixl-test-runner --run_all // cc_test_host { name: "vixl-test-runner", gtest: false, defaults: [ "vixl-debug", "vixl-arm", "vixl-arm64", ], local_include_dirs: [ "test", ], exclude_srcs: [ "test/test-donkey.cc", ], srcs: [ "test/*.cc", "test/aarch32/*.cc", "test/aarch64/*.cc", ], static_libs: [ "libvixld", ], data: [ "test/test-trace-reference/*", ], enabled: false, target: { linux_glibc_x86_64: { enabled: true, }, linux_musl_x86_64: { enabled: true, }, }, } cc_genrule { name: "vixl-test-timestamp", srcs: [ ":libc++", ":vixl-test-runner", "test/test-trace-reference/**/*", ], compile_multilib: "first", host_supported: true, device_supported: false, cmd: "echo 'Running vixl tests' && " + "cp $(location :vixl-test-runner) $(genDir)/ && " + // Copy needed share libs for vixl-test-runner "cp $(location :libc++) $(genDir)/ && " + "mkdir -p $(genDir)/test/test-trace-reference/ && " + "cp $(locations test/test-trace-reference/**/*) $(genDir)/test/test-trace-reference/ && " + "cd $(genDir) && " + "./vixl-test-runner --run_all 2>&1 && " + "./vixl-test-runner --run_all --debugger 2>&1 && " + "echo 'vixl tests PASSED' && " + "touch vixl-test-timestamp.txt", out: ["vixl-test-timestamp.txt"], enabled: false, target: { linux_glibc_x86_64: { enabled: true, }, linux_musl_x86_64: { enabled: true, }, }, } phony_rule { name: "run-vixl-tests", phony_deps: [ "vixl-test-timestamp", ], }