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
54cc_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        "-DVIXL_CODE_BUFFER_MALLOC",
77    ],
78    local_include_dirs: ["src"],
79    native_coverage: false,
80    sanitize: {
81        recover: ["shift-exponent"],
82    },
83}
84
85art_cc_defaults {
86    name: "vixl-arm",
87    defaults: ["vixl-common"],
88    codegen: {
89        arm: {
90            srcs: ["src/aarch32/*.cc"],
91            cppflags: [
92                "-DVIXL_INCLUDE_TARGET_T32",
93            ],
94        },
95    },
96}
97
98art_cc_defaults {
99    name: "vixl-arm64",
100    defaults: ["vixl-common"],
101    codegen: {
102        arm64: {
103            srcs: ["src/aarch64/*.cc"],
104            cppflags: [
105                "-DVIXL_INCLUDE_SIMULATOR_AARCH64",
106                "-DVIXL_INCLUDE_TARGET_A64",
107            ],
108        }
109    },
110}
111
112cc_defaults {
113    name: "vixl-debug",
114    defaults: ["vixl-common"],
115    cppflags: [
116        "-DVIXL_DEBUG",
117        "-UNDEBUG",
118
119        "-O2",
120        "-ggdb3",
121    ],
122}
123
124cc_defaults {
125    name: "vixl-release",
126    defaults: ["vixl-common"],
127    cppflags: [
128        "-O3",
129    ],
130}
131
132art_cc_library {
133    name: "libvixl",
134    defaults: [
135        "vixl-release",
136        "vixl-arm",
137        "vixl-arm64",
138        "dex2oat-pgo-defaults",
139    ],
140
141    target: {
142        android: {
143            lto: {
144                 thin: true,
145            },
146        },
147    },
148}
149
150art_cc_library {
151    name: "libvixld",
152    defaults: [
153        "vixl-debug",
154        "vixl-arm",
155        "vixl-arm64",
156    ],
157}
158
159//######## VIXL HOST TESTS #########
160//
161// We only support 64bit host builds for now.
162// To run all the tests: vixl-test-runner --run_all
163//
164cc_test_host {
165    name: "vixl-test-runner",
166    gtest: false,
167    defaults: ["vixl-debug", "vixl-arm", "vixl-arm64"],
168    local_include_dirs: ["test"],
169    srcs: [
170        "test/*.cc",
171        "test/aarch32/*.cc",
172        "test/aarch64/*.cc",
173    ],
174    data: [
175        "test/test-trace-reference/*",
176    ],
177    enabled: false,
178    target: {
179        linux_glibc_x86_64: {
180            enabled: true,
181        },
182    },
183}
184