| # Copyright 2019 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. |
| |
| def reduced_size_copts(): |
| """Standard compiler flags to reduce output binary size.""" |
| |
| return [ |
| "-fno-common", |
| "-fno-exceptions", |
| "-ffunction-sections", |
| "-fdata-sections", |
| "-fno-rtti", |
| ] |
| |
| def strict_warnings_copts(): |
| return [ |
| "-Wall", |
| "-Wextra", |
| |
| # Make all warnings errors, except for the exemptions below. |
| "-Werror", |
| "-Wno-error=cpp", # preprocessor #warning statement |
| "-Wno-error=deprecated-declarations", # [[deprecated]] attribute |
| ] |
| |
| def cpp17_copts(): |
| return [ |
| "-std=c++17", |
| |
| # Allow uses of the register keyword, which may appear in C headers. |
| "-Wno-register", |
| ] |
| |
| def includes_copts(): |
| includes = [ |
| "pw_preprocessor/public", |
| "pw_span/public", |
| "pw_status/public", |
| "pw_string/public", |
| "pw_unit_test/public", |
| ] |
| return ["-I" + x for x in includes] |
| |
| def pw_default_copts(): |
| return ( |
| reduced_size_copts() + |
| strict_warnings_copts() + |
| cpp17_copts() + |
| includes_copts() |
| ) |
| |
| def pw_default_linkopts(): |
| return [] |
| |
| def pw_test( |
| name, |
| srcs, |
| deps = None, |
| **kwargs): |
| """Create a Pigweed test. |
| |
| Args: |
| name: name of target to create |
| srcs: test source files |
| deps: dependencies of target |
| """ |
| |
| if not deps: |
| deps = [] |
| deps.append("//pw_unit_test:main") |
| |
| native.cc_test( |
| name = name, |
| srcs = srcs, |
| deps = deps, |
| **kwargs |
| ) |