pw_build/cmake: Enable separate backend variable declarations

Extends the CMake facade API to mirror GN in its ability to specify
facade backend variables separate from the facade library
declarations. Outside of making this more consistent with the GN
build, this also enables enable_if for unit tests in the future.

As part of this backend variables for facades are no longer set to
{NAME}.NO_BACKEND_SET by default and instead are set to empty
strings if unset.

Change-Id: Ie0669c702a15a462cef92d546ad28ca945b71027
Reviewed-on: https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/117412
Pigweed-Auto-Submit: Ewout van Bekkum <ewout@google.com>
Commit-Queue: Ewout van Bekkum <ewout@google.com>
Reviewed-by: Wyatt Hepler <hepler@google.com>
14 files changed
tree: 885b98d6a26d8e0c13db05e07ce6bfab2c3fcfbc
  1. .allstar/
  2. .vscode/
  3. build_overrides/
  4. docker/
  5. docs/
  6. pw_allocator/
  7. pw_analog/
  8. pw_android_toolchain/
  9. pw_arduino_build/
  10. pw_assert/
  11. pw_assert_basic/
  12. pw_assert_log/
  13. pw_assert_tokenized/
  14. pw_assert_zephyr/
  15. pw_base64/
  16. pw_bloat/
  17. pw_blob_store/
  18. pw_bluetooth/
  19. pw_bluetooth_hci/
  20. pw_boot/
  21. pw_boot_cortex_m/
  22. pw_build/
  23. pw_build_info/
  24. pw_build_mcuxpresso/
  25. pw_bytes/
  26. pw_checksum/
  27. pw_chrono/
  28. pw_chrono_embos/
  29. pw_chrono_freertos/
  30. pw_chrono_stl/
  31. pw_chrono_threadx/
  32. pw_chrono_zephyr/
  33. pw_cli/
  34. pw_compilation_testing/
  35. pw_console/
  36. pw_containers/
  37. pw_cpu_exception/
  38. pw_cpu_exception_cortex_m/
  39. pw_crypto/
  40. pw_digital_io/
  41. pw_docgen/
  42. pw_doctor/
  43. pw_env_setup/
  44. pw_file/
  45. pw_function/
  46. pw_fuzzer/
  47. pw_hdlc/
  48. pw_hex_dump/
  49. pw_i2c/
  50. pw_i2c_mcuxpresso/
  51. pw_ide/
  52. pw_interrupt/
  53. pw_interrupt_cortex_m/
  54. pw_interrupt_zephyr/
  55. pw_intrusive_ptr/
  56. pw_kvs/
  57. pw_libc/
  58. pw_log/
  59. pw_log_android/
  60. pw_log_basic/
  61. pw_log_null/
  62. pw_log_rpc/
  63. pw_log_string/
  64. pw_log_tokenized/
  65. pw_log_zephyr/
  66. pw_malloc/
  67. pw_malloc_freelist/
  68. pw_metric/
  69. pw_minimal_cpp_stdlib/
  70. pw_module/
  71. pw_multisink/
  72. pw_package/
  73. pw_perf_test/
  74. pw_persistent_ram/
  75. pw_polyfill/
  76. pw_preprocessor/
  77. pw_presubmit/
  78. pw_protobuf/
  79. pw_protobuf_compiler/
  80. pw_random/
  81. pw_result/
  82. pw_ring_buffer/
  83. pw_router/
  84. pw_rpc/
  85. pw_rust/
  86. pw_snapshot/
  87. pw_software_update/
  88. pw_span/
  89. pw_spi/
  90. pw_status/
  91. pw_stm32cube_build/
  92. pw_stream/
  93. pw_string/
  94. pw_symbolizer/
  95. pw_sync/
  96. pw_sync_baremetal/
  97. pw_sync_embos/
  98. pw_sync_freertos/
  99. pw_sync_stl/
  100. pw_sync_threadx/
  101. pw_sync_zephyr/
  102. pw_sys_io/
  103. pw_sys_io_arduino/
  104. pw_sys_io_baremetal_lm3s6965evb/
  105. pw_sys_io_baremetal_stm32f429/
  106. pw_sys_io_emcraft_sf2/
  107. pw_sys_io_mcuxpresso/
  108. pw_sys_io_stdio/
  109. pw_sys_io_stm32cube/
  110. pw_sys_io_zephyr/
  111. pw_system/
  112. pw_target_runner/
  113. pw_thread/
  114. pw_thread_embos/
  115. pw_thread_freertos/
  116. pw_thread_stl/
  117. pw_thread_threadx/
  118. pw_tls_client/
  119. pw_tls_client_boringssl/
  120. pw_tls_client_mbedtls/
  121. pw_tokenizer/
  122. pw_tool/
  123. pw_toolchain/
  124. pw_trace/
  125. pw_trace_tokenized/
  126. pw_transfer/
  127. pw_unit_test/
  128. pw_varint/
  129. pw_watch/
  130. pw_web/
  131. pw_work_queue/
  132. targets/
  133. third_party/
  134. ts/
  135. zephyr/
  136. .bazelignore
  137. .bazelrc
  138. .clang-format
  139. .clang-tidy
  140. .eslintrc.json
  141. .gitattributes
  142. .gitignore
  143. .gn
  144. .mypy.ini
  145. .prettierrc.js
  146. .pw_ide.yaml
  147. .pylintrc
  148. activate.bat
  149. Android.bp
  150. AUTHORS
  151. bootstrap.bat
  152. bootstrap.sh
  153. BUILD.bazel
  154. BUILD.gn
  155. BUILDCONFIG.gn
  156. CMakeLists.txt
  157. jest.config.ts
  158. Kconfig.zephyr
  159. LICENSE
  160. modules.gni
  161. OWNERS
  162. package-lock.json
  163. package.json
  164. PIGWEED_MODULES
  165. PW_PLUGINS
  166. README.md
  167. rollup.config.js
  168. tsconfig.json
  169. WORKSPACE
README.md

Pigweed

Pigweed is an open source collection of embedded-targeted libraries–or as we like to call them, modules. These modules are building blocks and infrastructure that enable faster and more reliable development on small-footprint MMU-less 32-bit microcontrollers like the STMicroelectronics STM32L452 or the Nordic nRF52832.

For more information please see our website: https://pigweed.dev/.

Links