91 lines
3.5 KiB
CMake
91 lines
3.5 KiB
CMake
# 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")
|