summaryrefslogtreecommitdiffstats
path: root/cmake
diff options
context:
space:
mode:
authorJoerg Bornemann <joerg.bornemann@qt.io>2020-08-31 11:21:36 +0200
committerJoerg Bornemann <joerg.bornemann@qt.io>2020-09-02 23:44:03 +0200
commit46f8c46bee122d70589e97804a9c98fff6ad494b (patch)
treee3ecf4754543f64f40b9a31e45c8266f5ae1cdac /cmake
parent27fed69d0a5842a718e9afe1b82851e2803fc084 (diff)
CMake: Teach QtProcessConfigureArgs.cmake to configure other modules
Until now, QtProcessConfigureArgs.cmake could only handle qtbase and the top-level build. Add the variable MODULE_ROOT that the user can point to the module that is to be configured. Example - QtDeclarative can now be configured like this: cd qtdeclarative-build-dir echo -qml-network > config.opt cmake -DOPTFILE=config.opt -DMODULE_ROOT=<source-root>/qtdeclarative \ -DCMAKE_COMMAND=<install-prefix>/bin/qt-cmake-private \ -P <source-root>/qtbase/cmake/QtProcessConfigureArgs.cmake A convenience script that saves the user from entering this unwieldy incantation will be added in a subsequent commit. Change-Id: If46103de3a8eb84b15e7600ebfec25544451e1d5 Reviewed-by: Cristian Adam <cristian.adam@qt.io>
Diffstat (limited to 'cmake')
-rw-r--r--cmake/QtProcessConfigureArgs.cmake30
1 files changed, 18 insertions, 12 deletions
diff --git a/cmake/QtProcessConfigureArgs.cmake b/cmake/QtProcessConfigureArgs.cmake
index 5e8e2677e7..3444da9fcd 100644
--- a/cmake/QtProcessConfigureArgs.cmake
+++ b/cmake/QtProcessConfigureArgs.cmake
@@ -4,6 +4,8 @@
# This file is to be used in CMake script mode with the following variables set:
# OPTFILE: A text file containing the options that were passed to configure
# with one option per line.
+# MODULE_ROOT: The source directory of the module to be built.
+# If empty, qtbase/top-level is assumed.
include(${CMAKE_CURRENT_LIST_DIR}/QtFeatureCommon.cmake)
@@ -21,10 +23,15 @@ macro(pop_path_argument)
file(TO_CMAKE_PATH "${path}" path)
endmacro()
-get_filename_component(qtbase_source_dir ".." ABSOLUTE BASE_DIR "${CMAKE_CURRENT_LIST_DIR}")
+if("${MODULE_ROOT}" STREQUAL "")
+ # If MODULE_ROOT is not set, assume that we want to build qtbase or top-level.
+ get_filename_component(MODULE_ROOT ".." ABSOLUTE BASE_DIR "${CMAKE_CURRENT_LIST_DIR}")
+else()
+ file(TO_CMAKE_PATH "${MODULE_ROOT}" MODULE_ROOT)
+endif()
set(configure_filename "configure.cmake")
set(commandline_filename "qt_cmdline.cmake")
-set(source_dir "${qtbase_source_dir}")
+set(commandline_files "${MODULE_ROOT}/${commandline_filename}")
file(STRINGS "${OPTFILE}" configure_args)
list(FILTER configure_args EXCLUDE REGEX "^[ \t]*$")
list(TRANSFORM configure_args STRIP)
@@ -41,10 +48,10 @@ while(configure_args)
elseif(arg STREQUAL "-cmake-use-default-generator")
set(auto_detect_generator FALSE)
elseif(arg STREQUAL "-top-level")
- get_filename_component(source_dir "../.." ABSOLUTE BASE_DIR "${CMAKE_CURRENT_LIST_DIR}")
- file(GLOB commandline_files "${source_dir}/*/${commandline_filename}")
- if(EXISTS "${source_dir}/${commandline_filename}")
- list(PREPEND commandline_files "${source_dir}/${commandline_filename}")
+ get_filename_component(MODULE_ROOT "../.." ABSOLUTE BASE_DIR "${CMAKE_CURRENT_LIST_DIR}")
+ file(GLOB commandline_files "${MODULE_ROOT}/*/${commandline_filename}")
+ if(EXISTS "${MODULE_ROOT}/${commandline_filename}")
+ list(PREPEND commandline_files "${MODULE_ROOT}/${commandline_filename}")
endif()
elseif(arg STREQUAL "-skip")
list(POP_FRONT configure_args qtrepo)
@@ -69,10 +76,6 @@ while(configure_args)
endif()
endwhile()
-if(NOT commandline_files)
- set(commandline_files "${qtbase_source_dir}/${commandline_filename}")
-endif()
-
####################################################################################################
# Define functions/macros that are called in configure.cmake files
@@ -110,6 +113,7 @@ defstub(qt_feature_config)
defstub(qt_feature_definition)
defstub(qt_find_package)
defstub(set_package_properties)
+defstub(qt_qml_find_python)
####################################################################################################
@@ -172,7 +176,9 @@ while(commandline_files)
get_filename_component(commandline_file_directory "${commandline_file}" DIRECTORY)
set(configure_file "${commandline_file_directory}/${configure_filename}")
unset(commandline_subconfigs)
- include(${configure_file})
+ if(EXISTS "${configure_file}")
+ include(${configure_file})
+ endif()
include(${commandline_file})
if(commandline_subconfigs)
@@ -642,7 +648,7 @@ if(generator)
push(-G "${generator}")
endif()
-push("${source_dir}")
+push("${MODULE_ROOT}")
execute_process(COMMAND "${CMAKE_COMMAND}" ${cmake_args}
COMMAND_ECHO STDOUT