pw_toolchain: Prefer start-group over whole-archive

This makes link_group default and removes link_whole_archive
as the default for gcc and clang toolchains. The former is
a sensible default, and is how the various spec files wrap
system libraries for the gcc toolchains. clang toolchains are
not currently doing this. link_whole_archive on the other
hand should not be the default because it can bloat binary
size by adding non-gc'able sections. --whole-archive also
complicates using pw_libc with clang toolchains see
b/285357895 for details.

Bug: b/285357895
Change-Id: I79785555dc9555542c951a293050266af2e29a90
Reviewed-on: https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/150610
Presubmit-Verified: CQ Bot Account <pigweed-scoped@luci-project-accounts.iam.gserviceaccount.com>
Reviewed-by: Armando Montanez <amontanez@google.com>
Commit-Queue: Auto-Submit <auto-submit@pigweed-service-accounts.iam.gserviceaccount.com>
Pigweed-Auto-Submit: Alex Brachet <abrachet@google.com>
Reviewed-by: Prabhu Karthikeyan Rajasekaran <prabhukr@google.com>
2 files changed
tree: 9717c925dd2b08154124626f26b9a47033fe035f
  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_xtensa/
  61. pw_interrupt_zephyr/
  62. pw_intrusive_ptr/
  63. pw_kvs/
  64. pw_libc/
  65. pw_log/
  66. pw_log_android/
  67. pw_log_basic/
  68. pw_log_null/
  69. pw_log_rpc/
  70. pw_log_string/
  71. pw_log_tokenized/
  72. pw_log_zephyr/
  73. pw_malloc/
  74. pw_malloc_freelist/
  75. pw_metric/
  76. pw_minimal_cpp_stdlib/
  77. pw_module/
  78. pw_multisink/
  79. pw_package/
  80. pw_perf_test/
  81. pw_persistent_ram/
  82. pw_polyfill/
  83. pw_preprocessor/
  84. pw_presubmit/
  85. pw_protobuf/
  86. pw_protobuf_compiler/
  87. pw_random/
  88. pw_result/
  89. pw_ring_buffer/
  90. pw_router/
  91. pw_rpc/
  92. pw_rpc_transport/
  93. pw_rust/
  94. pw_snapshot/
  95. pw_software_update/
  96. pw_span/
  97. pw_spi/
  98. pw_spi_mcuxpresso/
  99. pw_status/
  100. pw_stm32cube_build/
  101. pw_stream/
  102. pw_stream_uart_linux/
  103. pw_stream_uart_mcuxpresso/
  104. pw_string/
  105. pw_symbolizer/
  106. pw_sync/
  107. pw_sync_baremetal/
  108. pw_sync_embos/
  109. pw_sync_freertos/
  110. pw_sync_stl/
  111. pw_sync_threadx/
  112. pw_sync_zephyr/
  113. pw_sys_io/
  114. pw_sys_io_arduino/
  115. pw_sys_io_baremetal_lm3s6965evb/
  116. pw_sys_io_baremetal_stm32f429/
  117. pw_sys_io_emcraft_sf2/
  118. pw_sys_io_mcuxpresso/
  119. pw_sys_io_pico/
  120. pw_sys_io_stdio/
  121. pw_sys_io_stm32cube/
  122. pw_sys_io_zephyr/
  123. pw_system/
  124. pw_target_runner/
  125. pw_thread/
  126. pw_thread_embos/
  127. pw_thread_freertos/
  128. pw_thread_stl/
  129. pw_thread_threadx/
  130. pw_thread_zephyr/
  131. pw_tls_client/
  132. pw_tls_client_boringssl/
  133. pw_tls_client_mbedtls/
  134. pw_tokenizer/
  135. pw_tool/
  136. pw_toolchain/
  137. pw_trace/
  138. pw_trace_tokenized/
  139. pw_transfer/
  140. pw_unit_test/
  141. pw_unit_test_zephyr/
  142. pw_varint/
  143. pw_watch/
  144. pw_web/
  145. pw_work_queue/
  146. seed/
  147. targets/
  148. third_party/
  149. ts/
  150. zephyr/
  151. .bazelignore
  152. .bazelrc
  153. .black.toml
  154. .clang-format
  155. .clang-tidy
  156. .eslintrc.json
  157. .git-blame-ignore-revs
  158. .gitattributes
  159. .gitignore
  160. .gn
  161. .mypy.ini
  162. .prettierrc.js
  163. .pw_ide.yaml
  164. .pylintrc
  165. activate.bat
  166. Android.bp
  167. AUTHORS
  168. bootstrap.bat
  169. bootstrap.sh
  170. BUILD.bazel
  171. BUILD.gn
  172. BUILDCONFIG.gn
  173. CMakeLists.txt
  174. jest.config.ts
  175. Kconfig.zephyr
  176. LICENSE
  177. modules.gni
  178. OWNERS
  179. package-lock.json
  180. package.json
  181. pigweed.json
  182. PIGWEED_MODULES
  183. README.md
  184. rollup.config.js
  185. tsconfig.json
  186. 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