diff options
Diffstat (limited to 'pw_toolchain_bazel/features/BUILD.bazel')
-rw-r--r-- | pw_toolchain_bazel/features/BUILD.bazel | 87 |
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"], +) |