blob: 60a5e8d766c3e034b0616d8f7616f52616251435 [file] [log] [blame]
load("@bazel_skylib//:bzl_library.bzl", "bzl_library")
load("//python:py_test.bzl", "py_test")
load("//python/private:util.bzl", "IS_BAZEL_7_OR_HIGHER") # buildifier: disable=bzl-visibility
load("//sphinxdocs:sphinx.bzl", "sphinx_build_binary", "sphinx_docs")
load("//sphinxdocs:sphinx_stardoc.bzl", "sphinx_stardoc", "sphinx_stardocs")
# We only build for Linux and Mac because:
# 1. The actual doc process only runs on Linux
# 2. Mac is a common development platform, and is close enough to Linux
# it's feasible to make work.
# Making CI happy under Windows is too much of a headache, though, so we don't
# bother with that.
_TARGET_COMPATIBLE_WITH = select({
"@platforms//os:linux": [],
"@platforms//os:macos": [],
"//conditions:default": ["@platforms//:incompatible"],
}) if IS_BAZEL_7_OR_HIGHER else ["@platforms//:incompatible"]
sphinx_docs(
name = "docs",
srcs = glob(
include = [
"*.md",
],
),
config = "conf.py",
formats = [
"html",
],
renamed_srcs = {
"//sphinxdocs/inventories:bazel_inventory": "bazel_inventory.inv",
},
sphinx = ":sphinx-build",
strip_prefix = package_name() + "/",
target_compatible_with = _TARGET_COMPATIBLE_WITH,
deps = [
":bzl_function",
":bzl_providers",
":simple_bzl_docs",
],
)
sphinx_stardocs(
name = "simple_bzl_docs",
srcs = [
":bzl_rule_bzl",
":bzl_typedef_bzl",
],
target_compatible_with = _TARGET_COMPATIBLE_WITH,
)
sphinx_stardoc(
name = "bzl_function",
src = ":bzl_function.bzl",
target_compatible_with = _TARGET_COMPATIBLE_WITH,
deps = [":func_and_providers_bzl"],
)
sphinx_stardoc(
name = "bzl_providers",
src = ":bzl_providers.bzl",
prefix = "addprefix_",
target_compatible_with = _TARGET_COMPATIBLE_WITH,
deps = [":func_and_providers_bzl"],
)
# A bzl_library with multiple sources
bzl_library(
name = "func_and_providers_bzl",
srcs = [
"bzl_function.bzl",
"bzl_providers.bzl",
],
)
bzl_library(
name = "bzl_rule_bzl",
srcs = ["bzl_rule.bzl"],
deps = [":func_and_providers_bzl"],
)
bzl_library(
name = "bzl_typedef_bzl",
srcs = ["bzl_typedef.bzl"],
)
sphinx_build_binary(
name = "sphinx-build",
tags = ["manual"], # Only needed as part of sphinx doc building
deps = [
"//sphinxdocs/src/sphinx_bzl",
"@dev_pip//myst_parser",
"@dev_pip//sphinx",
"@dev_pip//typing_extensions", # Needed by sphinx_stardoc
],
)
py_test(
name = "sphinx_output_test",
srcs = ["sphinx_output_test.py"],
data = [":docs"],
deps = ["@dev_pip//absl_py"],
)