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