1// Copyright (C) 2015 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 default_visibility: [":__subpackages__"], 17 default_applicable_licenses: ["external_dagger2_license"], 18} 19 20// Added automatically by a large-scale-change that took the approach of 21// 'apply every license found to every target'. While this makes sure we respect 22// every license restriction, it may not be entirely correct. 23// 24// e.g. GPL in an MIT project might only apply to the contrib/ directory. 25// 26// Please consider splitting the single license below into multiple licenses, 27// taking care not to lose any license_kind information, and overriding the 28// default license using the 'licenses: [...]' property on targets as needed. 29// 30// For unused files, consider creating a 'fileGroup' with "//visibility:private" 31// to attach the license to, and including a comment whether the files may be 32// used in the current project. 33// 34// large-scale-change included anything that looked like it might be a license 35// text as a license_text. e.g. LICENSE, NOTICE, COPYING etc. 36// 37// Please consider removing redundant or irrelevant files from 'license_text:'. 38// See: http://go/android-license-faq 39license { 40 name: "external_dagger2_license", 41 visibility: [":__subpackages__"], 42 license_kinds: [ 43 "SPDX-license-identifier-Apache-2.0", 44 "legacy_not_a_contribution", 45 ], 46 license_text: [ 47 "LICENSE.txt", 48 ], 49} 50 51java_import_host { 52 name: "dagger2-bootstrap-compiler-jar", 53 jars: ["java/dagger/internal/codegen/bootstrap/bootstrap_compiler_deploy.jar"], 54} 55 56java_plugin { 57 name: "dagger2-bootstrap-compiler", 58 processor_class: "dagger.internal.codegen.ComponentProcessor", 59 generates_api: true, 60 static_libs: ["dagger2-bootstrap-compiler-jar"], 61 jarjar_rules: "jarjar-rules.txt", 62} 63 64java_library { 65 name: "dagger2", 66 visibility: ["//visibility:public"], 67 host_supported: true, 68 69 srcs: [ 70 "java/dagger/*.java", 71 "java/dagger/assisted/*.java", 72 "java/dagger/internal/*.java", 73 "java/dagger/multibindings/*.java", 74 "java/dagger/releasablereferences/*.java", 75 ], 76 exclude_srcs: ["java/dagger/android/**/*.java"], 77 78 libs: [ 79 "guava", 80 "jsr330", 81 ], 82 apex_available: [ 83 "//apex_available:platform", 84 "com.android.adservices", 85 "com.android.extservices", 86 "com.android.devicelock", 87 "com.android.healthfitness", 88 "com.android.mediaprovider", 89 "com.android.ondevicepersonalization", 90 ], 91 92 sdk_version: "core_current", 93 94 errorprone: { 95 javacflags: [ 96 "-Xep:FormatStringAnnotation:WARN", 97 "-Xep:NoCanIgnoreReturnValueOnClasses:WARN", 98 ], 99 }, 100} 101 102// build dagger2 producers library 103// ============================================================ 104 105java_library { 106 name: "dagger2-producers", 107 host_supported: true, 108 109 srcs: ["java/dagger/producers/**/*.java"], 110 111 static_libs: [ 112 "error_prone_annotations", 113 ], 114 115 libs: [ 116 "dagger2", 117 "dagger2-android-annotation-stubs", 118 "guava", 119 "jsr330", 120 ], 121 122 sdk_version: "core_current", 123} 124 125// build dagger2 compiler plugin 126// ============================================================ 127 128java_plugin { 129 name: "dagger2-compiler", 130 visibility: ["//visibility:public"], 131 processor_class: "dagger.internal.codegen.ComponentProcessor", 132 generates_api: true, 133 static_libs: ["dagger2-compiler-lib"], 134 // shade guava to avoid conflicts with guava embedded in Error Prone. 135 jarjar_rules: "jarjar-rules.txt", 136} 137 138// Dagger distributes its own copy of androidx.room.compiler.processing 139// while the API is unstable. There are shading rules in jarjar-rules.txt 140// to prevent conflicts with official version. When this is removed 141// in favor of the official version the shading rules should also be 142// removed. 143java_import_host { 144 name: "dagger2-room-compiler-processing", 145 jars: ["java/dagger/internal/codegen/xprocessing/xprocessing.jar"], 146} 147 148java_library_host { 149 name: "dagger2-compiler-lib", 150 use_tools_jar: true, 151 visibility: ["//visibility:public"], 152 153 srcs: [ 154 "java/dagger/internal/codegen/**/*.java", 155 "java/dagger/internal/codegen/**/*.proto", 156 157 "java/dagger/model/*.java", 158 "java/dagger/spi/*.java", 159 "java/dagger/spi/model/*.java", 160 "java/dagger/spi/model/*.kt", 161 ], 162 163 exclude_srcs: [ 164 "java/dagger/internal/codegen/BindingGraphStatisticsCollector.java", 165 "java/dagger/internal/codegen/kythe/DaggerKythePlugin.java", 166 ], 167 168 static_libs: [ 169 "auto_common", 170 "dagger2", 171 "dagger2-producers", 172 "dagger2-room-compiler-processing", 173 "google_java_format", 174 "guava", 175 "javapoet", 176 "jsr330", 177 "kotlin_symbol_processing_api", 178 "kotlin-stdlib", 179 "kotlin-stdlib-jdk8", 180 "kotlinpoet", 181 "kotlinx_metadata_jvm", 182 "kotlin_symbol_processing_api", 183 ], 184 185 libs: [ 186 "auto_factory_annotations", 187 "auto_service_annotations", 188 "auto_value_annotations", 189 "auto_value_memoized_extension_annotations", 190 "dagger2-android-annotation-stubs", 191 ], 192 193 plugins: [ 194 "auto_factory_plugin", 195 "auto_service_plugin", 196 "auto_value_plugin", 197 "auto_value_memoized_extension_plugin", 198 "auto_annotation_plugin", 199 "dagger2-bootstrap-compiler", 200 ], 201 202 proto: { 203 type: "full", 204 include_dirs: ["external/protobuf/src/"], 205 }, 206 207 // From Java 9 onward com.sun.tools.javac is not visible by default 208 javacflags: [ 209 "--add-modules=jdk.compiler", 210 "--add-exports jdk.compiler/com.sun.tools.javac.api=ALL-UNNAMED", 211 "--add-exports jdk.compiler/com.sun.tools.javac.code=ALL-UNNAMED", 212 "--add-exports jdk.compiler/com.sun.tools.javac.file=ALL-UNNAMED", 213 "--add-exports jdk.compiler/com.sun.tools.javac.model=ALL-UNNAMED", 214 "--add-exports jdk.compiler/com.sun.tools.javac.parser=ALL-UNNAMED", 215 "--add-exports jdk.compiler/com.sun.tools.javac.tree=ALL-UNNAMED", 216 "--add-exports jdk.compiler/com.sun.tools.javac.util=ALL-UNNAMED", 217 ], 218 219 errorprone: { 220 javacflags: [ 221 "-Xep:FormatStringAnnotation:WARN", 222 "-Xep:NoCanIgnoreReturnValueOnClasses:WARN", 223 ], 224 }, 225} 226 227// Compile dummy implementations of annotations used by dagger2 but not 228// present in the Android tree. 229java_library { 230 name: "dagger2-android-annotation-stubs", 231 host_supported: true, 232 sdk_version: "core_current", 233 srcs: ["android-annotation-stubs/src/**/*.java"], 234} 235 236// build core hilt library 237 238java_library { 239 name: "hilt_core", 240 srcs: [ 241 "java/dagger/hilt/*.java", 242 "java/dagger/hilt/codegen/*.java", 243 "java/dagger/hilt/components/*.java", 244 "java/dagger/hilt/internal/*.java", 245 "java/dagger/hilt/internal/aliasof/*.java", 246 "java/dagger/hilt/internal/definecomponent/*.java", 247 "java/dagger/hilt/internal/generatesrootinput/*.java", 248 "java/dagger/hilt/migration/*.java", 249 "java/dagger/hilt/processor/internal/aggregateddeps/AggregatedDeps.java", 250 ], 251 static_libs: [ 252 "jsr305", 253 "jsr330", 254 "dagger2", 255 ], 256 sdk_version: "core_current", 257 plugins: [ 258 "hilt_define_component_processor", 259 "hilt_generates_root_input_processor", 260 ], 261 apex_available: [ 262 "//apex_available:platform", 263 "com.android.healthfitness", 264 "com.android.mediaprovider", 265 "com.android.ondevicepersonalization", 266 ], 267} 268 269// Build the android hilt library. Depending on this will enable the Hilt annotation processors. 270 271android_library { 272 name: "hilt_android", 273 visibility: ["//visibility:public"], 274 275 srcs: [ 276 "java/dagger/hilt/android/*.java", 277 "java/dagger/hilt/android/*.kt", 278 "java/dagger/hilt/android/components/*.java", 279 "java/dagger/hilt/android/flags/*.java", 280 "java/dagger/hilt/android/migration/*.java", 281 "java/dagger/hilt/android/qualifiers/*.java", 282 "java/dagger/hilt/android/scopes/*.java", 283 "java/dagger/hilt/android/internal/*.java", 284 "java/dagger/hilt/android/internal/builders/*.java", 285 "java/dagger/hilt/android/internal/earlyentrypoint/*.java", 286 "java/dagger/hilt/android/internal/legacy/*.java", 287 "java/dagger/hilt/android/internal/lifecycle/*.java", 288 "java/dagger/hilt/android/internal/managers/*.java", 289 "java/dagger/hilt/android/internal/migration/*.java", 290 "java/dagger/hilt/android/internal/modules/*.java", 291 "java/dagger/hilt/android/lifecycle/*.java", 292 "java/dagger/hilt/android/lifecycle/*.kt", 293 "java/dagger/hilt/internal/aggregatedroot/*.java", 294 "java/dagger/hilt/internal/componenttreedeps/*.java", 295 "java/dagger/hilt/internal/processedrootsentinel/*.java", 296 ], 297 manifest: "java/dagger/hilt/android/AndroidManifest.xml", 298 static_libs: [ 299 "androidx.activity_activity", 300 "androidx.annotation_annotation", 301 "androidx.fragment_fragment", 302 "androidx.lifecycle_lifecycle-common", 303 "androidx.lifecycle_lifecycle-viewmodel", 304 "androidx.lifecycle_lifecycle-viewmodel-savedstate", 305 "jsr305", 306 "jsr330", 307 "dagger2", 308 "hilt_core", 309 ], 310 sdk_version: "current", 311 min_sdk_version: "21", 312 plugins: [ 313 "dagger2-compiler", 314 "hilt_android_entry_point_processor", 315 "hilt_aggregated_deps_processor", 316 "hilt_define_component_processor", 317 "hilt_generates_root_input_processor", 318 "hilt_originating_element_processor", 319 "hilt_root_processor", 320 ], 321 exported_plugins: [ 322 "dagger2-compiler", 323 324 "hilt_android_entry_point_processor", 325 "hilt_aggregated_deps_processor", 326 "hilt_alias_of_processor", 327 "hilt_component_tree_deps_processor", 328 "hilt_define_component_processor", 329 "hilt_early_entry_point_processor", 330 "hilt_generates_root_input_processor", 331 "hilt_originating_element_processor", 332 "hilt_root_processor", 333 "hilt_viewmodel_processor", 334 ], 335 apex_available: [ 336 "//apex_available:platform", 337 "com.android.healthfitness", 338 "com.android.mediaprovider", 339 "com.android.ondevicepersonalization", 340 ], 341} 342 343android_library { 344 name: "hilt_android_testing", 345 visibility: ["//visibility:public"], 346 347 srcs: [ 348 "java/dagger/hilt/android/internal/testing/*.java", 349 "java/dagger/hilt/android/internal/testing/root/*.java", 350 "java/dagger/hilt/android/internal/uninstallmodules/*.java", 351 "java/dagger/hilt/android/testing/*.java", 352 "java/dagger/hilt/testing/*.java", 353 ], 354 manifest: "java/dagger/hilt/android/testing/AndroidManifest.xml", 355 static_libs: [ 356 "auto_value_annotations", 357 "androidx.annotation_annotation", 358 "androidx.fragment_fragment", 359 "androidx.annotation_annotation", 360 "androidx.fragment_fragment", 361 "androidx.test.core", 362 "android-support-multidex", 363 "jsr305", 364 "dagger2", 365 "hilt_android", 366 "hilt_core", 367 "junit", 368 ], 369 sdk_version: "current", 370 min_sdk_version: "21", 371 plugins: [ 372 "auto_value_plugin", 373 "dagger2-compiler", 374 "hilt_generates_root_input_processor", 375 ], 376 exported_plugins: [ 377 "dagger2-compiler", 378 379 "hilt_android_entry_point_processor", 380 "hilt_aggregated_deps_processor", 381 "hilt_alias_of_processor", 382 "hilt_component_tree_deps_processor", 383 "hilt_define_component_processor", 384 "hilt_early_entry_point_processor", 385 "hilt_generates_root_input_processor", 386 "hilt_originating_element_processor", 387 "hilt_root_processor", 388 "hilt_viewmodel_processor", 389 390 "hilt_custom_test_application_processor", 391 "hilt_bindvalue_processor", 392 "hilt_uninstall_modules_processor", 393 ], 394} 395 396// Hilt has many annotation processors. To reduce compilation and runtime cost, they are all compiled 397// into hilt_android_processors. A java_plugin can only expose a single processor class, so each has 398// to be defined separately. Since they are not visible outside this package and will always be 399// exported together, only the first actually contains the annotation processor classes. 400java_plugin { 401 name: "hilt_generates_root_input_processor", 402 generates_api: true, 403 processor_class: "dagger.hilt.processor.internal.generatesrootinput.GeneratesRootInputProcessor", 404 static_libs: ["hilt_android_processors"], 405} 406 407java_plugin { 408 name: "hilt_android_entry_point_processor", 409 generates_api: true, 410 processor_class: "dagger.hilt.android.processor.internal.androidentrypoint.AndroidEntryPointProcessor", 411} 412 413java_plugin { 414 name: "hilt_aggregated_deps_processor", 415 generates_api: true, 416 processor_class: "dagger.hilt.processor.internal.aggregateddeps.AggregatedDepsProcessor", 417} 418 419java_plugin { 420 name: "hilt_alias_of_processor", 421 generates_api: true, 422 processor_class: "dagger.hilt.processor.internal.aliasof.AliasOfProcessor", 423} 424 425java_plugin { 426 name: "hilt_component_tree_deps_processor", 427 generates_api: true, 428 processor_class: "dagger.hilt.processor.internal.root.ComponentTreeDepsProcessor", 429} 430 431java_plugin { 432 name: "hilt_define_component_processor", 433 generates_api: true, 434 processor_class: "dagger.hilt.processor.internal.definecomponent.DefineComponentProcessor", 435} 436 437java_plugin { 438 name: "hilt_early_entry_point_processor", 439 generates_api: true, 440 processor_class: "dagger.hilt.processor.internal.earlyentrypoint.EarlyEntryPointProcessor", 441} 442 443java_plugin { 444 name: "hilt_originating_element_processor", 445 generates_api: true, 446 processor_class: "dagger.hilt.processor.internal.originatingelement.OriginatingElementProcessor", 447} 448 449java_plugin { 450 name: "hilt_root_processor", 451 generates_api: true, 452 processor_class: "dagger.hilt.processor.internal.root.RootProcessor", 453} 454 455java_plugin { 456 name: "hilt_viewmodel_processor", 457 generates_api: true, 458 processor_class: "dagger.hilt.android.processor.internal.viewmodel.ViewModelProcessor", 459} 460 461// Hilt testing processors 462java_plugin { 463 name: "hilt_custom_test_application_processor", 464 generates_api: true, 465 processor_class: "dagger.hilt.android.processor.internal.customtestapplication.CustomTestApplicationProcessor", 466} 467 468java_plugin { 469 name: "hilt_bindvalue_processor", 470 generates_api: true, 471 processor_class: "dagger.hilt.android.processor.internal.bindvalue.BindValueProcessor", 472} 473 474java_plugin { 475 name: "hilt_uninstall_modules_processor", 476 generates_api: true, 477 processor_class: "dagger.hilt.processor.internal.uninstallmodules.UninstallModulesProcessor", 478} 479 480java_library_host { 481 name: "hilt_android_processors", 482 use_tools_jar: true, 483 srcs: [ 484 "java/dagger/hilt/android/processor/**/*.java", 485 "java/dagger/hilt/android/processor/**/*.kt", 486 "java/dagger/hilt/codegen/*.java", 487 "java/dagger/hilt/processor/internal/**/*.java", 488 "java/dagger/hilt/processor/internal/**/*.kt", 489 ], 490 exclude_srcs: [ 491 // Depends on DefineComponentValidationProcessingStep which is not present in github. 492 "java/dagger/hilt/processor/internal/definecomponent/KspDefineComponentValidationProcessor.java", 493 ], 494 plugins: [ 495 "auto_service_plugin", 496 "auto_value_plugin", 497 "auto_value_memoized_extension_plugin", 498 "dagger2-compiler", 499 ], 500 static_libs: [ 501 "auto_common", 502 "auto_service_annotations", 503 "auto_value_annotations", 504 "auto_value_memoized_extension_annotations", 505 "guava", 506 "jsr305", 507 "dagger2-compiler-lib", 508 "dagger2", 509 "javapoet", 510 "jsr330", 511 "kotlin-stdlib", 512 "kotlinx_metadata_jvm", 513 "dagger2-android-annotation-stubs", 514 ], 515 // shade guava to avoid conflicts with guava embedded in Error Prone. 516 jarjar_rules: "jarjar-rules.txt", 517} 518