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 "NOTICE", 49 ], 50} 51 52java_import_host { 53 name: "dagger2-bootstrap-compiler-jar", 54 jars: ["java/dagger/internal/codegen/bootstrap/bootstrap_compiler_deploy.jar"], 55} 56 57java_plugin { 58 name: "dagger2-bootstrap-compiler", 59 processor_class: "dagger.internal.codegen.ComponentProcessor", 60 generates_api: true, 61 static_libs: ["dagger2-bootstrap-compiler-jar"], 62 jarjar_rules: "jarjar-rules.txt", 63} 64 65java_library { 66 name: "dagger2", 67 visibility: ["//visibility:public"], 68 host_supported: true, 69 70 srcs: [ 71 "java/dagger/*.java", 72 "java/dagger/assisted/*.java", 73 "java/dagger/internal/*.java", 74 "java/dagger/multibindings/*.java", 75 "java/dagger/releasablereferences/*.java", 76 ], 77 exclude_srcs: ["java/dagger/android/**/*.java"], 78 79 libs: [ 80 "guava", 81 "jsr330", 82 ], 83 84 sdk_version: "core_current", 85} 86 87// build dagger2 producers library 88// ============================================================ 89 90java_library { 91 name: "dagger2-producers", 92 host_supported: true, 93 94 srcs: ["java/dagger/producers/**/*.java"], 95 96 static_libs: [ 97 "error_prone_annotations", 98 ], 99 100 libs: [ 101 "dagger2", 102 "dagger2-android-annotation-stubs", 103 "guava", 104 "jsr330", 105 ], 106 107 sdk_version: "core_current", 108} 109 110// build dagger2 compiler plugin 111// ============================================================ 112 113java_plugin { 114 name: "dagger2-compiler", 115 visibility: ["//visibility:public"], 116 processor_class: "dagger.internal.codegen.ComponentProcessor", 117 generates_api: true, 118 static_libs: ["dagger2-compiler-lib"], 119 // shade guava to avoid conflicts with guava embedded in Error Prone. 120 jarjar_rules: "jarjar-rules.txt", 121} 122 123java_library_host { 124 name: "dagger2-compiler-lib", 125 use_tools_jar: true, 126 127 srcs: [ 128 "java/dagger/internal/codegen/**/*.java", 129 "java/dagger/internal/codegen/**/*.proto", 130 131 "java/dagger/model/*.java", 132 "java/dagger/spi/*.java", 133 ], 134 135 exclude_srcs: [ 136 "java/dagger/internal/codegen/BindingGraphStatisticsCollector.java", 137 "java/dagger/internal/codegen/kythe/DaggerKythePlugin.java", 138 ], 139 140 // Manually include META-INF/services/javax.annotation.processing.Processor 141 // as the AutoService processor doesn't work properly. 142 java_resource_dirs: ["resources"], 143 144 static_libs: [ 145 "auto_common", 146 "dagger2", 147 "dagger2-producers", 148 "google_java_format", 149 "guava", 150 "javapoet", 151 "jsr330", 152 "kotlin-stdlib", 153 "kotlinx_metadata_jvm", 154 ], 155 156 157 libs: [ 158 "auto_factory_annotations", 159 "auto_service_annotations", 160 "auto_value_annotations", 161 "auto_value_memoized_extension_annotations", 162 "dagger2-android-annotation-stubs", 163 ], 164 165 plugins: [ 166 "auto_factory_plugin", 167 "auto_service_plugin", 168 "auto_value_plugin", 169 "auto_value_memoized_extension_plugin", 170 "auto_annotation_plugin", 171 "dagger2-bootstrap-compiler", 172 ], 173 174 proto: { 175 type: "full", 176 include_dirs: ["external/protobuf/src/"], 177 }, 178 179 // From Java 9 onward com.sun.tools.javac is not visible by default 180 javacflags: [ 181 "--add-modules=jdk.compiler", 182 "--add-exports jdk.compiler/com.sun.tools.javac.api=ALL-UNNAMED", 183 "--add-exports jdk.compiler/com.sun.tools.javac.code=ALL-UNNAMED", 184 "--add-exports jdk.compiler/com.sun.tools.javac.file=ALL-UNNAMED", 185 "--add-exports jdk.compiler/com.sun.tools.javac.model=ALL-UNNAMED", 186 "--add-exports jdk.compiler/com.sun.tools.javac.parser=ALL-UNNAMED", 187 "--add-exports jdk.compiler/com.sun.tools.javac.tree=ALL-UNNAMED", 188 "--add-exports jdk.compiler/com.sun.tools.javac.util=ALL-UNNAMED", 189 ], 190} 191 192// Compile dummy implementations of annotations used by dagger2 but not 193// present in the Android tree. 194java_library { 195 name: "dagger2-android-annotation-stubs", 196 host_supported: true, 197 sdk_version: "core_current", 198 srcs: ["android-annotation-stubs/src/**/*.java"], 199} 200 201// build core hilt library 202 203java_library { 204 name: "hilt_core", 205 srcs: [ 206 "java/dagger/hilt/*.java", 207 "java/dagger/hilt/codegen/*.java", 208 "java/dagger/hilt/components/*.java", 209 "java/dagger/hilt/internal/*.java", 210 "java/dagger/hilt/internal/aliasof/*.java", 211 "java/dagger/hilt/internal/definecomponent/*.java", 212 "java/dagger/hilt/internal/generatesrootinput/*.java", 213 "java/dagger/hilt/migration/*.java", 214 "java/dagger/hilt/processor/internal/aggregateddeps/AggregatedDeps.java", 215 ], 216 static_libs: [ 217 "jsr305", 218 "jsr330", 219 "dagger2", 220 ], 221 sdk_version: "core_current", 222 plugins: [ 223 "hilt_define_component_processor", 224 "hilt_generates_root_input_processor", 225 ], 226} 227 228// Build the android hilt library. Depending on this will enable the Hilt annotation processors. 229 230android_library { 231 name: "hilt_android", 232 visibility: ["//visibility:public"], 233 234 srcs: [ 235 "java/dagger/hilt/android/*.java", 236 "java/dagger/hilt/android/components/*.java", 237 "java/dagger/hilt/android/migration/*.java", 238 "java/dagger/hilt/android/qualifiers/*.java", 239 "java/dagger/hilt/android/scopes/*.java", 240 "java/dagger/hilt/android/internal/*.java", 241 "java/dagger/hilt/android/internal/builders/*.java", 242 "java/dagger/hilt/android/internal/lifecycle/*.java", 243 "java/dagger/hilt/android/internal/managers/*.java", 244 "java/dagger/hilt/android/internal/migration/*.java", 245 "java/dagger/hilt/android/internal/modules/*.java", 246 "java/dagger/hilt/android/lifecycle/*.java", 247 "java/dagger/hilt/internal/aggregatedroot/*.java", 248 "java/dagger/hilt/internal/processedrootsentinel/*.java", 249 ], 250 manifest: "java/dagger/hilt/android/AndroidManifest.xml", 251 static_libs: [ 252 "androidx.activity_activity", 253 "androidx.annotation_annotation", 254 "androidx.fragment_fragment", 255 "androidx.lifecycle_lifecycle-common", 256 "androidx.lifecycle_lifecycle-viewmodel", 257 "androidx.lifecycle_lifecycle-viewmodel-savedstate", 258 "jsr305", 259 "jsr330", 260 "dagger2", 261 "hilt_core", 262 ], 263 sdk_version: "current", 264 min_sdk_version: "14", 265 plugins: [ 266 "dagger2-compiler", 267 "hilt_android_entry_point_processor", 268 "hilt_aggregated_deps_processor", 269 "hilt_define_component_processor", 270 "hilt_generates_root_input_processor", 271 "hilt_originating_element_processor", 272 "hilt_root_processor", 273 ], 274 exported_plugins: [ 275 "dagger2-compiler", 276 "hilt_android_entry_point_processor", 277 "hilt_aggregated_deps_processor", 278 "hilt_alias_of_processor", 279 "hilt_define_component_processor", 280 "hilt_generates_root_input_processor", 281 "hilt_originating_element_processor", 282 "hilt_root_processor", 283 "hilt_viewmodel_processor", 284 ], 285} 286 287android_library { 288 name: "hilt_android_testing", 289 visibility: ["//visibility:public"], 290 291 srcs: [ 292 "java/dagger/hilt/android/internal/testing/*.java", 293 "java/dagger/hilt/android/internal/uninstallmodules/*.java", 294 "java/dagger/hilt/android/testing/*.java", 295 "java/dagger/hilt/testing/*.java", 296 ], 297 manifest: "java/dagger/hilt/android/testing/AndroidManifest.xml", 298 static_libs: [ 299 "auto_value_annotations", 300 "androidx.annotation_annotation", 301 "androidx.fragment_fragment", 302 "androidx.annotation_annotation", 303 "androidx.fragment_fragment", 304 "androidx.test.core", 305 "android-support-multidex", 306 "jsr305", 307 "dagger2", 308 "hilt_core", 309 "junit", 310 ], 311 sdk_version: "current", 312 min_sdk_version: "14", 313 plugins: [ 314 "auto_value_plugin", 315 "dagger2-compiler", 316 "hilt_generates_root_input_processor", 317 ], 318 exported_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 "hilt_viewmodel_processor", 327 "hilt_custom_test_application_processor", 328 "hilt_bindvalue_processor", 329 "hilt_uninstall_modules_processor", 330 ], 331} 332 333// Hilt has many annotation processors. To reduce compilation and runtime cost, they are all compiled 334// into hilt_android_processors. A java_plugin can only expose a single processor class, so each has 335// to be defined separately. Since they are not visible outside this package and will always be 336// exported together, only the first actually contains the annotation processor classes. 337java_plugin { 338 name: "hilt_generates_root_input_processor", 339 generates_api: true, 340 processor_class: "dagger.hilt.processor.internal.generatesrootinput.GeneratesRootInputProcessor", 341 static_libs: ["hilt_android_processors"], 342} 343 344java_plugin { 345 name: "hilt_android_entry_point_processor", 346 generates_api: true, 347 processor_class: "dagger.hilt.android.processor.internal.androidentrypoint.AndroidEntryPointProcessor", 348} 349 350java_plugin { 351 name: "hilt_aggregated_deps_processor", 352 generates_api: true, 353 processor_class: "dagger.hilt.processor.internal.aggregateddeps.AggregatedDepsProcessor", 354} 355 356java_plugin { 357 name: "hilt_alias_of_processor", 358 generates_api: true, 359 processor_class: "dagger.hilt.processor.internal.aliasof.AliasOfProcessor", 360} 361 362java_plugin { 363 name: "hilt_define_component_processor", 364 generates_api: true, 365 processor_class: "dagger.hilt.processor.internal.definecomponent.DefineComponentProcessor", 366} 367 368java_plugin { 369 name: "hilt_originating_element_processor", 370 generates_api: true, 371 processor_class: "dagger.hilt.processor.internal.originatingelement.OriginatingElementProcessor", 372} 373 374java_plugin { 375 name: "hilt_root_processor", 376 generates_api: true, 377 processor_class: "dagger.hilt.processor.internal.root.RootProcessor", 378} 379 380java_plugin { 381 name: "hilt_viewmodel_processor", 382 generates_api: true, 383 processor_class: "dagger.hilt.android.processor.internal.viewmodel.ViewModelProcessor", 384} 385 386// Hilt testing processors 387java_plugin { 388 name: "hilt_custom_test_application_processor", 389 generates_api: true, 390 processor_class: "dagger.hilt.android.processor.internal.customtestapplication.CustomTestApplicationProcessor", 391} 392 393java_plugin { 394 name: "hilt_bindvalue_processor", 395 generates_api: true, 396 processor_class: "dagger.hilt.android.processor.internal.bindvalue.BindValueProcessor", 397} 398 399java_plugin { 400 name: "hilt_uninstall_modules_processor", 401 generates_api: true, 402 processor_class: "dagger.hilt.processor.internal.uninstallmodules.UninstallModulesProcessor", 403} 404 405java_library_host { 406 name: "hilt_android_processors", 407 use_tools_jar: true, 408 srcs: [ 409 "java/dagger/hilt/android/processor/**/*.java", 410 "java/dagger/hilt/android/processor/**/*.kt", 411 "java/dagger/hilt/codegen/*.java", 412 "java/dagger/hilt/processor/internal/**/*.java", 413 ], 414 plugins: [ 415 "auto_service_plugin", 416 "auto_value_plugin", 417 "auto_value_memoized_extension_plugin", 418 "dagger2-compiler", 419 ], 420 static_libs: [ 421 "auto_common", 422 "auto_service_annotations", 423 "auto_value_annotations", 424 "auto_value_memoized_extension_annotations", 425 "guava", 426 "jsr305", 427 "dagger2-compiler-lib", 428 "dagger2", 429 "javapoet", 430 "jsr330", 431 "kotlin-stdlib", 432 "kotlinx_metadata_jvm", 433 "dagger2-android-annotation-stubs", 434 ], 435 // shade guava to avoid conflicts with guava embedded in Error Prone. 436 jarjar_rules: "jarjar-rules.txt", 437} 438