blob: 0e097895f8b6cb1ccb1b1e4d8c8917db417ae508 [file] [log] [blame]
Colin Cross30909f72017-09-05 17:10:54 -07001// 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
Colin Crossd605a832020-11-19 16:24:33 -080015package {
Bob Badour29767562021-02-12 15:31:44 -080016 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 ],
Colin Crossd605a832020-11-19 16:24:33 -080050}
51
Colin Cross30909f72017-09-05 17:10:54 -070052java_import_host {
Colin Crossd868c7e2019-04-11 14:53:12 -070053 name: "dagger2-bootstrap-compiler-jar",
Colin Crossbc671692020-11-18 13:51:17 -080054 jars: ["java/dagger/internal/codegen/bootstrap/bootstrap_compiler_deploy.jar"],
Colin Crossd868c7e2019-04-11 14:53:12 -070055}
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"],
Colin Crossbc671692020-11-18 13:51:17 -080062 jarjar_rules: "jarjar-rules.txt",
Colin Cross30909f72017-09-05 17:10:54 -070063}
Colin Cross1c404aa2018-09-11 22:40:35 -070064
Colin Cross84de3c22020-06-25 23:14:04 -070065java_library {
Colin Cross1c404aa2018-09-11 22:40:35 -070066 name: "dagger2",
Colin Crossd605a832020-11-19 16:24:33 -080067 visibility: ["//visibility:public"],
Colin Cross84de3c22020-06-25 23:14:04 -070068 host_supported: true,
Colin Cross1c404aa2018-09-11 22:40:35 -070069
Colin Crossd868c7e2019-04-11 14:53:12 -070070 srcs: [
71 "java/dagger/*.java",
Colin Crossff268f02021-03-01 16:23:38 -080072 "java/dagger/assisted/*.java",
Colin Crossd868c7e2019-04-11 14:53:12 -070073 "java/dagger/internal/*.java",
74 "java/dagger/multibindings/*.java",
75 "java/dagger/releasablereferences/*.java",
76 ],
77 exclude_srcs: ["java/dagger/android/**/*.java"],
Colin Cross1c404aa2018-09-11 22:40:35 -070078
Colin Cross4c5f53a2020-06-25 23:12:20 -070079 libs: [
80 "guava",
81 "jsr330",
82 ],
Colin Cross1c404aa2018-09-11 22:40:35 -070083
Colin Cross84de3c22020-06-25 23:14:04 -070084 sdk_version: "core_current",
Colin Cross1c404aa2018-09-11 22:40:35 -070085}
86
Colin Crossd868c7e2019-04-11 14:53:12 -070087// build dagger2 producers library
Colin Cross1c404aa2018-09-11 22:40:35 -070088// ============================================================
89
Colin Cross84de3c22020-06-25 23:14:04 -070090java_library {
Colin Cross1c404aa2018-09-11 22:40:35 -070091 name: "dagger2-producers",
Colin Cross84de3c22020-06-25 23:14:04 -070092 host_supported: true,
Colin Cross1c404aa2018-09-11 22:40:35 -070093
Colin Crossd868c7e2019-04-11 14:53:12 -070094 srcs: ["java/dagger/producers/**/*.java"],
Colin Cross1c404aa2018-09-11 22:40:35 -070095
Colin Crossd868c7e2019-04-11 14:53:12 -070096 static_libs: [
Colin Crossd868c7e2019-04-11 14:53:12 -070097 "error_prone_annotations",
98 ],
Colin Cross1c404aa2018-09-11 22:40:35 -070099
100 libs: [
101 "dagger2",
Colin Crossd868c7e2019-04-11 14:53:12 -0700102 "dagger2-android-annotation-stubs",
Colin Cross1c404aa2018-09-11 22:40:35 -0700103 "guava",
Colin Cross4c5f53a2020-06-25 23:12:20 -0700104 "jsr330",
Colin Cross1c404aa2018-09-11 22:40:35 -0700105 ],
106
Colin Cross84de3c22020-06-25 23:14:04 -0700107 sdk_version: "core_current",
Colin Cross1c404aa2018-09-11 22:40:35 -0700108}
109
Colin Cross8b7f57b2019-01-21 21:43:52 -0800110// build dagger2 compiler plugin
Colin Cross1c404aa2018-09-11 22:40:35 -0700111// ============================================================
112
Colin Cross8b7f57b2019-01-21 21:43:52 -0800113java_plugin {
Colin Cross1c404aa2018-09-11 22:40:35 -0700114 name: "dagger2-compiler",
Colin Crossd605a832020-11-19 16:24:33 -0800115 visibility: ["//visibility:public"],
Colin Cross8b7f57b2019-01-21 21:43:52 -0800116 processor_class: "dagger.internal.codegen.ComponentProcessor",
117 generates_api: true,
Colin Crossef11c9a2020-11-19 18:01:57 -0800118 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",
Colin Crossd868c7e2019-04-11 14:53:12 -0700125 use_tools_jar: true,
126
127 srcs: [
128 "java/dagger/internal/codegen/**/*.java",
Colin Cross17ad1f82019-06-12 16:07:58 -0700129 "java/dagger/internal/codegen/**/*.proto",
Colin Crossd868c7e2019-04-11 14:53:12 -0700130
131 "java/dagger/model/*.java",
132 "java/dagger/spi/*.java",
133 ],
134
135 exclude_srcs: [
Colin Cross17ad1f82019-06-12 16:07:58 -0700136 "java/dagger/internal/codegen/BindingGraphStatisticsCollector.java",
Colin Crossbc671692020-11-18 13:51:17 -0800137 "java/dagger/internal/codegen/kythe/DaggerKythePlugin.java",
Colin Crossd868c7e2019-04-11 14:53:12 -0700138 ],
Colin Cross1c404aa2018-09-11 22:40:35 -0700139
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: [
Colin Crossd33e5732020-06-25 22:50:59 -0700145 "auto_common",
Colin Cross1c404aa2018-09-11 22:40:35 -0700146 "dagger2",
Colin Cross1c404aa2018-09-11 22:40:35 -0700147 "dagger2-producers",
Colin Crossd33e5732020-06-25 22:50:59 -0700148 "google_java_format",
Colin Cross1c404aa2018-09-11 22:40:35 -0700149 "guava",
Colin Crossd868c7e2019-04-11 14:53:12 -0700150 "javapoet",
Colin Cross4c5f53a2020-06-25 23:12:20 -0700151 "jsr330",
Colin Crossbc671692020-11-18 13:51:17 -0800152 "kotlin-stdlib",
153 "kotlinx_metadata_jvm",
Colin Crossd868c7e2019-04-11 14:53:12 -0700154 ],
155
Colin Crossd868c7e2019-04-11 14:53:12 -0700156
157 libs: [
Colin Crossd33e5732020-06-25 22:50:59 -0700158 "auto_factory_annotations",
159 "auto_service_annotations",
160 "auto_value_annotations",
161 "auto_value_memoized_extension_annotations",
Colin Crossd868c7e2019-04-11 14:53:12 -0700162 "dagger2-android-annotation-stubs",
Colin Cross1c404aa2018-09-11 22:40:35 -0700163 ],
164
Colin Cross8b7f57b2019-01-21 21:43:52 -0800165 plugins: [
Colin Crossd33e5732020-06-25 22:50:59 -0700166 "auto_factory_plugin",
167 "auto_service_plugin",
168 "auto_value_plugin",
169 "auto_value_memoized_extension_plugin",
170 "auto_annotation_plugin",
Colin Crossd868c7e2019-04-11 14:53:12 -0700171 "dagger2-bootstrap-compiler",
Colin Cross1c404aa2018-09-11 22:40:35 -0700172 ],
173
Colin Cross17ad1f82019-06-12 16:07:58 -0700174 proto: {
175 type: "full",
176 include_dirs: ["external/protobuf/src/"],
177 },
178
Sorin Bascae2a3edc2021-11-26 17:32:16 +0000179 // 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 ],
Colin Crossd868c7e2019-04-11 14:53:12 -0700190}
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"],
Colin Cross1c404aa2018-09-11 22:40:35 -0700199}
Colin Crossef11c9a2020-11-19 18:01:57 -0800200
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",
Yiqun Wue68a5df2020-12-15 12:59:10 -0800222 plugins: [
Yiqun Wue68a5df2020-12-15 12:59:10 -0800223 "hilt_define_component_processor",
224 "hilt_generates_root_input_processor",
225 ],
Colin Crossef11c9a2020-11-19 18:01:57 -0800226}
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",
Yiqun Wu5597f182021-03-09 19:17:35 -0800246 "java/dagger/hilt/android/lifecycle/*.java",
Aurimas Liutikas5eeb71c2021-05-17 17:41:41 +0000247 "java/dagger/hilt/internal/aggregatedroot/*.java",
248 "java/dagger/hilt/internal/processedrootsentinel/*.java",
Colin Crossef11c9a2020-11-19 18:01:57 -0800249 ],
250 manifest: "java/dagger/hilt/android/AndroidManifest.xml",
251 static_libs: [
Aurimas Liutikas5eeb71c2021-05-17 17:41:41 +0000252 "androidx.activity_activity",
Colin Crossef11c9a2020-11-19 18:01:57 -0800253 "androidx.annotation_annotation",
254 "androidx.fragment_fragment",
Aurimas Liutikas5eeb71c2021-05-17 17:41:41 +0000255 "androidx.lifecycle_lifecycle-common",
256 "androidx.lifecycle_lifecycle-viewmodel",
257 "androidx.lifecycle_lifecycle-viewmodel-savedstate",
Colin Crossef11c9a2020-11-19 18:01:57 -0800258 "jsr305",
259 "jsr330",
260 "dagger2",
261 "hilt_core",
262 ],
263 sdk_version: "current",
264 min_sdk_version: "14",
Yiqun Wue68a5df2020-12-15 12:59:10 -0800265 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 ],
Colin Crossef11c9a2020-11-19 18:01:57 -0800274 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",
Yiqun Wu5597f182021-03-09 19:17:35 -0800283 "hilt_viewmodel_processor",
Colin Crossef11c9a2020-11-19 18:01:57 -0800284 ],
285}
286
Yiqun Wu6edcef52021-01-07 15:53:37 -0800287android_library {
288 name: "hilt_android_testing",
289 visibility: ["//visibility:public"],
290
291 srcs: [
292 "java/dagger/hilt/android/internal/testing/*.java",
Lucas Silva79d3fe32022-12-01 18:18:16 -0500293 "java/dagger/hilt/android/internal/uninstallmodules/*.java",
Yiqun Wu6edcef52021-01-07 15:53:37 -0800294 "java/dagger/hilt/android/testing/*.java",
Lucas Silva79d3fe32022-12-01 18:18:16 -0500295 "java/dagger/hilt/testing/*.java",
Yiqun Wu6edcef52021-01-07 15:53:37 -0800296 ],
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",
Yiqun Wu5597f182021-03-09 19:17:35 -0800326 "hilt_viewmodel_processor",
Yiqun Wu6edcef52021-01-07 15:53:37 -0800327 "hilt_custom_test_application_processor",
Yiqun Wu5597f182021-03-09 19:17:35 -0800328 "hilt_bindvalue_processor",
Yiqun Wu6edcef52021-01-07 15:53:37 -0800329 "hilt_uninstall_modules_processor",
330 ],
331}
332
Colin Crossef11c9a2020-11-19 18:01:57 -0800333// 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.
Yiqun Wu6edcef52021-01-07 15:53:37 -0800337java_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}
Colin Crossef11c9a2020-11-19 18:01:57 -0800343
344java_plugin {
345 name: "hilt_android_entry_point_processor",
346 generates_api: true,
347 processor_class: "dagger.hilt.android.processor.internal.androidentrypoint.AndroidEntryPointProcessor",
Colin Crossef11c9a2020-11-19 18:01:57 -0800348}
349
350java_plugin {
351 name: "hilt_aggregated_deps_processor",
352 generates_api: true,
Yiqun Wue68a5df2020-12-15 12:59:10 -0800353 processor_class: "dagger.hilt.processor.internal.aggregateddeps.AggregatedDepsProcessor",
Colin Crossef11c9a2020-11-19 18:01:57 -0800354}
355
356java_plugin {
357 name: "hilt_alias_of_processor",
358 generates_api: true,
Yiqun Wue68a5df2020-12-15 12:59:10 -0800359 processor_class: "dagger.hilt.processor.internal.aliasof.AliasOfProcessor",
Colin Crossef11c9a2020-11-19 18:01:57 -0800360}
361
362java_plugin {
363 name: "hilt_define_component_processor",
364 generates_api: true,
Yiqun Wue68a5df2020-12-15 12:59:10 -0800365 processor_class: "dagger.hilt.processor.internal.definecomponent.DefineComponentProcessor",
Colin Crossef11c9a2020-11-19 18:01:57 -0800366}
367
368java_plugin {
Colin Crossef11c9a2020-11-19 18:01:57 -0800369 name: "hilt_originating_element_processor",
370 generates_api: true,
Yiqun Wue68a5df2020-12-15 12:59:10 -0800371 processor_class: "dagger.hilt.processor.internal.originatingelement.OriginatingElementProcessor",
Colin Crossef11c9a2020-11-19 18:01:57 -0800372}
373
374java_plugin {
375 name: "hilt_root_processor",
376 generates_api: true,
Yiqun Wue68a5df2020-12-15 12:59:10 -0800377 processor_class: "dagger.hilt.processor.internal.root.RootProcessor",
Colin Crossef11c9a2020-11-19 18:01:57 -0800378}
379
Yiqun Wu5597f182021-03-09 19:17:35 -0800380java_plugin {
381 name: "hilt_viewmodel_processor",
382 generates_api: true,
383 processor_class: "dagger.hilt.android.processor.internal.viewmodel.ViewModelProcessor",
384}
385
Yiqun Wu6edcef52021-01-07 15:53:37 -0800386// 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 {
Yiqun Wu5597f182021-03-09 19:17:35 -0800394 name: "hilt_bindvalue_processor",
395 generates_api: true,
396 processor_class: "dagger.hilt.android.processor.internal.bindvalue.BindValueProcessor",
397}
398
399java_plugin {
Yiqun Wu6edcef52021-01-07 15:53:37 -0800400 name: "hilt_uninstall_modules_processor",
401 generates_api: true,
Aurimas Liutikas5eeb71c2021-05-17 17:41:41 +0000402 processor_class: "dagger.hilt.processor.internal.uninstallmodules.UninstallModulesProcessor",
Yiqun Wu6edcef52021-01-07 15:53:37 -0800403}
404
Colin Crossef11c9a2020-11-19 18:01:57 -0800405java_library_host {
406 name: "hilt_android_processors",
407 use_tools_jar: true,
408 srcs: [
409 "java/dagger/hilt/android/processor/**/*.java",
Yiqun Wu5597f182021-03-09 19:17:35 -0800410 "java/dagger/hilt/android/processor/**/*.kt",
Colin Crossef11c9a2020-11-19 18:01:57 -0800411 "java/dagger/hilt/codegen/*.java",
412 "java/dagger/hilt/processor/internal/**/*.java",
413 ],
Colin Crossef11c9a2020-11-19 18:01:57 -0800414 plugins: [
415 "auto_service_plugin",
416 "auto_value_plugin",
417 "auto_value_memoized_extension_plugin",
Colin Crossff268f02021-03-01 16:23:38 -0800418 "dagger2-compiler",
Colin Crossef11c9a2020-11-19 18:01:57 -0800419 ],
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}