Home | History | Annotate | Download | only in vixl
      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 
     54 cc_defaults {
     55     name: "vixl-common",
     56     host_supported: true,
     57     srcs: ["src/*.cc"],
     58     clang_cflags: ["-Wimplicit-fallthrough"],
     59     cflags: [
     60         "-Wall",
     61         "-Werror",
     62     ],
     63     cppflags: [
     64         "-DVIXL_GENERATE_SIMULATOR_INSTRUCTIONS_VALUE=0",
     65         "-Wextra",
     66         "-fdiagnostics-show-option",
     67         "-Wredundant-decls",
     68         "-Wunreachable-code",
     69         "-Wmissing-noreturn",
     70         "-pedantic",
     71 
     72         // Explicitly enable the write-strings warning. VIXL uses
     73         // const correctly when handling string constants.
     74         "-Wwrite-strings",
     75 
     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",
     83     ],
     84     local_include_dirs: ["src"],
     85     native_coverage: false,
     86     sanitize: {
     87         recover: ["shift-exponent"],
     88     },
     89 }
     90 
     91 cc_defaults {
     92     name: "vixl-arm",
     93     defaults: ["vixl-common"],
     94     cppflags: [
     95         "-DVIXL_INCLUDE_TARGET_T32",
     96         ],
     97     srcs: ["src/aarch32/*.cc"],
     98 }
     99 
    100 cc_defaults {
    101     name: "vixl-arm64",
    102     defaults: ["vixl-common"],
    103     cppflags: [
    104         "-DVIXL_INCLUDE_SIMULATOR_AARCH64",
    105         "-DVIXL_INCLUDE_TARGET_A64",
    106         ],
    107     srcs: ["src/aarch64/*.cc"],
    108 }
    109 
    110 cc_defaults {
    111     name: "vixl-debug",
    112     defaults: ["vixl-common"],
    113     cppflags: [
    114         "-DVIXL_DEBUG",
    115         "-UNDEBUG",
    116 
    117         "-O2",
    118         "-ggdb3",
    119     ],
    120 }
    121 
    122 cc_defaults {
    123     name: "vixl-release",
    124     defaults: ["vixl-common"],
    125     cppflags: [
    126         "-O3",
    127     ],
    128 }
    129 
    130 cc_library {
    131     name: "libvixl-arm64",
    132     defaults: [
    133         "vixl-release",
    134         "vixl-arm64",
    135         "dex2oat-pgo-defaults",
    136     ],
    137     vendor_available: true,
    138     vndk: {
    139         enabled: true,
    140     },
    141 }
    142 
    143 cc_library {
    144     name: "libvixld-arm64",
    145     defaults: ["vixl-debug", "vixl-arm64"],
    146 }
    147 
    148 cc_library {
    149     name: "libvixl-arm",
    150     defaults: [
    151         "vixl-release",
    152         "vixl-arm",
    153         "dex2oat-pgo-defaults",
    154     ],
    155     vendor_available: true,
    156     vndk: {
    157         enabled: true,
    158     },
    159 }
    160 
    161 cc_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 //
    171 cc_test_host {
    172     name: "vixl-test-runner",
    173     gtest: false,
    174     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     ],
    181     data: [
    182         "test/test-trace-reference/*",
    183     ],
    184     enabled: false,
    185     target: {
    186         linux_glibc_x86_64: {
    187             enabled: true,
    188         },
    189     },
    190 }
    191