blob: 563c96272063db7fffa497a66a4548b4952c6676 [file] [log] [blame]
# Licensed to the Apache Software Foundation (ASF) under one
# or more contributor license agreements. See the NOTICE file
# distributed with this work for additional information
# regarding copyright ownership. The ASF licenses this file
# to you 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.
# If we are running clang >= 10.0 then enable more checking. Some of these warnings may not exist
# in older versions of clang so we limit the use of older clang for these checks.
if ("${CMAKE_CXX_COMPILER_ID}" STREQUAL "Clang")
EXECUTE_PROCESS(COMMAND ${CMAKE_CXX_COMPILER} --version OUTPUT_VARIABLE clang_full_version)
string (REGEX REPLACE ".*clang version ([0-9]+\\.[0-9]+).*" "\\1" CLANG_VERSION ${clang_full_version})
message(STATUS "CLANG_VERSION ${CLANG_VERSION}")
# cmake 3.2 does not support VERSION_GREATER_EQUAL
set(CLANG_MINIMUM_VERSION 10.0)
if ((CLANG_VERSION VERSION_GREATER ${CLANG_MINIMUM_VERSION})
OR
(CLANG_VERSION VERSION_GREATER ${CLANG_MINIMUM_VERSION}))
message(STATUS "Setting enhanced clang warning flags")
set(warning_opts
# These warnings are only enabled when clang's -Weverything flag is enabled
# but there is no harm in turning them off for all cases.
-Wno-c++98-compat
-Wno-c++98-compat-extra-semi
-Wno-c++98-compat-pedantic
-Wno-padded
-Wno-extra-semi
-Wno-extra-semi-stmt
-Wno-unused-parameter
-Wno-sign-conversion
-Wno-weak-vtables
-Wno-deprecated-copy-dtor
-Wno-global-constructors
-Wno-double-promotion
-Wno-float-equal
-Wno-missing-prototypes
-Wno-implicit-int-float-conversion
-Wno-implicit-float-conversion
-Wno-implicit-int-conversion
-Wno-float-conversion
-Wno-shorten-64-to-32
-Wno-covered-switch-default
-Wno-unused-exception-parameter
-Wno-return-std-move
-Wno-over-aligned
-Wno-undef
-Wno-inconsistent-missing-destructor-override
-Wno-unreachable-code
-Wno-deprecated-copy
-Wno-implicit-fallthrough
-Wno-unreachable-code-return
-Wno-non-virtual-dtor
# Here we have non-standard warnings that clang has available and are useful
# so enable them if we are using clang.
-Wreserved-id-macro
-Wused-but-marked-unused
-Wdocumentation-unknown-command
-Wcast-qual
-Wzero-as-null-pointer-constant
# These warnings should be enabled one at a time and fixed.
# To enable one of these warnings remove the `no-` after -W so
# -Wno-documentation -> -Wdocumentation
-Wno-documentation
-Wno-shadow-uncaptured-local
-Wno-shadow-field-in-constructor
-Wno-shadow
-Wno-shadow-field
-Wno-exit-time-destructors
-Wno-switch-enum
-Wno-old-style-cast
-Wno-gnu-anonymous-struct
-Wno-nested-anon-types
)
target_compile_options(tvm_objs PRIVATE $<$<COMPILE_LANGUAGE:CXX>: ${warning_opts}>)
target_compile_options(tvm_runtime_objs PRIVATE $<$<COMPILE_LANGUAGE:CXX>: ${warning_opts}>)
endif ()
endif ("${CMAKE_CXX_COMPILER_ID}" STREQUAL "Clang")