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