| load("@rules_cc//cc:cc_library.bzl", "cc_library") | |
| load("//bazel:defs.bzl", "pico_board_config") | |
| load("//bazel/util:multiple_choice_flag.bzl", "declare_flag_choices", "flag_choice") | |
| package(default_visibility = ["//visibility:public"]) | |
| # Find all boards. | |
| BOARD_CHOICE_FILES = glob(["include/boards/*.h"]) | |
| # Extract just the name of the board. | |
| BOARD_CHOICES = [ | |
| path.removeprefix("include/boards/").removesuffix(".h") | |
| for path in BOARD_CHOICE_FILES | |
| ] | |
| BOARD_CHOICE_MAP = {c: [":{}".format(c)] for c in BOARD_CHOICES} | |
| # PICO_BUILD_DEFINE: PICO_BOARD, Name of board, type=string, default=CMake PICO_BOARD variable, group=pico_base | |
| [ | |
| pico_board_config( | |
| name = board, | |
| hdrs = BOARD_CHOICE_FILES, | |
| defines = [ | |
| 'PICO_BOARD=\\"{}\\"'.format(board), | |
| ], | |
| includes = ["include"], | |
| platform_includes = [ | |
| "cmsis/rename_exceptions.h", | |
| "boards/{}.h".format(board), | |
| ], | |
| deps = ["//src/rp2_common/cmsis:rename_exceptions"], | |
| ) | |
| for board in BOARD_CHOICES | |
| ] | |
| # Creates a config_setting for each known board option with the name: | |
| # PICO_BOARD_[choice] | |
| declare_flag_choices( | |
| choices = BOARD_CHOICES, | |
| flag = "//bazel/config:PICO_BOARD", | |
| ) | |
| cc_library( | |
| name = "default", | |
| deps = select( | |
| flag_choice( | |
| "//bazel/config:PICO_BOARD", | |
| ":__pkg__", | |
| BOARD_CHOICE_MAP, | |
| ) | { | |
| "//bazel/constraint:host": [":none"], | |
| "//conditions:default": [":none"], | |
| }, | |
| ), | |
| ) |