diff --git a/go/rules.bzl b/go/rules.bzl index 4ef798001d2..e26dd57bf44 100644 --- a/go/rules.bzl +++ b/go/rules.bzl @@ -1,5 +1,37 @@ -load("@rules_go//go:def.bzl", "go_binary") -load("//misc/bazel:universal_binary.bzl", "wrap_as_universal_binary") +load("@rules_go//go:def.bzl", "go_binary", "go_cross_binary") -def codeql_go_binary(**kwargs): - wrap_as_universal_binary(go_binary, **kwargs) +def codeql_go_binary(*, name, visibility = None, **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, + ) diff --git a/misc/bazel/universal_binary.bzl b/misc/bazel/universal_binary.bzl deleted file mode 100644 index 85881356d0e..00000000000 --- a/misc/bazel/universal_binary.bzl +++ /dev/null @@ -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, - )