Warning, /graphics/digikam/core/cmake/macros/MacroCompiler.cmake is written in an unsupported language. File is not indexed.
0001 # Some useful macros to manage compiler rules
0002 #
0003 # For a complete list of GCC and Clang compiler warnings options available
0004 # depending of compiler version, check this url:
0005 # https://github.com/Barro/compiler-warnings
0006 #
0007 # SPDX-FileCopyrightText: 2010-2024 by Gilles Caulier, <caulier dot gilles at gmail dot com>
0008 #
0009 # SPDX-License-Identifier: BSD-3-Clause
0010 #
0011
0012 # -------------------------------------------------------------------------
0013
0014 # Macro to remove GCC compilation option.
0015
0016 macro(REMOVE_GCC_COMPILER_WARNINGS COMPILATION_OPTION)
0017
0018 if(CMAKE_COMPILER_IS_GNUCXX)
0019
0020 message(STATUS "Remove GCC compiler option ${COMPILATION_OPTION} from ${CMAKE_CURRENT_SOURCE_DIR}")
0021
0022 while(CMAKE_CXX_FLAGS MATCHES ${COMPILATION_OPTION})
0023
0024 string(REPLACE ${COMPILATION_OPTION} "" CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS}")
0025
0026 endwhile()
0027
0028 endif()
0029
0030 endmacro()
0031
0032 # -------------------------------------------------------------------------
0033
0034 # Macro to remove CLANG compilation option.
0035
0036 macro(REMOVE_CLANG_COMPILER_WARNINGS COMPILATION_OPTION)
0037
0038 if(CMAKE_CXX_COMPILER_ID MATCHES "Clang")
0039
0040 message(STATUS "Remove CLANG compiler option ${COMPILATION_OPTION} from ${CMAKE_CURRENT_SOURCE_DIR}")
0041
0042 while(CMAKE_CXX_FLAGS MATCHES ${COMPILATION_OPTION})
0043
0044 string(REPLACE ${COMPILATION_OPTION} "" CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS}")
0045
0046 endwhile()
0047
0048 endif()
0049
0050 endmacro()
0051
0052 # -------------------------------------------------------------------------
0053
0054 # Macro to remove GCC or CLANG compilation option which use the same syntax.
0055
0056 macro(REMOVE_COMPILER_WARNINGS COMPILATION_OPTION)
0057
0058 REMOVE_GCC_COMPILER_WARNINGS(${COMPILATION_OPTION})
0059 REMOVE_CLANG_COMPILER_WARNINGS(${COMPILATION_OPTION})
0060
0061 endmacro()
0062
0063 # -------------------------------------------------------------------------
0064
0065 # Macro to disable GCC compilation option using -Wno* syntax.
0066
0067 macro(DISABLE_GCC_COMPILER_WARNINGS COMPILER_VERSION NO_COMPILATION_OPTION)
0068
0069 if(CMAKE_COMPILER_IS_GNUCXX)
0070
0071 execute_process(COMMAND "${CMAKE_CXX_COMPILER}" "${CMAKE_CXX_COMPILER_ARG1}" "-dumpversion" OUTPUT_VARIABLE GCC_VERSION)
0072
0073 if (${GCC_VERSION} VERSION_GREATER ${COMPILER_VERSION})
0074
0075 message(STATUS "Disable GCC compiler option ${NO_COMPILATION_OPTION} from ${CMAKE_CURRENT_SOURCE_DIR}")
0076 set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${NO_COMPILATION_OPTION}")
0077
0078 endif()
0079
0080 endif()
0081
0082 endmacro()
0083
0084 # -------------------------------------------------------------------------
0085
0086 # Macro to disable CLANG compilation option using -Wno* syntax.
0087
0088 macro(DISABLE_CLANG_COMPILER_WARNINGS COMPILER_VERSION NO_COMPILATION_OPTION)
0089
0090 if(CMAKE_CXX_COMPILER_ID MATCHES "Clang")
0091
0092 execute_process(COMMAND "${CMAKE_CXX_COMPILER}" "${CMAKE_CXX_COMPILER_ARG1}" "-dumpversion" OUTPUT_VARIABLE CLANG_VERSION)
0093
0094 if (${CLANG_VERSION} VERSION_GREATER ${COMPILER_VERSION})
0095
0096 message(STATUS "Disable CLANG compiler option ${NO_COMPILATION_OPTION} from ${CMAKE_CURRENT_SOURCE_DIR}")
0097 set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${NO_COMPILATION_OPTION}")
0098
0099 endif()
0100
0101 endif()
0102
0103 endmacro()