1load("@io_bazel_rules_go//go/private/rules:binary.bzl", "go_tool_binary")
2load("@io_bazel_rules_go//go/private/rules:sdk.bzl", "package_list")
3load("@io_bazel_rules_go//go/private/rules:transition.bzl", "non_go_reset_target")
4load("@io_bazel_rules_go//go/private:common.bzl", "RULES_GO_STDLIB_PREFIX")
5load("@io_bazel_rules_go//go/private:go_toolchain.bzl", "declare_go_toolchains")
6load("@io_bazel_rules_go//go:def.bzl", "go_sdk")
7
8package(default_visibility = ["//visibility:public"])
9
10filegroup(
11 name = "libs",
12 srcs = glob(
13 ["pkg/{goos}_{goarch}/**/*.a"],
14 allow_empty = True,
15 exclude = ["pkg/{goos}_{goarch}/**/cmd/**"],
16 ),
17)
18
19filegroup(
20 name = "headers",
21 srcs = glob(["pkg/include/*.h"]),
22)
23
24filegroup(
25 name = "srcs",
26 srcs = glob(["src/**"]),
27)
28
29filegroup(
30 name = "tools",
31 srcs = glob([
32 "pkg/tool/**",
33 "bin/gofmt*",
34 ]) + [
35 ":config",
36 ],
37)
38
39filegroup(
40 name = "config",
41 srcs = glob(
42 ["go.env*"],
43 allow_empty = True,
44 ),
45)
46
47go_sdk(
48 name = "go_sdk",
49 srcs = [":srcs"],
50 experiments = {experiments},
51 go = "bin/go{exe}",
52 goarch = "{goarch}",
53 goos = "{goos}",
54 headers = [":headers"],
55 libs = [":libs"],
56 package_list = ":package_list",
57 root_file = "ROOT",
58 tools = [":tools"],
59 version = "{version}",
60)
61
62go_tool_binary(
63 name = "builder",
64 srcs = ["@io_bazel_rules_go//go/tools/builders:builder_srcs"],
65 ldflags = "-X main.rulesGoStdlibPrefix={}".format(RULES_GO_STDLIB_PREFIX),
66 sdk = ":go_sdk",
67)
68
69non_go_reset_target(
70 name = "builder_reset",
71 dep = ":builder",
72)
73
74# TODO(jayconrod): Gazelle depends on this file directly. This dependency
75# should be broken, and this rule should be folded into go_sdk.
76package_list(
77 name = "package_list",
78 srcs = [":srcs"],
79 out = "packages.txt",
80 root_file = "ROOT",
81)
82
83declare_go_toolchains(
84 builder = ":builder_reset",
85 host_goos = "{goos}",
86 sdk = ":go_sdk",
87)
88
89filegroup(
90 name = "files",
91 srcs = glob([
92 "bin/go*",
93 "src/**",
94 "pkg/**",
95 ]) + [
96 ":config",
97 ],
98)
99
100exports_files(
101 glob([
102 "lib/time/zoneinfo.zip",
103 "misc/wasm/**",
104 ]),
105 visibility = ["//visibility:public"],
106)
View as plain text