...

Text file src/github.com/bazelbuild/rules_go/BUILD.bazel

Documentation: github.com/bazelbuild/rules_go

     1load(
     2    "//go/private/tools:lines_sorted_test.bzl",
     3    "lines_sorted_test",
     4)
     5load(
     6    "//go/private/rules:nogo.bzl",
     7    "nogo",
     8)
     9load(
    10    "//go/private/rules:info.bzl",
    11    "go_info",
    12)
    13load(
    14    "//go:def.bzl",
    15    "TOOLS_NOGO",
    16)
    17load(
    18    "//go/private:context.bzl",
    19    "cgo_context_data",
    20    "cgo_context_data_proxy",
    21    "go_config",
    22    "go_context_data",
    23)
    24load(
    25    "//go/private/rules:stdlib.bzl",
    26    "stdlib",
    27)
    28
    29# gazelle:prefix github.com/bazelbuild/rules_go
    30# gazelle:exclude tests
    31# gazelle:exclude third_party
    32# gazelle:exclude go/tools/builders
    33# gazelle:exclude go/tools/coverdata
    34# gazelle:exclude go/tools/fetch_repo
    35# gazelle:exclude go/tools/windows-testrunner
    36# gazelle:go_naming_convention import_alias
    37
    38# TODO(jayconrod): add a gazelle rule so gazelle can be run automatically.
    39# It can't go here though, because it would break anything that depends on
    40# rules_go but not Gazelle, including our own go_bazel_tests.
    41
    42stdlib(
    43    name = "stdlib",
    44    cgo_context_data = select({
    45        "//go/platform:internal_cgo_off": None,
    46        "//conditions:default": ":cgo_context_data",
    47    }),
    48    visibility = ["//visibility:public"],
    49)
    50
    51# default_nogo is the nogo target that nogo references by default. It
    52# does not analyze anything, which means no binary is built or run
    53# at compile time.
    54filegroup(
    55    name = "default_nogo",
    56    visibility = ["//visibility:public"],
    57)
    58
    59# tools_nogo includes all of the analysis passes in
    60# golang.org/x/tools/go/analysis/passes.
    61# This is not backward compatible, so use caution when depending on this --
    62# new analyses may discover issues in existing builds.
    63nogo(
    64    name = "tools_nogo",
    65    visibility = ["//visibility:public"],
    66    deps = TOOLS_NOGO,
    67)
    68
    69# go_context_data collects build options and is depended on by all Go targets.
    70# It may depend on cgo_context_data if CGo isn't disabled.
    71go_context_data(
    72    name = "go_context_data",
    73    cgo_context_data = select({
    74        "//go/platform:internal_cgo_off": None,
    75        "//conditions:default": ":cgo_context_data",
    76    }),
    77    coverdata = "//go/tools/coverdata",
    78    go_config = ":go_config",
    79    nogo = "@io_bazel_rules_nogo//:nogo",
    80    stdlib = ":stdlib",
    81    visibility = ["//visibility:public"],
    82)
    83
    84# cgo_context_data collects information about the C/C++ toolchain.
    85# go_context_data depends if cgo is enabled in the target configuration.
    86cgo_context_data(
    87    name = "cgo_context_data",
    88    visibility = ["//visibility:private"],
    89)
    90
    91# cgo_context_data_proxy depends on cgo_context_data if cgo is enabled and
    92# forwards its provider. Rule attributes may depend on this, since they cannot
    93# use select.
    94cgo_context_data_proxy(
    95    name = "cgo_context_data_proxy",
    96    actual = select({
    97        "//go/platform:internal_cgo_off": None,
    98        "//conditions:default": ":cgo_context_data",
    99    }),
   100    visibility = ["//visibility:public"],
   101)
   102
   103# go_config collects information about build settings in the current
   104# configuration. go_context_data depends on this so that rules don't need
   105# to depend on all build settings directly.
   106go_config(
   107    name = "go_config",
   108    amd64 = select({
   109        "//go/constraints/amd64:v2": "v2",
   110        "//go/constraints/amd64:v3": "v3",
   111        "//go/constraints/amd64:v4": "v4",
   112        # The default is v1.
   113        "//conditions:default": None,
   114    }),
   115    arm = select({
   116        "//go/constraints/arm:5": "5",
   117        "//go/constraints/arm:6": "6",
   118        "//go/constraints/arm:7": "7",
   119        "//conditions:default": None,
   120    }),
   121    cover_format = "//go/config:cover_format",
   122    # Always include debug symbols with -c dbg.
   123    debug = select({
   124        "//go/private:is_compilation_mode_dbg": "//go/private:always_true",
   125        "//conditions:default": "//go/config:debug",
   126    }),
   127    gc_goopts = "//go/config:gc_goopts",
   128    gc_linkopts = "//go/config:gc_linkopts",
   129    gotags = "//go/config:tags",
   130    linkmode = "//go/config:linkmode",
   131    msan = "//go/config:msan",
   132    pgoprofile = "//go/config:pgoprofile",
   133    pure = "//go/config:pure",
   134    race = "//go/config:race",
   135    stamp = select({
   136        "//go/private:stamp": True,
   137        "//conditions:default": False,
   138    }),
   139    static = "//go/config:static",
   140    strip = select({
   141        "//go/private:is_strip_always": True,
   142        "//go/private:is_strip_sometimes_fastbuild": True,
   143        "//conditions:default": False,
   144    }),
   145    visibility = ["//visibility:public"],
   146)
   147
   148lines_sorted_test(
   149    name = "contributors_sorted_test",
   150    size = "small",
   151    cmd = "grep -v '^#' $< | grep -v '^$$' >$@",
   152    error_message = "Contributors must be sorted by first name",
   153    file = "CONTRIBUTORS",
   154)
   155
   156lines_sorted_test(
   157    name = "authors_sorted_test",
   158    size = "small",
   159    cmd = "grep -v '^#' $< | grep -v '^$$' >$@",
   160    error_message = "Authors must be sorted by first name",
   161    file = "AUTHORS",
   162)
   163
   164# AUTHORS is used as an anchor point for the directory in tests and the
   165# license can be consumed by depending projects.
   166exports_files([
   167    "AUTHORS",
   168    "LICENSE.txt",
   169])
   170
   171go_info()
   172
   173filegroup(
   174    name = "all_files",
   175    testonly = True,
   176    srcs = [
   177        "BUILD.bazel",
   178        "MODULE.bazel",
   179        "WORKSPACE",
   180        "go.mod",
   181        "go.sum",
   182        "//extras:all_files",
   183        "//go:all_files",
   184        "//proto:all_files",
   185        "//third_party:all_files",
   186    ],
   187    visibility = ["//visibility:public"],
   188)

View as plain text