pw_toolchain: Use build args when skipping static analysis

This CL reworks the way in which Pigweed-supported (but not
Pigweed-provided) third party code is excluded from static analysis.
Rather than specifying regular expressions for source paths and include
paths in the top-level .gn file, it uses the values of specific
`dir_pw_third_party_*` build args when set.

The `pw_toolchain_SKIP_STATIC_ANALYSIS_*` build args are preserved, and
appended to the values generated from the third party build args. this
allows greater flexibility, as third party repos can reside anywhere
locally and downstream consumers do not need to et special values when
using Pigweed-supported third party code.

Change-Id: I16cecb52e216ca5f8ec6de673caec43d84897ce7
Reviewed-on: https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/140114
Reviewed-by: Alexei Frolov <frolv@google.com>
Commit-Queue: Aaron Green <aarongreen@google.com>
2 files changed
tree: ae547f8c0f4c7508beae93573132c9e02b918a4e
  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_docgen/
  46. pw_doctor/
  47. pw_env_setup/
  48. pw_file/
  49. pw_function/
  50. pw_fuzzer/
  51. pw_hdlc/
  52. pw_hex_dump/
  53. pw_i2c/
  54. pw_i2c_mcuxpresso/
  55. pw_ide/
  56. pw_interrupt/
  57. pw_interrupt_cortex_m/
  58. pw_interrupt_zephyr/
  59. pw_intrusive_ptr/
  60. pw_kvs/
  61. pw_libc/
  62. pw_log/
  63. pw_log_android/
  64. pw_log_basic/
  65. pw_log_null/
  66. pw_log_rpc/
  67. pw_log_string/
  68. pw_log_tokenized/
  69. pw_log_zephyr/
  70. pw_malloc/
  71. pw_malloc_freelist/
  72. pw_metric/
  73. pw_minimal_cpp_stdlib/
  74. pw_module/
  75. pw_multisink/
  76. pw_package/
  77. pw_perf_test/
  78. pw_persistent_ram/
  79. pw_polyfill/
  80. pw_preprocessor/
  81. pw_presubmit/
  82. pw_protobuf/
  83. pw_protobuf_compiler/
  84. pw_random/
  85. pw_result/
  86. pw_ring_buffer/
  87. pw_router/
  88. pw_rpc/
  89. pw_rust/
  90. pw_snapshot/
  91. pw_software_update/
  92. pw_span/
  93. pw_spi/
  94. pw_status/
  95. pw_stm32cube_build/
  96. pw_stream/
  97. pw_string/
  98. pw_symbolizer/
  99. pw_sync/
  100. pw_sync_baremetal/
  101. pw_sync_embos/
  102. pw_sync_freertos/
  103. pw_sync_stl/
  104. pw_sync_threadx/
  105. pw_sync_zephyr/
  106. pw_sys_io/
  107. pw_sys_io_arduino/
  108. pw_sys_io_baremetal_lm3s6965evb/
  109. pw_sys_io_baremetal_stm32f429/
  110. pw_sys_io_emcraft_sf2/
  111. pw_sys_io_mcuxpresso/
  112. pw_sys_io_pico/
  113. pw_sys_io_stdio/
  114. pw_sys_io_stm32cube/
  115. pw_sys_io_zephyr/
  116. pw_system/
  117. pw_target_runner/
  118. pw_thread/
  119. pw_thread_embos/
  120. pw_thread_freertos/
  121. pw_thread_stl/
  122. pw_thread_threadx/
  123. pw_thread_zephyr/
  124. pw_tls_client/
  125. pw_tls_client_boringssl/
  126. pw_tls_client_mbedtls/
  127. pw_tokenizer/
  128. pw_tool/
  129. pw_toolchain/
  130. pw_trace/
  131. pw_trace_tokenized/
  132. pw_transfer/
  133. pw_unit_test/
  134. pw_varint/
  135. pw_watch/
  136. pw_web/
  137. pw_work_queue/
  138. seed/
  139. targets/
  140. third_party/
  141. ts/
  142. zephyr/
  143. .bazelignore
  144. .bazelrc
  145. .black.toml
  146. .clang-format
  147. .clang-tidy
  148. .eslintrc.json
  149. .git-blame-ignore-revs
  150. .gitattributes
  151. .gitignore
  152. .gn
  153. .mypy.ini
  154. .prettierrc.js
  155. .pw_ide.yaml
  156. .pylintrc
  157. activate.bat
  158. Android.bp
  159. AUTHORS
  160. bootstrap.bat
  161. bootstrap.sh
  162. BUILD.bazel
  163. BUILD.gn
  164. BUILDCONFIG.gn
  165. CMakeLists.txt
  166. jest.config.ts
  167. Kconfig.zephyr
  168. LICENSE
  169. modules.gni
  170. OWNERS
  171. package-lock.json
  172. package.json
  173. pigweed.json
  174. PIGWEED_MODULES
  175. README.md
  176. rollup.config.js
  177. tsconfig.json
  178. 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