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