blob: 2a63e433fe3af292a6be25511e0b24de0c5e49d9 [file] [log] [blame]
# Copyright (C) 2020 The Google Bazel Common Authors.
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
"""A macro to configure Dagger deps within a workspace"""
load("//:build_defs.bzl", "POM_VERSION")
_DAGGER_VERSION = POM_VERSION
_HILT_VERSION = POM_VERSION
DAGGER_ARTIFACTS = [
"com.google.dagger:dagger:" + _DAGGER_VERSION,
"com.google.dagger:dagger-compiler:" + _DAGGER_VERSION,
"com.google.dagger:dagger-producers:" + _DAGGER_VERSION,
"com.google.dagger:dagger-spi:" + _DAGGER_VERSION,
]
DAGGER_ANDROID_ARTIFACTS = [
"com.google.dagger:dagger-android-processor:" + _DAGGER_VERSION,
"com.google.dagger:dagger-android-support:" + _DAGGER_VERSION,
"com.google.dagger:dagger-android:" + _DAGGER_VERSION,
]
HILT_ANDROID_ARTIFACTS = [
"androidx.test:core:1.1.0", # Export for ApplicationProvider
"javax.annotation:jsr250-api:1.0", # Export for @Generated
"androidx.annotation:annotation:1.1.0", # Export for @CallSuper/@Nullable
"com.google.dagger:dagger:" + _DAGGER_VERSION,
"com.google.dagger:dagger-compiler:" + _DAGGER_VERSION,
"com.google.dagger:hilt-android:" + _HILT_VERSION,
"com.google.dagger:hilt-android-testing:" + _HILT_VERSION,
"com.google.dagger:hilt-android-compiler:" + _HILT_VERSION,
]
DAGGER_REPOSITORIES = [
"https://maven.google.com",
"https://repo1.maven.org/maven2",
]
DAGGER_ANDROID_REPOSITORIES = DAGGER_REPOSITORIES
HILT_ANDROID_REPOSITORIES = DAGGER_REPOSITORIES
# https://github.com/bazelbuild/buildtools/blob/master/WARNINGS.md#unnamed-macro
# buildifier: disable=unnamed-macro
def dagger_rules(repo_name = "@maven"):
"""Defines the Dagger targets with proper exported dependencies and plugins.
The targets will be of the form ":<artifact-id>".
Args:
repo_name: The name of the dependency repository (default is "@maven").
"""
native.java_library(
name = "dagger",
exported_plugins = [":dagger-compiler"],
visibility = ["//visibility:public"],
exports = [
"%s//:com_google_dagger_dagger" % repo_name,
"%s//:javax_inject_javax_inject" % repo_name,
],
)
native.java_plugin(
name = "dagger-compiler",
generates_api = 1,
processor_class = "dagger.internal.codegen.ComponentProcessor",
deps = [
"%s//:com_google_dagger_dagger_compiler" % repo_name,
],
)
native.java_library(
name = "dagger-producers",
visibility = ["//visibility:public"],
exports = [
":dagger",
"%s//:com_google_dagger_dagger_producers" % repo_name,
],
)
native.java_library(
name = "dagger-spi",
visibility = ["//visibility:public"],
exports = [
"%s//:com_google_dagger_dagger_spi" % repo_name,
],
)
# https://github.com/bazelbuild/buildtools/blob/master/WARNINGS.md#unnamed-macro
# buildifier: disable=unnamed-macro
def dagger_android_rules(repo_name = "@maven"):
"""Defines the Dagger Android targets with proper exported dependencies and plugins.
The targets will be of the form ":<artifact-id>".
Args:
repo_name: The name of the dependency repository (default is "@maven").
"""
# https://github.com/bazelbuild/buildtools/blob/master/WARNINGS.md#native-android
# buildifier: disable=native-android
native.android_library(
name = "dagger-android",
exported_plugins = [":dagger-android-processor"],
visibility = ["//visibility:public"],
exports = [
"%s//:com_google_dagger_dagger_android" % repo_name,
],
)
# https://github.com/bazelbuild/buildtools/blob/master/WARNINGS.md#native-android
# buildifier: disable=native-android
native.android_library(
name = "dagger-android-support",
exported_plugins = [":dagger-android-processor"],
visibility = ["//visibility:public"],
exports = [
":dagger-android",
"%s//:com_google_dagger_dagger_android_support" % repo_name,
],
)
native.java_plugin(
name = "dagger-android-processor",
generates_api = 1,
processor_class = "dagger.android.processor.AndroidProcessor",
deps = [
"%s//:com_google_dagger_dagger_android_processor" % repo_name,
],
)
# https://github.com/bazelbuild/buildtools/blob/master/WARNINGS.md#unnamed-macro
# buildifier: disable=unnamed-macro
def hilt_android_rules(repo_name = "@maven"):
"""Defines the Hilt Android targets with proper exported dependencies and plugins.
The targets will be of the form ":<artifact-id>".
Args:
repo_name: The name of the dependency repository (default is "@maven").
"""
# https://github.com/bazelbuild/buildtools/blob/master/WARNINGS.md#native-android
# buildifier: disable=native-android
native.android_library(
name = "hilt-android",
exported_plugins = [
":hilt_dagger_compiler",
":hilt_android_entry_point_processor",
":hilt_aggregated_deps_processor",
":hilt_alias_of_processor",
":hilt_define_component_processor",
":hilt_generates_root_input_processor",
":hilt_originating_element_processor",
":hilt_root_processor",
":hilt_view_model_processor",
],
visibility = ["//visibility:public"],
exports = [
"%s//:com_google_dagger_dagger" % repo_name, # For Dagger APIs
"%s//:javax_inject_javax_inject" % repo_name, # For @Inject
"%s//:androidx_annotation_annotation" % repo_name, # For @CallSuper
"%s//:com_google_dagger_hilt_android" % repo_name,
"%s//:javax_annotation_jsr250_api" % repo_name, # For @Generated
],
)
# This target is same as dagger-compiler, but we're redefining it here
# so that users don't have to call dagger_rules() first.
native.java_plugin(
name = "hilt_dagger_compiler",
generates_api = 1,
processor_class = "dagger.internal.codegen.ComponentProcessor",
deps = [
"%s//:com_google_dagger_dagger_compiler" % repo_name,
],
)
native.java_plugin(
name = "hilt_android_entry_point_processor",
generates_api = 1,
processor_class = "dagger.hilt.android.processor.internal.androidentrypoint.AndroidEntryPointProcessor",
deps = ["%s//:com_google_dagger_hilt_android_compiler" % repo_name],
)
native.java_plugin(
name = "hilt_aggregated_deps_processor",
generates_api = 1,
processor_class = "dagger.hilt.processor.internal.aggregateddeps.AggregatedDepsProcessor",
deps = ["%s//:com_google_dagger_hilt_android_compiler" % repo_name],
)
native.java_plugin(
name = "hilt_alias_of_processor",
generates_api = 1,
processor_class = "dagger.hilt.processor.internal.aliasof.AliasOfProcessor",
deps = ["%s//:com_google_dagger_hilt_android_compiler" % repo_name],
)
native.java_plugin(
name = "hilt_define_component_processor",
generates_api = 1,
processor_class = "dagger.hilt.processor.internal.definecomponent.DefineComponentProcessor",
deps = ["%s//:com_google_dagger_hilt_android_compiler" % repo_name],
)
native.java_plugin(
name = "hilt_generates_root_input_processor",
generates_api = 1,
processor_class = "dagger.hilt.processor.internal.generatesrootinput.GeneratesRootInputProcessor",
deps = ["%s//:com_google_dagger_hilt_android_compiler" % repo_name],
)
native.java_plugin(
name = "hilt_originating_element_processor",
generates_api = 1,
processor_class = "dagger.hilt.processor.internal.originatingelement.OriginatingElementProcessor",
deps = ["%s//:com_google_dagger_hilt_android_compiler" % repo_name],
)
native.java_plugin(
name = "hilt_root_processor",
generates_api = 1,
processor_class = "dagger.hilt.processor.internal.root.RootProcessor",
deps = ["%s//:com_google_dagger_hilt_android_compiler" % repo_name],
)
native.java_plugin(
name = "hilt_view_model_processor",
generates_api = 1,
processor_class = "dagger.hilt.android.processor.internal.viewmodel.ViewModelProcessor",
deps = ["%s//:com_google_dagger_hilt_android_compiler" % repo_name],
)
# https://github.com/bazelbuild/buildtools/blob/master/WARNINGS.md#native-android
# buildifier: disable=native-android
native.android_library(
name = "hilt-android-testing",
testonly = 1,
exported_plugins = [
":hilt_bind_value_processor",
":hilt_custom_test_application_processor",
":hilt_testroot_processor",
":hilt_uninstall_modules_processor",
],
visibility = ["//visibility:public"],
exports = [
":hilt-android",
"%s//:androidx_test_core" % repo_name, # For ApplicationProvider
"%s//:com_google_dagger_hilt_android_testing" % repo_name,
],
)
native.java_plugin(
name = "hilt_bind_value_processor",
generates_api = 1,
processor_class = "dagger.hilt.android.processor.internal.bindvalue.BindValueProcessor",
deps = ["%s//:com_google_dagger_hilt_android_compiler" % repo_name],
)
native.java_plugin(
name = "hilt_custom_test_application_processor",
generates_api = 1,
processor_class = "dagger.hilt.android.processor.internal.customtestapplication.CustomTestApplicationProcessor",
deps = ["%s//:com_google_dagger_hilt_android_compiler" % repo_name],
)
native.java_plugin(
name = "hilt_testroot_processor",
generates_api = 1,
processor_class = "dagger.hilt.android.processor.internal.testroot.TestRootProcessor",
deps = ["%s//:com_google_dagger_hilt_android_compiler" % repo_name],
)
native.java_plugin(
name = "hilt_uninstall_modules_processor",
generates_api = 1,
processor_class = "dagger.hilt.android.processor.internal.uninstallmodules.UninstallModulesProcessor",
deps = ["%s//:com_google_dagger_hilt_android_compiler" % repo_name],
)