pw_toolchain: Use LLVM compiler-rt builtins

Enable linking against LLVM compiler-rt builtins. To effectively link
against builtins repo, the following properties need to be set.

`dir_pw_third_party_llvm_builtins` - Directory where the LLVM
compiler-rt repo is checked out.

`pw_third_party_llvm_builtins_TARGET_BUILTINS` - Architecture specific
pw_source_set created from builtins source files. e.g. arm_builtins. If
this property is not set, no architecture specific builtin functions
will be included from the repo.

`pw_third_party_llvm_builtins_ignore_list` - Optional list of files to
be excluded from builtins repo. The ignore list can also contain the
files to be ignored from architecture specific pw_source_set.

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