pw_toolchain: ARM clang toolchain
Initial work to get clang building ARM firmware.
Current state:
- Does not work on Windows; no clang toolchain yet.
- Almost all tests pass.
- FreeListHeap tests that don't zero-initilize the buffer fail in qemu
and crash on STM32F429I-DISC1. (pwbug/315)
Change-Id: I39559511f19571c26930a868406d6ee1b514c412
Reviewed-on: https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/13144
Commit-Queue: Armando Montanez <amontanez@google.com>
Reviewed-by: Keir Mierle <keir@google.com>
Reviewed-by: Ewout van Bekkum <ewout@google.com>
Reviewed-by: Alexei Frolov <frolv@google.com>
Pigweed-Auto-Submit: Armando Montanez <amontanez@google.com>
diff --git a/BUILD.gn b/BUILD.gn
index 0c6414f..06e411d 100644
--- a/BUILD.gn
+++ b/BUILD.gn
@@ -111,8 +111,14 @@
}
}
-_build_pigweed_default_at_all_optimization_levels("qemu") {
- toolchain_prefix = "$dir_pigweed/targets/lm3s6965evb-qemu:lm3s6965evb_qemu_"
+_build_pigweed_default_at_all_optimization_levels("qemu_gcc") {
+ toolchain_prefix =
+ "$dir_pigweed/targets/lm3s6965evb-qemu:lm3s6965evb_qemu_gcc_"
+}
+
+_build_pigweed_default_at_all_optimization_levels("qemu_clang") {
+ toolchain_prefix =
+ "$dir_pigweed/targets/lm3s6965evb-qemu:lm3s6965evb_qemu_clang_"
}
group("docs") {
@@ -148,6 +154,7 @@
"$dir_pw_rpc/py",
"$dir_pw_status/py",
"$dir_pw_tokenizer/py",
+ "$dir_pw_toolchain/py",
"$dir_pw_trace/py",
"$dir_pw_trace_tokenized/py",
"$dir_pw_unit_test/py",
@@ -264,7 +271,6 @@
# Targets for all module unit test groups.
pw_test_group("pw_module_tests") {
group_deps = [
- "$dir_pw_allocator:tests",
"$dir_pw_assert:tests",
"$dir_pw_base64:tests",
"$dir_pw_blob_store:tests",
@@ -306,6 +312,19 @@
"$dir_pw_varint:tests",
]
+ # TODO(pwbug/315): Fix pw_allocator tests on ARM Clang build.
+ _qemu_toolchains = [
+ "lm3s6965evb_qemu_clang_debug",
+ "lm3s6965evb_qemu_clang_size_optimized",
+ "lm3s6965evb_qemu_clang_speed_optimized",
+ ]
+ _toolchain_is_qemu_clang =
+ _qemu_toolchains + [ get_label_info(current_toolchain, "name") ] -
+ [ get_label_info(current_toolchain, "name") ] != _qemu_toolchains
+ if (!_toolchain_is_qemu_clang) {
+ group_deps += [ "$dir_pw_allocator:tests" ]
+ }
+
if (defined(pw_toolchain_SCOPE.is_host_toolchain) &&
pw_toolchain_SCOPE.is_host_toolchain) {
# TODO(pwbug/196): KVS tests are not compatible with device builds as they