Skip to content

Commit

Permalink
[WORKSPACE] simpler toolchain registration
Browse files Browse the repository at this point in the history
  • Loading branch information
hexdae committed Apr 4, 2024
1 parent 0ce9161 commit 0df46ea
Show file tree
Hide file tree
Showing 4 changed files with 10 additions and 63 deletions.
17 changes: 1 addition & 16 deletions MODULE.bazel.lock

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

26 changes: 6 additions & 20 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -42,8 +42,9 @@ You might also like another, similar, toolchain project for `bazel`
- [WORKSPACE support](#workspace)
- [Direct access to gcc tools](#direct-access-to-gcc-tools)
- [Custom toolchain support](#custom-toolchain)
- [Examples](#examples)
- [Examples](./examples)
- Remote execution support
- Linux, MacOS, Windows

## Use the toolchain from this repo

Expand All @@ -58,26 +59,14 @@ And this to your `.bazelrc`
build --incompatible_enable_cc_toolchain_resolution
```

## Examples

Please look at the [`examples`](./examples/) folder for reference usage

## Bzlmod

```python
# MODULE.bazel

bazel_dep(name = "toolchains_arm_gnu", version = "0.0.1")

git_override(
module_name = "toolchains_arm_gnu",
remote = "https://github.com/hexdae/bazel-arm-none-eabi",
branch = "master",
)

# Toolchains: arm-none-eabi
arm_toolchain = use_extension("@toolchains_arm_gnu//:extensions.bzl", "arm_toolchain")
arm_toolchain.arm_none_eabi(version = "9.2.1")
arm_toolchain.arm_none_eabi(version = "13.2.1")
use_repo(
arm_toolchain,
"arm_none_eabi",
Expand Down Expand Up @@ -108,8 +97,6 @@ register_toolchains("@arm_none_linux_gnueabihf//toolchain:all")
Add this git repository to your WORKSPACE to use the compiler

```python
# WORKSPACE.bazel

load("@bazel_tools//tools/build_defs/repo:git.bzl", "git_repository")

git_repository(
Expand All @@ -125,14 +112,13 @@ git_repository(
)

# Toolchain: arm-none-eabi
load("@toolchains_arm_gnu//:deps.bzl", "arm_none_eabi_deps", "register_default_arm_none_eabi_toolchains")
load("@toolchains_arm_gnu//:deps.bzl", "arm_none_eabi_deps", "arm_none_linux_gnueabihf_deps")
arm_none_eabi_deps()
register_default_arm_none_eabi_toolchains()
register_toolchains("@arm_none_eabi//toolchain:all")

# Toolchain arm-none-linux-gnueabihf
load("@toolchains_arm_gnu//:deps.bzl", "arm_none_linux_gnueabihf_deps", "register_default_arm_none_linux_gnueabihf_toolchains")
arm_none_linux_gnueabihf_deps()
register_default_arm_none_linux_gnueabihf_toolchains()
register_toolchains("@arm_none_linux_gnueabihf//toolchain:all")
```

Now Bazel will automatically use `arm-none-eabi-gcc` as a compiler.
Expand Down
24 changes: 0 additions & 24 deletions deps.bzl
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,6 @@

load("@toolchains_arm_gnu//toolchain/archives:arm_none_eabi.bzl", "ARM_NONE_EABI")
load("@toolchains_arm_gnu//toolchain/archives:arm_none_linux_gnueabihf.bzl", "ARM_NONE_LINUX_GNUEABIHF")
load("@toolchains_arm_gnu//toolchain:toolchain.bzl", "register_arm_gnu_toolchain", "target_constraints")

def _arm_gnu_cross_hosted_platform_specific_repo_impl(repository_ctx):
"""Defines a host-specific repository for the ARM GNU toolchain."""
Expand Down Expand Up @@ -82,15 +81,6 @@ def toolchains_arm_gnu_deps(toolchain, toolchain_prefix, version, archives):
**attrs
)

def register_default_arm_gnu_toolchains(repo, toolchain_prefix):
for cpu in target_constraints[toolchain_prefix]:
register_arm_gnu_toolchain(
name = "@{}//toolchain:{}".format(repo, cpu),
prefix = toolchain_prefix,
)

# arm-none-eabi

def arm_none_eabi_deps(version = "13.2.1", archives = ARM_NONE_EABI):
"""Workspace dependencies for the arm none eabi gcc toolchain
Expand All @@ -105,14 +95,6 @@ def arm_none_eabi_deps(version = "13.2.1", archives = ARM_NONE_EABI):
archives,
)

def register_default_arm_none_eabi_toolchains():
register_default_arm_gnu_toolchains(
repo = "arm_none_eabi",
toolchain_prefix = "arm-none-eabi",
)

# arm-none-linux-gnueabihf

def arm_none_linux_gnueabihf_deps(version = "13.2.1", archives = ARM_NONE_LINUX_GNUEABIHF):
"""Workspace dependencies for the arm linux gcc toolchain
Expand All @@ -126,9 +108,3 @@ def arm_none_linux_gnueabihf_deps(version = "13.2.1", archives = ARM_NONE_LINUX_
version,
archives,
)

def register_default_arm_none_linux_gnueabihf_toolchains():
register_default_arm_gnu_toolchains(
repo = "arm_none_linux_gnueabihf",
toolchain_prefix = "arm-none-linux-gnueabihf",
)
6 changes: 3 additions & 3 deletions examples/workspace/WORKSPACE
Original file line number Diff line number Diff line change
Expand Up @@ -24,17 +24,17 @@ local_repository(
path = "../../",
)

load("@toolchains_arm_gnu//:deps.bzl", "arm_none_eabi_deps", "arm_none_linux_gnueabihf_deps", "register_default_arm_none_eabi_toolchains", "register_default_arm_none_linux_gnueabihf_toolchains")
load("@toolchains_arm_gnu//:deps.bzl", "arm_none_eabi_deps", "arm_none_linux_gnueabihf_deps")

# Toolchain: arm-none-eabi
arm_none_eabi_deps()

register_default_arm_none_eabi_toolchains()
register_toolchains("@arm_none_eabi//toolchain:all")

# Toolchain arm-none-linux-gnueabihf
arm_none_linux_gnueabihf_deps()

register_default_arm_none_linux_gnueabihf_toolchains()
register_toolchains("@arm_none_linux_gnueabihf//toolchain:all")

# Custom toolchain
register_toolchains("//custom/toolchain:all")

0 comments on commit 0df46ea

Please sign in to comment.