cmake: Set the PW_ROOT env variable in pigweed.cmake

Instead of setting the PW_ROOT environment variable inside of the
root CMakeLists.txt, it is set if if needed through
pw_build/pigweed.cmake.

In addition, the provided toolchain files are updated to use the
relative path to ../../pw_build/pigweed.cmake to ensure they work
in environments which are not bootstraped.

This ensures that both the upstream toolchains and Pigweed's
CMake tooling in general can be used outside of a bootstrapped
environment.

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