bcorso | 51c9a1d | 2020-06-08 17:40:40 -0700 | [diff] [blame] | 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 | |
Aurimas Liutikas | 2fee426 | 2021-05-12 21:55:46 +0000 | [diff] [blame] | 17 | load("//:build_defs.bzl", "POM_VERSION", "POM_VERSION_ALPHA") |
bcorso | 51c9a1d | 2020-06-08 17:40:40 -0700 | [diff] [blame] | 18 | |
| 19 | _DAGGER_VERSION = POM_VERSION |
Aurimas Liutikas | 2fee426 | 2021-05-12 21:55:46 +0000 | [diff] [blame] | 20 | _HILT_VERSION = POM_VERSION_ALPHA |
bcorso | 51c9a1d | 2020-06-08 17:40:40 -0700 | [diff] [blame] | 21 | |
| 22 | DAGGER_ARTIFACTS = [ |
bcorso | bc6f9a9 | 2020-06-17 16:29:02 -0700 | [diff] [blame] | 23 | "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 | |
| 29 | DAGGER_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 | |
| 35 | HILT_ANDROID_ARTIFACTS = [ |
bcorso | 51c9a1d | 2020-06-08 17:40:40 -0700 | [diff] [blame] | 36 | "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, |
bcorso | 51c9a1d | 2020-06-08 17:40:40 -0700 | [diff] [blame] | 41 | "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 | |
| 46 | DAGGER_REPOSITORIES = [ |
| 47 | "https://maven.google.com", |
| 48 | "https://repo1.maven.org/maven2", |
| 49 | ] |
| 50 | |
bcorso | bc6f9a9 | 2020-06-17 16:29:02 -0700 | [diff] [blame] | 51 | DAGGER_ANDROID_REPOSITORIES = DAGGER_REPOSITORIES |
| 52 | |
| 53 | HILT_ANDROID_REPOSITORIES = DAGGER_REPOSITORIES |
| 54 | |
bcorso | 51c9a1d | 2020-06-08 17:40:40 -0700 | [diff] [blame] | 55 | # https://github.com/bazelbuild/buildtools/blob/master/WARNINGS.md#unnamed-macro |
| 56 | # buildifier: disable=unnamed-macro |
| 57 | def 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: |
bcorso | bc6f9a9 | 2020-06-17 16:29:02 -0700 | [diff] [blame] | 63 | repo_name: The name of the dependency repository (default is "@maven"). |
bcorso | 51c9a1d | 2020-06-08 17:40:40 -0700 | [diff] [blame] | 64 | """ |
| 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 | |
bcorso | bc6f9a9 | 2020-06-17 16:29:02 -0700 | [diff] [blame] | 84 | 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 |
| 103 | def 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 | |
bcorso | 51c9a1d | 2020-06-08 17:40:40 -0700 | [diff] [blame] | 112 | # 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 | |
bcorso | bc6f9a9 | 2020-06-17 16:29:02 -0700 | [diff] [blame] | 144 | # https://github.com/bazelbuild/buildtools/blob/master/WARNINGS.md#unnamed-macro |
| 145 | # buildifier: disable=unnamed-macro |
| 146 | def hilt_android_rules(repo_name = "@maven"): |
| 147 | """Defines the Hilt Android targets with proper exported dependencies and plugins. |
bcorso | 51c9a1d | 2020-06-08 17:40:40 -0700 | [diff] [blame] | 148 | |
bcorso | bc6f9a9 | 2020-06-17 16:29:02 -0700 | [diff] [blame] | 149 | 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 | """ |
bcorso | 51c9a1d | 2020-06-08 17:40:40 -0700 | [diff] [blame] | 154 | |
| 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 = [ |
bcorso | bc6f9a9 | 2020-06-17 16:29:02 -0700 | [diff] [blame] | 160 | ":hilt_dagger_compiler", |
bcorso | 51c9a1d | 2020-06-08 17:40:40 -0700 | [diff] [blame] | 161 | ":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 Chang | 00d38ba | 2020-12-28 12:09:04 -0800 | [diff] [blame] | 168 | ":hilt_view_model_processor", |
bcorso | 51c9a1d | 2020-06-08 17:40:40 -0700 | [diff] [blame] | 169 | ], |
| 170 | visibility = ["//visibility:public"], |
| 171 | exports = [ |
bcorso | bc6f9a9 | 2020-06-17 16:29:02 -0700 | [diff] [blame] | 172 | "%s//:com_google_dagger_dagger" % repo_name, # For Dagger APIs |
| 173 | "%s//:javax_inject_javax_inject" % repo_name, # For @Inject |
bcorso | 51c9a1d | 2020-06-08 17:40:40 -0700 | [diff] [blame] | 174 | "%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 | |
bcorso | bc6f9a9 | 2020-06-17 16:29:02 -0700 | [diff] [blame] | 180 | # 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 | |
bcorso | 51c9a1d | 2020-06-08 17:40:40 -0700 | [diff] [blame] | 191 | 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 Chang | 00d38ba | 2020-12-28 12:09:04 -0800 | [diff] [blame] | 240 | 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 | |
bcorso | 51c9a1d | 2020-06-08 17:40:40 -0700 | [diff] [blame] | 247 | # 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 | ) |