mirror of https://github.com/grpc/grpc.git
The C based gRPC (C++, Python, Ruby, Objective-C, PHP, C#)
https://grpc.io/
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
163 lines
5.0 KiB
163 lines
5.0 KiB
# Copyright 2021 the gRPC 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 |
|
# |
|
# http://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. |
|
|
|
""" |
|
Includes default copts. |
|
""" |
|
|
|
# This is a list of llvm flags to be used when being built with use_strict_warning=1 |
|
GRPC_LLVM_WARNING_FLAGS = [ |
|
# Enable all & extra warnings |
|
"-Wall", |
|
"-Wextra", |
|
# Avoid some known traps |
|
"-Wimplicit-fallthrough", |
|
# Consider warnings as errors |
|
"-Werror", |
|
# Ignore unknown warning flags |
|
"-Wno-unknown-warning-option", |
|
# A list of enabled flags coming from internal build system |
|
"-Wc++20-extensions", |
|
"-Wctad-maybe-unsupported", |
|
"-Wdeprecated-increment-bool", |
|
"-Wfloat-overflow-conversion", |
|
"-Wfloat-zero-conversion", |
|
"-Wfor-loop-analysis", |
|
"-Wformat-security", |
|
"-Wgnu-redeclared-enum", |
|
"-Winfinite-recursion", |
|
"-Wliteral-conversion", |
|
"-Wnon-virtual-dtor", |
|
"-Woverloaded-virtual", |
|
"-Wself-assign", |
|
"-Wstring-conversion", |
|
"-Wtautological-overlap-compare", |
|
"-Wthread-safety-analysis", |
|
"-Wthread-safety-beta", |
|
"-Wunused-but-set-variable", |
|
"-Wunused-comparison", |
|
"-Wvla", |
|
# -Wextra compatibility between gcc and clang |
|
"-Wtype-limits", |
|
# A list of disabled flags coming from internal build system |
|
"-Wno-string-concatenation", |
|
# Exceptions but will be removed |
|
"-Wno-deprecated-declarations", |
|
"-Wno-unused-function", |
|
] |
|
|
|
GRPC_LLVM_WINDOWS_WARNING_FLAGS = GRPC_LLVM_WARNING_FLAGS + [ |
|
### Some checks that are missing with clang-cl |
|
"-Wthread-safety", |
|
"-Wreorder-ctor", |
|
|
|
### Avoid some checks that are default on clang-cl |
|
"-Wno-c++98-compat-pedantic", |
|
"-Wno-missing-prototypes", |
|
"-Wno-thread-safety-precise", # too many aliases |
|
|
|
# abseil offenses |
|
"-Wno-comma", |
|
"-Wno-deprecated-redundant-constexpr-static-def", |
|
"-Wno-deprecated", # remove when the above works in all clang versions we test with |
|
"-Wno-float-equal", |
|
"-Wno-gcc-compat", |
|
"-Wno-reserved-identifier", |
|
"-Wno-thread-safety-negative", |
|
"-Wno-sign-compare", |
|
|
|
# re2 offenses |
|
"-Wno-zero-as-null-pointer-constant", |
|
|
|
# ares offenses |
|
"-Wno-macro-redefined", |
|
|
|
# protobuf offenses |
|
"-Wno-cast-align", |
|
"-Wno-inconsistent-missing-destructor-override", |
|
|
|
# xxhash offenses |
|
"-Wno-disabled-macro-expansion", |
|
|
|
# benchmark offenses |
|
"-Wno-shift-sign-overflow", |
|
|
|
# Evidently nodiscard is inappropriately pinned as a C++17 feature |
|
"-Wno-c++17-attribute-extensions", |
|
|
|
# declarations are not used in many places |
|
"-Wno-missing-variable-declarations", |
|
|
|
# TODO: delete iomgr |
|
"-Wno-old-style-cast", |
|
"-Wno-cast-qual", |
|
"-Wno-unused-member-function", |
|
"-Wno-unused-template", |
|
|
|
# TODO(hork): see if the TraceFlag offense can be removed |
|
"-Wno-global-constructors", |
|
# TODO(hork): clean up EE offenses |
|
"-Wno-missing-field-initializers", |
|
"-Wno-non-virtual-dtor", |
|
"-Wno-thread-safety-reference-return", |
|
|
|
# TODO(ctiller): offense: dump_args. signed to unsigned |
|
"-Wno-sign-conversion", |
|
"-Wno-shorten-64-to-32", |
|
|
|
# TODO: general cleanup required. Maybe new developer or rainy day projects. |
|
"-Wno-unreachable-code-break", |
|
"-Wno-unreachable-code-return", |
|
"-Wno-unreachable-code", |
|
"-Wno-used-but-marked-unused", |
|
"-Wno-newline-eof", |
|
"-Wno-unused-const-variable", |
|
"-Wno-extra-semi", |
|
"-Wno-extra-semi-stmt", |
|
"-Wno-suggest-destructor-override", |
|
"-Wno-shadow", |
|
"-Wno-missing-noreturn", |
|
"-Wno-nested-anon-types", |
|
"-Wno-gnu-anonymous-struct", |
|
"-Wno-nonportable-system-include-path", |
|
"-Wno-microsoft-cast", |
|
"-Wno-exit-time-destructors", |
|
"-Wno-undef", # #if <MACRO_NAME> to #ifdef <MACRO_NAME> |
|
"-Wno-unused-macros", |
|
"-Wno-redundant-parens", |
|
"-Wno-undefined-func-template", |
|
"-Wno-gnu-zero-variadic-macro-arguments", |
|
"-Wno-double-promotion", |
|
"-Wno-implicit-float-conversion", |
|
"-Wno-implicit-int-conversion", |
|
"-Wno-float-conversion", |
|
"-Wno-unused-parameter", |
|
"-Wno-suggest-override", |
|
"-Wno-documentation", |
|
"-Wno-documentation-unknown-command", |
|
"-Wno-unsafe-buffer-usage", |
|
|
|
### possibly bad warnings for this codebase |
|
"-Wno-covered-switch-default", |
|
"-Wno-switch-default", |
|
"-Wno-switch-enum", |
|
"-Wno-c99-extensions", |
|
"-Wno-unused-private-field", # GRPC_UNUSED does not appear to work for private fields |
|
] |
|
|
|
GRPC_DEFAULT_COPTS = select({ |
|
"//:use_strict_warning": GRPC_LLVM_WARNING_FLAGS + ["-DUSE_STRICT_WARNING=1"], |
|
"//:use_strict_warning_windows": GRPC_LLVM_WINDOWS_WARNING_FLAGS + ["-DUSE_STRICT_WARNING=1"], |
|
"//conditions:default": [], |
|
})
|
|
|