• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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