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 ], 183 184 libs: [ 185 "auto_factory_annotations", 186 "auto_service_annotations", 187 "auto_value_annotations", 188 "auto_value_memoized_extension_annotations", 189 "dagger2-android-annotation-stubs", 190 ], 191 192 plugins: [ 193 "auto_factory_plugin", 194 "auto_service_plugin", 195 "auto_value_plugin", 196 "auto_value_memoized_extension_plugin", 197 "auto_annotation_plugin", 198 "dagger2-bootstrap-compiler", 199 ], 200 201 proto: { 202 type: "full", 203 include_dirs: ["external/protobuf/src/"], 204 }, 205 206 // From Java 9 onward com.sun.tools.javac is not visible by default 207 javacflags: [ 208 "--add-modules=jdk.compiler", 209 "--add-exports jdk.compiler/com.sun.tools.javac.api=ALL-UNNAMED", 210 "--add-exports jdk.compiler/com.sun.tools.javac.code=ALL-UNNAMED", 211 "--add-exports jdk.compiler/com.sun.tools.javac.file=ALL-UNNAMED", 212 "--add-exports jdk.compiler/com.sun.tools.javac.model=ALL-UNNAMED", 213 "--add-exports jdk.compiler/com.sun.tools.javac.parser=ALL-UNNAMED", 214 "--add-exports jdk.compiler/com.sun.tools.javac.tree=ALL-UNNAMED", 215 "--add-exports jdk.compiler/com.sun.tools.javac.util=ALL-UNNAMED", 216 ], 217 218 errorprone: { 219 javacflags: [ 220 "-Xep:FormatStringAnnotation:WARN", 221 "-Xep:NoCanIgnoreReturnValueOnClasses:WARN", 222 ], 223 }, 224} 225 226// Compile dummy implementations of annotations used by dagger2 but not 227// present in the Android tree. 228java_library { 229 name: "dagger2-android-annotation-stubs", 230 host_supported: true, 231 sdk_version: "core_current", 232 srcs: ["android-annotation-stubs/src/**/*.java"], 233} 234 235// build core hilt library 236 237java_library { 238 name: "hilt_core", 239 srcs: [ 240 "java/dagger/hilt/*.java", 241 "java/dagger/hilt/codegen/*.java", 242 "java/dagger/hilt/components/*.java", 243 "java/dagger/hilt/internal/*.java", 244 "java/dagger/hilt/internal/aliasof/*.java", 245 "java/dagger/hilt/internal/definecomponent/*.java", 246 "java/dagger/hilt/internal/generatesrootinput/*.java", 247 "java/dagger/hilt/migration/*.java", 248 "java/dagger/hilt/processor/internal/aggregateddeps/AggregatedDeps.java", 249 ], 250 static_libs: [ 251 "jsr305", 252 "jsr330", 253 "dagger2", 254 ], 255 sdk_version: "core_current", 256 plugins: [ 257 "hilt_define_component_processor", 258 "hilt_generates_root_input_processor", 259 ], 260 apex_available: [ 261 "//apex_available:platform", 262 "com.android.healthfitness", 263 "com.android.mediaprovider", 264 "com.android.ondevicepersonalization", 265 ], 266} 267 268// Build the android hilt library. Depending on this will enable the Hilt annotation processors. 269 270android_library { 271 name: "hilt_android", 272 visibility: ["//visibility:public"], 273 274 srcs: [ 275 "java/dagger/hilt/android/*.java", 276 "java/dagger/hilt/android/*.kt", 277 "java/dagger/hilt/android/components/*.java", 278 "java/dagger/hilt/android/flags/*.java", 279 "java/dagger/hilt/android/migration/*.java", 280 "java/dagger/hilt/android/qualifiers/*.java", 281 "java/dagger/hilt/android/scopes/*.java", 282 "java/dagger/hilt/android/internal/*.java", 283 "java/dagger/hilt/android/internal/builders/*.java", 284 "java/dagger/hilt/android/internal/earlyentrypoint/*.java", 285 "java/dagger/hilt/android/internal/legacy/*.java", 286 "java/dagger/hilt/android/internal/lifecycle/*.java", 287 "java/dagger/hilt/android/internal/managers/*.java", 288 "java/dagger/hilt/android/internal/migration/*.java", 289 "java/dagger/hilt/android/internal/modules/*.java", 290 "java/dagger/hilt/android/lifecycle/*.java", 291 "java/dagger/hilt/android/lifecycle/*.kt", 292 "java/dagger/hilt/internal/aggregatedroot/*.java", 293 "java/dagger/hilt/internal/componenttreedeps/*.java", 294 "java/dagger/hilt/internal/processedrootsentinel/*.java", 295 ], 296 manifest: "java/dagger/hilt/android/AndroidManifest.xml", 297 static_libs: [ 298 "androidx.activity_activity", 299 "androidx.annotation_annotation", 300 "androidx.fragment_fragment", 301 "androidx.lifecycle_lifecycle-common", 302 "androidx.lifecycle_lifecycle-viewmodel", 303 "androidx.lifecycle_lifecycle-viewmodel-savedstate", 304 "jsr305", 305 "jsr330", 306 "dagger2", 307 "hilt_core", 308 ], 309 sdk_version: "current", 310 min_sdk_version: "21", 311 plugins: [ 312 "dagger2-compiler", 313 "hilt_android_entry_point_processor", 314 "hilt_aggregated_deps_processor", 315 "hilt_define_component_processor", 316 "hilt_generates_root_input_processor", 317 "hilt_originating_element_processor", 318 "hilt_root_processor", 319 ], 320 exported_plugins: [ 321 "dagger2-compiler", 322 323 "hilt_android_entry_point_processor", 324 "hilt_aggregated_deps_processor", 325 "hilt_alias_of_processor", 326 "hilt_component_tree_deps_processor", 327 "hilt_define_component_processor", 328 "hilt_early_entry_point_processor", 329 "hilt_generates_root_input_processor", 330 "hilt_originating_element_processor", 331 "hilt_root_processor", 332 "hilt_viewmodel_processor", 333 ], 334 apex_available: [ 335 "//apex_available:platform", 336 "com.android.healthfitness", 337 "com.android.mediaprovider", 338 "com.android.ondevicepersonalization", 339 ], 340} 341 342android_library { 343 name: "hilt_android_testing", 344 visibility: ["//visibility:public"], 345 346 srcs: [ 347 "java/dagger/hilt/android/internal/testing/*.java", 348 "java/dagger/hilt/android/internal/testing/root/*.java", 349 "java/dagger/hilt/android/internal/uninstallmodules/*.java", 350 "java/dagger/hilt/android/testing/*.java", 351 "java/dagger/hilt/testing/*.java", 352 ], 353 manifest: "java/dagger/hilt/android/testing/AndroidManifest.xml", 354 static_libs: [ 355 "auto_value_annotations", 356 "androidx.annotation_annotation", 357 "androidx.fragment_fragment", 358 "androidx.annotation_annotation", 359 "androidx.fragment_fragment", 360 "androidx.test.core", 361 "android-support-multidex", 362 "jsr305", 363 "dagger2", 364 "hilt_android", 365 "hilt_core", 366 "junit", 367 ], 368 sdk_version: "current", 369 min_sdk_version: "21", 370 plugins: [ 371 "auto_value_plugin", 372 "dagger2-compiler", 373 "hilt_generates_root_input_processor", 374 ], 375 exported_plugins: [ 376 "dagger2-compiler", 377 378 "hilt_android_entry_point_processor", 379 "hilt_aggregated_deps_processor", 380 "hilt_alias_of_processor", 381 "hilt_component_tree_deps_processor", 382 "hilt_define_component_processor", 383 "hilt_early_entry_point_processor", 384 "hilt_generates_root_input_processor", 385 "hilt_originating_element_processor", 386 "hilt_root_processor", 387 "hilt_viewmodel_processor", 388 389 "hilt_custom_test_application_processor", 390 "hilt_bindvalue_processor", 391 "hilt_uninstall_modules_processor", 392 ], 393} 394 395// Hilt has many annotation processors. To reduce compilation and runtime cost, they are all compiled 396// into hilt_android_processors. A java_plugin can only expose a single processor class, so each has 397// to be defined separately. Since they are not visible outside this package and will always be 398// exported together, only the first actually contains the annotation processor classes. 399java_plugin { 400 name: "hilt_generates_root_input_processor", 401 generates_api: true, 402 processor_class: "dagger.hilt.processor.internal.generatesrootinput.GeneratesRootInputProcessor", 403 static_libs: ["hilt_android_processors"], 404} 405 406java_plugin { 407 name: "hilt_android_entry_point_processor", 408 generates_api: true, 409 processor_class: "dagger.hilt.android.processor.internal.androidentrypoint.AndroidEntryPointProcessor", 410} 411 412java_plugin { 413 name: "hilt_aggregated_deps_processor", 414 generates_api: true, 415 processor_class: "dagger.hilt.processor.internal.aggregateddeps.AggregatedDepsProcessor", 416} 417 418java_plugin { 419 name: "hilt_alias_of_processor", 420 generates_api: true, 421 processor_class: "dagger.hilt.processor.internal.aliasof.AliasOfProcessor", 422} 423 424java_plugin { 425 name: "hilt_component_tree_deps_processor", 426 generates_api: true, 427 processor_class: "dagger.hilt.processor.internal.root.ComponentTreeDepsProcessor", 428} 429 430java_plugin { 431 name: "hilt_define_component_processor", 432 generates_api: true, 433 processor_class: "dagger.hilt.processor.internal.definecomponent.DefineComponentProcessor", 434} 435 436java_plugin { 437 name: "hilt_early_entry_point_processor", 438 generates_api: true, 439 processor_class: "dagger.hilt.processor.internal.earlyentrypoint.EarlyEntryPointProcessor", 440} 441 442java_plugin { 443 name: "hilt_originating_element_processor", 444 generates_api: true, 445 processor_class: "dagger.hilt.processor.internal.originatingelement.OriginatingElementProcessor", 446} 447 448java_plugin { 449 name: "hilt_root_processor", 450 generates_api: true, 451 processor_class: "dagger.hilt.processor.internal.root.RootProcessor", 452} 453 454java_plugin { 455 name: "hilt_viewmodel_processor", 456 generates_api: true, 457 processor_class: "dagger.hilt.android.processor.internal.viewmodel.ViewModelProcessor", 458} 459 460// Hilt testing processors 461java_plugin { 462 name: "hilt_custom_test_application_processor", 463 generates_api: true, 464 processor_class: "dagger.hilt.android.processor.internal.customtestapplication.CustomTestApplicationProcessor", 465} 466 467java_plugin { 468 name: "hilt_bindvalue_processor", 469 generates_api: true, 470 processor_class: "dagger.hilt.android.processor.internal.bindvalue.BindValueProcessor", 471} 472 473java_plugin { 474 name: "hilt_uninstall_modules_processor", 475 generates_api: true, 476 processor_class: "dagger.hilt.processor.internal.uninstallmodules.UninstallModulesProcessor", 477} 478 479java_library_host { 480 name: "hilt_android_processors", 481 use_tools_jar: true, 482 srcs: [ 483 "java/dagger/hilt/android/processor/**/*.java", 484 "java/dagger/hilt/android/processor/**/*.kt", 485 "java/dagger/hilt/codegen/*.java", 486 "java/dagger/hilt/processor/internal/**/*.java", 487 "java/dagger/hilt/processor/internal/**/*.kt", 488 ], 489 exclude_srcs: [ 490 // Depends on DefineComponentValidationProcessingStep which is not present in github. 491 "java/dagger/hilt/processor/internal/definecomponent/KspDefineComponentValidationProcessor.java", 492 ], 493 plugins: [ 494 "auto_service_plugin", 495 "auto_value_plugin", 496 "auto_value_memoized_extension_plugin", 497 "dagger2-compiler", 498 ], 499 static_libs: [ 500 "auto_common", 501 "auto_service_annotations", 502 "auto_value_annotations", 503 "auto_value_memoized_extension_annotations", 504 "guava", 505 "jsr305", 506 "dagger2-compiler-lib", 507 "dagger2", 508 "javapoet", 509 "jsr330", 510 "kotlin-stdlib", 511 "kotlinx_metadata_jvm", 512 "dagger2-android-annotation-stubs", 513 ], 514 // shade guava to avoid conflicts with guava embedded in Error Prone. 515 jarjar_rules: "jarjar-rules.txt", 516} 517