From fbddf745e9011abd2838b644cbc3258572721d95 Mon Sep 17 00:00:00 2001 From: Alexandru Croitor Date: Sat, 21 Sep 2019 21:22:09 +0200 Subject: [PATCH] Create module tools packages (config files) automatically Previously you had to make sure to use DISABLE_TOOLS_EXPORT in an add_qt_module call if the tools are built after the module, as well as to manually call qt_export_tools after all associated tools are built. This was needlessly complex, especially for people that are porting a repo with tools for the first time. The tools package creation is now automatically done at QtPostProcess step, so there is no need to use either DISABLE_TOOLS_EXPORT or qt_export_tools() manually. DISABLE_TOOLS_EXPORT is now a no-op, and will be removed once all repos are updated not to use it. Change-Id: I965b0d3a8a0cb908afae87b047083ed7bea9f02f Reviewed-by: Qt CMake Build Bot Reviewed-by: Simon Hausmann --- CMakeLists.txt | 3 --- cmake/QtBuild.cmake | 7 +------ cmake/QtPostProcess.cmake | 8 ++++++++ src/corelib/CMakeLists.txt | 1 - 4 files changed, 9 insertions(+), 10 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index a52bed4658..4b7803da43 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -58,9 +58,6 @@ if (QT_WILL_BUILD_TOOLS) add_subdirectory(qmake) endif() -# Need to build qmake and other Core tools before exporting them. -qt_export_tools(Core) - # As long as we use the mkspecs (for qplatformdefs.h), we need to always # install it, especially when cross-compiling. set(mkspecs_install_dir "${INSTALL_DATADIR}") diff --git a/cmake/QtBuild.cmake b/cmake/QtBuild.cmake index 3316fc4c30..758af7ebfe 100644 --- a/cmake/QtBuild.cmake +++ b/cmake/QtBuild.cmake @@ -1589,16 +1589,11 @@ set(QT_CMAKE_EXPORT_NAMESPACE ${QT_CMAKE_EXPORT_NAMESPACE})") if(NOT ${arg_NO_PRIVATE_MODULE}) target_include_directories("${target_private}" INTERFACE ${interface_includes}) endif() - - if(NOT ${arg_DISABLE_TOOLS_EXPORT}) - qt_export_tools(${target}) - endif() endfunction() function(qt_export_tools module_name) # If no tools were defined belonging to this module, don't create a config and targets file. - # Guards against the case when doing a cross-build and the function is called manually and not - # by add_qt_module. + # Guards against the case when doing a cross-build. if(NOT "${module_name}" IN_LIST QT_KNOWN_MODULES_WITH_TOOLS OR CMAKE_CROSSCOMPILING) return() diff --git a/cmake/QtPostProcess.cmake b/cmake/QtPostProcess.cmake index f0286b25f6..349d8e131b 100644 --- a/cmake/QtPostProcess.cmake +++ b/cmake/QtPostProcess.cmake @@ -332,6 +332,14 @@ function(qt_modules_process_android_dependencies) endforeach() endfunction() +function(qt_create_tools_config_files) + # Create packages like Qt6CoreTools/Qt6CoreToolsConfig.cmake. + foreach(module_name ${QT_KNOWN_MODULES_WITH_TOOLS}) + qt_export_tools("${module_name}") + endforeach() +endfunction() + +qt_create_tools_config_files() qt_internal_create_depends_files() qt_generate_build_internals_extra_cmake_code() qt_internal_create_plugins_files() diff --git a/src/corelib/CMakeLists.txt b/src/corelib/CMakeLists.txt index cbe87e406e..f4678562c6 100644 --- a/src/corelib/CMakeLists.txt +++ b/src/corelib/CMakeLists.txt @@ -253,7 +253,6 @@ add_qt_module(Core WrapDoubleConversion::WrapDoubleConversion # special case PUBLIC_LIBRARIES # special case: Qt::Platform # special case: - DISABLE_TOOLS_EXPORT # special case: # special case begin # Generated in QtBaseGlobalTargets EXTRA_CMAKE_FILES ${QT_CORE_RESOURCE_GENERATED_FILE_PATH}