pw_build: Upstream build script & presubmit runner

Adds the `pw build` command for upstream Pigweed. The
pigweed_upstream_build.py script contains the default set of recipes.

Command line options include presubmit steps and recipes with
wildcards as well as all existing pw watch command line functionality.

Some examples:

  pw build --list
  pw build --step gn_combined_build_check --step gn_python_*
  pw build --recipe default_ninja
  pw build --recipe default_* --watch
  pw build -C out --watch

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