blob: 1bdbd1b028df40156ee04562cff3216c6052f04d [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 Crossd868c7e2019-04-11 14:53:12 -070084 java_version: "1.8",
Colin Cross84de3c22020-06-25 23:14:04 -070085 sdk_version: "core_current",
Colin Cross1c404aa2018-09-11 22:40:35 -070086}
87
Colin Crossd868c7e2019-04-11 14:53:12 -070088// build dagger2 producers library
Colin Cross1c404aa2018-09-11 22:40:35 -070089// ============================================================
90
Colin Cross84de3c22020-06-25 23:14:04 -070091java_library {
Colin Cross1c404aa2018-09-11 22:40:35 -070092 name: "dagger2-producers",
Colin Cross84de3c22020-06-25 23:14:04 -070093 host_supported: true,
Colin Cross1c404aa2018-09-11 22:40:35 -070094
Colin Crossd868c7e2019-04-11 14:53:12 -070095 srcs: ["java/dagger/producers/**/*.java"],
Colin Cross1c404aa2018-09-11 22:40:35 -070096
Colin Crossd868c7e2019-04-11 14:53:12 -070097 static_libs: [
Colin Crossd868c7e2019-04-11 14:53:12 -070098 "error_prone_annotations",
99 ],
Colin Cross1c404aa2018-09-11 22:40:35 -0700100
101 libs: [
102 "dagger2",
Colin Crossd868c7e2019-04-11 14:53:12 -0700103 "dagger2-android-annotation-stubs",
Colin Cross1c404aa2018-09-11 22:40:35 -0700104 "guava",
Colin Cross4c5f53a2020-06-25 23:12:20 -0700105 "jsr330",
Colin Cross1c404aa2018-09-11 22:40:35 -0700106 ],
107
Colin Crossd868c7e2019-04-11 14:53:12 -0700108 java_version: "1.8",
Colin Cross84de3c22020-06-25 23:14:04 -0700109 sdk_version: "core_current",
Colin Cross1c404aa2018-09-11 22:40:35 -0700110}
111
Colin Cross8b7f57b2019-01-21 21:43:52 -0800112// build dagger2 compiler plugin
Colin Cross1c404aa2018-09-11 22:40:35 -0700113// ============================================================
114
Colin Cross8b7f57b2019-01-21 21:43:52 -0800115java_plugin {
Colin Cross1c404aa2018-09-11 22:40:35 -0700116 name: "dagger2-compiler",
Colin Crossd605a832020-11-19 16:24:33 -0800117 visibility: ["//visibility:public"],
Colin Cross8b7f57b2019-01-21 21:43:52 -0800118 processor_class: "dagger.internal.codegen.ComponentProcessor",
119 generates_api: true,
Colin Crossef11c9a2020-11-19 18:01:57 -0800120 static_libs: ["dagger2-compiler-lib"],
121 // shade guava to avoid conflicts with guava embedded in Error Prone.
122 jarjar_rules: "jarjar-rules.txt",
123}
124
125java_library_host {
126 name: "dagger2-compiler-lib",
Colin Crossd868c7e2019-04-11 14:53:12 -0700127 use_tools_jar: true,
128
129 srcs: [
130 "java/dagger/internal/codegen/**/*.java",
Colin Cross17ad1f82019-06-12 16:07:58 -0700131 "java/dagger/internal/codegen/**/*.proto",
Colin Crossd868c7e2019-04-11 14:53:12 -0700132
133 "java/dagger/model/*.java",
134 "java/dagger/spi/*.java",
135 ],
136
137 exclude_srcs: [
Colin Cross17ad1f82019-06-12 16:07:58 -0700138 "java/dagger/internal/codegen/BindingGraphStatisticsCollector.java",
Colin Crossbc671692020-11-18 13:51:17 -0800139 "java/dagger/internal/codegen/kythe/DaggerKythePlugin.java",
Colin Crossd868c7e2019-04-11 14:53:12 -0700140 ],
Colin Cross1c404aa2018-09-11 22:40:35 -0700141
142 // Manually include META-INF/services/javax.annotation.processing.Processor
143 // as the AutoService processor doesn't work properly.
144 java_resource_dirs: ["resources"],
145
146 static_libs: [
Colin Crossd33e5732020-06-25 22:50:59 -0700147 "auto_common",
Colin Cross1c404aa2018-09-11 22:40:35 -0700148 "dagger2",
Colin Cross1c404aa2018-09-11 22:40:35 -0700149 "dagger2-producers",
Colin Crossd33e5732020-06-25 22:50:59 -0700150 "google_java_format",
Colin Cross1c404aa2018-09-11 22:40:35 -0700151 "guava",
Colin Crossd868c7e2019-04-11 14:53:12 -0700152 "javapoet",
Colin Cross4c5f53a2020-06-25 23:12:20 -0700153 "jsr330",
Colin Crossbc671692020-11-18 13:51:17 -0800154 "kotlin-stdlib",
155 "kotlinx_metadata_jvm",
Colin Crossd868c7e2019-04-11 14:53:12 -0700156 ],
157
Colin Crossd868c7e2019-04-11 14:53:12 -0700158
159 libs: [
Colin Crossd33e5732020-06-25 22:50:59 -0700160 "auto_factory_annotations",
161 "auto_service_annotations",
162 "auto_value_annotations",
163 "auto_value_memoized_extension_annotations",
Colin Crossd868c7e2019-04-11 14:53:12 -0700164 "dagger2-android-annotation-stubs",
Colin Cross1c404aa2018-09-11 22:40:35 -0700165 ],
166
Colin Cross8b7f57b2019-01-21 21:43:52 -0800167 plugins: [
Colin Crossd33e5732020-06-25 22:50:59 -0700168 "auto_factory_plugin",
169 "auto_service_plugin",
170 "auto_value_plugin",
171 "auto_value_memoized_extension_plugin",
172 "auto_annotation_plugin",
Colin Crossd868c7e2019-04-11 14:53:12 -0700173 "dagger2-bootstrap-compiler",
Colin Cross1c404aa2018-09-11 22:40:35 -0700174 ],
175
Colin Cross17ad1f82019-06-12 16:07:58 -0700176 proto: {
177 type: "full",
178 include_dirs: ["external/protobuf/src/"],
179 },
180
Colin Crossd868c7e2019-04-11 14:53:12 -0700181 java_version: "1.8",
182}
183
184// Compile dummy implementations of annotations used by dagger2 but not
185// present in the Android tree.
186java_library {
187 name: "dagger2-android-annotation-stubs",
188 host_supported: true,
189 sdk_version: "core_current",
190 srcs: ["android-annotation-stubs/src/**/*.java"],
Colin Cross1c404aa2018-09-11 22:40:35 -0700191}
Colin Crossef11c9a2020-11-19 18:01:57 -0800192
193// build core hilt library
194
195java_library {
196 name: "hilt_core",
197 srcs: [
198 "java/dagger/hilt/*.java",
199 "java/dagger/hilt/codegen/*.java",
200 "java/dagger/hilt/components/*.java",
201 "java/dagger/hilt/internal/*.java",
202 "java/dagger/hilt/internal/aliasof/*.java",
203 "java/dagger/hilt/internal/definecomponent/*.java",
204 "java/dagger/hilt/internal/generatesrootinput/*.java",
205 "java/dagger/hilt/migration/*.java",
206 "java/dagger/hilt/processor/internal/aggregateddeps/AggregatedDeps.java",
207 ],
208 static_libs: [
209 "jsr305",
210 "jsr330",
211 "dagger2",
212 ],
213 sdk_version: "core_current",
Yiqun Wue68a5df2020-12-15 12:59:10 -0800214 plugins: [
Yiqun Wue68a5df2020-12-15 12:59:10 -0800215 "hilt_define_component_processor",
216 "hilt_generates_root_input_processor",
217 ],
Colin Crossef11c9a2020-11-19 18:01:57 -0800218}
219
220// Build the android hilt library. Depending on this will enable the Hilt annotation processors.
221
222android_library {
223 name: "hilt_android",
224 visibility: ["//visibility:public"],
225
226 srcs: [
227 "java/dagger/hilt/android/*.java",
228 "java/dagger/hilt/android/components/*.java",
229 "java/dagger/hilt/android/migration/*.java",
230 "java/dagger/hilt/android/qualifiers/*.java",
231 "java/dagger/hilt/android/scopes/*.java",
232 "java/dagger/hilt/android/internal/*.java",
233 "java/dagger/hilt/android/internal/builders/*.java",
234 "java/dagger/hilt/android/internal/lifecycle/*.java",
235 "java/dagger/hilt/android/internal/managers/*.java",
236 "java/dagger/hilt/android/internal/migration/*.java",
237 "java/dagger/hilt/android/internal/modules/*.java",
Yiqun Wu5597f182021-03-09 19:17:35 -0800238 "java/dagger/hilt/android/lifecycle/*.java",
Colin Crossef11c9a2020-11-19 18:01:57 -0800239 ],
240 manifest: "java/dagger/hilt/android/AndroidManifest.xml",
241 static_libs: [
242 "androidx.annotation_annotation",
243 "androidx.fragment_fragment",
244 "jsr305",
245 "jsr330",
246 "dagger2",
247 "hilt_core",
248 ],
249 sdk_version: "current",
250 min_sdk_version: "14",
Yiqun Wue68a5df2020-12-15 12:59:10 -0800251 plugins: [
252 "dagger2-compiler",
253 "hilt_android_entry_point_processor",
254 "hilt_aggregated_deps_processor",
255 "hilt_define_component_processor",
256 "hilt_generates_root_input_processor",
257 "hilt_originating_element_processor",
258 "hilt_root_processor",
259 ],
Colin Crossef11c9a2020-11-19 18:01:57 -0800260 exported_plugins: [
261 "dagger2-compiler",
262 "hilt_android_entry_point_processor",
263 "hilt_aggregated_deps_processor",
264 "hilt_alias_of_processor",
265 "hilt_define_component_processor",
266 "hilt_generates_root_input_processor",
267 "hilt_originating_element_processor",
268 "hilt_root_processor",
Yiqun Wu5597f182021-03-09 19:17:35 -0800269 "hilt_viewmodel_processor",
Colin Crossef11c9a2020-11-19 18:01:57 -0800270 ],
271}
272
Yiqun Wu6edcef52021-01-07 15:53:37 -0800273android_library {
274 name: "hilt_android_testing",
275 visibility: ["//visibility:public"],
276
277 srcs: [
278 "java/dagger/hilt/android/internal/testing/*.java",
279 "java/dagger/hilt/android/testing/*.java",
280 ],
281 manifest: "java/dagger/hilt/android/testing/AndroidManifest.xml",
282 static_libs: [
283 "auto_value_annotations",
284 "androidx.annotation_annotation",
285 "androidx.fragment_fragment",
286 "androidx.annotation_annotation",
287 "androidx.fragment_fragment",
288 "androidx.test.core",
289 "android-support-multidex",
290 "jsr305",
291 "dagger2",
292 "hilt_core",
293 "junit",
294 ],
295 sdk_version: "current",
296 min_sdk_version: "14",
297 plugins: [
298 "auto_value_plugin",
299 "dagger2-compiler",
300 "hilt_generates_root_input_processor",
301 ],
302 exported_plugins: [
303 "dagger2-compiler",
304 "hilt_android_entry_point_processor",
305 "hilt_aggregated_deps_processor",
306 "hilt_define_component_processor",
307 "hilt_generates_root_input_processor",
308 "hilt_originating_element_processor",
309 "hilt_root_processor",
Yiqun Wu5597f182021-03-09 19:17:35 -0800310 "hilt_viewmodel_processor",
Yiqun Wu6edcef52021-01-07 15:53:37 -0800311 "hilt_custom_test_application_processor",
Yiqun Wu5597f182021-03-09 19:17:35 -0800312 "hilt_bindvalue_processor",
Yiqun Wu6edcef52021-01-07 15:53:37 -0800313 "hilt_uninstall_modules_processor",
314 ],
315}
316
Colin Crossef11c9a2020-11-19 18:01:57 -0800317// Hilt has many annotation processors. To reduce compilation and runtime cost, they are all compiled
318// into hilt_android_processors. A java_plugin can only expose a single processor class, so each has
319// to be defined separately. Since they are not visible outside this package and will always be
320// exported together, only the first actually contains the annotation processor classes.
Yiqun Wu6edcef52021-01-07 15:53:37 -0800321java_plugin {
322 name: "hilt_generates_root_input_processor",
323 generates_api: true,
324 processor_class: "dagger.hilt.processor.internal.generatesrootinput.GeneratesRootInputProcessor",
325 static_libs: ["hilt_android_processors"],
326}
Colin Crossef11c9a2020-11-19 18:01:57 -0800327
328java_plugin {
329 name: "hilt_android_entry_point_processor",
330 generates_api: true,
331 processor_class: "dagger.hilt.android.processor.internal.androidentrypoint.AndroidEntryPointProcessor",
Colin Crossef11c9a2020-11-19 18:01:57 -0800332}
333
334java_plugin {
335 name: "hilt_aggregated_deps_processor",
336 generates_api: true,
Yiqun Wue68a5df2020-12-15 12:59:10 -0800337 processor_class: "dagger.hilt.processor.internal.aggregateddeps.AggregatedDepsProcessor",
Colin Crossef11c9a2020-11-19 18:01:57 -0800338}
339
340java_plugin {
341 name: "hilt_alias_of_processor",
342 generates_api: true,
Yiqun Wue68a5df2020-12-15 12:59:10 -0800343 processor_class: "dagger.hilt.processor.internal.aliasof.AliasOfProcessor",
Colin Crossef11c9a2020-11-19 18:01:57 -0800344}
345
346java_plugin {
347 name: "hilt_define_component_processor",
348 generates_api: true,
Yiqun Wue68a5df2020-12-15 12:59:10 -0800349 processor_class: "dagger.hilt.processor.internal.definecomponent.DefineComponentProcessor",
Colin Crossef11c9a2020-11-19 18:01:57 -0800350}
351
352java_plugin {
Colin Crossef11c9a2020-11-19 18:01:57 -0800353 name: "hilt_originating_element_processor",
354 generates_api: true,
Yiqun Wue68a5df2020-12-15 12:59:10 -0800355 processor_class: "dagger.hilt.processor.internal.originatingelement.OriginatingElementProcessor",
Colin Crossef11c9a2020-11-19 18:01:57 -0800356}
357
358java_plugin {
359 name: "hilt_root_processor",
360 generates_api: true,
Yiqun Wue68a5df2020-12-15 12:59:10 -0800361 processor_class: "dagger.hilt.processor.internal.root.RootProcessor",
Colin Crossef11c9a2020-11-19 18:01:57 -0800362}
363
Yiqun Wu5597f182021-03-09 19:17:35 -0800364java_plugin {
365 name: "hilt_viewmodel_processor",
366 generates_api: true,
367 processor_class: "dagger.hilt.android.processor.internal.viewmodel.ViewModelProcessor",
368}
369
Yiqun Wu6edcef52021-01-07 15:53:37 -0800370// Hilt testing processors
371java_plugin {
372 name: "hilt_custom_test_application_processor",
373 generates_api: true,
374 processor_class: "dagger.hilt.android.processor.internal.customtestapplication.CustomTestApplicationProcessor",
375}
376
377java_plugin {
Yiqun Wu5597f182021-03-09 19:17:35 -0800378 name: "hilt_bindvalue_processor",
379 generates_api: true,
380 processor_class: "dagger.hilt.android.processor.internal.bindvalue.BindValueProcessor",
381}
382
383java_plugin {
Yiqun Wu6edcef52021-01-07 15:53:37 -0800384 name: "hilt_uninstall_modules_processor",
385 generates_api: true,
Aurimas Liutikas194cdc62021-05-12 21:55:40 +0000386 processor_class: "dagger.hilt.android.processor.internal.uninstallmodules.UninstallModulesProcessor",
Yiqun Wu6edcef52021-01-07 15:53:37 -0800387}
388
Colin Crossef11c9a2020-11-19 18:01:57 -0800389java_library_host {
390 name: "hilt_android_processors",
391 use_tools_jar: true,
392 srcs: [
393 "java/dagger/hilt/android/processor/**/*.java",
Yiqun Wu5597f182021-03-09 19:17:35 -0800394 "java/dagger/hilt/android/processor/**/*.kt",
Colin Crossef11c9a2020-11-19 18:01:57 -0800395 "java/dagger/hilt/codegen/*.java",
396 "java/dagger/hilt/processor/internal/**/*.java",
397 ],
Colin Crossef11c9a2020-11-19 18:01:57 -0800398 plugins: [
399 "auto_service_plugin",
400 "auto_value_plugin",
401 "auto_value_memoized_extension_plugin",
Colin Crossff268f02021-03-01 16:23:38 -0800402 "dagger2-compiler",
Colin Crossef11c9a2020-11-19 18:01:57 -0800403 ],
404 static_libs: [
405 "auto_common",
406 "auto_service_annotations",
407 "auto_value_annotations",
408 "auto_value_memoized_extension_annotations",
409 "guava",
410 "jsr305",
411 "dagger2-compiler-lib",
412 "dagger2",
413 "javapoet",
414 "jsr330",
415 "kotlin-stdlib",
416 "kotlinx_metadata_jvm",
417 "dagger2-android-annotation-stubs",
418 ],
419 // shade guava to avoid conflicts with guava embedded in Error Prone.
420 jarjar_rules: "jarjar-rules.txt",
421}