blob: 3cb1feba53da4d5e952ffaf5cfbdaffa988d1ee2 [file] [log] [blame]
Dan Willemsen8fd503f2016-10-04 20:04:36 -07001//
2// Copyright (C) 2015 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: "aidl_defaults",
Chih-Hung Hsieh15607962017-10-02 10:03:55 -070019 cflags: [
Dan Willemsen8fd503f2016-10-04 20:04:36 -070020 "-Wall",
Dan Willemsen8fd503f2016-10-04 20:04:36 -070021 "-Werror",
Chih-Hung Hsieh15607962017-10-02 10:03:55 -070022 "-Wextra",
Dan Willemsen8fd503f2016-10-04 20:04:36 -070023 ],
24 whole_static_libs: ["libgtest_prod"],
25 static_libs: [
26 "libbase",
27 "libcutils",
28 ],
Steven Moreland7ceb1252020-01-23 16:33:49 -080029 sanitize: {
30 integer_overflow: true,
31 misc_undefined: ["integer"],
32 },
Dan Willemsen8fd503f2016-10-04 20:04:36 -070033 target: {
34 windows: {
35 enabled: true,
36 },
Steven Morelandb49a33d2019-08-21 11:17:32 -070037 host: {
38 cflags: [
39 "-O0",
40 "-g",
41 ],
42 },
Dan Willemsen8fd503f2016-10-04 20:04:36 -070043 },
Steven Moreland1c894432020-02-14 11:32:44 -080044 product_variables: {
45 platform_sdk_version: {
46 cflags: ["-DPLATFORM_SDK_VERSION=%d"],
47 },
48 },
Dan Willemsen8fd503f2016-10-04 20:04:36 -070049}
50
51// Logic shared between aidl and its unittests
Andreas Gampe76a6a462018-10-08 17:44:16 -070052cc_library_static {
Dan Willemsen8fd503f2016-10-04 20:04:36 -070053 name: "libaidl-common",
54 defaults: ["aidl_defaults"],
Andreas Gampe76a6a462018-10-08 17:44:16 -070055 host_supported: true,
Dan Willemsen8fd503f2016-10-04 20:04:36 -070056
Dan Willemsen8fd503f2016-10-04 20:04:36 -070057 srcs: [
58 "aidl.cpp",
Steven Moreland49585242019-12-18 16:06:49 -080059 "aidl_checkapi.cpp",
Will McVickerefd970d2019-09-25 15:28:30 -070060 "aidl_const_expressions.cpp",
Dan Willemsen8fd503f2016-10-04 20:04:36 -070061 "aidl_language.cpp",
62 "aidl_language_l.ll",
63 "aidl_language_y.yy",
Jiyong Park1deecc32018-07-17 01:14:41 +090064 "aidl_typenames.cpp",
Steven Moreland860b1942018-08-16 14:59:28 -070065 "aidl_to_cpp.cpp",
Jiyong Park1d2df7d2018-07-23 15:22:50 +090066 "aidl_to_java.cpp",
Steven Morelande8a3a192018-09-20 14:14:28 -070067 "aidl_to_ndk.cpp",
Andrei Homescub62afd92020-05-11 19:24:59 -070068 "aidl_to_rust.cpp",
Dan Willemsen8fd503f2016-10-04 20:04:36 -070069 "ast_cpp.cpp",
70 "ast_java.cpp",
71 "code_writer.cpp",
72 "generate_cpp.cpp",
Steven Morelandb0057e72018-08-27 01:44:11 -070073 "aidl_to_cpp_common.cpp",
74 "generate_ndk.cpp",
Dan Willemsen8fd503f2016-10-04 20:04:36 -070075 "generate_java.cpp",
76 "generate_java_binder.cpp",
Andrei Onea8714b022019-02-01 18:55:54 +000077 "generate_aidl_mappings.cpp",
Andrei Homescub62afd92020-05-11 19:24:59 -070078 "generate_rust.cpp",
Dan Willemsen8fd503f2016-10-04 20:04:36 -070079 "import_resolver.cpp",
80 "line_reader.cpp",
Jiyong Park2a7c92b2020-07-22 19:12:36 +090081 "logging.cpp",
Dan Willemsen8fd503f2016-10-04 20:04:36 -070082 "io_delegate.cpp",
83 "options.cpp",
Jiyong Parke5c45292020-05-26 19:06:24 +090084 "parser.cpp",
Dan Willemsen8fd503f2016-10-04 20:04:36 -070085 ],
Dan Willemsenfad411f2019-04-12 14:40:55 -070086 yacc: {
87 gen_location_hh: true,
88 gen_position_hh: true,
89 },
Dan Willemsen8fd503f2016-10-04 20:04:36 -070090}
91
92// aidl executable
93cc_binary_host {
94 name: "aidl",
95 defaults: ["aidl_defaults"],
Jiyong Park74595c12018-07-23 15:22:50 +090096 srcs: ["main.cpp"],
Dan Willemsen8fd503f2016-10-04 20:04:36 -070097 static_libs: [
98 "libaidl-common",
99 "libbase",
Tom Cherryffe43cd2020-01-08 14:10:30 -0800100 "liblog",
Dan Willemsen8fd503f2016-10-04 20:04:36 -0700101 ],
102}
103
Steven Morelandbb654e32020-01-08 19:52:05 -0800104// aidl-cpp legacy executable, please use 'aidl' instead
Dan Willemsen8fd503f2016-10-04 20:04:36 -0700105cc_binary_host {
106 name: "aidl-cpp",
107 defaults: ["aidl_defaults"],
Steven Morelandbb654e32020-01-08 19:52:05 -0800108 srcs: ["main.cpp"],
109 cflags: ["-DAIDL_CPP_BUILD"],
Dan Willemsen8fd503f2016-10-04 20:04:36 -0700110 static_libs: [
111 "libaidl-common",
112 "libbase",
Tom Cherryffe43cd2020-01-08 14:10:30 -0800113 "liblog",
Dan Willemsen8fd503f2016-10-04 20:04:36 -0700114 ],
115}
116
117// Unit tests
Andreas Gampe76a6a462018-10-08 17:44:16 -0700118cc_test {
Dan Willemsen8fd503f2016-10-04 20:04:36 -0700119 name: "aidl_unittests",
Andreas Gampe76a6a462018-10-08 17:44:16 -0700120 host_supported: true,
121
Steven Moreland2921b8b2020-03-10 16:12:47 -0700122 test_suites: ["general-tests"],
Dan Willemsen8fd503f2016-10-04 20:04:36 -0700123
124 cflags: [
125 "-Wall",
126 "-Wextra",
127 "-Werror",
128 "-g",
Dan Willemsen8fd503f2016-10-04 20:04:36 -0700129 ],
Steven Moreland1c41e972018-07-09 16:07:00 -0700130
Dan Willemsen8fd503f2016-10-04 20:04:36 -0700131 srcs: [
132 "aidl_unittest.cpp",
133 "ast_cpp_unittest.cpp",
134 "ast_java_unittest.cpp",
Jiyong Park22b4ecd2018-07-23 23:34:42 +0900135 "code_writer_unittest.cpp",
Dan Willemsen8fd503f2016-10-04 20:04:36 -0700136 "generate_cpp_unittest.cpp",
137 "io_delegate_unittest.cpp",
138 "options_unittest.cpp",
139 "tests/end_to_end_tests.cpp",
140 "tests/fake_io_delegate.cpp",
141 "tests/main.cpp",
142 "tests/test_data_example_interface.cpp",
143 "tests/test_data_ping_responder.cpp",
144 "tests/test_data_string_constants.cpp",
145 "tests/test_util.cpp",
Dan Willemsen8fd503f2016-10-04 20:04:36 -0700146 ],
147
148 static_libs: [
149 "libaidl-common",
150 "libbase",
151 "libcutils",
Steven Moreland57ec44a2019-10-25 15:50:21 -0700152 "libgmock",
Tom Cherryffe43cd2020-01-08 14:10:30 -0800153 "liblog",
Dan Willemsen8fd503f2016-10-04 20:04:36 -0700154 ],
Dan Willemsen8fd503f2016-10-04 20:04:36 -0700155}
156
Steven Moreland45857d72019-10-25 17:08:09 -0700157cc_fuzz {
158 name: "aidl_parser_fuzzer",
159 host_supported: true,
160 dictionary: "tests/aidl_parser_fuzzer.dict",
Mitch Phillips17fad882019-12-18 11:27:40 -0800161 corpus: [
162 "tests/corpus/*",
163 ],
Steven Moreland00f1ee72019-11-04 09:52:06 -0800164
165 fuzz_config: {
166 cc: [
Steven Morelanda1e49872020-04-10 10:08:17 -0700167 "devinmoore@google.com",
Steven Moreland00f1ee72019-11-04 09:52:06 -0800168 "smoreland@google.com",
169 "jiyong@google.com",
170 "jeongik@google.com",
171 ],
172 },
173
Steven Moreland45857d72019-10-25 17:08:09 -0700174 srcs: [
175 "tests/aidl_parser_fuzzer.cpp",
176 "tests/fake_io_delegate.cpp",
177 "tests/test_util.cpp",
178 ],
179 static_libs: [
180 "libaidl-common",
181 "libbase",
182 "libcutils",
Tom Cherryffe43cd2020-01-08 14:10:30 -0800183 "liblog",
Steven Moreland45857d72019-10-25 17:08:09 -0700184 ],
Steven Moreland45857d72019-10-25 17:08:09 -0700185 // Enable this to show additional information about what is being parsed during fuzzing.
186 // cflags: ["-DFUZZ_LOG"],
187}
188
Dan Willemsen8fd503f2016-10-04 20:04:36 -0700189//
Steven Moreland9866fcd2020-03-10 16:51:48 -0700190// Integration testing of generated AIDL code.
Dan Willemsen8fd503f2016-10-04 20:04:36 -0700191//
Steven Moreland9866fcd2020-03-10 16:51:48 -0700192
193python_test_host {
194 name: "aidl_integration_test",
195 main: "tests/aidl_integration_test.py",
196 srcs: ["tests/aidl_integration_test.py"],
197 test_config: "tests/aidl_integration_test.xml",
198 target_required: [
199 "aidl_test_client",
Steven Moreland9866fcd2020-03-10 16:51:48 -0700200 "aidl_test_service",
201 "aidl_test_services",
Dan Willemsen8fd503f2016-10-04 20:04:36 -0700202 ],
Steven Moreland9866fcd2020-03-10 16:51:48 -0700203 test_suites: ["device-tests"],
Dan Willemsen8fd503f2016-10-04 20:04:36 -0700204}
Dan Willemsen8f883612016-11-03 14:22:48 -0700205
206cc_defaults {
207 name: "aidl_test_defaults",
208 cflags: [
209 "-Wall",
210 "-Wextra",
211 "-Werror",
Dan Willemsen8f883612016-11-03 14:22:48 -0700212 ],
213 shared_libs: [
214 "libbase",
215 "libbinder",
216 "liblog",
217 "libutils",
218 ],
Steven Moreland9866fcd2020-03-10 16:51:48 -0700219 compile_multilib: "both",
220 multilib: {
221 lib32: {
222 suffix: "32",
223 },
224 lib64: {
225 suffix: "64",
226 },
227 },
228 test_suites: ["device-tests"],
229}
230
Devin Mooree337b7c2020-05-14 13:52:02 -0700231// Header-only library used for atrace in platform NDK builds
232cc_library_headers {
233 name: "libandroid_aidltrace",
234 host_supported: true,
235 vendor_available: true,
236 export_include_dirs: ["trace"],
Devin Moore40735df2020-05-15 09:12:57 -0700237 apex_available: [
238 "//apex_available:platform",
239 "//apex_available:anyapex",
240 ],
Devin Mooree337b7c2020-05-14 13:52:02 -0700241}
242
Dan Willemsenc46b65e2019-06-06 10:55:58 -0700243filegroup {
244 name: "libaidl-integration-test-files",
245 srcs: ["tests/android/aidl/tests/*.aidl"],
246 path: "tests",
247}
248
Jiyong Park18c3dfe2020-07-27 20:27:03 +0900249aidl_interface {
250 name: "aidl-test-versioned-interface",
251 local_include_dir: "tests/versioned",
252 srcs: [
253 "tests/versioned/**/*.aidl",
254 ],
255 versions: [
256 "1",
257 "2",
258 ],
259}
260
Steven Moreland87bbbd82019-07-30 16:32:54 -0700261cc_library_static {
Dan Willemsen8f883612016-11-03 14:22:48 -0700262 name: "libaidl-integration-test",
263 defaults: ["aidl_test_defaults"],
264 aidl: {
Devin Mooree2ccf8a2020-05-13 14:28:20 -0700265 generate_traces: true,
Dan Willemsen8f883612016-11-03 14:22:48 -0700266 export_aidl_headers: true,
267 local_include_dirs: ["tests"],
268 include_dirs: ["frameworks/native/aidl/binder"],
269 },
270 srcs: [
Dan Willemsenc46b65e2019-06-06 10:55:58 -0700271 ":libaidl-integration-test-files",
Dan Willemsen8f883612016-11-03 14:22:48 -0700272 "tests/simple_parcelable.cpp",
273 ],
274}
275
Steven Moreland87bbbd82019-07-30 16:32:54 -0700276cc_test {
Dan Willemsen8f883612016-11-03 14:22:48 -0700277 name: "aidl_test_service",
Steven Moreland87bbbd82019-07-30 16:32:54 -0700278 gtest: false,
Dan Willemsen8f883612016-11-03 14:22:48 -0700279 defaults: ["aidl_test_defaults"],
Jiyong Park18c3dfe2020-07-27 20:27:03 +0900280 static_libs: [
281 "libaidl-integration-test",
282 "libcutils",
283 // service uses the old version
284 "aidl-test-versioned-interface-V1-cpp",
285 ],
Dan Willemsen8f883612016-11-03 14:22:48 -0700286 srcs: ["tests/aidl_test_service.cpp"],
287}
288
Steven Moreland87bbbd82019-07-30 16:32:54 -0700289cc_test {
Dan Willemsen8f883612016-11-03 14:22:48 -0700290 name: "aidl_test_client",
291 defaults: ["aidl_test_defaults"],
Jiyong Park18c3dfe2020-07-27 20:27:03 +0900292 static_libs: [
293 "libaidl-integration-test",
294 "libcutils",
Jiyong Park7c8a2e12020-07-28 18:15:20 +0900295 "libgmock",
Jiyong Park18c3dfe2020-07-27 20:27:03 +0900296 // client uses the latest version
297 "aidl-test-versioned-interface-cpp",
298 ],
Dan Willemsen8f883612016-11-03 14:22:48 -0700299 srcs: [
300 "tests/aidl_test_client.cpp",
301 "tests/aidl_test_client_file_descriptors.cpp",
302 "tests/aidl_test_client_parcelables.cpp",
303 "tests/aidl_test_client_nullables.cpp",
304 "tests/aidl_test_client_primitives.cpp",
305 "tests/aidl_test_client_utf8_strings.cpp",
306 "tests/aidl_test_client_service_exceptions.cpp",
Jiyong Park75e1a742018-07-04 12:31:23 +0900307 "tests/aidl_test_client_defaultimpl.cpp",
Jiyong Park18c3dfe2020-07-27 20:27:03 +0900308 "tests/aidl_test_client_versioned_interface.cpp",
Jiyong Park27fd7fd2020-08-27 16:25:09 +0900309 "tests/aidl_test_client_renamed_interface.cpp",
Dan Willemsen8f883612016-11-03 14:22:48 -0700310 ],
311}
Steven Moreland0ae34602018-06-28 10:08:19 -0700312
Steven Moreland9866fcd2020-03-10 16:51:48 -0700313android_test_helper_app {
Steven Moreland0ae34602018-06-28 10:08:19 -0700314 name: "aidl_test_services",
315 platform_apis: true,
316 // Turn off Java optimization tools to speed up our test iterations.
317 optimize: {
318 enabled: false,
319 },
Jeongik Cha649e8a72020-03-27 17:47:40 +0900320 static_libs: [
Jiyong Park0aa522d2020-07-27 23:59:00 +0900321 "androidx.test.core",
322 "androidx.test.runner",
Jeongik Cha649e8a72020-03-27 17:47:40 +0900323 "aidl_test_nonvintf_parcelable-java",
324 "aidl_test_unstable_parcelable-java",
325 "aidl_test_vintf_parcelable-java",
Jiyong Park18c3dfe2020-07-27 20:27:03 +0900326 // client uses the newest version
327 "aidl-test-versioned-interface-java",
Jeongik Cha649e8a72020-03-27 17:47:40 +0900328 ],
Steven Moreland0ae34602018-06-28 10:08:19 -0700329 dex_preopt: {
330 enabled: false,
331 },
332 certificate: "platform",
333 manifest: "tests/java_app/AndroidManifest.xml",
334 resource_dirs: ["tests/java_app/resources"],
335 srcs: [
Steven Moreland2a9a7d62019-02-05 16:11:54 -0800336 "tests/android/aidl/tests/*.aidl",
Jeongik Chae74c86d2019-12-12 16:54:03 +0900337 "tests/android/aidl/tests/generic/*.aidl",
Jeongik Cha36f76c32020-07-28 00:25:52 +0900338 "tests/android/aidl/tests/immutable/*.aidl",
Jeongik Chae48d9942020-01-02 17:39:00 +0900339 "tests/android/aidl/tests/map/*.aidl",
Jeongik Cha649e8a72020-03-27 17:47:40 +0900340 "tests/android/aidl/tests/extension/*.aidl",
341 "tests/java_app/src/android/aidl/tests/ExtensionTests.java",
Jeongik Chae74c86d2019-12-12 16:54:03 +0900342 "tests/java_app/src/android/aidl/tests/GenericTests.java",
Jeongik Chae48d9942020-01-02 17:39:00 +0900343 "tests/java_app/src/android/aidl/tests/MapTests.java",
Jeongik Chad0a10272020-08-06 16:33:36 +0900344 "tests/java_app/src/android/aidl/tests/JavaOnlyImmutableAnnotationTests.java",
Steven Moreland0ae34602018-06-28 10:08:19 -0700345 "tests/java_app/src/android/aidl/tests/NullableTests.java",
346 "tests/java_app/src/android/aidl/tests/SimpleParcelable.java",
347 "tests/java_app/src/android/aidl/tests/TestFailException.java",
Steven Moreland0ae34602018-06-28 10:08:19 -0700348 "tests/java_app/src/android/aidl/tests/TestServiceClient.java",
Jeongik Chae74c86d2019-12-12 16:54:03 +0900349 "tests/java_app/src/android/aidl/tests/generic/Pair.java",
Jiyong Park0aa522d2020-07-27 23:59:00 +0900350 "tests/java_app/src/android/aidl/tests/TestVersionedInterface.java",
Steven Moreland0ae34602018-06-28 10:08:19 -0700351 ],
352 aidl: {
353 include_dirs: [
354 "system/tools/aidl/tests/",
355 "frameworks/native/aidl/binder",
356 ],
Devin Mooree2ccf8a2020-05-13 14:28:20 -0700357 generate_traces: true,
Steven Moreland0ae34602018-06-28 10:08:19 -0700358 },
Steven Moreland9866fcd2020-03-10 16:51:48 -0700359 test_suites: ["device-tests"],
Steven Moreland0ae34602018-06-28 10:08:19 -0700360}
Jiyong Parkce50e262018-10-29 09:54:20 +0900361
Steven Moreland9866fcd2020-03-10 16:51:48 -0700362//
363// Testing generation of logs
364//
365
Jiyong Parkce50e262018-10-29 09:54:20 +0900366aidl_interface {
Steven Moreland2a9a7d62019-02-05 16:11:54 -0800367 name: "aidl_test_loggable_interface",
Jiyong Parka3617e62020-04-13 11:32:05 +0900368 unstable: true,
Jiyong Parkce50e262018-10-29 09:54:20 +0900369 local_include_dir: "tests",
370 srcs: [
Steven Moreland6e435322019-03-29 18:16:39 -0700371 "tests/android/aidl/loggable/ILoggableInterface.aidl",
Jiyong Parkce50e262018-10-29 09:54:20 +0900372 ],
Devin Moorea45a3602020-04-16 11:22:55 -0700373 gen_trace: true,
Jiyong Parkce50e262018-10-29 09:54:20 +0900374 backend: {
375 cpp: {
376 gen_log: true,
377 },
378 ndk: {
Jeongik Cha37e2ad52019-04-18 13:44:26 +0900379 gen_log: true,
380 },
Devin Mooree2ccf8a2020-05-13 14:28:20 -0700381 java: {
382 platform_apis: true,
Jiyong Park18c3dfe2020-07-27 20:27:03 +0900383 },
Jeongik Cha37e2ad52019-04-18 13:44:26 +0900384 },
Steven Morelandbb654e32020-01-08 19:52:05 -0800385}