# -*- python -*-

# This file is named BUILD.bazel instead of the more typical BUILD, so that on
# OSX it won't conflict with a build artifacts directory named "build".

load("//tools/skylark:py.bzl", "py_library")
load("@drake//tools/install:install.bzl", "install", "install_test")
load("//tools/lint:lint.bzl", "add_lint_tests")

package(
    default_visibility = ["//visibility:public"],
)

exports_files([
    "CPPLINT.cfg",
    ".bazelproject",
    ".clang-format",
    ".drake-find_resource-sentinel",
    "package.xml",
])

# Drake's top-level module; all drake_py_stuff rules add this to deps.
# (We use py_library here because drake_py_library would be circular.)
# This file should NOT be installed (see commits in __init__.py).
py_library(
    name = "module_py",
    srcs = ["__init__.py"],
)

# Expose shared library for (a) installed binaries, (b) Drake Python bindings,
# and (c) downstream C++ libraries which will also provide Python bindings.
alias(
    name = "drake_shared_library",
    actual = "//tools/install/libdrake:drake_shared_library",
    visibility = ["//visibility:public"],
)

# To create a manifest of all installed files for use by drake_bazel_installed,
# we declare an install target that contains almost everything -- but it can't
# contain the bazel logic that is generated based on the manifest, so we'll add
# that in below in the final :install target.
install(
    name = "all_install_targets_except_bazel",
    data = ["package.xml"],
    docs = ["LICENSE.TXT"],
    visibility = ["//tools/install/bazel:__pkg__"],
    deps = [
        "//bindings/pydrake:install",
        "//common:install",
        "//examples:install",
        "//geometry:install",
        "//lcmtypes:install",
        "//manipulation/models:install_data",
        "//setup:install",
        "//third_party/com_github_finetjul_bender:install",
        "//third_party/com_github_jbeder_yaml_cpp:install",
        "//tools/install/cmake:install",
        "//tools/install/libdrake:install",
        "//tools/workspace:install_external_packages",
    ],
)

_INSTALL_TEST_COMMANDS = "install_test_commands"

install(
    name = "install",
    install_tests_script = _INSTALL_TEST_COMMANDS,
    deps = [
        ":all_install_targets_except_bazel",
        "//tools/install/bazel:install",
    ],
)

install_test(
    name = "install_test",
    args = ["--install_tests_filename=$(location :{})".format(
        _INSTALL_TEST_COMMANDS,
    )],
    data = [
        ":install",
        _INSTALL_TEST_COMMANDS,
    ],
    tags = [
        # Running acceptance tests under coverage (kcov) can fail for presently
        # unknown reasons when it comes to drake_visualizer, so skip them.
        "no_kcov",
        # Running acceptance tests under Valgrind tools is extremely slow and
        # of limited value, so skip them.
        "no_valgrind_tools",
    ],
)

add_lint_tests()
