1// Copyright (C) 2018 The Android Open Source Project 2// 3// Licensed under the Apache License, Version 2.0 (the "License"); 4// you may not use this file except in compliance with the License. 5// You may obtain a copy of the License at 6// 7// http://www.apache.org/licenses/LICENSE-2.0 8// 9// Unless required by applicable law or agreed to in writing, software 10// distributed under the License is distributed on an "AS IS" BASIS, 11// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12// See the License for the specific language governing permissions and 13// limitations under the License. 14 15package { 16 // See: http://go/android-license-faq 17 // A large-scale-change added 'default_applicable_licenses' to import 18 // all of the 'license_kinds' from "system_tools_aidl_license" 19 // to get the below license kinds: 20 // SPDX-license-identifier-Apache-2.0 21 default_applicable_licenses: ["system_tools_aidl_license"], 22} 23 24bootstrap_go_package { 25 name: "aidl-soong-rules", 26 pkgPath: "android/soong/aidl", 27 deps: [ 28 "blueprint", 29 "soong", 30 "soong-android", 31 "soong-aidl-library", 32 "soong-cc", 33 "soong-genrule", 34 "soong-phony", 35 "soong-java", 36 "soong-rust", 37 ], 38 srcs: [ 39 "aidl_interface.go", 40 "properties.go", 41 "aidl_api.go", 42 "aidl_gen_rule.go", 43 "aidl_interface_backends.go", 44 45 "aidl_interface_defaults.go", 46 "aidl_interface_metadata_singleton.go", 47 "aidl_rust_source_provider.go", 48 "aidl_utils.go", 49 ], 50 testSrcs: [ 51 "aidl_test.go", 52 ], 53 pluginFor: ["soong_build"], 54} 55 56aidl_interfaces_metadata { 57 name: "aidl_metadata_json", 58 visibility: ["//system/tools/aidl:__subpackages__"], 59} 60 61// These configurations are inherited by all aidl-gen modules 62// TODO(b/146436251): default isn't applied because the module is created 63// in PreArchMutators, when import behavior becomes explicit, the logic can 64// be moved back to LoadHook, and then default can be applied as well. 65cc_defaults { 66 name: "aidl-cpp-module-defaults", 67 target: { 68 darwin: { 69 enabled: false, 70 }, 71 }, 72} 73 74java_defaults { 75 name: "aidl-java-module-defaults", 76} 77 78rust_defaults { 79 name: "aidl-rust-module-defaults", 80} 81 82// Tests 83 84filegroup { 85 name: "aidl-test-filegroup", 86 srcs: [ 87 "tests_1/some_package/IFoo.aidl", 88 "tests_1/some_package/Thing.aidl", 89 "tests_1/some_package/sub_package/*.aidl", 90 ], 91} 92 93aidl_interface { 94 name: "test-piece-1", 95 local_include_dir: "tests_1", 96 vendor_available: true, 97 product_available: true, 98 double_loadable: true, 99 host_supported: true, 100 flags: ["-Werror"], 101 srcs: [ 102 "tests_1/some_package/IFoo.aidl", 103 "tests_1/some_package/Thing.aidl", 104 "tests_1/some_package/sub_package/*.aidl", // testing glob w/o filegroup 105 ], 106 versions: [ 107 "1", 108 "2", 109 "3", 110 "4", 111 ], 112 backend: { 113 rust: { 114 enabled: true, 115 }, 116 }, 117} 118 119aidl_interface { 120 name: "test-piece-ndk-sdk-29", 121 local_include_dir: "tests_1", 122 flags: ["-Werror"], 123 srcs: [ 124 "tests_1/some_package/IFoo.aidl", 125 "tests_1/some_package/Thing.aidl", 126 "tests_1/some_package/sub_package/*.aidl", // testing glob w/o filegroup 127 ], 128 unstable: true, 129 backend: { 130 rust: { 131 enabled: true, 132 }, 133 ndk: { 134 sdk_version: "29", 135 cflags: ["-U__ANDROID_UNAVAILABLE_SYMBOLS_ARE_WEAK__"], 136 ldflags: ["-Wl,-z,max-page-size=65536"], 137 }, 138 }, 139} 140 141aidl_interface { 142 name: "test-piece-ndk-sdk-30", 143 local_include_dir: "tests_1", 144 flags: ["-Werror"], 145 srcs: [ 146 "tests_1/some_package/IFoo.aidl", 147 "tests_1/some_package/Thing.aidl", 148 "tests_1/some_package/sub_package/*.aidl", // testing glob w/o filegroup 149 ], 150 unstable: true, 151 backend: { 152 rust: { 153 enabled: true, 154 }, 155 ndk: { 156 sdk_version: "30", 157 cflags: ["-U__ANDROID_UNAVAILABLE_SYMBOLS_ARE_WEAK__"], 158 }, 159 }, 160} 161 162aidl_interface { 163 name: "test-piece-ndk-sdk-31", 164 local_include_dir: "tests_1", 165 flags: ["-Werror"], 166 srcs: [ 167 "tests_1/some_package/IFoo.aidl", 168 "tests_1/some_package/Thing.aidl", 169 "tests_1/some_package/sub_package/*.aidl", // testing glob w/o filegroup 170 ], 171 unstable: true, 172 backend: { 173 rust: { 174 enabled: true, 175 }, 176 ndk: { 177 sdk_version: "31", 178 cflags: ["-U__ANDROID_UNAVAILABLE_SYMBOLS_ARE_WEAK__"], 179 }, 180 }, 181} 182 183aidl_interface { 184 name: "test-piece-ndk-sdk-32", 185 local_include_dir: "tests_1", 186 flags: ["-Werror"], 187 srcs: [ 188 "tests_1/some_package/IFoo.aidl", 189 "tests_1/some_package/Thing.aidl", 190 "tests_1/some_package/sub_package/*.aidl", // testing glob w/o filegroup 191 ], 192 unstable: true, 193 backend: { 194 rust: { 195 enabled: true, 196 }, 197 ndk: { 198 sdk_version: "32", 199 cflags: ["-U__ANDROID_UNAVAILABLE_SYMBOLS_ARE_WEAK__"], 200 }, 201 }, 202} 203 204aidl_interface { 205 name: "test-piece-ndk-sdk-33", 206 local_include_dir: "tests_1", 207 flags: ["-Werror"], 208 srcs: [ 209 "tests_1/some_package/IFoo.aidl", 210 "tests_1/some_package/Thing.aidl", 211 "tests_1/some_package/sub_package/*.aidl", // testing glob w/o filegroup 212 ], 213 unstable: true, 214 backend: { 215 rust: { 216 enabled: true, 217 }, 218 ndk: { 219 sdk_version: "33", 220 cflags: ["-U__ANDROID_UNAVAILABLE_SYMBOLS_ARE_WEAK__"], 221 }, 222 }, 223} 224 225aidl_interface { 226 name: "tests-vintf", 227 local_include_dir: "tests_vintf", 228 srcs: ["tests_vintf/vintf/IFoo.aidl"], 229 stability: "vintf", 230 vendor_available: true, 231 backend: { 232 rust: { 233 enabled: true, 234 }, 235 ndk: { 236 sdk_version: "31", 237 }, 238 java: { 239 sdk_version: "system_current", 240 }, 241 }, 242 versions_with_info: [ 243 { 244 version: "1", 245 imports: [], 246 }, 247 ], 248 249} 250 251aidl_interface { 252 name: "test-piece-2", 253 local_include_dir: "tests_1", 254 flags: ["-Werror"], 255 srcs: [ 256 "tests_1/INoPackage.aidl", 257 "tests_1/some_package/IBar.aidl", 258 ], 259 imports: [ 260 "test-piece-1-V3", 261 ], 262 backend: { 263 rust: { 264 enabled: true, 265 }, 266 java: { 267 platform_apis: true, 268 }, 269 }, 270 gen_trace: true, 271 versions_with_info: [ 272 { 273 version: "1", 274 imports: ["test-piece-1-V3"], 275 }, 276 ], 277 278} 279 280aidl_interface { 281 name: "test-piece-3", 282 local_include_dir: "tests_1", 283 flags: ["-Werror"], 284 srcs: [ 285 "tests_1/other_package/Enum.aidl", 286 "tests_1/other_package/IBaz.aidl", 287 ], 288 imports: [ 289 "test-piece-2-V1", 290 ], 291 backend: { 292 rust: { 293 enabled: true, 294 }, 295 java: { 296 platform_apis: true, 297 gen_trace: true, 298 }, 299 }, 300 gen_trace: true, 301 versions_with_info: [ 302 { 303 version: "1", 304 imports: ["test-piece-2-V1"], 305 }, 306 { 307 version: "2", 308 imports: ["test-piece-2-V1"], 309 }, 310 311 ], 312 frozen: true, 313} 314 315cc_test_library { 316 name: "client-using-test-piece-3", 317 srcs: ["client-using-test-piece-3/client-using-test-piece-3.cpp"], 318 shared_libs: ["test-piece-3-V2-cpp"], 319} 320 321aidl_interface { 322 name: "test-piece-4", 323 local_include_dir: "tests_2", 324 flags: ["-Werror"], 325 srcs: [ 326 "tests_2/another_package/IFaz.aidl", 327 ], 328 imports: [ 329 "test-piece-1-V3", 330 ], 331 backend: { 332 rust: { 333 enabled: true, 334 }, 335 java: { 336 platform_apis: true, 337 }, 338 }, 339 gen_trace: true, 340 versions: ["1"], 341 dumpapi: { 342 no_license: true, 343 }, 344} 345 346aidl_interface { 347 name: "test-root-package", 348 flags: ["-Werror"], 349 srcs: [ 350 "test_package/IBaz.aidl", 351 ], 352 imports: [ 353 "test-piece-2-V1", 354 ], 355 backend: { 356 rust: { 357 enabled: true, 358 }, 359 java: { 360 platform_apis: true, 361 }, 362 }, 363 gen_trace: true, 364 versions: [ 365 "1", 366 "2", 367 "3", 368 ], 369} 370 371aidl_interface { 372 name: "test-piece-5", 373 unstable: true, 374 local_include_dir: "tests_3", 375 flags: ["-Werror"], 376 srcs: [ 377 "tests_3/EmptyParcelable.aidl", 378 "tests_3/IEmptyInterface.aidl", 379 ], 380} 381 382aidl_interface { 383 name: "test-piece-6", 384 unstable: true, 385 local_include_dir: "tests_6", 386 flags: ["-Werror"], 387 srcs: [ 388 "tests_6/test6/Bar.aidl", 389 "tests_6/test6/Foo.aidl", 390 ], 391} 392 393aidl_interface { 394 name: "tests-unfrozen-vendor", 395 owner: "google", 396 local_include_dir: "tests_unfrozen_vendor", 397 srcs: ["tests_unfrozen_vendor/vendor/IFoo.aidl"], 398 vendor_available: true, 399 backend: { 400 rust: { 401 enabled: true, 402 }, 403 }, 404 frozen: false, 405 always_use_unfrozen: true, 406 versions_with_info: [ 407 { 408 version: "1", 409 imports: [], 410 }, 411 ], 412 413} 414 415cc_library { 416 name: "build_test_aidl_always_use_unfrozen", 417 srcs: ["test_unfrozen_iface/test_unfrozen_iface.cpp"], 418 shared_libs: [ 419 "tests-unfrozen-vendor-V2-cpp", 420 ], 421} 422 423// These test that a parcel imported from A->B->C will have the required dependencies to link in 424// all backends (C++ backends need to link direclty against the constructor of the parcelable 425// in order to work) 426aidl_interface { 427 name: "tests_transitive_parcel.a", 428 flags: ["-Werror"], 429 srcs: ["tests_transitive_parcel/a/*.aidl"], 430 imports: [ 431 "tests_transitive_parcel.b", 432 "tests_transitive_parcel.c", 433 ], 434 unstable: true, 435 backend: { 436 rust: { 437 enabled: true, 438 }, 439 }, 440} 441 442aidl_interface { 443 name: "tests_transitive_parcel.b", 444 flags: ["-Werror"], 445 srcs: ["tests_transitive_parcel/b/*.aidl"], 446 imports: ["tests_transitive_parcel.c"], 447 unstable: true, 448 backend: { 449 rust: { 450 enabled: true, 451 }, 452 }, 453} 454 455aidl_interface { 456 name: "tests_transitive_parcel.c", 457 flags: ["-Werror"], 458 srcs: ["tests_transitive_parcel/c/*.aidl"], 459 unstable: true, 460 backend: { 461 rust: { 462 enabled: true, 463 }, 464 }, 465} 466 467sh_binary { 468 name: "aidl_hash_gen", 469 src: "hash_gen.sh", 470 host_supported: true, 471} 472 473python_binary_host { 474 name: "aidl_rust_glue", 475 srcs: ["aidl_rust_glue.py"], 476 main: "aidl_rust_glue.py", 477} 478