diff options
author | Friedrich W. H. Kossebau <kossebau@kde.org> | 2017-07-18 18:31:47 +0200 |
---|---|---|
committer | Friedrich W. H. Kossebau <kossebau@kde.org> | 2017-07-29 01:20:36 +0200 |
commit | 03fc1de44ef988112f65412728cfe81a3658a1be (patch) | |
tree | b04372faac1b9b7e71a2389086e06a863c307377 /modules/ECMQueryQmake.cmake | |
parent | f5c11c00198e809d45399b6c8496ac838f28ad60 (diff) | |
download | extra-cmake-modules-03fc1de44ef988112f65412728cfe81a3658a1be.tar.gz extra-cmake-modules-03fc1de44ef988112f65412728cfe81a3658a1be.tar.bz2 |
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
Diffstat (limited to 'modules/ECMQueryQmake.cmake')
-rw-r--r-- | modules/ECMQueryQmake.cmake | 20 |
1 files changed, 17 insertions, 3 deletions
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(<result_variable> <qt_variable> [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}" |