blob: c017b76f9be426a9c70b22fea6698f1211861277 [file] [log] [blame]
bcorso51c9a1d2020-06-08 17:40:40 -07001# Copyright (C) 2020 The Google Bazel Common Authors.
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
15"""A macro to configure Dagger deps within a workspace"""
16
Aurimas Liutikas2fee4262021-05-12 21:55:46 +000017load("//:build_defs.bzl", "POM_VERSION", "POM_VERSION_ALPHA")
bcorso51c9a1d2020-06-08 17:40:40 -070018
19_DAGGER_VERSION = POM_VERSION
Aurimas Liutikas2fee4262021-05-12 21:55:46 +000020_HILT_VERSION = POM_VERSION_ALPHA
bcorso51c9a1d2020-06-08 17:40:40 -070021
22DAGGER_ARTIFACTS = [
bcorsobc6f9a92020-06-17 16:29:02 -070023 "com.google.dagger:dagger:" + _DAGGER_VERSION,
24 "com.google.dagger:dagger-compiler:" + _DAGGER_VERSION,
25 "com.google.dagger:dagger-producers:" + _DAGGER_VERSION,
26 "com.google.dagger:dagger-spi:" + _DAGGER_VERSION,
27]
28
29DAGGER_ANDROID_ARTIFACTS = [
30 "com.google.dagger:dagger-android-processor:" + _DAGGER_VERSION,
31 "com.google.dagger:dagger-android-support:" + _DAGGER_VERSION,
32 "com.google.dagger:dagger-android:" + _DAGGER_VERSION,
33]
34
35HILT_ANDROID_ARTIFACTS = [
bcorso51c9a1d2020-06-08 17:40:40 -070036 "androidx.test:core:1.1.0", # Export for ApplicationProvider
37 "javax.annotation:jsr250-api:1.0", # Export for @Generated
38 "androidx.annotation:annotation:1.1.0", # Export for @CallSuper/@Nullable
39 "com.google.dagger:dagger:" + _DAGGER_VERSION,
40 "com.google.dagger:dagger-compiler:" + _DAGGER_VERSION,
bcorso51c9a1d2020-06-08 17:40:40 -070041 "com.google.dagger:hilt-android:" + _HILT_VERSION,
42 "com.google.dagger:hilt-android-testing:" + _HILT_VERSION,
43 "com.google.dagger:hilt-android-compiler:" + _HILT_VERSION,
44]
45
46DAGGER_REPOSITORIES = [
47 "https://maven.google.com",
48 "https://repo1.maven.org/maven2",
49]
50
bcorsobc6f9a92020-06-17 16:29:02 -070051DAGGER_ANDROID_REPOSITORIES = DAGGER_REPOSITORIES
52
53HILT_ANDROID_REPOSITORIES = DAGGER_REPOSITORIES
54
bcorso51c9a1d2020-06-08 17:40:40 -070055# https://github.com/bazelbuild/buildtools/blob/master/WARNINGS.md#unnamed-macro
56# buildifier: disable=unnamed-macro
57def dagger_rules(repo_name = "@maven"):
58 """Defines the Dagger targets with proper exported dependencies and plugins.
59
60 The targets will be of the form ":<artifact-id>".
61
62 Args:
bcorsobc6f9a92020-06-17 16:29:02 -070063 repo_name: The name of the dependency repository (default is "@maven").
bcorso51c9a1d2020-06-08 17:40:40 -070064 """
65 native.java_library(
66 name = "dagger",
67 exported_plugins = [":dagger-compiler"],
68 visibility = ["//visibility:public"],
69 exports = [
70 "%s//:com_google_dagger_dagger" % repo_name,
71 "%s//:javax_inject_javax_inject" % repo_name,
72 ],
73 )
74
75 native.java_plugin(
76 name = "dagger-compiler",
77 generates_api = 1,
78 processor_class = "dagger.internal.codegen.ComponentProcessor",
79 deps = [
80 "%s//:com_google_dagger_dagger_compiler" % repo_name,
81 ],
82 )
83
bcorsobc6f9a92020-06-17 16:29:02 -070084 native.java_library(
85 name = "dagger-producers",
86 visibility = ["//visibility:public"],
87 exports = [
88 ":dagger",
89 "%s//:com_google_dagger_dagger_producers" % repo_name,
90 ],
91 )
92
93 native.java_library(
94 name = "dagger-spi",
95 visibility = ["//visibility:public"],
96 exports = [
97 "%s//:com_google_dagger_dagger_spi" % repo_name,
98 ],
99 )
100
101# https://github.com/bazelbuild/buildtools/blob/master/WARNINGS.md#unnamed-macro
102# buildifier: disable=unnamed-macro
103def dagger_android_rules(repo_name = "@maven"):
104 """Defines the Dagger Android targets with proper exported dependencies and plugins.
105
106 The targets will be of the form ":<artifact-id>".
107
108 Args:
109 repo_name: The name of the dependency repository (default is "@maven").
110 """
111
bcorso51c9a1d2020-06-08 17:40:40 -0700112 # https://github.com/bazelbuild/buildtools/blob/master/WARNINGS.md#native-android
113 # buildifier: disable=native-android
114 native.android_library(
115 name = "dagger-android",
116 exported_plugins = [":dagger-android-processor"],
117 visibility = ["//visibility:public"],
118 exports = [
119 "%s//:com_google_dagger_dagger_android" % repo_name,
120 ],
121 )
122
123 # https://github.com/bazelbuild/buildtools/blob/master/WARNINGS.md#native-android
124 # buildifier: disable=native-android
125 native.android_library(
126 name = "dagger-android-support",
127 exported_plugins = [":dagger-android-processor"],
128 visibility = ["//visibility:public"],
129 exports = [
130 ":dagger-android",
131 "%s//:com_google_dagger_dagger_android_support" % repo_name,
132 ],
133 )
134
135 native.java_plugin(
136 name = "dagger-android-processor",
137 generates_api = 1,
138 processor_class = "dagger.android.processor.AndroidProcessor",
139 deps = [
140 "%s//:com_google_dagger_dagger_android_processor" % repo_name,
141 ],
142 )
143
bcorsobc6f9a92020-06-17 16:29:02 -0700144# https://github.com/bazelbuild/buildtools/blob/master/WARNINGS.md#unnamed-macro
145# buildifier: disable=unnamed-macro
146def hilt_android_rules(repo_name = "@maven"):
147 """Defines the Hilt Android targets with proper exported dependencies and plugins.
bcorso51c9a1d2020-06-08 17:40:40 -0700148
bcorsobc6f9a92020-06-17 16:29:02 -0700149 The targets will be of the form ":<artifact-id>".
150
151 Args:
152 repo_name: The name of the dependency repository (default is "@maven").
153 """
bcorso51c9a1d2020-06-08 17:40:40 -0700154
155 # https://github.com/bazelbuild/buildtools/blob/master/WARNINGS.md#native-android
156 # buildifier: disable=native-android
157 native.android_library(
158 name = "hilt-android",
159 exported_plugins = [
bcorsobc6f9a92020-06-17 16:29:02 -0700160 ":hilt_dagger_compiler",
bcorso51c9a1d2020-06-08 17:40:40 -0700161 ":hilt_android_entry_point_processor",
162 ":hilt_aggregated_deps_processor",
163 ":hilt_alias_of_processor",
164 ":hilt_define_component_processor",
165 ":hilt_generates_root_input_processor",
166 ":hilt_originating_element_processor",
167 ":hilt_root_processor",
Eric Chang00d38ba2020-12-28 12:09:04 -0800168 ":hilt_view_model_processor",
bcorso51c9a1d2020-06-08 17:40:40 -0700169 ],
170 visibility = ["//visibility:public"],
171 exports = [
bcorsobc6f9a92020-06-17 16:29:02 -0700172 "%s//:com_google_dagger_dagger" % repo_name, # For Dagger APIs
173 "%s//:javax_inject_javax_inject" % repo_name, # For @Inject
bcorso51c9a1d2020-06-08 17:40:40 -0700174 "%s//:androidx_annotation_annotation" % repo_name, # For @CallSuper
175 "%s//:com_google_dagger_hilt_android" % repo_name,
176 "%s//:javax_annotation_jsr250_api" % repo_name, # For @Generated
177 ],
178 )
179
bcorsobc6f9a92020-06-17 16:29:02 -0700180 # This target is same as dagger-compiler, but we're redefining it here
181 # so that users don't have to call dagger_rules() first.
182 native.java_plugin(
183 name = "hilt_dagger_compiler",
184 generates_api = 1,
185 processor_class = "dagger.internal.codegen.ComponentProcessor",
186 deps = [
187 "%s//:com_google_dagger_dagger_compiler" % repo_name,
188 ],
189 )
190
bcorso51c9a1d2020-06-08 17:40:40 -0700191 native.java_plugin(
192 name = "hilt_android_entry_point_processor",
193 generates_api = 1,
194 processor_class = "dagger.hilt.android.processor.internal.androidentrypoint.AndroidEntryPointProcessor",
195 deps = ["%s//:com_google_dagger_hilt_android_compiler" % repo_name],
196 )
197
198 native.java_plugin(
199 name = "hilt_aggregated_deps_processor",
200 generates_api = 1,
201 processor_class = "dagger.hilt.processor.internal.aggregateddeps.AggregatedDepsProcessor",
202 deps = ["%s//:com_google_dagger_hilt_android_compiler" % repo_name],
203 )
204
205 native.java_plugin(
206 name = "hilt_alias_of_processor",
207 generates_api = 1,
208 processor_class = "dagger.hilt.processor.internal.aliasof.AliasOfProcessor",
209 deps = ["%s//:com_google_dagger_hilt_android_compiler" % repo_name],
210 )
211
212 native.java_plugin(
213 name = "hilt_define_component_processor",
214 generates_api = 1,
215 processor_class = "dagger.hilt.processor.internal.definecomponent.DefineComponentProcessor",
216 deps = ["%s//:com_google_dagger_hilt_android_compiler" % repo_name],
217 )
218
219 native.java_plugin(
220 name = "hilt_generates_root_input_processor",
221 generates_api = 1,
222 processor_class = "dagger.hilt.processor.internal.generatesrootinput.GeneratesRootInputProcessor",
223 deps = ["%s//:com_google_dagger_hilt_android_compiler" % repo_name],
224 )
225
226 native.java_plugin(
227 name = "hilt_originating_element_processor",
228 generates_api = 1,
229 processor_class = "dagger.hilt.processor.internal.originatingelement.OriginatingElementProcessor",
230 deps = ["%s//:com_google_dagger_hilt_android_compiler" % repo_name],
231 )
232
233 native.java_plugin(
234 name = "hilt_root_processor",
235 generates_api = 1,
236 processor_class = "dagger.hilt.processor.internal.root.RootProcessor",
237 deps = ["%s//:com_google_dagger_hilt_android_compiler" % repo_name],
238 )
239
Eric Chang00d38ba2020-12-28 12:09:04 -0800240 native.java_plugin(
241 name = "hilt_view_model_processor",
242 generates_api = 1,
243 processor_class = "dagger.hilt.android.processor.internal.viewmodel.ViewModelProcessor",
244 deps = ["%s//:com_google_dagger_hilt_android_compiler" % repo_name],
245 )
246
bcorso51c9a1d2020-06-08 17:40:40 -0700247 # https://github.com/bazelbuild/buildtools/blob/master/WARNINGS.md#native-android
248 # buildifier: disable=native-android
249 native.android_library(
250 name = "hilt-android-testing",
251 testonly = 1,
252 exported_plugins = [
253 ":hilt_bind_value_processor",
254 ":hilt_custom_test_application_processor",
255 ":hilt_testroot_processor",
256 ":hilt_uninstall_modules_processor",
257 ],
258 visibility = ["//visibility:public"],
259 exports = [
260 ":hilt-android",
261 "%s//:androidx_test_core" % repo_name, # For ApplicationProvider
262 "%s//:com_google_dagger_hilt_android_testing" % repo_name,
263 ],
264 )
265
266 native.java_plugin(
267 name = "hilt_bind_value_processor",
268 generates_api = 1,
269 processor_class = "dagger.hilt.android.processor.internal.bindvalue.BindValueProcessor",
270 deps = ["%s//:com_google_dagger_hilt_android_compiler" % repo_name],
271 )
272
273 native.java_plugin(
274 name = "hilt_custom_test_application_processor",
275 generates_api = 1,
276 processor_class = "dagger.hilt.android.processor.internal.customtestapplication.CustomTestApplicationProcessor",
277 deps = ["%s//:com_google_dagger_hilt_android_compiler" % repo_name],
278 )
279
280 native.java_plugin(
281 name = "hilt_testroot_processor",
282 generates_api = 1,
283 processor_class = "dagger.hilt.android.processor.internal.testroot.TestRootProcessor",
284 deps = ["%s//:com_google_dagger_hilt_android_compiler" % repo_name],
285 )
286
287 native.java_plugin(
288 name = "hilt_uninstall_modules_processor",
289 generates_api = 1,
290 processor_class = "dagger.hilt.android.processor.internal.uninstallmodules.UninstallModulesProcessor",
291 deps = ["%s//:com_google_dagger_hilt_android_compiler" % repo_name],
292 )