From 0c446118f1cb86500ddb8c1d5bc3f78368283be3 Mon Sep 17 00:00:00 2001 From: Denis Koroskin Date: Tue, 8 Mar 2022 20:57:58 -0800 Subject: [PATCH] Use triple() function from triple.bzl --- rust/platform/triple.bzl | 4 ++ rust/platform/triple_mappings.bzl | 72 +++++-------------------------- 2 files changed, 15 insertions(+), 61 deletions(-) diff --git a/rust/platform/triple.bzl b/rust/platform/triple.bzl index e5507854b5..13a59a4cab 100644 --- a/rust/platform/triple.bzl +++ b/rust/platform/triple.bzl @@ -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] diff --git a/rust/platform/triple_mappings.bzl b/rust/platform/triple_mappings.bzl index a6568fffd1..fada88486c 100644 --- a/rust/platform/triple_mappings.bzl +++ b/rust/platform/triple_mappings.bzl @@ -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", @@ -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] @@ -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)