xref: /aosp_15_r20/external/bazelbuild-rules_go/go/def.bzl (revision 9bb1b549b6a84214c53be0924760be030e66b93a)
1# Copyright 2014 The Bazel Authors. All rights reserved.
2#
3# Licensed under the Apache License, Version 2.0 (the "License");
4# you may not use this file except in compliance with the License.
5# You may obtain a copy of the License at
6#
7#    http://www.apache.org/licenses/LICENSE-2.0
8#
9# Unless required by applicable law or agreed to in writing, software
10# distributed under the License is distributed on an "AS IS" BASIS,
11# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12# See the License for the specific language governing permissions and
13# limitations under the License.
14
15"""Public definitions for Go rules.
16
17All public Go rules, providers, and other definitions are imported and
18re-exported in this file. This allows the real location of definitions
19to change for easier maintenance.
20
21Definitions outside this file are private unless otherwise noted, and
22may change without notice.
23"""
24
25load(
26    "//go/private:context.bzl",
27    _go_context = "go_context",
28)
29load(
30    "//go/private:providers.bzl",
31    _GoArchive = "GoArchive",
32    _GoArchiveData = "GoArchiveData",
33    _GoLibrary = "GoLibrary",
34    _GoPath = "GoPath",
35    _GoSDK = "GoSDK",
36    _GoSource = "GoSource",
37)
38load(
39    "//go/private/rules:sdk.bzl",
40    _go_sdk = "go_sdk",
41)
42load(
43    "//go/private:go_toolchain.bzl",
44    _go_toolchain = "go_toolchain",
45)
46load(
47    "//go/private/rules:wrappers.bzl",
48    _go_binary_macro = "go_binary_macro",
49    _go_library_macro = "go_library_macro",
50    _go_test_macro = "go_test_macro",
51)
52load(
53    "//go/private/rules:source.bzl",
54    _go_source = "go_source",
55)
56load(
57    "//extras:embed_data.bzl",
58    _go_embed_data = "go_embed_data",
59)
60load(
61    "//extras:gomock.bzl",
62    _gomock = "gomock",
63)
64load(
65    "//go/private/tools:path.bzl",
66    _go_path = "go_path",
67)
68load(
69    "//go/private/rules:library.bzl",
70    _go_tool_library = "go_tool_library",
71)
72load(
73    "//go/private/rules:nogo.bzl",
74    _nogo = "nogo_wrapper",
75)
76load(
77    "//go/private/rules:cross.bzl",
78    _go_cross_binary = "go_cross_binary",
79)
80
81# TOOLS_NOGO is a list of all analysis passes in
82# golang.org/x/tools/go/analysis/passes.
83# This is not backward compatible, so use caution when depending on this --
84# new analyses may discover issues in existing builds.
85TOOLS_NOGO = [
86    "@org_golang_x_tools//go/analysis/passes/asmdecl:go_default_library",
87    "@org_golang_x_tools//go/analysis/passes/assign:go_default_library",
88    "@org_golang_x_tools//go/analysis/passes/atomic:go_default_library",
89    "@org_golang_x_tools//go/analysis/passes/atomicalign:go_default_library",
90    "@org_golang_x_tools//go/analysis/passes/bools:go_default_library",
91    "@org_golang_x_tools//go/analysis/passes/buildssa:go_default_library",
92    "@org_golang_x_tools//go/analysis/passes/buildtag:go_default_library",
93    # TODO(#2396): pass raw cgo sources to cgocall and re-enable.
94    # "@org_golang_x_tools//go/analysis/passes/cgocall:go_default_library",
95    "@org_golang_x_tools//go/analysis/passes/composite:go_default_library",
96    "@org_golang_x_tools//go/analysis/passes/copylock:go_default_library",
97    "@org_golang_x_tools//go/analysis/passes/ctrlflow:go_default_library",
98    "@org_golang_x_tools//go/analysis/passes/deepequalerrors:go_default_library",
99    "@org_golang_x_tools//go/analysis/passes/errorsas:go_default_library",
100    "@org_golang_x_tools//go/analysis/passes/findcall:go_default_library",
101    "@org_golang_x_tools//go/analysis/passes/httpresponse:go_default_library",
102    "@org_golang_x_tools//go/analysis/passes/ifaceassert:go_default_library",
103    "@org_golang_x_tools//go/analysis/passes/inspect:go_default_library",
104    "@org_golang_x_tools//go/analysis/passes/loopclosure:go_default_library",
105    "@org_golang_x_tools//go/analysis/passes/lostcancel:go_default_library",
106    "@org_golang_x_tools//go/analysis/passes/nilfunc:go_default_library",
107    "@org_golang_x_tools//go/analysis/passes/nilness:go_default_library",
108    "@org_golang_x_tools//go/analysis/passes/pkgfact:go_default_library",
109    "@org_golang_x_tools//go/analysis/passes/printf:go_default_library",
110    "@org_golang_x_tools//go/analysis/passes/shadow:go_default_library",
111    "@org_golang_x_tools//go/analysis/passes/shift:go_default_library",
112    "@org_golang_x_tools//go/analysis/passes/sortslice:go_default_library",
113    "@org_golang_x_tools//go/analysis/passes/stdmethods:go_default_library",
114    "@org_golang_x_tools//go/analysis/passes/stringintconv:go_default_library",
115    "@org_golang_x_tools//go/analysis/passes/structtag:go_default_library",
116    "@org_golang_x_tools//go/analysis/passes/testinggoroutine:go_default_library",
117    "@org_golang_x_tools//go/analysis/passes/tests:go_default_library",
118    "@org_golang_x_tools//go/analysis/passes/unmarshal:go_default_library",
119    "@org_golang_x_tools//go/analysis/passes/unreachable:go_default_library",
120    "@org_golang_x_tools//go/analysis/passes/unsafeptr:go_default_library",
121    "@org_golang_x_tools//go/analysis/passes/unusedresult:go_default_library",
122]
123
124# Current version or next version to be tagged. Gazelle and other tools may
125# check this to determine compatibility.
126RULES_GO_VERSION = "0.39.1"
127
128go_context = _go_context
129go_embed_data = _go_embed_data
130gomock = _gomock
131go_sdk = _go_sdk
132go_tool_library = _go_tool_library
133go_toolchain = _go_toolchain
134nogo = _nogo
135
136# See go/providers.rst#GoLibrary for full documentation.
137GoLibrary = _GoLibrary
138
139# See go/providers.rst#GoSource for full documentation.
140GoSource = _GoSource
141
142# See go/providers.rst#GoPath for full documentation.
143GoPath = _GoPath
144
145# See go/providers.rst#GoArchive for full documentation.
146GoArchive = _GoArchive
147
148# See go/providers.rst#GoArchiveData for full documentation.
149GoArchiveData = _GoArchiveData
150
151# See go/providers.rst#GoSDK for full documentation.
152GoSDK = _GoSDK
153
154# See docs/go/core/rules.md#go_library for full documentation.
155go_library = _go_library_macro
156
157# See docs/go/core/rules.md#go_binary for full documentation.
158go_binary = _go_binary_macro
159
160# See docs/go/core/rules.md#go_test for full documentation.
161go_test = _go_test_macro
162
163# See docs/go/core/rules.md#go_test for full documentation.
164go_source = _go_source
165
166# See docs/go/core/rules.md#go_path for full documentation.
167go_path = _go_path
168
169# See docs/go/core/rules.md#go_cross_binary for full documentation.
170go_cross_binary = _go_cross_binary
171
172def go_vet_test(*_args, **_kwargs):
173    fail("The go_vet_test rule has been removed. Please migrate to nogo instead, which supports vet tests.")
174
175def go_rule(**_kwargs):
176    fail("The go_rule function has been removed. Use rule directly instead. See https://github.com/bazelbuild/rules_go/blob/master/go/toolchains.rst#writing-new-go-rules")
177
178def go_rules_dependencies():
179    _moved("go_rules_dependencies")
180
181def go_register_toolchains(**_kwargs):
182    _moved("go_register_toolchains")
183
184def go_download_sdk(**_kwargs):
185    _moved("go_download_sdk")
186
187def go_host_sdk(**_kwargs):
188    _moved("go_host_sdk")
189
190def go_local_sdk(**_kwargs):
191    _moved("go_local_sdk")
192
193def go_wrap_sdk(**_kwargs):
194    _moved("go_wrap_sdK")
195
196def _moved(name):
197    fail(name + " has moved. Please load from " +
198         " @io_bazel_rules_go//go:deps.bzl instead of def.bzl.")
199