xref: /aosp_15_r20/external/bazelbuild-platforms/host/extension.bzl (revision ef3a692c0746f7dadd4fb3b5728d17696f151f9c)
1*ef3a692cSMatthias Maennichdef _translate_cpu(arch):
2*ef3a692cSMatthias Maennich    if arch in ["i386", "i486", "i586", "i686", "i786", "x86"]:
3*ef3a692cSMatthias Maennich        return "x86_32"
4*ef3a692cSMatthias Maennich    if arch in ["amd64", "x86_64", "x64"]:
5*ef3a692cSMatthias Maennich        return "x86_64"
6*ef3a692cSMatthias Maennich    if arch in ["ppc", "ppc64", "ppc64le"]:
7*ef3a692cSMatthias Maennich        return "ppc"
8*ef3a692cSMatthias Maennich    if arch in ["arm", "armv7l"]:
9*ef3a692cSMatthias Maennich        return "arm"
10*ef3a692cSMatthias Maennich    if arch in ["aarch64"]:
11*ef3a692cSMatthias Maennich        return "aarch64"
12*ef3a692cSMatthias Maennich    if arch in ["s390x", "s390"]:
13*ef3a692cSMatthias Maennich        return "s390x"
14*ef3a692cSMatthias Maennich    if arch in ["mips64el", "mips64"]:
15*ef3a692cSMatthias Maennich        return "mips64"
16*ef3a692cSMatthias Maennich    if arch in ["riscv64"]:
17*ef3a692cSMatthias Maennich        return "riscv64"
18*ef3a692cSMatthias Maennich    return None
19*ef3a692cSMatthias Maennich
20*ef3a692cSMatthias Maennichdef _translate_os(os):
21*ef3a692cSMatthias Maennich    if os.startswith("mac os"):
22*ef3a692cSMatthias Maennich        return "osx"
23*ef3a692cSMatthias Maennich    if os.startswith("freebsd"):
24*ef3a692cSMatthias Maennich        return "freebsd"
25*ef3a692cSMatthias Maennich    if os.startswith("openbsd"):
26*ef3a692cSMatthias Maennich        return "openbsd"
27*ef3a692cSMatthias Maennich    if os.startswith("linux"):
28*ef3a692cSMatthias Maennich        return "linux"
29*ef3a692cSMatthias Maennich    if os.startswith("windows"):
30*ef3a692cSMatthias Maennich        return "windows"
31*ef3a692cSMatthias Maennich    return None
32*ef3a692cSMatthias Maennich
33*ef3a692cSMatthias Maennichdef _host_platform_repo_impl(rctx):
34*ef3a692cSMatthias Maennich    cpu = _translate_cpu(rctx.os.arch)
35*ef3a692cSMatthias Maennich    os = _translate_os(rctx.os.name)
36*ef3a692cSMatthias Maennich
37*ef3a692cSMatthias Maennich    cpu = "" if cpu == None else "  '@platforms//cpu:%s',\n" % cpu
38*ef3a692cSMatthias Maennich    os = "" if os == None else "  '@platforms//os:%s',\n" % os
39*ef3a692cSMatthias Maennich
40*ef3a692cSMatthias Maennich    rctx.file("BUILD.bazel", """
41*ef3a692cSMatthias Maennich# DO NOT EDIT: automatically generated BUILD file
42*ef3a692cSMatthias Maennichexports_files(["constraints.bzl"])
43*ef3a692cSMatthias Maennich""")
44*ef3a692cSMatthias Maennich
45*ef3a692cSMatthias Maennich    rctx.file("constraints.bzl", """
46*ef3a692cSMatthias Maennich# DO NOT EDIT: automatically generated constraints list
47*ef3a692cSMatthias MaennichHOST_CONSTRAINTS = [
48*ef3a692cSMatthias Maennich%s%s]
49*ef3a692cSMatthias Maennich""" % (cpu, os))
50*ef3a692cSMatthias Maennich
51*ef3a692cSMatthias Maennichhost_platform_repo = repository_rule(
52*ef3a692cSMatthias Maennich    implementation = _host_platform_repo_impl,
53*ef3a692cSMatthias Maennich    doc = """Generates constraints for the host platform. The constraints.bzl
54*ef3a692cSMatthias Maennichfile contains a single <code>HOST_CONSTRAINTS</code> variable, which is a
55*ef3a692cSMatthias Maennichlist of strings, each of which is a label to a <code>constraint_value</code>
56*ef3a692cSMatthias Maennichfor the host platform.""",
57*ef3a692cSMatthias Maennich)
58*ef3a692cSMatthias Maennich
59*ef3a692cSMatthias Maennichdef _host_platform_impl(_mctx):
60*ef3a692cSMatthias Maennich    host_platform_repo(name = "host_platform")
61*ef3a692cSMatthias Maennich
62*ef3a692cSMatthias Maennichhost_platform = module_extension(
63*ef3a692cSMatthias Maennich    implementation = _host_platform_impl,
64*ef3a692cSMatthias Maennich    doc = """Generates a <code>host_platform_repo</code> repo named
65*ef3a692cSMatthias Maennich<code>host_platform</code>, containing constraints for the host platform.""",
66*ef3a692cSMatthias Maennich)
67*ef3a692cSMatthias Maennich
68