aboutsummaryrefslogtreecommitdiff
path: root/pw_toolchain_bazel/features/BUILD.bazel
diff options
context:
space:
mode:
Diffstat (limited to 'pw_toolchain_bazel/features/BUILD.bazel')
-rw-r--r--pw_toolchain_bazel/features/BUILD.bazel87
1 files changed, 87 insertions, 0 deletions
diff --git a/pw_toolchain_bazel/features/BUILD.bazel b/pw_toolchain_bazel/features/BUILD.bazel
new file mode 100644
index 000000000..c41e01396
--- /dev/null
+++ b/pw_toolchain_bazel/features/BUILD.bazel
@@ -0,0 +1,87 @@
+# Copyright 2023 The Pigweed Authors
+#
+# Licensed under the Apache License, Version 2.0 (the "License"); you may not
+# use this file except in compliance with the License. You may obtain a copy of
+# the License at
+#
+# https://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
+# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+# License for the specific language governing permissions and limitations under
+# the License.
+
+load("//cc_toolchain:defs.bzl", "pw_cc_toolchain_feature")
+
+package(default_visibility = ["//visibility:public"])
+
+licenses(["notice"])
+
+# Optimization level option
+pw_cc_toolchain_feature(
+ name = "o2",
+ copts = ["-O2"],
+ linkopts = ["-O2"],
+)
+
+# Disables linking of the default C++ standard library to allow linking of a
+# different version.
+pw_cc_toolchain_feature(
+ name = "no_default_cpp_stdlib",
+ linkopts = ["-nostdlib++"],
+)
+
+# Prevent relative paths from being converted to absolute paths.
+pw_cc_toolchain_feature(
+ name = "no_canonical_prefixes",
+ copts = [
+ "-no-canonical-prefixes",
+ ],
+)
+
+# Compile without runtime type information (RTTI). This produces smaller binaries.
+pw_cc_toolchain_feature(
+ name = "no_rtti",
+ cxxopts = [
+ "-fno-rtti",
+ ],
+)
+
+# Allow uses of the register keyword, which may appear in C headers.
+pw_cc_toolchain_feature(
+ name = "wno_register",
+ cxxopts = [
+ "-Wno-register",
+ ],
+)
+
+# Compile for the C++17 standard.
+pw_cc_toolchain_feature(
+ name = "c++17",
+ cxxopts = ["-std=c++17"],
+ linkopts = ["-std=c++17"],
+)
+
+# Issue a warning when a class appears to be polymorphic, yet it declares a
+# non-virtual destructor
+pw_cc_toolchain_feature(
+ name = "wnon_virtual_dtor",
+ cxxopts = ["-Wnon-virtual-dtor"],
+)
+
+# Standard compiler flags to reduce output binary size.
+pw_cc_toolchain_feature(
+ name = "reduced_size",
+ copts = [
+ "-fno-common",
+ "-fno-exceptions",
+ "-ffunction-sections",
+ "-fdata-sections",
+ ],
+)
+
+pw_cc_toolchain_feature(
+ name = "debugging",
+ copts = ["-g"],
+)