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++14",
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/command_line_utils.cpp",
169        "src/utils/config_file.cpp",
170        "src/utils/collect_exported_headers.cpp",
171        "src/utils/string_utils.cpp",
172    ],
173
174    static_libs: [
175        "libheader-checker-proto",
176        "libjsoncpp",
177    ],
178
179    shared_libs: [
180        "libLLVM_host",
181        "libc++_host",
182        "libprotobuf-cpp-full",
183    ],
184
185    cflags: [
186        "-Wcast-qual",
187        "-Wno-long-long",
188        "-Wno-unused-parameter",
189    ],
190}
191
192cc_test_host {
193    name: "header-checker-unittests",
194
195    defaults: [
196        "header-checker-defaults",
197    ],
198
199    srcs: [
200        "src/repr/symbol/exported_symbol_set_test.cpp",
201        "src/repr/symbol/version_script_parser_test.cpp",
202        "src/utils/api_level_test.cpp",
203        "src/utils/config_file_test.cpp",
204        "src/utils/string_utils_test.cpp",
205    ],
206
207    static_libs: [
208        "libgtest",
209        "libgtest_main",
210        "libheader-checker",
211    ],
212
213    shared_libs: [
214        "libLLVM_host",
215        "libc++_host",
216    ],
217
218    test_suites: ["general-tests"],
219}
220