From 1f53a91ed367c874736cba6d84340e579c3b899e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Tor=20Arne=20Vestb=C3=B8?= Date: Wed, 21 Oct 2020 14:13:49 +0200 Subject: cmake: Respect NO_PRIVATE_MODULE when generating module pri files Change-Id: Id5816d6598a0a484c20674f34f6f809e68671e6b Reviewed-by: Alexandru Croitor --- cmake/QtModuleHelpers.cmake | 8 +++- cmake/QtPriHelpers.cmake | 101 +++++++++++++++++++++++--------------------- 2 files changed, 59 insertions(+), 50 deletions(-) (limited to 'cmake') diff --git a/cmake/QtModuleHelpers.cmake b/cmake/QtModuleHelpers.cmake index 5506649439..9f32a1309a 100644 --- a/cmake/QtModuleHelpers.cmake +++ b/cmake/QtModuleHelpers.cmake @@ -609,8 +609,14 @@ set(QT_CMAKE_EXPORT_NAMESPACE ${QT_CMAKE_EXPORT_NAMESPACE})") endif() qt_internal_install_pdb_files(${target} "${pdb_install_dir}") + if (arg_NO_PRIVATE_MODULE) + set(arg_NO_PRIVATE_MODULE "NO_PRIVATE_MODULE") + else() + unset(arg_NO_PRIVATE_MODULE) + endif() + qt_describe_module(${target}) - qt_add_list_file_finalizer(qt_finalize_module ${target} ${arg_INTERNAL_MODULE} ${header_module}) + qt_add_list_file_finalizer(qt_finalize_module ${target} ${arg_INTERNAL_MODULE} ${arg_NO_PRIVATE_MODULE} ${header_module}) endfunction() function(qt_finalize_module target) diff --git a/cmake/QtPriHelpers.cmake b/cmake/QtPriHelpers.cmake index db26da812b..fc620488c6 100644 --- a/cmake/QtPriHelpers.cmake +++ b/cmake/QtPriHelpers.cmake @@ -118,7 +118,7 @@ endfunction() # Generates module .pri files for consumption by qmake function(qt_generate_module_pri_file target) - set(flags INTERNAL_MODULE HEADER_MODULE) + set(flags INTERNAL_MODULE HEADER_MODULE NO_PRIVATE_MODULE) set(options) set(multiopts) cmake_parse_arguments(arg "${flags}" "${options}" "${multiopts}" ${ARGN}) @@ -256,22 +256,23 @@ QT_MODULES += ${config_module_name} ) endif() - set(pri_data_cmake_file "qt_lib_${config_module_name}_private.cmake") - qt_generate_qmake_libraries_pri_content(${config_module_name} "${CMAKE_CURRENT_BINARY_DIR}" - ${pri_data_cmake_file}) + if (NOT arg_NO_PRIVATE_MODULE) + set(pri_data_cmake_file "qt_lib_${config_module_name}_private.cmake") + qt_generate_qmake_libraries_pri_content(${config_module_name} "${CMAKE_CURRENT_BINARY_DIR}" + ${pri_data_cmake_file}) - set(private_pri_file_name "qt_lib_${config_module_name}_private.pri") + set(private_pri_file_name "qt_lib_${config_module_name}_private.pri") - set(private_module_dependencies "") - if(NOT arg_HEADER_MODULE) - qt_get_direct_module_dependencies(${target}Private private_module_dependencies) - endif() - list(JOIN private_module_dependencies " " private_module_dependencies) + set(private_module_dependencies "") + if(NOT arg_HEADER_MODULE) + qt_get_direct_module_dependencies(${target}Private private_module_dependencies) + endif() + list(JOIN private_module_dependencies " " private_module_dependencies) - # Generate a preliminary qt_lib_XXX_private.pri file - file(GENERATE - OUTPUT "${CMAKE_CURRENT_BINARY_DIR}/${private_pri_file_name}" - CONTENT + # Generate a preliminary qt_lib_XXX_private.pri file + file(GENERATE + OUTPUT "${CMAKE_CURRENT_BINARY_DIR}/${private_pri_file_name}" + CONTENT "QT.${config_module_name}_private.VERSION = ${PROJECT_VERSION} QT.${config_module_name}_private.name = ${module} QT.${config_module_name}_private.module = @@ -283,44 +284,46 @@ QT.${config_module_name}_private.uses = QT.${config_module_name}_private.module_config = ${joined_module_internal_config} QT.${config_module_name}_private.enabled_features = ${enabled_private_features} QT.${config_module_name}_private.disabled_features = ${disabled_private_features}" - ) - - if(QT_GENERATOR_IS_MULTI_CONFIG) - set(configs ${CMAKE_CONFIGURATION_TYPES}) - else() - set(configs ${CMAKE_BUILD_TYPE}) - endif() - set(inputs "${CMAKE_CURRENT_BINARY_DIR}/${private_pri_file_name}") - foreach(cfg ${configs}) - list(APPEND inputs "${CMAKE_CURRENT_BINARY_DIR}/${cfg}/${pri_data_cmake_file}") - endforeach() + ) - qt_path_join(private_pri_file_path "${target_path}" "${private_pri_file_name}") - list(APPEND pri_files "${private_pri_file_path}") + if(QT_GENERATOR_IS_MULTI_CONFIG) + set(configs ${CMAKE_CONFIGURATION_TYPES}) + else() + set(configs ${CMAKE_BUILD_TYPE}) + endif() + set(inputs "${CMAKE_CURRENT_BINARY_DIR}/${private_pri_file_name}") + foreach(cfg ${configs}) + list(APPEND inputs "${CMAKE_CURRENT_BINARY_DIR}/${cfg}/${pri_data_cmake_file}") + endforeach() - set(library_prefixes ${CMAKE_SHARED_LIBRARY_PREFIX} ${CMAKE_STATIC_LIBRARY_PREFIX}) - set(library_suffixes - ${CMAKE_SHARED_LIBRARY_SUFFIX} - ${CMAKE_EXTRA_SHARED_LIBRARY_SUFFIXES} - ${CMAKE_STATIC_LIBRARY_SUFFIX}) - add_custom_command( - OUTPUT "${private_pri_file_path}" - DEPENDS ${inputs} - "${QT_CMAKE_DIR}/QtGenerateLibPri.cmake" - "${QT_CMAKE_DIR}/QtGenerateLibHelpers.cmake" - COMMAND ${CMAKE_COMMAND} "-DIN_FILES=${inputs}" "-DOUT_FILE=${private_pri_file_path}" - "-DLIBRARY_PREFIXES=${library_prefixes}" - "-DLIBRARY_SUFFIXES=${library_suffixes}" - "-DLINK_LIBRARY_FLAG=${CMAKE_LINK_LIBRARY_FLAG}" - "-DCONFIGS=${configs}" - -P "${QT_CMAKE_DIR}/QtGenerateLibPri.cmake" - VERBATIM) - add_custom_target(${target}_lib_pri DEPENDS "${private_pri_file_path}") - if(arg_HEADER_MODULE) - add_dependencies(${target}_timestamp ${target}_lib_pri) - else() - add_dependencies(${target} ${target}_lib_pri) + qt_path_join(private_pri_file_path "${target_path}" "${private_pri_file_name}") + list(APPEND pri_files "${private_pri_file_path}") + + set(library_prefixes ${CMAKE_SHARED_LIBRARY_PREFIX} ${CMAKE_STATIC_LIBRARY_PREFIX}) + set(library_suffixes + ${CMAKE_SHARED_LIBRARY_SUFFIX} + ${CMAKE_EXTRA_SHARED_LIBRARY_SUFFIXES} + ${CMAKE_STATIC_LIBRARY_SUFFIX}) + add_custom_command( + OUTPUT "${private_pri_file_path}" + DEPENDS ${inputs} + "${QT_CMAKE_DIR}/QtGenerateLibPri.cmake" + "${QT_CMAKE_DIR}/QtGenerateLibHelpers.cmake" + COMMAND ${CMAKE_COMMAND} "-DIN_FILES=${inputs}" "-DOUT_FILE=${private_pri_file_path}" + "-DLIBRARY_PREFIXES=${library_prefixes}" + "-DLIBRARY_SUFFIXES=${library_suffixes}" + "-DLINK_LIBRARY_FLAG=${CMAKE_LINK_LIBRARY_FLAG}" + "-DCONFIGS=${configs}" + -P "${QT_CMAKE_DIR}/QtGenerateLibPri.cmake" + VERBATIM) + add_custom_target(${target}_lib_pri DEPENDS "${private_pri_file_path}") + if(arg_HEADER_MODULE) + add_dependencies(${target}_timestamp ${target}_lib_pri) + else() + add_dependencies(${target} ${target}_lib_pri) + endif() endif() + qt_install(FILES "${pri_files}" DESTINATION ${INSTALL_MKSPECSDIR}/modules) endfunction() -- cgit v1.2.3