# This package contains sources for language-specific runfiles libraries.
#
# Do not depend on these rules. Depend on the ones in @bazel_tools//tools/runfiles instead, that way
# your binary won't require the Bazel source tree to work correctly.

package(default_visibility = ["//visibility:private"])

filegroup(
    name = "srcs",
    srcs = glob(
        ["**"],
        exclude = [".*"],  # .swp files and such
    ) + [
        "//src/tools/runfiles/java/com/google/devtools/build/runfiles:srcs",
    ],
    visibility = ["//src:__pkg__"],
)

filegroup(
    name = "embedded_tools",
    srcs = [
        "BUILD.tools",
        "runfiles.cc",
        "runfiles.h",
        "runfiles.py",
        "//src/tools/runfiles/java/com/google/devtools/build/runfiles:embedded_tools",
    ],
    visibility = ["//src:__pkg__"],
)

py_library(
    name = "py-runfiles",
    srcs = ["runfiles.py"],
)

py_test(
    name = "py-runfiles-test",
    srcs = ["runfiles_test.py"],
    main = "runfiles_test.py",
    deps = [":py-runfiles"],
)

cc_library(
    name = "cc-runfiles",
    srcs = ["runfiles.cc"],
    hdrs = ["runfiles.h"],
    # This library is available to clients under
    # @bazel_tools//tools/runfiles:cc-runfiles, with the same source files.
    # The include statement in runfiles.cc that includes runfiles.h must work
    # both here in the //src/tools/runfiles package, and in the
    # @bazel_tools//tools/runfiles package.
    # runfiles.cc includes "tools/runfiles/runfiles.h" so we need to tell the
    # compiler to prepend "src" to it so the include path is valid.
    # Alternatively we could omit this "copts" attribute here and add some
    # include path manipulating attributes to
    # @bazel_tools//tools/runfiles:cc-runfiles instead -- that would work too,
    # but I (laszlocsomor@) find this solution (i.e. the "copts" attribute on
    # this rule) to be simpler.
    copts = ["-Isrc"],
)

cc_test(
    name = "cc-runfiles-test",
    srcs = ["runfiles_test.cc"],
    deps = [
        ":cc-runfiles",
        "//src/main/cpp/util:file",
        "//third_party:gtest",
    ],
)

sh_library(
    name = "runfiles_sh_lib",
    srcs = ["runfiles.sh"],
)

sh_test(
    name = "runfiles_sh_test",
    srcs = select({
        "//src/conditions:windows": ["runfiles_windows_test.sh"],
        "//conditions:default": ["runfiles_posix_test.sh"],
    }),
    deps = [":runfiles_sh_lib"],
)

test_suite(
    name = "windows_tests",
    tags = [
        "-no_windows",
        "-slow",
    ],
)

test_suite(
    name = "all_windows_tests",
    tests = [
        ":windows_tests",
        "//src/tools/runfiles/java/com/google/devtools/build/runfiles:all_windows_tests",
    ],
    visibility = ["//src:__pkg__"],
)
