pw_build: Configurable Python and proto toolchains

- Rename pw_toolchain/dummy to pw_toolchain/default to make its intended
  purpose clear. Keep pw_toolchain/dummy around for compatibility.
- Create a template that generates non-C++ toolchains. This is used for
  non-C++ tasks like Python and proto. GN parses build files differently
  in the default toolchain (all targets are instantiated), so the
  these toolchains can be used when that is not desired.
- Make pw_python_package's toolchain configurable with the
  pw_build_PYTHON_TOOLCHAIN arg.
- Make pw_proto_library's toolchain configurable with the
  pw_protobuf_compiler_TOOLCHAIN arg.

Requires: pigweed-internal:11680
Change-Id: I0aad049c605906b77c58b93a08efc63a648947ee
Reviewed-on: https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/40763
Reviewed-by: Armando Montanez <amontanez@google.com>
Reviewed-by: Keir Mierle <keir@google.com>
Commit-Queue: Wyatt Hepler <hepler@google.com>
11 files changed
tree: 0a12c34dd6d3c0bb376107668ad39213ae641bbb
  1. build_overrides/
  2. docker/
  3. docs/
  4. pw_allocator/
  5. pw_arduino_build/
  6. pw_assert/
  7. pw_assert_basic/
  8. pw_assert_log/
  9. pw_base64/
  10. pw_bloat/
  11. pw_blob_store/
  12. pw_boot_armv7m/
  13. pw_build/
  14. pw_bytes/
  15. pw_checksum/
  16. pw_chrono/
  17. pw_chrono_embos/
  18. pw_chrono_freertos/
  19. pw_chrono_stl/
  20. pw_chrono_threadx/
  21. pw_cli/
  22. pw_containers/
  23. pw_cpu_exception/
  24. pw_cpu_exception_cortex_m/
  25. pw_docgen/
  26. pw_doctor/
  27. pw_env_setup/
  28. pw_fuzzer/
  29. pw_hdlc/
  30. pw_hex_dump/
  31. pw_i2c/
  32. pw_interrupt/
  33. pw_interrupt_cortex_m/
  34. pw_kvs/
  35. pw_log/
  36. pw_log_basic/
  37. pw_log_multisink/
  38. pw_log_null/
  39. pw_log_rpc/
  40. pw_log_sink/
  41. pw_log_tokenized/
  42. pw_malloc/
  43. pw_malloc_freelist/
  44. pw_metric/
  45. pw_minimal_cpp_stdlib/
  46. pw_module/
  47. pw_multisink/
  48. pw_package/
  49. pw_persistent_ram/
  50. pw_polyfill/
  51. pw_preprocessor/
  52. pw_presubmit/
  53. pw_protobuf/
  54. pw_protobuf_compiler/
  55. pw_random/
  56. pw_result/
  57. pw_ring_buffer/
  58. pw_router/
  59. pw_rpc/
  60. pw_span/
  61. pw_status/
  62. pw_stream/
  63. pw_string/
  64. pw_sync/
  65. pw_sync_baremetal/
  66. pw_sync_embos/
  67. pw_sync_freertos/
  68. pw_sync_stl/
  69. pw_sync_threadx/
  70. pw_sys_io/
  71. pw_sys_io_arduino/
  72. pw_sys_io_baremetal_lm3s6965evb/
  73. pw_sys_io_baremetal_stm32f429/
  74. pw_sys_io_stdio/
  75. pw_target_runner/
  76. pw_thread/
  77. pw_thread_embos/
  78. pw_thread_freertos/
  79. pw_thread_stl/
  80. pw_thread_threadx/
  81. pw_tokenizer/
  82. pw_tool/
  83. pw_toolchain/
  84. pw_trace/
  85. pw_trace_tokenized/
  86. pw_unit_test/
  87. pw_varint/
  88. pw_watch/
  89. pw_web_ui/
  90. targets/
  91. third_party/
  92. .bazelignore
  93. .bazelrc
  94. .clang-format
  95. .eslintrc.json
  96. .gitattributes
  97. .gitignore
  98. .gn
  99. .prettierrc.js
  100. .pylintrc
  101. activate.bat
  102. AUTHORS
  103. bootstrap.bat
  104. bootstrap.sh
  105. BUILD
  106. BUILD.gn
  107. BUILDCONFIG.gn
  108. CMakeLists.txt
  109. LICENSE
  110. modules.gni
  111. OWNERS
  112. package.json
  113. PW_PLUGINS
  114. README.md
  115. tsconfig.json
  116. WORKSPACE
  117. yarn.lock
README.md

See our website: http://pigweed.dev