mirror of
https://github.com/raspberrypi/pico-sdk.git
synced 2025-04-22 14:42:26 +00:00
* Add host Bazel build Updates target_compatible_with across the repo to ensure that wildcard builds for both host and rp2040 succeed. * Get unit tests building * Add Python script to identify build system differences Uses the build system tags to make it easier to identify differences between the CMake and Bazel builds. * Temporarily disable pico divider test * Support PICO_BARE_METAL in Bazel * Support PICO_NO_GC_SECTIONS in Bazel * Support boot2 configuration in Bazel Adds support for PICO_DEFAULT_BOOT_STAGE2 and PICO_DEFAULT_BOOT_STAGE2_FILE in the Bazel build. * Allowlist some CMake-only options * Support CXX configuration options in Bazel * Move multiple_choice_flag.bzl * Support all pico boards * Support linking multiple stdio implementations Changes the Bazel build so stdio implementations are no longer mutually exclusive. * Add PICO_BOOT_STAGE2_LINK_IMAGE * Support PICO_CMSIS_PATH in Bazel * Support PICO_USE_DEFAULT_MAX_PAGE_SIZE in Bazel * Silence PICO_CMSIS_VENDOR and PICO_CMSIS_DEVICE differences * Support PICO_STDIO_USB_CONNECT_WAIT_TIMEOUT_MS in Bazel * Properly support version defines * Support embedding binary info in Bazel * Embed build type in binary * Support different linker scripts in Bazel build * Finish out missing PICO_BUILD_DEFINE in Bazel build * Support PICO_NO_TARGET_NAME * Reorganize initial configuration options in Bazel Cleans up and reorganizes some of the initial configuration options added to the Bazel build so everything is consistent. * Add builds for pioasm and elf2uf2 * Use Python rules from rules_python * Actually link in output formats in pioasm tool * Make tools have public visibility * Add UF2 Bazel aspect * Add TODOs for pioasm/uf2 helpers * Fix compile flag typo * Update Bazel SDK configuration strings to match recent CMake changes * Fix pico_divider test * Clean up straggling TODOs * Clarify pico_stdio_test compatibility * Initial Bazel Pico W support * Add new files from develop * Clean up compatibility expressions in Bazel build * Clean up rp2 constraint handling in Bazel * More Bazel docs cleanup * Format Bazel build files * Consolidate transitions in the Pico SDK * Make every _allowlist_function_transition explicit * More docs cleanup * Add a few missing defines * Improve PICO_CONFIG_HEADER correctness in Bazel * Minor docs clarifications
44 lines
1.1 KiB
Python
44 lines
1.1 KiB
Python
load("@bazel_skylib//rules:common_settings.bzl", "BuildSettingInfo")
|
|
|
|
def _pico_sdk_define_impl(ctx):
|
|
val = ctx.attr.from_flag[BuildSettingInfo].value
|
|
|
|
if type(val) == "string":
|
|
# Strings need quotes.
|
|
val = "\"{}\"".format(val)
|
|
elif type(val) == "bool":
|
|
# Convert bools to 0 or 1.
|
|
val = 1 if val else 0
|
|
cc_ctx = cc_common.create_compilation_context(
|
|
defines = depset(
|
|
direct = ["{}={}".format(ctx.attr.define_name, val)],
|
|
),
|
|
)
|
|
return [CcInfo(compilation_context = cc_ctx)]
|
|
|
|
pico_sdk_define = rule(
|
|
implementation = _pico_sdk_define_impl,
|
|
doc = """A simple rule that offers a skylib flag as a define.
|
|
|
|
These can be listed in the `deps` attribute of a `cc_library` to get access
|
|
to the value of a define.
|
|
|
|
Example:
|
|
|
|
bool_flag(
|
|
name = "my_flag",
|
|
build_setting_default = False,
|
|
)
|
|
|
|
pico_sdk_define(
|
|
name = "flag_define",
|
|
define_name = "MY_FLAG_DEFINE",
|
|
from_flag = ":my_flag",
|
|
)
|
|
""",
|
|
attrs = {
|
|
"define_name": attr.string(mandatory = True),
|
|
"from_flag": attr.label(mandatory = True),
|
|
},
|
|
)
|