From 03fc1de44ef988112f65412728cfe81a3658a1be Mon Sep 17 00:00:00 2001 From: "Friedrich W. H. Kossebau" Date: Tue, 18 Jul 2017 18:31:47 +0200 Subject: Fix usage of query_qmake: differ between calls expecting qmake or not Summary: when KDE_INSTALL_USE_QT_SYS_PATHS has been explicitely set, qmake can be considered a required dependency, otherwise the paths will not be known, which would be unexpected. Also does the code calling query_qmake, besides the one testing for the same install prefix, not handle the case of empty strings being returned and then results in bogus behaviour. Thus this patch makes code fail hard if query_qmake is expected to yield a result, but no qmake executable is found. Reviewers: #frameworks, ltoscano, rdieter, apol Reviewed By: apol Subscribers: #build_system Tags: #frameworks, #build_system Differential Revision: https://phabricator.kde.org/D6772 --- modules/ECMQueryQmake.cmake | 20 +++++++++++++++++--- 1 file changed, 17 insertions(+), 3 deletions(-) (limited to 'modules/ECMQueryQmake.cmake') diff --git a/modules/ECMQueryQmake.cmake b/modules/ECMQueryQmake.cmake index fa0949df..74a6df87 100644 --- a/modules/ECMQueryQmake.cmake +++ b/modules/ECMQueryQmake.cmake @@ -9,12 +9,26 @@ endif() set(QMAKE_EXECUTABLE ${_qmake_executable_default} CACHE FILEPATH "Location of the Qt5 qmake executable") +# Helper method # This is not public API (yet)! +# Usage: query_qmake( [TRY]) +# Passing TRY will result in the method not failing fatal if no qmake executable +# has been found, but instead simply returning an empty string function(query_qmake result_variable qt_variable) + set(options TRY) + set(oneValueArgs ) + set(multiValueArgs ) + + cmake_parse_arguments(ARGS "${options}" "${oneValueArgs}" "${multiValueArgs}" ${ARGN}) + if(NOT QMAKE_EXECUTABLE) - set(${result_variable} "" PARENT_SCOPE) - message(WARNING "Should specify a qmake Qt5 binary. Can't check ${qt_variable}") - return() + if(ARGS_TRY) + set(${result_variable} "" PARENT_SCOPE) + message(STATUS "No qmake Qt5 binary found. Can't check ${qt_variable}") + return() + else() + message(FATAL_ERROR "No qmake Qt5 binary found. Can't check ${qt_variable} as required") + endif() endif() execute_process( COMMAND ${QMAKE_EXECUTABLE} -query "${qt_variable}" -- cgit v1.2.1