xref: /aosp_15_r20/external/skia/bazel/utils/BUILD.bazel (revision c8dee2aa9b3f27cf6c858bd81872bdeb2c07ed17)
1*c8dee2aaSAndroid Build Coastguard Worker# A helper function to get the go platform string of the Bazel host.
2*c8dee2aaSAndroid Build Coastguard Worker# This can be used to do cross-platform go compilations.
3*c8dee2aaSAndroid Build Coastguard Worker# Example:
4*c8dee2aaSAndroid Build Coastguard Worker#    $ bazelisk run //bazel:go_platform
5*c8dee2aaSAndroid Build Coastguard Worker#    darwin_arm64
6*c8dee2aaSAndroid Build Coastguard Workerpy_binary(
7*c8dee2aaSAndroid Build Coastguard Worker    name = "go_platform",
8*c8dee2aaSAndroid Build Coastguard Worker    srcs = ["go_platform.py"],
9*c8dee2aaSAndroid Build Coastguard Worker    data = ["@go_sdk//:bin/go"],
10*c8dee2aaSAndroid Build Coastguard Worker    tags = ["no-remote"],  # Need the platform of the host
11*c8dee2aaSAndroid Build Coastguard Worker)
12*c8dee2aaSAndroid Build Coastguard Worker
13*c8dee2aaSAndroid Build Coastguard Worker_GO_PLATFORM = """
14*c8dee2aaSAndroid Build Coastguard Workerimport os
15*c8dee2aaSAndroid Build Coastguard Workerimport subprocess
16*c8dee2aaSAndroid Build Coastguard Worker
17*c8dee2aaSAndroid Build Coastguard Worker# https://bazel.build/reference/be/make-variables#predefined_label_variables
18*c8dee2aaSAndroid Build Coastguard Workergo_exe = os.path.abspath("$(execpath @go_sdk//:bin/go)")
19*c8dee2aaSAndroid Build Coastguard Worker
20*c8dee2aaSAndroid Build Coastguard Workerresult = subprocess.run([
21*c8dee2aaSAndroid Build Coastguard Worker    go_exe,
22*c8dee2aaSAndroid Build Coastguard Worker    "version",
23*c8dee2aaSAndroid Build Coastguard Worker], capture_output=True, encoding="utf-8")
24*c8dee2aaSAndroid Build Coastguard Worker
25*c8dee2aaSAndroid Build Coastguard Worker# e.g. go version go1.18 darwin/arm64
26*c8dee2aaSAndroid Build Coastguard Workeros_arch = result.stdout.strip().split(" ")[3]
27*c8dee2aaSAndroid Build Coastguard Worker# e.g. darwin/arm64
28*c8dee2aaSAndroid Build Coastguard Workerprint(os_arch.replace("/", "_"))
29*c8dee2aaSAndroid Build Coastguard Worker"""
30*c8dee2aaSAndroid Build Coastguard Worker
31*c8dee2aaSAndroid Build Coastguard Workergenrule(
32*c8dee2aaSAndroid Build Coastguard Worker    name = "create_go_platform_script",
33*c8dee2aaSAndroid Build Coastguard Worker    outs = ["go_platform.py"],
34*c8dee2aaSAndroid Build Coastguard Worker    cmd = "echo '%s' > $@" % _GO_PLATFORM,
35*c8dee2aaSAndroid Build Coastguard Worker    tools = [
36*c8dee2aaSAndroid Build Coastguard Worker        "@go_sdk//:bin/go",
37*c8dee2aaSAndroid Build Coastguard Worker    ],
38*c8dee2aaSAndroid Build Coastguard Worker)
39