1//
2// Copyright (C) 2016 The Android Open Source Project
3//
4// Licensed under the Apache License, Version 2.0 (the "License");
5// you may not use this file except in compliance with the License.
6// You may obtain a copy of the License at
7//
8//      http://www.apache.org/licenses/LICENSE-2.0
9//
10// Unless required by applicable law or agreed to in writing, software
11// distributed under the License is distributed on an "AS IS" BASIS,
12// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13// See the License for the specific language governing permissions and
14// limitations under the License.
15//
16
17cc_defaults {
18    name: "header-checker-defaults",
19
20    defaults: [
21        "llvm-build-host-tools-defaults",
22    ],
23
24    cflags: [
25        "-Wall",
26        "-Werror",
27        "-Wno-unused-parameter",
28        "-DGOOGLE_PROTOBUF_NO_RTTI",
29        "-UNDEBUG",
30    ],
31
32    cppflags: [
33        "-fno-exceptions",
34        "-fno-rtti",
35        "-std=c++17",
36    ],
37
38    target: {
39        windows: {
40            enabled: false,
41        },
42    },
43
44    local_include_dirs: [
45        "src",
46    ],
47
48    compile_multilib: "64",
49    stl: "none",
50}
51
52cc_binary_host {
53    name: "header-abi-dumper",
54
55    defaults: [
56        "header-checker-defaults",
57    ],
58
59    srcs: [
60        "src/dumper/abi_wrappers.cpp",
61        "src/dumper/ast_processing.cpp",
62        "src/dumper/diagnostic_consumer.cpp",
63        "src/dumper/fake_decl_source.cpp",
64        "src/dumper/fixed_argv.cpp",
65        "src/dumper/frontend_action.cpp",
66        "src/dumper/frontend_action_factory.cpp",
67        "src/dumper/header_checker.cpp",
68    ],
69
70    static_libs: [
71        "libheader-checker",
72        "libheader-checker-proto",
73        "libjsoncpp",
74    ],
75
76    shared_libs: [
77        "libprotobuf-cpp-full",
78        "libLLVM_host",
79        "libclang_cxx_host",
80        "libc++_host",
81    ],
82}
83
84cc_defaults {
85    name: "header-abi-linker-defaults",
86
87    defaults: ["header-checker-defaults"],
88
89    static_libs: [
90        "libheader-checker",
91        "libheader-checker-proto",
92        "libjsoncpp",
93    ],
94
95    shared_libs: [
96        "libprotobuf-cpp-full",
97        "libLLVM_host",
98        "libclang_cxx_host",
99        "libc++_host",
100    ],
101}
102
103cc_binary_host {
104    name: "header-abi-linker",
105
106    defaults: [
107        "header-checker-defaults",
108        "header-abi-linker-defaults",
109    ],
110
111    srcs: [
112        "src/linker/header_abi_linker.cpp",
113    ],
114}
115
116cc_binary_host {
117    name: "header-abi-diff",
118
119    defaults: [
120        "header-checker-defaults",
121        "header-abi-linker-defaults",
122    ],
123
124    srcs: [
125        "src/diff/abi_diff.cpp",
126        "src/diff/abi_diff_wrappers.cpp",
127        "src/diff/header_abi_diff.cpp",
128    ],
129}
130
131cc_binary_host {
132    name: "merge-abi-diff",
133
134    defaults: [
135        "header-checker-defaults",
136        "header-abi-linker-defaults",
137    ],
138
139    srcs: [
140        "src/diff_merge/merge_abi_diff.cpp",
141    ],
142}
143
144cc_library_host_static {
145    name: "libheader-checker",
146
147    defaults: [
148        "header-checker-defaults",
149    ],
150
151    srcs: [
152        "src/repr/abi_diff_helpers.cpp",
153        "src/repr/ir_diff_dumper.cpp",
154        "src/repr/ir_dumper.cpp",
155        "src/repr/ir_reader.cpp",
156        "src/repr/ir_representation.cpp",
157        "src/repr/json/converter.cpp",
158        "src/repr/json/ir_dumper.cpp",
159        "src/repr/json/ir_reader.cpp",
160        "src/repr/protobuf/converter.cpp",
161        "src/repr/protobuf/ir_diff_dumper.cpp",
162        "src/repr/protobuf/ir_dumper.cpp",
163        "src/repr/protobuf/ir_reader.cpp",
164        "src/repr/symbol/exported_symbol_set.cpp",
165        "src/repr/symbol/so_file_parser.cpp",
166        "src/repr/symbol/version_script_parser.cpp",
167        "src/utils/api_level.cpp",
168        "src/utils/config_file.cpp",
169        "src/utils/collect_exported_headers.cpp",
170        "src/utils/string_utils.cpp",
171    ],
172
173    static_libs: [
174        "libheader-checker-proto",
175        "libjsoncpp",
176    ],
177
178    shared_libs: [
179        "libLLVM_host",
180        "libc++_host",
181        "libprotobuf-cpp-full",
182    ],
183
184    cflags: [
185        "-Wcast-qual",
186        "-Wno-long-long",
187        "-Wno-unused-parameter",
188    ],
189}
190
191cc_test_host {
192    name: "header-checker-unittests",
193
194    defaults: [
195        "header-checker-defaults",
196    ],
197
198    srcs: [
199        "src/repr/symbol/exported_symbol_set_test.cpp",
200        "src/repr/symbol/version_script_parser_test.cpp",
201        "src/utils/api_level_test.cpp",
202        "src/utils/config_file_test.cpp",
203        "src/utils/string_utils_test.cpp",
204    ],
205
206    static_libs: [
207        "libgtest",
208        "libgtest_main",
209        "libheader-checker",
210    ],
211
212    shared_libs: [
213        "libc++_host",
214    ],
215
216    test_suites: ["general-tests"],
217}
218