| load("@rules_python//python:defs.bzl", "py_binary") |
| |
| package(default_visibility = ["//visibility:public"]) |
| |
| py_binary( |
| name = "generate_version_header", |
| srcs = ["generate_version_header.py"], |
| visibility = ["//:__subpackages__"], |
| ) |
| |
| # This isn't actually generated, it just uses the same name |
| # to make it show up easier in searches. |
| # |
| # Rather than generating lists of headers to match CMake, the Bazel build |
| # opts to have a static header that transitively include two known headers. |
| # By default, empty header files are included, and users/platforms are expected |
| # to specify an appropriate `cc_library` to replace them. |
| # |
| # You tell bazel which `cc_library` provides the respective headers by |
| # configuring these `label_flag`s: |
| # |
| # # Specify the library that provides "pico_config_extra_headers.h" |
| # --@pico-sdk//bazel/config:PICO_CONFIG_EXTRA_HEADER=//my_proj:my_custom_headers |
| # |
| # # Specify the library that provides "pico_config_platform_headers.h" |
| # --@pico-sdk//bazel/config:PICO_CONFIG_PLATFORM_HEADER=//my_proj:my_custom_platform_headers |
| cc_library( |
| name = "generate_config_header", |
| hdrs = ["include/pico/config_autogen.h"], |
| includes = ["include"], |
| visibility = ["//:__subpackages__"], |
| deps = [ |
| "//bazel/config:PICO_CONFIG_EXTRA_HEADER", |
| "//bazel/config:PICO_CONFIG_PLATFORM_HEADER", |
| ], |
| ) |
| |
| genrule( |
| name = "empty_extra_headers_file", |
| outs = ["generated_extra_include/pico_config_extra_headers.h"], |
| cmd = "echo > $@", |
| cmd_bat = "copy NUL $@", |
| visibility = ["//visibility:private"], |
| ) |
| |
| cc_library( |
| name = "no_extra_headers", |
| hdrs = ["generated_extra_include/pico_config_extra_headers.h"], |
| includes = ["generated_extra_include"], |
| visibility = ["//visibility:private"], |
| ) |
| |
| # An empty stub, useful for label_flag flags that need to point to a library, |
| # but for some purposes the library needs to be a no-op. |
| cc_library( |
| name = "empty_cc_lib", |
| ) |
| |
| # A library incompatible with everything. Use to mark an invalid configuration. |
| cc_library( |
| name = "incompatible_cc_lib", |
| target_compatible_with = ["@platforms//:incompatible"], |
| ) |