diff options
Diffstat (limited to 'cmake/Functions.cmake')
-rw-r--r-- | cmake/Functions.cmake | 71 |
1 files changed, 38 insertions, 33 deletions
diff --git a/cmake/Functions.cmake b/cmake/Functions.cmake index 4f342eb2d..516ae79fc 100644 --- a/cmake/Functions.cmake +++ b/cmake/Functions.cmake @@ -1,19 +1,22 @@ -function(assertTargets errorResult supportResult) - if(NOT DEFINED ${supportResult}) - set(${supportResult} ON PARENT_SCOPE) - set(${supportResult} ON) - endif() - if(${${supportResult}}) - list(REMOVE_ITEM ARGN ${errorResult}) - list(REMOVE_ITEM ARGN ${supportResult}) - foreach(qtTarget IN ITEMS ${ARGN}) - if(NOT TARGET Qt::${qtTarget}) - set(${errorResult} "Missing required Qt::${qtTarget}." PARENT_SCOPE) - set(${supportResult} OFF PARENT_SCOPE) - return() - endif() - endforeach() - endif() +function(assertTargets) + qt_parse_all_arguments(arg "add_check_for_support" + "" "" "MODULES;TARGETS" "${ARGN}" + ) + foreach(module ${arg_MODULES}) + if(NOT DEFINED ${module}_SUPPORT) + set(${module}_SUPPORT ON PARENT_SCOPE) + set(${module}_SUPPORT ON) + endif() + if(${module}_SUPPORT) + foreach(qtTarget ${arg_TARGETS}) + if(NOT TARGET Qt::${qtTarget}) + set(${module}_ERROR "Missing required Qt::${qtTarget}." PARENT_SCOPE) + set(${module}_SUPPORT OFF PARENT_SCOPE) + break() + endif() + endforeach() + endif() + endforeach() endfunction() function(add_implicit_dependencies target) @@ -27,29 +30,31 @@ function(add_implicit_dependencies target) endif() endfunction() - # TODO: this should be idealy in qtbase -function(add_check_for_support errorResult supportResult) - if(NOT DEFINED ${supportResult}) - set(${supportResult} ON PARENT_SCOPE) - set(${supportResult} ON) - endif() - if(${${supportResult}}) - qt_parse_all_arguments(arg "add_check_for_support" - "" "MODULE" "MESSAGE;CONDITION" "${ARGN}") - if("x${arg_CONDITION}" STREQUAL x) - set(arg_CONDITION ON) +function(add_check_for_support) + qt_parse_all_arguments(arg "add_check_for_support" + "" "" "MODULES;MESSAGE;CONDITION" "${ARGN}" + ) + foreach(module ${arg_MODULES}) + if(NOT DEFINED ${module}_SUPPORT) + set(${module}_SUPPORT ON PARENT_SCOPE) + set(${module}_SUPPORT ON) endif() - qt_evaluate_config_expression(result ${arg_CONDITION}) - if(NOT ${result}) - set(${supportResult} OFF PARENT_SCOPE) - set(${errorResult} ${arg_MESSAGE} PARENT_SCOPE) + if(${module}_SUPPORT) + if("x${arg_CONDITION}" STREQUAL x) + set(arg_CONDITION ON) + endif() + qt_evaluate_config_expression(result ${arg_CONDITION}) + if(NOT ${result}) + set(${module}_SUPPORT OFF PARENT_SCOPE) + set(${module}_ERROR ${arg_MESSAGE} PARENT_SCOPE) qt_configure_add_report_entry(TYPE WARNING - MESSAGE "${arg_MODULE} won't be built. ${arg_MESSAGE}" + MESSAGE "${module} won't be built. ${arg_MESSAGE}" CONDITION ON ) + endif() endif() - endif() + endforeach() endfunction() function(get_qt_features outList module) |