1# Copyright (C) 2017 The Dagger 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# Description:
16#   Dagger's core APIs exposed for plugins
17
18load("@rules_java//java:defs.bzl", "java_library")
19load(
20    "//:build_defs.bzl",
21    "DOCLINT_HTML_AND_SYNTAX",
22    "DOCLINT_REFERENCES",
23)
24
25package(
26    default_visibility = [
27        # The dagger/spi should be the only direct dependent on this target.
28        # If you need to depend on :model, depend on dagger/spi instead so
29        # that pom files correctly pick up the spi maven dependency.
30        # TODO(bcorso): Consider if :model should have its own maven coordinates.
31        "//java/dagger/spi:__pkg__",
32    ],
33)
34
35INTERNAL_PROXIES = ["BindingGraphProxies.java"]
36
37filegroup(
38    name = "model-srcs",
39    srcs = glob(
40        ["*.java"],
41        exclude = INTERNAL_PROXIES,
42    ),
43)
44
45java_library(
46    name = "model",
47    srcs = [":model-srcs"],
48    javacopts = DOCLINT_HTML_AND_SYNTAX + DOCLINT_REFERENCES,
49    deps = [
50        "//java/dagger:core",
51        "//java/dagger/internal/codegen/extension",
52        "//java/dagger/internal/guava:base",
53        "//java/dagger/internal/guava:collect",
54        "//java/dagger/internal/guava:graph",
55        "//java/dagger/producers",
56        "@google_bazel_common//third_party/java/auto:value",
57        "@google_bazel_common//third_party/java/error_prone:annotations",
58        "@google_bazel_common//third_party/java/javapoet",
59        "@google_bazel_common//third_party/java/jsr330_inject",
60        "@maven//:com_google_auto_auto_common",
61    ],
62)
63
64java_library(
65    name = "internal-proxies",
66    srcs = INTERNAL_PROXIES,
67    tags = ["maven:merged"],
68    visibility = ["//:src"],
69    deps = [
70        ":model",
71        "//java/dagger/internal/guava:collect",
72        "//java/dagger/internal/guava:graph",
73        "@google_bazel_common//third_party/java/auto:value",
74    ],
75)
76