aboutsummaryrefslogtreecommitdiff
path: root/pw_toolchain/arm_gcc/BUILD.bazel
diff options
context:
space:
mode:
Diffstat (limited to 'pw_toolchain/arm_gcc/BUILD.bazel')
-rw-r--r--pw_toolchain/arm_gcc/BUILD.bazel21
1 files changed, 20 insertions, 1 deletions
diff --git a/pw_toolchain/arm_gcc/BUILD.bazel b/pw_toolchain/arm_gcc/BUILD.bazel
index ff3ea3be4..e93e104b0 100644
--- a/pw_toolchain/arm_gcc/BUILD.bazel
+++ b/pw_toolchain/arm_gcc/BUILD.bazel
@@ -35,6 +35,7 @@ pw_cc_library(
],
visibility = ["//visibility:public"],
deps = ["//pw_assert"],
+ alwayslink = 1,
)
pw_cc_library(
@@ -46,6 +47,21 @@ pw_cc_library(
],
)
+# Although we use similar warnings for clang and arm_gcc, we don't have one
+# centralized list, since we might want to use different warnings based on the
+# compiler in the future.
+pw_cc_toolchain_feature(
+ name = "warnings",
+ copts = [
+ "-Wall",
+ "-Wextra",
+ # Make all warnings errors, except for the exemptions below.
+ "-Werror",
+ "-Wno-error=cpp", # preprocessor #warning statement
+ "-Wno-error=deprecated-declarations", # [[deprecated]] attribute
+ ],
+)
+
pw_cc_toolchain_feature(
name = "sysroot",
builtin_sysroot = "external/gcc_arm_none_eabi_toolchain",
@@ -68,7 +84,6 @@ pw_cc_toolchain_feature(
],
copts = [
"-ffreestanding",
- "-fno-common",
"-Wno-psabi",
"-specs=nano.specs",
"-specs=nosys.specs",
@@ -187,6 +202,8 @@ pw_cc_toolchain_feature(
feature_deps = [
"@pw_toolchain//features:o2",
"@pw_toolchain//features:c++17",
+ "@pw_toolchain//features:debugging",
+ "@pw_toolchain//features:reduced_size",
"@pw_toolchain//features:no_canonical_prefixes",
"@pw_toolchain//features:no_rtti",
"@pw_toolchain//features:wno_register",
@@ -194,6 +211,7 @@ pw_cc_toolchain_feature(
":" + mcpu,
":sysroot",
":cortex_common",
+ ":warnings",
],
gcc = "@gcc_arm_none_eabi_toolchain//:bin/arm-none-eabi-gcc",
gcov = "@gcc_arm_none_eabi_toolchain//:bin/arm-none-eabi-gcov",
@@ -202,6 +220,7 @@ pw_cc_toolchain_feature(
linker_files = "@gcc_arm_none_eabi_toolchain//:all",
objcopy = "@gcc_arm_none_eabi_toolchain//:bin/arm-none-eabi-objcopy",
objcopy_files = "@gcc_arm_none_eabi_toolchain//:all",
+ objdump = "@gcc_arm_none_eabi_toolchain//:bin/arm-none-eabi-objdump",
strip = "@gcc_arm_none_eabi_toolchain//:bin/arm-none-eabi-strip",
strip_files = "@gcc_arm_none_eabi_toolchain//:all",
supports_param_files = 0,