Skip to content

Commit

Permalink
Use triple() function from triple.bzl
Browse files Browse the repository at this point in the history
  • Loading branch information
Denis Koroskin authored and korDen committed Mar 9, 2022
1 parent 75ea0ae commit 0c44611
Show file tree
Hide file tree
Showing 2 changed files with 15 additions and 61 deletions.
4 changes: 4 additions & 0 deletions rust/platform/triple.bzl
Original file line number Diff line number Diff line change
Expand Up @@ -38,6 +38,10 @@ def triple(triple):
system = component_parts[2]
abi = None

if system == "androideabi":
system = "android"
abi = "eabi"

if len(component_parts) == 4:
abi = component_parts[3]

Expand Down
72 changes: 11 additions & 61 deletions rust/platform/triple_mappings.bzl
Original file line number Diff line number Diff line change
@@ -1,5 +1,7 @@
"""Helpers for constructing supported Rust platform triples"""

load("//rust/platform:triple.bzl", "triple")

# All T1 Platforms should be supported, but aren't, see inline notes.
SUPPORTED_T1_PLATFORM_TRIPLES = [
"i686-apple-darwin",
Expand Down Expand Up @@ -196,68 +198,16 @@ def abi_to_constraints(abi):
# figure out how they're doing this
return []

def triple_to_struct(triple):
if triple == "wasm32-wasi":
return struct(
cpu_arch = "wasi",
vendor = None,
system = "wasi",
abi = None,
)

component_parts = triple.split("-")
if len(component_parts) < 3:
fail("Expected target triple to contain at least three sections separated by '-'")

cpu_arch = component_parts[0]
vendor = component_parts[1]
system = component_parts[2]
if system == "androideabi":
system = "android"

abi = None
if len(component_parts) >= 4:
abi = component_parts[3]

return struct(
cpu_arch = cpu_arch,
vendor = vendor,
system = system,
abi = abi,
)

def triple_to_system(triple):
def triple_to_system(target_triple):
"""Returns a system name for a given platform triple
Args:
triple (str): A platform triple. eg: `x86_64-unknown-linux-gnu`
target_triple (str): A platform triple. eg: `x86_64-unknown-linux-gnu`
Returns:
str: A system name
"""
return triple_to_struct(triple).system

def triple_to_arch(triple):
"""Returns a system architecture name for a given platform triple
Args:
triple (str): A platform triple. eg: `x86_64-unknown-linux-gnu`
Returns:
str: A cpu architecture
"""
return triple_to_struct(triple).cpu_arch

def triple_to_abi(triple):
"""Returns a system abi name for a given platform triple
Args:
triple (str): A platform triple. eg: `x86_64-unknown-linux-gnu`
Returns:
str: The triple's abi
"""
triple_to_struct(triple).abi
return triple(target_triple).system

def system_to_dylib_ext(system):
return _SYSTEM_TO_DYLIB_EXT[system]
Expand All @@ -271,30 +221,30 @@ def system_to_binary_ext(system):
def system_to_stdlib_linkflags(system):
return _SYSTEM_TO_STDLIB_LINKFLAGS[system]

def triple_to_constraint_set(triple):
def triple_to_constraint_set(target_triple):
"""Returns a set of constraints for a given platform triple
Args:
triple (str): A platform triple. eg: `x86_64-unknown-linux-gnu`
target_triple (str): A platform triple. eg: `x86_64-unknown-linux-gnu`
Returns:
list: A list of constraints (each represented by a list of strings)
"""
if triple == "wasm32-wasi":
if target_triple == "wasm32-wasi":
return [
"@rules_rust//rust/platform/cpu:wasm32",
"@rules_rust//rust/platform/os:wasi",
]
if triple == "wasm32-unknown-unknown":
if target_triple == "wasm32-unknown-unknown":
return [
"@rules_rust//rust/platform/cpu:wasm32",
"@rules_rust//rust/platform/os:unknown",
]

triple_struct = triple_to_struct(triple)
triple_struct = triple(target_triple)

constraint_set = []
constraint_set += cpu_arch_to_constraints(triple_struct.cpu_arch)
constraint_set += cpu_arch_to_constraints(triple_struct.arch)
constraint_set += vendor_to_constraints(triple_struct.vendor)
constraint_set += system_to_constraints(triple_struct.system)
constraint_set += abi_to_constraints(triple_struct.abi)
Expand Down

0 comments on commit 0c44611

Please sign in to comment.