mirror of
https://github.com/github/codeql.git
synced 2025-12-16 08:43:11 +01:00
Bazel/Go: use native cross compilation for fat binaries
This commit is contained in:
40
go/rules.bzl
40
go/rules.bzl
@@ -1,5 +1,37 @@
|
|||||||
load("@rules_go//go:def.bzl", "go_binary")
|
load("@rules_go//go:def.bzl", "go_binary", "go_cross_binary")
|
||||||
load("//misc/bazel:universal_binary.bzl", "wrap_as_universal_binary")
|
|
||||||
|
|
||||||
def codeql_go_binary(**kwargs):
|
def codeql_go_binary(*, name, visibility = None, **kwargs):
|
||||||
wrap_as_universal_binary(go_binary, **kwargs)
|
def internal(prefix = "internal"):
|
||||||
|
return "%s/%s" % (prefix, name)
|
||||||
|
|
||||||
|
go_binary(
|
||||||
|
name = internal(),
|
||||||
|
visibility = ["//visibility:private"],
|
||||||
|
**kwargs
|
||||||
|
)
|
||||||
|
macos_targets = ("darwin_arm64", "darwin_amd64")
|
||||||
|
for target in macos_targets:
|
||||||
|
go_cross_binary(
|
||||||
|
name = internal(target),
|
||||||
|
platform = "@rules_go//go/toolchain:%s" % target,
|
||||||
|
target = internal(),
|
||||||
|
target_compatible_with = ["@platforms//os:macos"],
|
||||||
|
visibility = ["//visibility:private"],
|
||||||
|
)
|
||||||
|
native.genrule(
|
||||||
|
name = internal("universal"),
|
||||||
|
outs = [internal("universal_")],
|
||||||
|
srcs = [internal(t) for t in macos_targets],
|
||||||
|
target_compatible_with = ["@platforms//os:macos"],
|
||||||
|
executable = True,
|
||||||
|
visibility = ["//visibility:private"],
|
||||||
|
cmd = "lipo -create $(SRCS) -output $@",
|
||||||
|
)
|
||||||
|
native.alias(
|
||||||
|
name = name,
|
||||||
|
actual = select({
|
||||||
|
"@platforms//os:macos": internal("universal"),
|
||||||
|
"//conditions:default": internal(),
|
||||||
|
}),
|
||||||
|
visibility = visibility,
|
||||||
|
)
|
||||||
|
|||||||
@@ -1,24 +0,0 @@
|
|||||||
load("@apple_support//rules:universal_binary.bzl", _universal_binary = "universal_binary")
|
|
||||||
|
|
||||||
def wrap_as_universal_binary(rule, *, name, visibility = None, **kwargs):
|
|
||||||
internal_name = "internal/%s" % name
|
|
||||||
universal_name = "universal/%s" % name
|
|
||||||
rule(
|
|
||||||
name = internal_name,
|
|
||||||
visibility = ["//visibility:private"],
|
|
||||||
**kwargs
|
|
||||||
)
|
|
||||||
_universal_binary(
|
|
||||||
name = universal_name,
|
|
||||||
target_compatible_with = ["@platforms//os:macos"],
|
|
||||||
binary = internal_name,
|
|
||||||
visibility = ["//visibility:private"],
|
|
||||||
)
|
|
||||||
native.alias(
|
|
||||||
name = name,
|
|
||||||
actual = select({
|
|
||||||
"@platforms//os:macos": universal_name,
|
|
||||||
"//conditions:default": internal_name,
|
|
||||||
}),
|
|
||||||
visibility = visibility,
|
|
||||||
)
|
|
||||||
Reference in New Issue
Block a user