xref: /aosp_15_r20/external/dagger2/workspace_defs.bzl (revision f585d8a307d0621d6060bd7e80091fdcbf94fe27)
1# 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
17load("//:build_defs.bzl", "POM_VERSION")
18
19# For tagged releases, the POM_VERSION will be set to the version of the release.
20# However, for CI testing the POM_VERSION will not be set, so we use the
21# HEAD-SNAPSHOT artifacts instead.
22# TODO(bcorso): Ideally, we would use the LOCAL-SNAPSHOT artifacts for CI testing;
23# however, maven_install doesn't work with local maven repositories
24# (See issue: https://github.com/bazelbuild/rules_jvm_external/issues/305).
25_VERSION = POM_VERSION if POM_VERSION != "${project.version}" else "HEAD-SNAPSHOT"
26
27DAGGER_ARTIFACTS = [
28    "com.google.dagger:dagger:" + _VERSION,
29    "com.google.dagger:dagger-compiler:" + _VERSION,
30    "com.google.dagger:dagger-producers:" + _VERSION,
31    "com.google.dagger:dagger-spi:" + _VERSION,
32]
33
34DAGGER_ANDROID_ARTIFACTS = [
35    "com.google.dagger:dagger-android-processor:" + _VERSION,
36    "com.google.dagger:dagger-android-support:" + _VERSION,
37    "com.google.dagger:dagger-android:" + _VERSION,
38]
39
40HILT_ANDROID_ARTIFACTS = [
41    "androidx.test:core:1.1.0",  # Export for ApplicationProvider
42    "javax.annotation:javax.annotation-api:1.3.2",  # Export for @Generated
43    "androidx.annotation:annotation:1.1.0",  # Export for @CallSuper/@Nullable
44    "com.google.dagger:dagger:" + _VERSION,
45    "com.google.dagger:dagger-compiler:" + _VERSION,
46    "com.google.dagger:hilt-android:" + _VERSION,
47    "com.google.dagger:hilt-android-testing:" + _VERSION,
48    "com.google.dagger:hilt-android-compiler:" + _VERSION,
49    "com.google.dagger:hilt-core:" + _VERSION,
50]
51
52DAGGER_REPOSITORIES = [
53    "https://maven.google.com",
54    "https://repo1.maven.org/maven2",
55    "https://oss.sonatype.org/content/repositories/snapshots",
56]
57
58DAGGER_ANDROID_REPOSITORIES = DAGGER_REPOSITORIES
59
60HILT_ANDROID_REPOSITORIES = DAGGER_REPOSITORIES
61
62# https://github.com/bazelbuild/buildtools/blob/master/WARNINGS.md#unnamed-macro
63# buildifier: disable=unnamed-macro
64def dagger_rules(repo_name = "@maven"):
65    """Defines the Dagger targets with proper exported dependencies and plugins.
66
67    The targets will be of the form ":<artifact-id>".
68
69    Args:
70      repo_name: The name of the dependency repository (default is "@maven").
71    """
72    native.java_library(
73        name = "dagger",
74        exported_plugins = [":dagger-compiler"],
75        visibility = ["//visibility:public"],
76        exports = [
77            "%s//:com_google_dagger_dagger" % repo_name,
78            "%s//:javax_inject_javax_inject" % repo_name,
79        ],
80    )
81
82    native.java_plugin(
83        name = "dagger-compiler",
84        generates_api = 1,
85        processor_class = "dagger.internal.codegen.ComponentProcessor",
86        deps = [
87            "%s//:com_google_dagger_dagger_compiler" % repo_name,
88        ],
89    )
90
91    native.java_library(
92        name = "dagger-producers",
93        visibility = ["//visibility:public"],
94        exports = [
95            ":dagger",
96            "%s//:com_google_dagger_dagger_producers" % repo_name,
97        ],
98    )
99
100    native.java_library(
101        name = "dagger-spi",
102        visibility = ["//visibility:public"],
103        exports = [
104            "%s//:com_google_dagger_dagger_spi" % repo_name,
105        ],
106    )
107
108# https://github.com/bazelbuild/buildtools/blob/master/WARNINGS.md#unnamed-macro
109# buildifier: disable=unnamed-macro
110def dagger_android_rules(repo_name = "@maven"):
111    """Defines the Dagger Android targets with proper exported dependencies and plugins.
112
113    The targets will be of the form ":<artifact-id>".
114
115    Args:
116      repo_name: The name of the dependency repository (default is "@maven").
117    """
118
119    # https://github.com/bazelbuild/buildtools/blob/master/WARNINGS.md#native-android
120    # buildifier: disable=native-android
121    native.android_library(
122        name = "dagger-android",
123        exported_plugins = [":dagger-android-processor"],
124        visibility = ["//visibility:public"],
125        exports = [
126            "%s//:com_google_dagger_dagger_android" % repo_name,
127        ],
128    )
129
130    # https://github.com/bazelbuild/buildtools/blob/master/WARNINGS.md#native-android
131    # buildifier: disable=native-android
132    native.android_library(
133        name = "dagger-android-support",
134        exported_plugins = [":dagger-android-processor"],
135        visibility = ["//visibility:public"],
136        exports = [
137            ":dagger-android",
138            "%s//:com_google_dagger_dagger_android_support" % repo_name,
139        ],
140    )
141
142    native.java_plugin(
143        name = "dagger-android-processor",
144        generates_api = 1,
145        processor_class = "dagger.android.processor.AndroidProcessor",
146        deps = [
147            "%s//:com_google_dagger_dagger_android_processor" % repo_name,
148        ],
149    )
150
151# https://github.com/bazelbuild/buildtools/blob/master/WARNINGS.md#unnamed-macro
152# buildifier: disable=unnamed-macro
153def hilt_android_rules(repo_name = "@maven"):
154    """Defines the Hilt Android targets with proper exported dependencies and plugins.
155
156    The targets will be of the form ":<artifact-id>".
157
158    Args:
159      repo_name: The name of the dependency repository (default is "@maven").
160    """
161
162    # https://github.com/bazelbuild/buildtools/blob/master/WARNINGS.md#native-android
163    # buildifier: disable=native-android
164    native.android_library(
165        name = "hilt-android",
166        exported_plugins = [
167            ":hilt_dagger_compiler",
168            ":hilt_android_entry_point_processor",
169            ":hilt_aggregated_deps_processor",
170            ":hilt_alias_of_processor",
171            ":hilt_define_component_processor",
172            ":hilt_early_entry_points_processor",
173            ":hilt_generates_root_input_processor",
174            ":hilt_originating_element_processor",
175            ":hilt_root_processor",
176            ":hilt_component_tree_deps_processor",
177            ":hilt_view_model_processor",
178        ],
179        visibility = ["//visibility:public"],
180        exports = [
181            "%s//:com_google_dagger_dagger" % repo_name,  # For Dagger APIs
182            "%s//:javax_inject_javax_inject" % repo_name,  # For @Inject
183            "%s//:androidx_annotation_annotation" % repo_name,  # For @CallSuper
184            "%s//:com_google_dagger_hilt_android" % repo_name,
185            "%s//:com_google_dagger_hilt_core" % repo_name,
186            "%s//:javax_annotation_javax_annotation_api" % repo_name,  # For @Generated
187        ],
188    )
189
190    # This target is same as dagger-compiler, but we're redefining it here
191    # so that users don't have to call dagger_rules() first.
192    native.java_plugin(
193        name = "hilt_dagger_compiler",
194        generates_api = 1,
195        processor_class = "dagger.internal.codegen.ComponentProcessor",
196        deps = [
197            "%s//:com_google_dagger_dagger_compiler" % repo_name,
198        ],
199    )
200
201    native.java_plugin(
202        name = "hilt_android_entry_point_processor",
203        generates_api = 1,
204        processor_class = "dagger.hilt.android.processor.internal.androidentrypoint.AndroidEntryPointProcessor",
205        deps = ["%s//:com_google_dagger_hilt_android_compiler" % repo_name],
206    )
207
208    native.java_plugin(
209        name = "hilt_aggregated_deps_processor",
210        generates_api = 1,
211        processor_class = "dagger.hilt.processor.internal.aggregateddeps.AggregatedDepsProcessor",
212        deps = ["%s//:com_google_dagger_hilt_android_compiler" % repo_name],
213    )
214
215    native.java_plugin(
216        name = "hilt_alias_of_processor",
217        generates_api = 1,
218        processor_class = "dagger.hilt.processor.internal.aliasof.AliasOfProcessor",
219        deps = ["%s//:com_google_dagger_hilt_android_compiler" % repo_name],
220    )
221
222    native.java_plugin(
223        name = "hilt_define_component_processor",
224        generates_api = 1,
225        processor_class = "dagger.hilt.processor.internal.definecomponent.DefineComponentProcessor",
226        deps = ["%s//:com_google_dagger_hilt_android_compiler" % repo_name],
227    )
228
229    native.java_plugin(
230        name = "hilt_early_entry_points_processor",
231        generates_api = 1,
232        processor_class = "dagger.hilt.processor.internal.earlyentrypoint.EarlyEntryPointProcessor",
233        deps = ["%s//:com_google_dagger_hilt_android_compiler" % repo_name],
234    )
235
236    native.java_plugin(
237        name = "hilt_generates_root_input_processor",
238        generates_api = 1,
239        processor_class = "dagger.hilt.processor.internal.generatesrootinput.GeneratesRootInputProcessor",
240        deps = ["%s//:com_google_dagger_hilt_android_compiler" % repo_name],
241    )
242
243    native.java_plugin(
244        name = "hilt_originating_element_processor",
245        generates_api = 1,
246        processor_class = "dagger.hilt.processor.internal.originatingelement.OriginatingElementProcessor",
247        deps = ["%s//:com_google_dagger_hilt_android_compiler" % repo_name],
248    )
249
250    native.java_plugin(
251        name = "hilt_root_processor",
252        generates_api = 1,
253        processor_class = "dagger.hilt.processor.internal.root.RootProcessor",
254        deps = ["%s//:com_google_dagger_hilt_android_compiler" % repo_name],
255    )
256
257    native.java_plugin(
258        name = "hilt_component_tree_deps_processor",
259        generates_api = 1,
260        processor_class = "dagger.hilt.processor.internal.root.ComponentTreeDepsProcessor",
261        deps = ["%s//:com_google_dagger_hilt_android_compiler" % repo_name],
262    )
263
264    native.java_plugin(
265        name = "hilt_view_model_processor",
266        generates_api = 1,
267        processor_class = "dagger.hilt.android.processor.internal.viewmodel.ViewModelProcessor",
268        deps = ["%s//:com_google_dagger_hilt_android_compiler" % repo_name],
269    )
270
271    # https://github.com/bazelbuild/buildtools/blob/master/WARNINGS.md#native-android
272    # buildifier: disable=native-android
273    native.android_library(
274        name = "hilt-android-testing",
275        testonly = 1,
276        exported_plugins = [
277            ":hilt_bind_value_processor",
278            ":hilt_custom_test_application_processor",
279            ":hilt_uninstall_modules_processor",
280        ],
281        visibility = ["//visibility:public"],
282        exports = [
283            ":hilt-android",
284            "%s//:androidx_test_core" % repo_name,  # For ApplicationProvider
285            "%s//:com_google_dagger_hilt_android_testing" % repo_name,
286        ],
287    )
288
289    native.java_plugin(
290        name = "hilt_bind_value_processor",
291        generates_api = 1,
292        processor_class = "dagger.hilt.android.processor.internal.bindvalue.BindValueProcessor",
293        deps = ["%s//:com_google_dagger_hilt_android_compiler" % repo_name],
294    )
295
296    native.java_plugin(
297        name = "hilt_custom_test_application_processor",
298        generates_api = 1,
299        processor_class = "dagger.hilt.android.processor.internal.customtestapplication.CustomTestApplicationProcessor",
300        deps = ["%s//:com_google_dagger_hilt_android_compiler" % repo_name],
301    )
302
303    native.java_plugin(
304        name = "hilt_uninstall_modules_processor",
305        generates_api = 1,
306        processor_class = "dagger.hilt.processor.internal.uninstallmodules.UninstallModulesProcessor",
307        deps = ["%s//:com_google_dagger_hilt_android_compiler" % repo_name],
308    )
309