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