• 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        "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