xref: /aosp_15_r20/external/dagger2/java/dagger/internal/codegen/BUILD (revision f585d8a307d0621d6060bd7e80091fdcbf94fe27)
1*f585d8a3SJacky Wang# Copyright (C) 2017 The Dagger 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# Description:
16*f585d8a3SJacky Wang#   A JSR-330 compliant dependency injection system for android and java
17*f585d8a3SJacky Wang
18*f585d8a3SJacky Wangload("@rules_java//java:defs.bzl", "java_library", "java_plugin")
19*f585d8a3SJacky Wangload(
20*f585d8a3SJacky Wang    "//:build_defs.bzl",
21*f585d8a3SJacky Wang    "POM_VERSION",
22*f585d8a3SJacky Wang)
23*f585d8a3SJacky Wangload("//tools:maven.bzl", "gen_maven_artifact")
24*f585d8a3SJacky Wang
25*f585d8a3SJacky Wangpackage(default_visibility = ["//:src"])
26*f585d8a3SJacky Wang
27*f585d8a3SJacky Wangjava_library(
28*f585d8a3SJacky Wang    name = "processor",
29*f585d8a3SJacky Wang    srcs = glob(
30*f585d8a3SJacky Wang        ["*.java"],
31*f585d8a3SJacky Wang        exclude = ["package-info.java"],
32*f585d8a3SJacky Wang    ),
33*f585d8a3SJacky Wang    plugins = [
34*f585d8a3SJacky Wang        "//java/dagger/internal/codegen/bootstrap",
35*f585d8a3SJacky Wang    ],
36*f585d8a3SJacky Wang    tags = ["maven_coordinates=com.google.dagger:dagger-compiler:" + POM_VERSION],
37*f585d8a3SJacky Wang    deps = [
38*f585d8a3SJacky Wang        ":package_info",
39*f585d8a3SJacky Wang        "//java/dagger:core",
40*f585d8a3SJacky Wang        "//java/dagger/internal/codegen/base",
41*f585d8a3SJacky Wang        "//java/dagger/internal/codegen/binding",
42*f585d8a3SJacky Wang        "//java/dagger/internal/codegen/bindinggraphvalidation",
43*f585d8a3SJacky Wang        "//java/dagger/internal/codegen/compileroption",
44*f585d8a3SJacky Wang        "//java/dagger/internal/codegen/componentgenerator",
45*f585d8a3SJacky Wang        "//java/dagger/internal/codegen/kotlin",
46*f585d8a3SJacky Wang        "//java/dagger/internal/codegen/processingstep",
47*f585d8a3SJacky Wang        "//java/dagger/internal/codegen/validation",
48*f585d8a3SJacky Wang        "//java/dagger/internal/codegen/writing",
49*f585d8a3SJacky Wang        "//java/dagger/internal/codegen/xprocessing",
50*f585d8a3SJacky Wang        "//java/dagger/spi",
51*f585d8a3SJacky Wang        "//third_party/java/auto:service",
52*f585d8a3SJacky Wang        "//third_party/java/error_prone:annotations",
53*f585d8a3SJacky Wang        "//third_party/java/google_java_format",
54*f585d8a3SJacky Wang        "//third_party/java/guava/collect",
55*f585d8a3SJacky Wang        "//third_party/java/incap",
56*f585d8a3SJacky Wang        "@maven//:com_google_devtools_ksp_symbol_processing_api",
57*f585d8a3SJacky Wang    ],
58*f585d8a3SJacky Wang)
59*f585d8a3SJacky Wang
60*f585d8a3SJacky Wangjava_library(
61*f585d8a3SJacky Wang    name = "package_info",
62*f585d8a3SJacky Wang    srcs = ["package-info.java"],
63*f585d8a3SJacky Wang    tags = ["maven:merged"],
64*f585d8a3SJacky Wang    deps = ["//third_party/java/error_prone:annotations"],
65*f585d8a3SJacky Wang)
66*f585d8a3SJacky Wang
67*f585d8a3SJacky Wanggen_maven_artifact(
68*f585d8a3SJacky Wang    name = "artifact",
69*f585d8a3SJacky Wang    artifact_coordinates = "com.google.dagger:dagger-compiler:" + POM_VERSION,
70*f585d8a3SJacky Wang    artifact_name = "Dagger Compiler",
71*f585d8a3SJacky Wang    artifact_target = ":processor",
72*f585d8a3SJacky Wang    artifact_target_libs = [
73*f585d8a3SJacky Wang        ":package_info",
74*f585d8a3SJacky Wang        "//java/dagger/internal/codegen/base",
75*f585d8a3SJacky Wang        "//java/dagger/internal/codegen/base:shared",
76*f585d8a3SJacky Wang        "//java/dagger/internal/codegen/binding",
77*f585d8a3SJacky Wang        "//java/dagger/internal/codegen/bindinggraphvalidation",
78*f585d8a3SJacky Wang        "//java/dagger/internal/codegen/compileroption",
79*f585d8a3SJacky Wang        "//java/dagger/internal/codegen/componentgenerator",
80*f585d8a3SJacky Wang        "//java/dagger/internal/codegen/javapoet",
81*f585d8a3SJacky Wang        "//java/dagger/internal/codegen/kotlin",
82*f585d8a3SJacky Wang        "//java/dagger/internal/codegen/langmodel",
83*f585d8a3SJacky Wang        "//java/dagger/internal/codegen/model",
84*f585d8a3SJacky Wang        "//java/dagger/internal/codegen/processingstep",
85*f585d8a3SJacky Wang        "//java/dagger/internal/codegen/validation",
86*f585d8a3SJacky Wang        "//java/dagger/internal/codegen/writing",
87*f585d8a3SJacky Wang        "//java/dagger/internal/codegen/xprocessing",
88*f585d8a3SJacky Wang    ],
89*f585d8a3SJacky Wang    artifact_target_maven_deps = [
90*f585d8a3SJacky Wang        "com.google.code.findbugs:jsr305",
91*f585d8a3SJacky Wang        "com.google.dagger:dagger-spi",
92*f585d8a3SJacky Wang        "com.google.dagger:dagger",
93*f585d8a3SJacky Wang        "com.google.devtools.ksp:symbol-processing-api",
94*f585d8a3SJacky Wang        "com.google.googlejavaformat:google-java-format",
95*f585d8a3SJacky Wang        "com.google.guava:failureaccess",
96*f585d8a3SJacky Wang        "com.google.guava:guava",
97*f585d8a3SJacky Wang        "com.squareup:javapoet",
98*f585d8a3SJacky Wang        "com.squareup:kotlinpoet",
99*f585d8a3SJacky Wang        "javax.inject:javax.inject",
100*f585d8a3SJacky Wang        "net.ltgt.gradle.incap:incap",
101*f585d8a3SJacky Wang        "org.checkerframework:checker-compat-qual",
102*f585d8a3SJacky Wang        "org.jetbrains.kotlin:kotlin-stdlib",
103*f585d8a3SJacky Wang    ],
104*f585d8a3SJacky Wang    javadoc_root_packages = ["dagger.internal.codegen"],
105*f585d8a3SJacky Wang    # The javadocs should only include ComponentProcessor.java, since that is the only class used
106*f585d8a3SJacky Wang    # externally. Specifically, ComponentProcessor.forTesting() is required for testing SPI plugins.
107*f585d8a3SJacky Wang    javadoc_srcs = ["ComponentProcessor.java"],
108*f585d8a3SJacky Wang    # The shaded deps are inherited from dagger spi. For the shaded rules see util/deploy-dagger.sh
109*f585d8a3SJacky Wang)
110*f585d8a3SJacky Wang
111*f585d8a3SJacky Wangjava_plugin(
112*f585d8a3SJacky Wang    name = "component-codegen",
113*f585d8a3SJacky Wang    generates_api = 1,
114*f585d8a3SJacky Wang    output_licenses = ["unencumbered"],
115*f585d8a3SJacky Wang    processor_class = "dagger.internal.codegen.ComponentProcessor",
116*f585d8a3SJacky Wang    tags = [
117*f585d8a3SJacky Wang        "annotation=dagger.Component;" +
118*f585d8a3SJacky Wang        "genclass=${package}.Dagger${outerclasses}${classname}",
119*f585d8a3SJacky Wang        "annotation=dagger.producers.ProductionComponent;" +
120*f585d8a3SJacky Wang        "genclass=${package}.Dagger${outerclasses}${classname}",
121*f585d8a3SJacky Wang        "annotation=dagger.MapKey;" +
122*f585d8a3SJacky Wang        "genclass=${package}.${outerclasses}${classname}Creator",
123*f585d8a3SJacky Wang    ],
124*f585d8a3SJacky Wang    deps = [":processor"],
125*f585d8a3SJacky Wang)
126