mirror of
https://github.com/HDFGroup/hdf5.git
synced 2024-11-21 01:04:10 +08:00
161 lines
5.1 KiB
CMake
161 lines
5.1 KiB
CMake
#
|
|
# Copyright (C) 2018-2023 by George Cave - gcave@stablecoder.ca
|
|
#
|
|
# 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.
|
|
|
|
# CLANG-TIDY
|
|
find_program(CLANG_TIDY_EXE NAMES "clang-tidy")
|
|
set(CLANG_TIDY_MESSAGE_OUTPUT # Control output messages to occur only once
|
|
FALSE
|
|
CACHE INTERNAL FALSE)
|
|
mark_as_advanced(FORCE CLANG_TIDY_EXE CMAKE_C_CLANG_TIDY CMAKE_CXX_CLANG_TIDY)
|
|
|
|
# Adds clang-tidy to code compiled after this macro. All arguments are added to
|
|
# the clang-tidy application call in the form of `clang-tidy ${ARGN}`.
|
|
#
|
|
# If the clang-tidy application is not found, the macro will cause CMake to
|
|
# produce an error and not generate.
|
|
#
|
|
# Options provided can be changed by calling the macro again with the new
|
|
# arguments.
|
|
macro(clang_tidy)
|
|
# Only want to output whether clang-tidy was found once
|
|
if(NOT CLANG_TIDY_MESSAGE_OUTPUT)
|
|
set(CLANG_TIDY_MESSAGE_OUTPUT TRUE)
|
|
if(CLANG_TIDY_EXE)
|
|
message(STATUS "clang-tidy found: ${CLANG_TIDY_EXE}")
|
|
else()
|
|
message(SEND_ERROR "clang-tidy not found!")
|
|
endif()
|
|
endif()
|
|
|
|
# Only pass the options if the tool was found
|
|
if(CLANG_TIDY_EXE)
|
|
set(CMAKE_C_CLANG_TIDY
|
|
${CLANG_TIDY_EXE} ${ARGN}
|
|
CACHE STRING "" FORCE)
|
|
set(CMAKE_CXX_CLANG_TIDY
|
|
${CLANG_TIDY_EXE} ${ARGN}
|
|
CACHE STRING "" FORCE)
|
|
endif()
|
|
endmacro()
|
|
|
|
# Clears clang-tidy so it is not called on any following defined code
|
|
# compilation. clang-tidy can be re-enabled by another call to `clang_tidy()`.
|
|
macro(reset_clang_tidy)
|
|
set(CMAKE_C_CLANG_TIDY
|
|
""
|
|
CACHE STRING "" FORCE)
|
|
set(CMAKE_CXX_CLANG_TIDY
|
|
""
|
|
CACHE STRING "" FORCE)
|
|
endmacro()
|
|
|
|
# INCLUDE-WHAT-YOU-USE
|
|
find_program(IWYU_EXE NAMES "include-what-you-use")
|
|
set(IWYU_MESSAGE_OUTPUT # Control output messages to occur only once
|
|
FALSE
|
|
CACHE INTERNAL FALSE)
|
|
mark_as_advanced(FORCE IWYU_EXE CMAKE_C_INCLUDE_WHAT_YOU_USE
|
|
CMAKE_CXX_INCLUDE_WHAT_YOU_USE)
|
|
|
|
# Adds include-what-you-use to code compiled after this macro. All arguments are
|
|
# added to the include-what-you-use application call in the form of
|
|
# `include-what-you-use ${ARGN}`.
|
|
#
|
|
# If the include-what-you-use application is not found, the macro will cause
|
|
# CMake to produce an error and not generate.
|
|
#
|
|
# Options provided can be changed by calling the macro again with the new
|
|
# arguments.
|
|
macro(include_what_you_use)
|
|
# Only want to output whether clang-tidy was found once
|
|
if(NOT IWYU_MESSAGE_OUTPUT)
|
|
set(IWYU_MESSAGE_OUTPUT TRUE)
|
|
if(IWYU_EXE)
|
|
message(STATUS "include-what-you-use found: ${IWYU_EXE}")
|
|
else()
|
|
message(SEND_ERROR "include-what-you-use not found!")
|
|
endif()
|
|
endif()
|
|
|
|
# Only pass the options if the tool was found
|
|
if(IWYU_EXE)
|
|
set(CMAKE_C_INCLUDE_WHAT_YOU_USE
|
|
${IWYU_EXE} ${ARGN}
|
|
CACHE STRING "" FORCE)
|
|
set(CMAKE_CXX_INCLUDE_WHAT_YOU_USE
|
|
${IWYU_EXE} ${ARGN}
|
|
CACHE STRING "" FORCE)
|
|
endif()
|
|
endmacro()
|
|
|
|
# Clears include-what-you-use so it is not called on any following defined code
|
|
# compilation. It can be re-enabled by another call to `include_what_you_use()`.
|
|
macro(reset_include_what_you_use)
|
|
set(CMAKE_C_INCLUDE_WHAT_YOU_USE
|
|
""
|
|
CACHE STRING "" FORCE)
|
|
set(CMAKE_CXX_INCLUDE_WHAT_YOU_USE
|
|
""
|
|
CACHE STRING "" FORCE)
|
|
endmacro()
|
|
|
|
# CPPCHECK
|
|
find_program(CPPCHECK_EXE NAMES "cppcheck")
|
|
set(CPPCHECK_MESSAGE_OUTPUT # Control output messages to occur only once
|
|
FALSE
|
|
CACHE INTERNAL FALSE)
|
|
mark_as_advanced(FORCE CPPCHECK_EXE CMAKE_C_CPPCHECK CMAKE_CXX_CPPCHECK)
|
|
|
|
# Adds cppcheck to code compiled after this macro. All arguments are added to
|
|
# the cppcheck application call in the form of `cppcheck ${ARGN}`.
|
|
#
|
|
# If the include-what-you-use application is not found, the macro will cause
|
|
# CMake to produce an error and not generate.
|
|
#
|
|
# Options provided can be changed by calling the macro again with the new
|
|
# arguments.
|
|
macro(cppcheck)
|
|
# Only want to output whether clang-tidy was found once
|
|
if(NOT CPPCHECK_MESSAGE_OUTPUT)
|
|
set(CPPCHECK_MESSAGE_OUTPUT TRUE)
|
|
if(CPPCHECK_EXE)
|
|
message(STATUS "cppcheck found: ${CPPCHECK_EXE}")
|
|
else()
|
|
message(SEND_ERROR "cppcheck not found!")
|
|
endif()
|
|
endif()
|
|
|
|
# Only pass the options if the tool was found
|
|
if(CPPCHECK_EXE)
|
|
set(CMAKE_C_CPPCHECK
|
|
${CPPCHECK_EXE} ${ARGN}
|
|
CACHE STRING "" FORCE)
|
|
set(CMAKE_CXX_CPPCHECK
|
|
${CPPCHECK_EXE} ${ARGN}
|
|
CACHE STRING "" FORCE)
|
|
endif()
|
|
endmacro()
|
|
|
|
# Clears include-what-you-use so it is not called on any following defined code
|
|
# compilation. It can be re-enabled by another call to `cppcheck()`.
|
|
macro(reset_cppcheck)
|
|
set(CMAKE_C_CPPCHECK
|
|
""
|
|
CACHE STRING "" FORCE)
|
|
set(CMAKE_CXX_CPPCHECK
|
|
""
|
|
CACHE STRING "" FORCE)
|
|
endmacro()
|