Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
19 changes: 19 additions & 0 deletions rust/platform/BUILD.bazel
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,8 @@ package(default_visibility = ["//visibility:public"])
declare_config_settings()

# WASI Preview version constraint settings
#
# TODO(https://github.com/bazelbuild/platforms/pull/123): Replace with upstream.
constraint_setting(
name = "wasi_version",
default_constraint_value = ":wasi_preview_1",
Expand All @@ -21,6 +23,23 @@ constraint_value(
constraint_setting = ":wasi_version",
)

# BPF execution constraints
#
# TODO(https://github.com/bazelbuild/platforms/pull/131): Replace with upstream.
constraint_setting(
name = "bpf_arch",
)

constraint_value(
name = "bpfeb",
constraint_setting = ":bpf_arch",
)

constraint_value(
name = "bpfel",
constraint_setting = ":bpf_arch",
)

package_group(
name = "function_transition_allowlist",
packages = [
Expand Down
12 changes: 12 additions & 0 deletions rust/platform/triple_mappings.bzl
Original file line number Diff line number Diff line change
Expand Up @@ -75,6 +75,8 @@ SUPPORTED_T2_PLATFORM_TRIPLES = {

_T3_PLATFORM_TRIPLES = {
"aarch64-unknown-nto-qnx710": _support(std = True, host_tools = False),
"bpfeb-unknown-none": _support(std = False, host_tools = False),
"bpfel-unknown-none": _support(std = False, host_tools = False),
"wasm64-unknown-unknown": _support(std = False, host_tools = False),
}

Expand Down Expand Up @@ -416,6 +418,16 @@ def triple_to_constraint_set(target_triple):
Returns:
list: A list of constraints (each represented by a list of strings)
"""
if target_triple == "bpfeb-unknown-none":
return [
"@platforms//os:none",
"@rules_rust//rust/platform:bpfeb",
]
if target_triple == "bpfel-unknown-none":
return [
"@platforms//os:none",
"@rules_rust//rust/platform:bpfel",
]
if target_triple == "wasm32-wasi":
return [
"@platforms//cpu:wasm32",
Expand Down
5 changes: 5 additions & 0 deletions test/unit/platform_triple/BUILD.bazel
Original file line number Diff line number Diff line change
@@ -1,6 +1,11 @@
load(":bpf_platform_test.bzl", "bpf_platform_test_suite")
load(":platform_triple_test.bzl", "platform_triple_test_suite")
load(":wasi_platform_test.bzl", "wasi_platform_test_suite")

bpf_platform_test_suite(
name = "bpf_platform_test_suite",
)

platform_triple_test_suite(
name = "platform_triple_test_suite",
)
Expand Down
52 changes: 52 additions & 0 deletions test/unit/platform_triple/bpf_platform_test.bzl
Original file line number Diff line number Diff line change
@@ -0,0 +1,52 @@
"""Tests for BPF platform constraint mappings"""

load("@bazel_skylib//lib:unittest.bzl", "asserts", "unittest")
load("//rust/platform:triple_mappings.bzl", "triple_to_constraint_set")

def _bpf_platform_constraints_test_impl(ctx):
env = unittest.begin(ctx)

bpfeb_constraints = triple_to_constraint_set("bpfeb-unknown-none")
asserts.equals(
env,
[
"@platforms//os:none",
"@rules_rust//rust/platform:bpfeb",
],
bpfeb_constraints,
"bpfeb-unknown-none should map to the BPF big-endian CPU and 'none' OS constraints",
)

bpfel_constraints = triple_to_constraint_set("bpfel-unknown-none")
asserts.equals(
env,
[
"@platforms//os:none",
"@rules_rust//rust/platform:bpfel",
],
bpfel_constraints,
"bpfel-unknown-none should map to the BPF little-endian CPU and 'none' OS constraints",
)

return unittest.end(env)

bpf_platform_constraints_test = unittest.make(_bpf_platform_constraints_test_impl)

def bpf_platform_test_suite(name, **kwargs):
"""Define a test suite for BPF platform constraint mappings.

Args:
name (str): The name of the test suite.
**kwargs (dict): Additional keyword arguments for the test_suite.
"""
bpf_platform_constraints_test(
name = "bpf_platform_constraints_test",
)

native.test_suite(
name = name,
tests = [
":bpf_platform_constraints_test",
],
**kwargs
)
4 changes: 4 additions & 0 deletions test/unit/platform_triple/platform_triple_test.bzl
Original file line number Diff line number Diff line change
Expand Up @@ -125,6 +125,10 @@ def _construct_known_triples_test_impl(ctx):
_assert_parts(env, triple("thumbv7em-none-eabi"), "thumbv7em", None, "none", "eabi")
_assert_parts(env, triple("thumbv8m.main-none-eabi"), "thumbv8m.main", None, "none", "eabi")

# BPF targets
_assert_parts(env, triple("bpfeb-unknown-none"), "bpfeb", "unknown", "none", None)
_assert_parts(env, triple("bpfel-unknown-none"), "bpfel", "unknown", "none", None)

# Test all WASM32 targets
_assert_parts(env, triple("wasm32-unknown-unknown"), "wasm32", "unknown", "unknown", None)
_assert_parts(env, triple("wasm32-unknown-emscripten"), "wasm32", "unknown", "emscripten", None)
Expand Down