From: Joel Rosdahl Date: Sun, 17 Mar 2024 18:13:27 +0000 (+0100) Subject: build: Move add_compile_flag_if_supported to Utils.cmake X-Git-Tag: v4.10~58 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=2ddbc79919be958084e0e90742c486ff305d6f59;p=thirdparty%2Fccache.git build: Move add_compile_flag_if_supported to Utils.cmake --- diff --git a/CMakeLists.txt b/CMakeLists.txt index 3e70e94f..4088f8f3 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -66,6 +66,7 @@ if(ENABLE_IPO AND NOT MINGW) set(CMAKE_INTERPROCEDURAL_OPTIMIZATION ON) endif() +include(Utils) include(CIBuildType) include(DefaultBuildType) include(UseFastestLinker) diff --git a/cmake/DevModeWarnings.cmake b/cmake/DevModeWarnings.cmake index c17d4e29..f7f1b0c4 100644 --- a/cmake/DevModeWarnings.cmake +++ b/cmake/DevModeWarnings.cmake @@ -1,37 +1,3 @@ -include(CheckCXXCompilerFlag) - -# check_cxx_compiler_flag caches the result, so a unique variable name is -# required for every flag to be checked. -# -# Parameters: -# -# * flag [in], e.g. FLAG -# * var_name_of_var_name [in], e.g. "TEMP". This is the variable that "HAS_FLAG" -# will be written to. -function(generate_unique_has_flag_var_name flag var_name_of_var_name) - string(REGEX REPLACE "[=-]" "_" var_name "${flag}") - string(TOUPPER "${var_name}" var_name) - set(${var_name_of_var_name} "HAS_${var_name}" PARENT_SCOPE) -endfunction() - -macro(add_compile_flag_if_supported_ex varname flag alternative_flag) - # has_flag will contain "HAS_$flag" so each flag gets a unique HAS variable. - generate_unique_has_flag_var_name("${flag}" "has_flag") - - # Instead of passing "has_flag" this passes the content of has_flag. - check_cxx_compiler_flag("${flag}" "${has_flag}") - - if(${${has_flag}}) - list(APPEND "${varname}" "${flag}") - elseif("${alternative_flag}") - add_compile_flag_if_supported_ex("${varname}" ${alternative_flag} "") - endif() -endmacro() - -macro(add_compile_flag_if_supported varname flag) - add_compile_flag_if_supported_ex("${varname}" "${flag}" "") -endmacro() - set( _clang_gcc_warnings -Wcast-align diff --git a/cmake/Utils.cmake b/cmake/Utils.cmake new file mode 100644 index 00000000..431b8d29 --- /dev/null +++ b/cmake/Utils.cmake @@ -0,0 +1,33 @@ +include(CheckCXXCompilerFlag) + +# check_cxx_compiler_flag caches the result, so a unique variable name is +# required for every flag to be checked. +# +# Parameters: +# +# * flag [in], e.g. FLAG +# * var_name_of_var_name [in], e.g. "TEMP". This is the variable that "HAS_FLAG" +# will be written to. +function(_generate_unique_has_flag_var_name flag var_name_of_var_name) + string(REGEX REPLACE "[=-]" "_" var_name "${flag}") + string(TOUPPER "${var_name}" var_name) + set(${var_name_of_var_name} "HAS_${var_name}" PARENT_SCOPE) +endfunction() + +macro(add_compile_flag_if_supported_ex varname flag alternative_flag) + # has_flag will contain "HAS_$flag" so each flag gets a unique HAS variable. + _generate_unique_has_flag_var_name("${flag}" "has_flag") + + # Instead of passing "has_flag" this passes the content of has_flag. + check_cxx_compiler_flag("${flag}" "${has_flag}") + + if(${${has_flag}}) + list(APPEND "${varname}" "${flag}") + elseif("${alternative_flag}") + add_compile_flag_if_supported_ex("${varname}" ${alternative_flag} "") + endif() +endmacro() + +macro(add_compile_flag_if_supported varname flag) + add_compile_flag_if_supported_ex("${varname}" "${flag}" "") +endmacro()