load("@rules_java//java:defs.bzl", "java_library")

package(default_visibility = ["//src:__subpackages__"])

filegroup(
    name = "srcs",
    srcs = glob(["**"]),
    visibility = ["//src:__subpackages__"],
)

java_library(
    name = "java-rules",
    srcs = [
        "GenericBuildInfoPropertiesTranslator.java",
        "JavaBinary.java",
        "JavaCcLinkParamsProvider.java",
        "JavaConfigurationLoader.java",
        "JavaImport.java",
        "JavaImportBaseRule.java",
        "JavaInfo.java",
        "JavaLibrary.java",
        "JavaPackageConfiguration.java",
        "JavaPackageConfigurationRule.java",
        "JavaPlugin.java",
        "JavaPrimaryClassProvider.java",
        "JavaRuntime.java",
        "JavaRuntimeAliasRule.java",
        "JavaRuntimeClasspathProvider.java",
        "JavaRuntimeRule.java",
        "JavaSkylarkCommon.java",
        "JavaSourceInfoProvider.java",
        "JavaToolchain.java",
        "JavaToolchainAliasRule.java",
        "JavaToolchainRule.java",
        "ProguardLibrary.java",
        "ProguardLibraryRule.java",
        "ProguardSpecProvider.java",
        "proto/JavaLiteProtoAspect.java",
        "proto/JavaLiteProtoLibrary.java",
        "proto/JavaProtoAspect.java",
        "proto/JavaProtoAspectCommon.java",
        "proto/JavaProtoLibrary.java",
        "proto/JavaProtoLibraryAspectProvider.java",
        "proto/JavaProtoSkylarkCommon.java",
        "proto/JplCcLinkParams.java",
        "proto/ProtoJavacOpts.java",
        "proto/StrictDepsUtils.java",
    ],
    deps = [
        ":RpcSupport",
        ":java-compilation",
        ":java-implicit-attributes",
        "//src/main/java/com/google/devtools/build/lib:build-base",
        "//src/main/java/com/google/devtools/build/lib:events",
        "//src/main/java/com/google/devtools/build/lib:filetype",
        "//src/main/java/com/google/devtools/build/lib:os_util",
        "//src/main/java/com/google/devtools/build/lib:proto-rules",
        "//src/main/java/com/google/devtools/build/lib:provider-collection",
        "//src/main/java/com/google/devtools/build/lib:syntax",
        "//src/main/java/com/google/devtools/build/lib:util",
        "//src/main/java/com/google/devtools/build/lib/actions",
        "//src/main/java/com/google/devtools/build/lib/analysis/platform",
        "//src/main/java/com/google/devtools/build/lib/cmdline",
        "//src/main/java/com/google/devtools/build/lib/collect/nestedset",
        "//src/main/java/com/google/devtools/build/lib/concurrent",
        "//src/main/java/com/google/devtools/build/lib/packages",
        "//src/main/java/com/google/devtools/build/lib/packages:type",
        "//src/main/java/com/google/devtools/build/lib/rules/cpp",
        "//src/main/java/com/google/devtools/build/lib/skyframe/serialization/autocodec",
        "//src/main/java/com/google/devtools/build/lib/skylarkbuildapi",
        "//src/main/java/com/google/devtools/build/lib/skylarkbuildapi/core",
        "//src/main/java/com/google/devtools/build/lib/skylarkbuildapi/java",
        "//src/main/java/com/google/devtools/build/lib/vfs",
        "//src/main/java/com/google/devtools/build/lib/vfs:pathfragment",
        "//third_party:guava",
        "//third_party:jsr305",
    ],
)

java_library(
    name = "RpcSupport",
    srcs = ["proto/RpcSupport.java"],
    deps = [
        "//src/main/java/com/google/devtools/build/lib:build-base",
        "//src/main/java/com/google/devtools/build/lib:proto-rules",
        "//src/main/java/com/google/devtools/build/lib/actions",
        "//src/main/java/com/google/devtools/build/lib/collect/nestedset",
        "//src/main/java/com/google/devtools/build/lib/packages",
        "//third_party:guava",
    ],
)

java_library(
    name = "java-compilation",
    srcs = [
        "BootClassPathInfo.java",
        "BuildInfoPropertiesTranslator.java",
        "ClasspathConfiguredFragment.java",
        "DeployArchiveBuilder.java",
        "ImportDepsCheckActionBuilder.java",
        "JavaBuildInfoFactory.java",
        "JavaCommon.java",
        "JavaCompilationArgsProvider.java",
        "JavaCompilationArtifacts.java",
        "JavaCompilationHelper.java",
        "JavaCompilationInfoProvider.java",
        "JavaCompileAction.java",
        "JavaCompileActionBuilder.java",
        "JavaCompileActionContext.java",
        "JavaCompileOutputs.java",
        "JavaConfiguration.java",
        "JavaExportsProvider.java",
        "JavaGenJarsProvider.java",
        "JavaHeaderCompileActionBuilder.java",
        "JavaHelper.java",
        "JavaInfo.java",
        "JavaInfoBuildHelper.java",
        "JavaLibraryHelper.java",
        "JavaNativeLibraryProvider.java",
        "JavaOptions.java",
        "JavaPackageConfigurationProvider.java",
        "JavaPluginInfoProvider.java",
        "JavaRuleClasses.java",
        "JavaRuleOutputJarsProvider.java",
        "JavaRunfilesProvider.java",
        "JavaRuntimeInfo.java",
        "JavaSemantics.java",
        "JavaSkylarkApiProvider.java",
        "JavaSkylarkCommon.java",
        "JavaSourceInfoProvider.java",
        "JavaSourceJarsProvider.java",
        "JavaStrictCompilationArgsProvider.java",
        "JavaTargetAttributes.java",
        "JavaToolchainProvider.java",
        "JavaUtil.java",
        "MessageBundleInfo.java",
        "NativeLibraryNestedSetBuilder.java",
        "OneVersionCheckActionBuilder.java",
        "ResourceJarActionBuilder.java",
        "SingleJarActionBuilder.java",
        "WriteBuildInfoPropertiesAction.java",
        "proto/GeneratedExtensionRegistryProvider.java",
    ],
    deps = [
        "//src/main/java/com/google/devtools/build/lib:build-base",
        "//src/main/java/com/google/devtools/build/lib:build-info",
        "//src/main/java/com/google/devtools/build/lib:events",
        "//src/main/java/com/google/devtools/build/lib:filetype",
        "//src/main/java/com/google/devtools/build/lib:provider-collection",
        "//src/main/java/com/google/devtools/build/lib:string_util",
        "//src/main/java/com/google/devtools/build/lib:syntax",
        "//src/main/java/com/google/devtools/build/lib:util",
        "//src/main/java/com/google/devtools/build/lib/actions",
        "//src/main/java/com/google/devtools/build/lib/actions:commandline_item",
        "//src/main/java/com/google/devtools/build/lib/actions:localhost_capacity",
        "//src/main/java/com/google/devtools/build/lib/analysis/platform",
        "//src/main/java/com/google/devtools/build/lib/analysis/skylark/annotations",
        "//src/main/java/com/google/devtools/build/lib/cmdline",
        "//src/main/java/com/google/devtools/build/lib/collect/nestedset",
        "//src/main/java/com/google/devtools/build/lib/concurrent",
        "//src/main/java/com/google/devtools/build/lib/packages",
        "//src/main/java/com/google/devtools/build/lib/packages:type",
        "//src/main/java/com/google/devtools/build/lib/rules/cpp",
        "//src/main/java/com/google/devtools/build/lib/shell",
        "//src/main/java/com/google/devtools/build/lib/skyframe/serialization/autocodec",
        "//src/main/java/com/google/devtools/build/lib/skylarkbuildapi",
        "//src/main/java/com/google/devtools/build/lib/skylarkbuildapi/core",
        "//src/main/java/com/google/devtools/build/lib/skylarkbuildapi/java",
        "//src/main/java/com/google/devtools/build/lib/skylarkinterface",
        "//src/main/java/com/google/devtools/build/lib/vfs",
        "//src/main/java/com/google/devtools/build/lib/vfs:pathfragment",
        "//src/main/java/com/google/devtools/common/options",
        "//src/main/protobuf:deps_java_proto",
        "//src/main/protobuf:extra_actions_base_java_proto",
        "//third_party:auto_value",
        "//third_party:guava",
        "//third_party:jsr305",
    ],
)

java_library(
    name = "java-implicit-attributes",
    srcs = ["JavaImplicitAttributes.java"],
)

# A library with the utilities required for determining java roots.

java_library(
    name = "java-root-utils",
    srcs = ["JavaUtil.java"],
    deps = [
        "//src/main/java/com/google/devtools/build/lib/vfs",
        "//src/main/java/com/google/devtools/build/lib/vfs:pathfragment",
        "//third_party:guava",
    ],
)
