Introduce initial Bazel build (#1705)
* Build boot_stage2 with Bazel
Introduces the initial foundations of a Bazel build, including a
toolchain, critical generated headers, platform patterns, and enough
BUILD files to build boot_stage2.
* Bazel libraries to support picotool
* Move SDK defines to toolchain
* Switch to `archive_override` in MODULE.bazel
Uses archive_override where applicable to allow transitive bzlmod deps
to propagate.
* Multiplatform objcopy selection in Bazel build
Makes an objcopy alias that redirects to the objcopy tool for the
current exec platform, which allows boot_stage2 to build on Linux,
macOS, and Windows.
* Generate Bazel build files
Adds initial set of generated Bazel build files. Note that these do not
yet build, as dependency cycles are present.
* Fix dependency cycles in Bazel build
Fixes many dependency cycles, some were unintentionally created by the
build file generator, others are true dependency cycles that require
manual workarounds.
* Silence warning in pico_stdio Bazel build
Silences a stray warning in the Bazel build.
* Fix wildcard Bazel build
This makes `bazel build //...` succeed, and also prevents the fetching
of toolchains that aren't compatible with the current execution
environment (i.e. Windows computers will no longer try to download macOS
toolchains).
* Get the SDK working
Finishes out the remainder of the work required to successfully compile
a working blinky example.
* Fix UART stdio dependencies in Bazel build
Fixes some dependencies around pico_stdlib so that pico_stdlib links
properly and UART stdio works.
* Add linux support to Bazel build
* Get Bazel deps from registry
Adds external an external registry for resolving Bazel module
dependencies.
* Fix host configuration for picotool
Provides the appropriate defines for host builds to support the picotool
build.
* Remove -ffreestanding from Bazel toolchain
The -ffreestanding toolchain flag is quite strict, so remove it from the
Bazel toolchain.
* Remove unused .bzl file
* Reduce Bazel compiler flags
Cuts out most of the Bazel toolchain flags and only specifies the
bare-minimum set of flags. Also, adds wrapper linker flags for functions
the SDK wraps.
* Get USB serial working
Adds initial TinyUSB support and enough integration to get USB serial
working.
* Remove "Generated build file"
Removes comments that indicates BUILD.bazel files are generated. This
was used during initial bringup to indicate hand-crafted vs
automatically generated BUILD.bazel files.
* Do not build USB libraries unless configured
Prevents USB libraries from being built unless the build is properly
configured to use them.
* Switch to rules_cc toolchains
Moves toolchain configuration to use the new rules in rules_cc.
* Minor cleanup in parse_version.py
Cleans up trailing whitespace and runs the black formatter on
parse_version.py.
* Simplify constraint dimensions in Bazel build
Consolidates the class/chip constraint settings to be a single
constraint_setting with a config_setting that represents the rp2 class.
* Update pin of rules_cc in Bazel build
Includes a necessary fix for the target_compatible_with expression in
the cc_toolchain to work as intended.
* Move toolchains from pico.bzl to BUILD.bazel
Moves toolchain definitions from pico.bzl to BUILD.bazel to make them
easier to find and read.
* Run buildifier on Bazel build files
Fix trivial formatting issues by running buildifier on all BUILD.bazel
files.
* Make objcopy rule
Makes a simple objcopy rule to remove direct references to the ARM
toolchains.
* Fix link flags in Bazel build
Critical flags were not being applied to link steps. This applies -mcpu
and -mthumb to the link steps to make the produced binaries work again.
* Mention missing host build support
* Fix various Bazel library rules
* pico_bit_ops was incomplete.
* pico_double and pico_float were trying to link in the "none"
implementation.
* Extend Bazel build documentation
Improves documentation and comments across the Bazel build.
* Clean up auxilary tools in Bazel build
Switches genrules to use skylib rules to simplify things. Reworks
version header generation to use the Bazel module version rather than
parsing CMake.
* Update boot_stage2 Bazel build file
Moves `includes` to be enumerated on the correct library.
* Add WORKSPACE version fallback
WORKSPACE Bazel projects don't support querying module version, so add a
fallback of '0.0.1-WORKSPACE' so the build can succeed.
* Fix malloc handling in Bazel build
* Fix Bazel dependency cycle in pico_malloc
* Prevent malloc from being linked into boot_stage2
Prevents Bazel from ever trying to link malloc into the boot_stage2
binary.
* Remove custom bootloader platform
A dedicated boot_stage2 platform introduces a lot of complexity that
needs to be more thought-through.
2024-06-04 16:50:32 -07:00
|
|
|
load("@rules_cc//cc/toolchains:args.bzl", "cc_args")
|
|
|
|
load("@rules_cc//cc/toolchains:args_list.bzl", "cc_args_list")
|
|
|
|
load("@rules_cc//cc/toolchains:feature.bzl", "cc_feature")
|
|
|
|
load("@rules_cc//cc/toolchains:toolchain.bzl", "cc_toolchain")
|
2024-06-13 07:50:04 -07:00
|
|
|
load("configurable_feature.bzl", "configurable_toolchain_feature")
|
|
|
|
|
|
|
|
package(default_visibility = ["//visibility:public"])
|
Introduce initial Bazel build (#1705)
* Build boot_stage2 with Bazel
Introduces the initial foundations of a Bazel build, including a
toolchain, critical generated headers, platform patterns, and enough
BUILD files to build boot_stage2.
* Bazel libraries to support picotool
* Move SDK defines to toolchain
* Switch to `archive_override` in MODULE.bazel
Uses archive_override where applicable to allow transitive bzlmod deps
to propagate.
* Multiplatform objcopy selection in Bazel build
Makes an objcopy alias that redirects to the objcopy tool for the
current exec platform, which allows boot_stage2 to build on Linux,
macOS, and Windows.
* Generate Bazel build files
Adds initial set of generated Bazel build files. Note that these do not
yet build, as dependency cycles are present.
* Fix dependency cycles in Bazel build
Fixes many dependency cycles, some were unintentionally created by the
build file generator, others are true dependency cycles that require
manual workarounds.
* Silence warning in pico_stdio Bazel build
Silences a stray warning in the Bazel build.
* Fix wildcard Bazel build
This makes `bazel build //...` succeed, and also prevents the fetching
of toolchains that aren't compatible with the current execution
environment (i.e. Windows computers will no longer try to download macOS
toolchains).
* Get the SDK working
Finishes out the remainder of the work required to successfully compile
a working blinky example.
* Fix UART stdio dependencies in Bazel build
Fixes some dependencies around pico_stdlib so that pico_stdlib links
properly and UART stdio works.
* Add linux support to Bazel build
* Get Bazel deps from registry
Adds external an external registry for resolving Bazel module
dependencies.
* Fix host configuration for picotool
Provides the appropriate defines for host builds to support the picotool
build.
* Remove -ffreestanding from Bazel toolchain
The -ffreestanding toolchain flag is quite strict, so remove it from the
Bazel toolchain.
* Remove unused .bzl file
* Reduce Bazel compiler flags
Cuts out most of the Bazel toolchain flags and only specifies the
bare-minimum set of flags. Also, adds wrapper linker flags for functions
the SDK wraps.
* Get USB serial working
Adds initial TinyUSB support and enough integration to get USB serial
working.
* Remove "Generated build file"
Removes comments that indicates BUILD.bazel files are generated. This
was used during initial bringup to indicate hand-crafted vs
automatically generated BUILD.bazel files.
* Do not build USB libraries unless configured
Prevents USB libraries from being built unless the build is properly
configured to use them.
* Switch to rules_cc toolchains
Moves toolchain configuration to use the new rules in rules_cc.
* Minor cleanup in parse_version.py
Cleans up trailing whitespace and runs the black formatter on
parse_version.py.
* Simplify constraint dimensions in Bazel build
Consolidates the class/chip constraint settings to be a single
constraint_setting with a config_setting that represents the rp2 class.
* Update pin of rules_cc in Bazel build
Includes a necessary fix for the target_compatible_with expression in
the cc_toolchain to work as intended.
* Move toolchains from pico.bzl to BUILD.bazel
Moves toolchain definitions from pico.bzl to BUILD.bazel to make them
easier to find and read.
* Run buildifier on Bazel build files
Fix trivial formatting issues by running buildifier on all BUILD.bazel
files.
* Make objcopy rule
Makes a simple objcopy rule to remove direct references to the ARM
toolchains.
* Fix link flags in Bazel build
Critical flags were not being applied to link steps. This applies -mcpu
and -mthumb to the link steps to make the produced binaries work again.
* Mention missing host build support
* Fix various Bazel library rules
* pico_bit_ops was incomplete.
* pico_double and pico_float were trying to link in the "none"
implementation.
* Extend Bazel build documentation
Improves documentation and comments across the Bazel build.
* Clean up auxilary tools in Bazel build
Switches genrules to use skylib rules to simplify things. Reworks
version header generation to use the Bazel module version rather than
parsing CMake.
* Update boot_stage2 Bazel build file
Moves `includes` to be enumerated on the correct library.
* Add WORKSPACE version fallback
WORKSPACE Bazel projects don't support querying module version, so add a
fallback of '0.0.1-WORKSPACE' so the build can succeed.
* Fix malloc handling in Bazel build
* Fix Bazel dependency cycle in pico_malloc
* Prevent malloc from being linked into boot_stage2
Prevents Bazel from ever trying to link malloc into the boot_stage2
binary.
* Remove custom bootloader platform
A dedicated boot_stage2 platform introduces a lot of complexity that
needs to be more thought-through.
2024-06-04 16:50:32 -07:00
|
|
|
|
|
|
|
cc_args(
|
|
|
|
name = "cortex-m0",
|
|
|
|
actions = [
|
|
|
|
"@rules_cc//cc/toolchains/actions:compile_actions",
|
|
|
|
"@rules_cc//cc/toolchains/actions:link_actions",
|
|
|
|
],
|
|
|
|
args = [
|
|
|
|
"-mcpu=cortex-m0plus",
|
|
|
|
"-mthumb",
|
|
|
|
],
|
|
|
|
)
|
|
|
|
|
|
|
|
cc_args(
|
|
|
|
name = "bazel_no_absolute_paths",
|
|
|
|
actions = ["@rules_cc//cc/toolchains/actions:compile_actions"],
|
|
|
|
args = [
|
|
|
|
"-fno-canonical-system-headers",
|
|
|
|
"-no-canonical-prefixes",
|
|
|
|
],
|
|
|
|
)
|
|
|
|
|
|
|
|
cc_args_list(
|
|
|
|
name = "all_unconditional_args",
|
|
|
|
args = [
|
|
|
|
":cortex-m0",
|
|
|
|
":bazel_no_absolute_paths",
|
|
|
|
],
|
|
|
|
)
|
|
|
|
|
|
|
|
cc_args(
|
|
|
|
name = "opt_debug_args",
|
|
|
|
actions = [
|
|
|
|
"@rules_cc//cc/toolchains/actions:compile_actions",
|
|
|
|
"@rules_cc//cc/toolchains/actions:link_actions",
|
|
|
|
],
|
|
|
|
args = [
|
|
|
|
"-Og", # TODO: Make this configurable.
|
|
|
|
"-g3",
|
|
|
|
],
|
|
|
|
)
|
|
|
|
|
2024-06-13 07:50:04 -07:00
|
|
|
configurable_toolchain_feature(
|
|
|
|
name = "gc_sections",
|
|
|
|
copts = [
|
|
|
|
"-ffunction-sections",
|
|
|
|
"-fdata-sections",
|
|
|
|
],
|
|
|
|
disable_if = "//bazel/constraint:pico_no_gc_sections_enabled",
|
|
|
|
linkopts = ["-Wl,--gc-sections"],
|
|
|
|
)
|
|
|
|
|
|
|
|
configurable_toolchain_feature(
|
|
|
|
name = "cxx_no_exceptions",
|
|
|
|
cxxopts = [
|
|
|
|
"-fno-exceptions",
|
|
|
|
"-fno-unwind-tables",
|
|
|
|
],
|
|
|
|
disable_if = "//bazel/constraint:pico_cxx_enable_exceptions_enabled",
|
|
|
|
)
|
|
|
|
|
|
|
|
configurable_toolchain_feature(
|
|
|
|
name = "cxx_no_rtti",
|
|
|
|
cxxopts = ["-fno-rtti"],
|
|
|
|
disable_if = "//bazel/constraint:pico_cxx_enable_rtti_enabled",
|
|
|
|
)
|
|
|
|
|
|
|
|
configurable_toolchain_feature(
|
|
|
|
name = "cxx_no_cxa_atexit",
|
|
|
|
cxxopts = ["-fno-use-cxa-atexit"],
|
|
|
|
disable_if = "//bazel/constraint:pico_cxx_enable_cxa_atexit_enabled",
|
|
|
|
)
|
|
|
|
|
|
|
|
configurable_toolchain_feature(
|
|
|
|
name = "override_max_page_size",
|
|
|
|
disable_if = "//bazel/constraint:pico_use_default_max_page_size_enabled",
|
|
|
|
linkopts = ["-Wl,-z,max-page-size=4096"],
|
|
|
|
)
|
|
|
|
|
Introduce initial Bazel build (#1705)
* Build boot_stage2 with Bazel
Introduces the initial foundations of a Bazel build, including a
toolchain, critical generated headers, platform patterns, and enough
BUILD files to build boot_stage2.
* Bazel libraries to support picotool
* Move SDK defines to toolchain
* Switch to `archive_override` in MODULE.bazel
Uses archive_override where applicable to allow transitive bzlmod deps
to propagate.
* Multiplatform objcopy selection in Bazel build
Makes an objcopy alias that redirects to the objcopy tool for the
current exec platform, which allows boot_stage2 to build on Linux,
macOS, and Windows.
* Generate Bazel build files
Adds initial set of generated Bazel build files. Note that these do not
yet build, as dependency cycles are present.
* Fix dependency cycles in Bazel build
Fixes many dependency cycles, some were unintentionally created by the
build file generator, others are true dependency cycles that require
manual workarounds.
* Silence warning in pico_stdio Bazel build
Silences a stray warning in the Bazel build.
* Fix wildcard Bazel build
This makes `bazel build //...` succeed, and also prevents the fetching
of toolchains that aren't compatible with the current execution
environment (i.e. Windows computers will no longer try to download macOS
toolchains).
* Get the SDK working
Finishes out the remainder of the work required to successfully compile
a working blinky example.
* Fix UART stdio dependencies in Bazel build
Fixes some dependencies around pico_stdlib so that pico_stdlib links
properly and UART stdio works.
* Add linux support to Bazel build
* Get Bazel deps from registry
Adds external an external registry for resolving Bazel module
dependencies.
* Fix host configuration for picotool
Provides the appropriate defines for host builds to support the picotool
build.
* Remove -ffreestanding from Bazel toolchain
The -ffreestanding toolchain flag is quite strict, so remove it from the
Bazel toolchain.
* Remove unused .bzl file
* Reduce Bazel compiler flags
Cuts out most of the Bazel toolchain flags and only specifies the
bare-minimum set of flags. Also, adds wrapper linker flags for functions
the SDK wraps.
* Get USB serial working
Adds initial TinyUSB support and enough integration to get USB serial
working.
* Remove "Generated build file"
Removes comments that indicates BUILD.bazel files are generated. This
was used during initial bringup to indicate hand-crafted vs
automatically generated BUILD.bazel files.
* Do not build USB libraries unless configured
Prevents USB libraries from being built unless the build is properly
configured to use them.
* Switch to rules_cc toolchains
Moves toolchain configuration to use the new rules in rules_cc.
* Minor cleanup in parse_version.py
Cleans up trailing whitespace and runs the black formatter on
parse_version.py.
* Simplify constraint dimensions in Bazel build
Consolidates the class/chip constraint settings to be a single
constraint_setting with a config_setting that represents the rp2 class.
* Update pin of rules_cc in Bazel build
Includes a necessary fix for the target_compatible_with expression in
the cc_toolchain to work as intended.
* Move toolchains from pico.bzl to BUILD.bazel
Moves toolchain definitions from pico.bzl to BUILD.bazel to make them
easier to find and read.
* Run buildifier on Bazel build files
Fix trivial formatting issues by running buildifier on all BUILD.bazel
files.
* Make objcopy rule
Makes a simple objcopy rule to remove direct references to the ARM
toolchains.
* Fix link flags in Bazel build
Critical flags were not being applied to link steps. This applies -mcpu
and -mthumb to the link steps to make the produced binaries work again.
* Mention missing host build support
* Fix various Bazel library rules
* pico_bit_ops was incomplete.
* pico_double and pico_float were trying to link in the "none"
implementation.
* Extend Bazel build documentation
Improves documentation and comments across the Bazel build.
* Clean up auxilary tools in Bazel build
Switches genrules to use skylib rules to simplify things. Reworks
version header generation to use the Bazel module version rather than
parsing CMake.
* Update boot_stage2 Bazel build file
Moves `includes` to be enumerated on the correct library.
* Add WORKSPACE version fallback
WORKSPACE Bazel projects don't support querying module version, so add a
fallback of '0.0.1-WORKSPACE' so the build can succeed.
* Fix malloc handling in Bazel build
* Fix Bazel dependency cycle in pico_malloc
* Prevent malloc from being linked into boot_stage2
Prevents Bazel from ever trying to link malloc into the boot_stage2
binary.
* Remove custom bootloader platform
A dedicated boot_stage2 platform introduces a lot of complexity that
needs to be more thought-through.
2024-06-04 16:50:32 -07:00
|
|
|
# TODO: Make this shim unnecessary.
|
|
|
|
cc_args_list(
|
|
|
|
name = "all_opt_debug_args",
|
|
|
|
args = [":opt_debug_args"],
|
|
|
|
)
|
|
|
|
|
|
|
|
cc_feature(
|
|
|
|
name = "override_debug",
|
|
|
|
args = [":all_opt_debug_args"],
|
|
|
|
enabled = True,
|
|
|
|
overrides = "@rules_cc//cc/toolchains/features:dbg",
|
|
|
|
)
|
|
|
|
|
|
|
|
# TODO: https://github.com/bazelbuild/rules_cc/issues/224 - This is required for
|
|
|
|
# now, but hopefully will eventually go away.
|
|
|
|
cc_feature(
|
|
|
|
name = "legacy_features",
|
|
|
|
args = [],
|
|
|
|
enabled = True,
|
|
|
|
feature_name = "force_legacy_features",
|
|
|
|
implies = [
|
|
|
|
"@rules_cc//cc/toolchains/features/legacy:archiver_flags",
|
|
|
|
"@rules_cc//cc/toolchains/features/legacy:build_interface_libraries",
|
|
|
|
"@rules_cc//cc/toolchains/features/legacy:dynamic_library_linker_tool",
|
|
|
|
"@rules_cc//cc/toolchains/features/legacy:strip_debug_symbols",
|
|
|
|
"@rules_cc//cc/toolchains/features/legacy:linkstamps",
|
|
|
|
"@rules_cc//cc/toolchains/features/legacy:output_execpath_flags",
|
|
|
|
"@rules_cc//cc/toolchains/features/legacy:runtime_library_search_directories",
|
|
|
|
"@rules_cc//cc/toolchains/features/legacy:library_search_directories",
|
|
|
|
"@rules_cc//cc/toolchains/features/legacy:libraries_to_link",
|
|
|
|
"@rules_cc//cc/toolchains/features/legacy:force_pic_flags",
|
|
|
|
"@rules_cc//cc/toolchains/features/legacy:user_link_flags",
|
|
|
|
"@rules_cc//cc/toolchains/features/legacy:legacy_link_flags",
|
|
|
|
"@rules_cc//cc/toolchains/features/legacy:linker_param_file",
|
|
|
|
"@rules_cc//cc/toolchains/features/legacy:fission_support",
|
|
|
|
"@rules_cc//cc/toolchains/features/legacy:sysroot",
|
|
|
|
],
|
|
|
|
)
|
|
|
|
|
|
|
|
HOSTS = (
|
|
|
|
("linux", "x86_64"),
|
|
|
|
("win", "x86_64"),
|
|
|
|
("mac", "x86_64"),
|
|
|
|
("mac", "aarch64"),
|
|
|
|
)
|
|
|
|
|
|
|
|
_HOST_OS_CONSTRAINTS = {
|
|
|
|
"linux": "@platforms//os:linux",
|
|
|
|
"win": "@platforms//os:windows",
|
|
|
|
"mac": "@platforms//os:macos",
|
|
|
|
}
|
|
|
|
|
|
|
|
_HOST_CPU_CONSTRAINTS = {
|
|
|
|
"x86_64": "@platforms//cpu:x86_64",
|
|
|
|
"aarch64": "@platforms//cpu:aarch64",
|
|
|
|
}
|
|
|
|
|
|
|
|
[cc_toolchain(
|
|
|
|
name = "arm_gcc_{}-{}_toolchain_cortex-m".format(host_os, host_cpu),
|
|
|
|
action_type_configs = [
|
|
|
|
"@arm_gcc_{}-{}//:arm-none-eabi-ar".format(host_os, host_cpu),
|
|
|
|
"@arm_gcc_{}-{}//:arm-none-eabi-gcc".format(host_os, host_cpu),
|
|
|
|
"@arm_gcc_{}-{}//:arm-none-eabi-g++".format(host_os, host_cpu),
|
|
|
|
"@arm_gcc_{}-{}//:arm-none-eabi-ld".format(host_os, host_cpu),
|
|
|
|
"@arm_gcc_{}-{}//:arm-none-eabi-objcopy".format(host_os, host_cpu),
|
|
|
|
"@arm_gcc_{}-{}//:arm-none-eabi-strip".format(host_os, host_cpu),
|
|
|
|
],
|
|
|
|
args = ["@pico-sdk//bazel/toolchain:all_unconditional_args"],
|
|
|
|
compiler = "gcc", # Useful for distinguishing gcc vs clang.
|
|
|
|
cxx_builtin_include_directories = [
|
|
|
|
"%sysroot%/arm-none-eabi/include/newlib-nano",
|
|
|
|
"%sysroot%/arm-none-eabi/include/c++/13.2.1",
|
|
|
|
"%sysroot%/arm-none-eabi/include/c++/13.2.1/arm-none-eabi",
|
|
|
|
"%sysroot%/arm-none-eabi/include/c++/13.2.1/backward",
|
|
|
|
"%sysroot%/lib/gcc/arm-none-eabi/13.2.1/include",
|
|
|
|
"%sysroot%/lib/gcc/arm-none-eabi/13.2.1/include-fixed",
|
|
|
|
"%sysroot%/arm-none-eabi/include",
|
|
|
|
],
|
|
|
|
exec_compatible_with = [
|
|
|
|
_HOST_CPU_CONSTRAINTS[host_cpu],
|
|
|
|
_HOST_OS_CONSTRAINTS[host_os],
|
|
|
|
],
|
|
|
|
sysroot = "external/arm_gcc_{}-{}".format(host_os, host_cpu),
|
|
|
|
tags = ["manual"], # Don't try to build this in wildcard builds.
|
|
|
|
target_compatible_with = [
|
|
|
|
"@pico-sdk//bazel/constraint:rp2040",
|
|
|
|
],
|
|
|
|
toolchain_features = [
|
|
|
|
"@pico-sdk//bazel/toolchain:legacy_features",
|
|
|
|
"@pico-sdk//bazel/toolchain:override_debug",
|
2024-06-13 07:50:04 -07:00
|
|
|
"@pico-sdk//bazel/toolchain:gc_sections",
|
|
|
|
"@pico-sdk//bazel/toolchain:cxx_no_exceptions",
|
|
|
|
"@pico-sdk//bazel/toolchain:cxx_no_rtti",
|
|
|
|
"@pico-sdk//bazel/toolchain:cxx_no_cxa_atexit",
|
|
|
|
"@pico-sdk//bazel/toolchain:override_max_page_size",
|
Introduce initial Bazel build (#1705)
* Build boot_stage2 with Bazel
Introduces the initial foundations of a Bazel build, including a
toolchain, critical generated headers, platform patterns, and enough
BUILD files to build boot_stage2.
* Bazel libraries to support picotool
* Move SDK defines to toolchain
* Switch to `archive_override` in MODULE.bazel
Uses archive_override where applicable to allow transitive bzlmod deps
to propagate.
* Multiplatform objcopy selection in Bazel build
Makes an objcopy alias that redirects to the objcopy tool for the
current exec platform, which allows boot_stage2 to build on Linux,
macOS, and Windows.
* Generate Bazel build files
Adds initial set of generated Bazel build files. Note that these do not
yet build, as dependency cycles are present.
* Fix dependency cycles in Bazel build
Fixes many dependency cycles, some were unintentionally created by the
build file generator, others are true dependency cycles that require
manual workarounds.
* Silence warning in pico_stdio Bazel build
Silences a stray warning in the Bazel build.
* Fix wildcard Bazel build
This makes `bazel build //...` succeed, and also prevents the fetching
of toolchains that aren't compatible with the current execution
environment (i.e. Windows computers will no longer try to download macOS
toolchains).
* Get the SDK working
Finishes out the remainder of the work required to successfully compile
a working blinky example.
* Fix UART stdio dependencies in Bazel build
Fixes some dependencies around pico_stdlib so that pico_stdlib links
properly and UART stdio works.
* Add linux support to Bazel build
* Get Bazel deps from registry
Adds external an external registry for resolving Bazel module
dependencies.
* Fix host configuration for picotool
Provides the appropriate defines for host builds to support the picotool
build.
* Remove -ffreestanding from Bazel toolchain
The -ffreestanding toolchain flag is quite strict, so remove it from the
Bazel toolchain.
* Remove unused .bzl file
* Reduce Bazel compiler flags
Cuts out most of the Bazel toolchain flags and only specifies the
bare-minimum set of flags. Also, adds wrapper linker flags for functions
the SDK wraps.
* Get USB serial working
Adds initial TinyUSB support and enough integration to get USB serial
working.
* Remove "Generated build file"
Removes comments that indicates BUILD.bazel files are generated. This
was used during initial bringup to indicate hand-crafted vs
automatically generated BUILD.bazel files.
* Do not build USB libraries unless configured
Prevents USB libraries from being built unless the build is properly
configured to use them.
* Switch to rules_cc toolchains
Moves toolchain configuration to use the new rules in rules_cc.
* Minor cleanup in parse_version.py
Cleans up trailing whitespace and runs the black formatter on
parse_version.py.
* Simplify constraint dimensions in Bazel build
Consolidates the class/chip constraint settings to be a single
constraint_setting with a config_setting that represents the rp2 class.
* Update pin of rules_cc in Bazel build
Includes a necessary fix for the target_compatible_with expression in
the cc_toolchain to work as intended.
* Move toolchains from pico.bzl to BUILD.bazel
Moves toolchain definitions from pico.bzl to BUILD.bazel to make them
easier to find and read.
* Run buildifier on Bazel build files
Fix trivial formatting issues by running buildifier on all BUILD.bazel
files.
* Make objcopy rule
Makes a simple objcopy rule to remove direct references to the ARM
toolchains.
* Fix link flags in Bazel build
Critical flags were not being applied to link steps. This applies -mcpu
and -mthumb to the link steps to make the produced binaries work again.
* Mention missing host build support
* Fix various Bazel library rules
* pico_bit_ops was incomplete.
* pico_double and pico_float were trying to link in the "none"
implementation.
* Extend Bazel build documentation
Improves documentation and comments across the Bazel build.
* Clean up auxilary tools in Bazel build
Switches genrules to use skylib rules to simplify things. Reworks
version header generation to use the Bazel module version rather than
parsing CMake.
* Update boot_stage2 Bazel build file
Moves `includes` to be enumerated on the correct library.
* Add WORKSPACE version fallback
WORKSPACE Bazel projects don't support querying module version, so add a
fallback of '0.0.1-WORKSPACE' so the build can succeed.
* Fix malloc handling in Bazel build
* Fix Bazel dependency cycle in pico_malloc
* Prevent malloc from being linked into boot_stage2
Prevents Bazel from ever trying to link malloc into the boot_stage2
binary.
* Remove custom bootloader platform
A dedicated boot_stage2 platform introduces a lot of complexity that
needs to be more thought-through.
2024-06-04 16:50:32 -07:00
|
|
|
],
|
|
|
|
) for host_os, host_cpu in HOSTS]
|
|
|
|
|
|
|
|
[toolchain(
|
|
|
|
name = "arm_gcc_{}-{}".format(host_os, host_cpu),
|
|
|
|
exec_compatible_with = [
|
|
|
|
_HOST_CPU_CONSTRAINTS[host_cpu],
|
|
|
|
_HOST_OS_CONSTRAINTS[host_os],
|
|
|
|
],
|
|
|
|
target_compatible_with = [
|
|
|
|
"@pico-sdk//bazel/constraint:rp2040",
|
|
|
|
],
|
|
|
|
toolchain = ":arm_gcc_{}-{}_toolchain_cortex-m".format(host_os, host_cpu),
|
|
|
|
toolchain_type = "@bazel_tools//tools/cpp:toolchain_type",
|
|
|
|
) for host_os, host_cpu in HOSTS]
|