pw_build: Check in the modules lists .gni

Supporting a generated modules list becomes very complicated if builds
import the modules list in a .gn or BUILDCONFIG.gn file, since these are
executed before root_build_dir is defined.

- Instead of generating the modules list .gni during gn gen, use a
  checked-in copy of it.
- Add the check_modules Ninja target that checks the modules list and
  warns or aborts the build if something needs to be fixed.
- Add the update_modules Ninja target updates the checked-in modules
  list if there are no warnings or errors.

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