blob: 73102669a45a69e24f47ff51a684a6ceff5943e2 [file] [log] [blame]
# Copyright 2023 Google LLC
#
# 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.
# Add Compilation and Linker options based on iree/build_tools/cmake/iree_cops.cmake
# Key compilation options
iree_select_compiler_opts(IREE_DEFAULT_COPTS
CLANG_OR_GCC
"-fvisibility=hidden"
# NOTE: The RTTI setting must match what LLVM was compiled with (defaults
# to RTTI disabled).
"$<$<COMPILE_LANGUAGE:CXX>:-fno-rtti>"
"$<$<COMPILE_LANGUAGE:CXX>:-fno-exceptions>"
)
# Compiler diagnostics.
# Please keep these in sync with build_tools/bazel/iree.bazelrc
iree_select_compiler_opts(IREE_DEFAULT_COPTS
# Clang diagnostics. These largely match the set of warnings used within
# Google. They have not been audited super carefully by the IREE team but are
# generally thought to be a good set and consistency with those used
# internally is very useful when importing. If you feel that some of these
# should be different (especially more strict), please raise an issue!
CLANG
"-Werror"
"-Wall"
# Disable warnings we don't care about or that generally have a low
# signal/noise ratio.
"-Wno-ambiguous-member-template"
"-Wno-char-subscripts"
"-Wno-deprecated-declarations"
"-Wno-extern-c-compat" # Matches upstream. Cannot impact due to extern C inclusion method.
"-Wno-gnu-alignof-expression"
"-Wno-gnu-variable-sized-type-not-at-end"
"-Wno-ignored-optimization-argument"
"-Wno-invalid-offsetof" # Technically UB but needed for intrusive ptrs
"-Wno-invalid-source-encoding"
"-Wno-mismatched-tags"
"-Wno-pointer-sign"
"-Wno-reserved-user-defined-literal"
"-Wno-return-type-c-linkage"
"-Wno-self-assign-overloaded"
"-Wno-sign-compare"
"-Wno-signed-unsigned-wchar"
"-Wno-strict-overflow"
"-Wno-trigraphs"
"-Wno-unknown-pragmas"
"-Wno-unknown-warning-option"
"-Wno-unused-command-line-argument"
"-Wno-unused-const-variable"
"-Wno-unused-function"
"-Wno-unused-local-typedef"
"-Wno-unused-private-field"
"-Wno-user-defined-warnings"
# Explicitly enable some additional warnings.
# Some of these aren't on by default, or under -Wall, or are subsets of
# warnings turned off above.
"-Wctad-maybe-unsupported"
"-Wfloat-overflow-conversion"
"-Wfloat-zero-conversion"
"-Wfor-loop-analysis"
"-Wformat-security"
"-Wgnu-redeclared-enum"
"-Wimplicit-fallthrough"
"-Winfinite-recursion"
"-Wliteral-conversion"
"-Wnon-virtual-dtor"
"-Woverloaded-virtual"
"-Wself-assign"
"-Wstring-conversion"
"-Wtautological-overlap-compare"
"-Wthread-safety"
"-Wthread-safety-beta"
"-Wunused-comparison"
"-Wvla"
# GCC diagnostics.
GCC
"-Werror"
"-Wall"
# Disable warnings we don't care about or that generally have a low
# signal/noise ratio.
"-Wno-unused-function"
)
iree_select_compiler_opts(IREE_DEFAULT_LINKOPTS
CLANG_OR_GCC
# Required by all modern software, effectively:
"-lm"
)