Add support for private module .pri files

Generate a pri file for public and private interfaces, but map CONFIG +=
internal_module to a cmake option and skip the former if set.

Task-number: QTBUG-75666
Change-Id: I3f4baf1277094f4c22149a9e8769734baf9a235f
Reviewed-by: Alexandru Croitor <alexandru.croitor@qt.io>
This commit is contained in:
Simon Hausmann 2019-06-05 13:49:08 +02:00
parent 2fb7cca6ba
commit a6c11d3e09
34 changed files with 84 additions and 11 deletions

View File

@ -294,20 +294,28 @@ function(qt_set_up_developer_build)
endfunction() endfunction()
# Generates module .pri files for consumption by qmake # Generates module .pri files for consumption by qmake
function(qt_generate_module_pri_file target target_path pri_file_name_var) function(qt_generate_module_pri_file target target_path pri_files_var)
set(flags) set(flags INTERNAL_MODULE)
set(options) set(options)
set(multiopts QMAKE_MODULE_CONFIG) set(multiopts QMAKE_MODULE_CONFIG)
cmake_parse_arguments(arg "${flags}" "${options}" "${multiopts}" ${ARGN}) cmake_parse_arguments(arg "${flags}" "${options}" "${multiopts}" ${ARGN})
qt_internal_module_info(module "${target}") qt_internal_module_info(module "${target}")
qt_path_join(pri_file_name "${target_path}" "qt_lib_${module_lower}.pri") qt_path_join(pri_file_name "${target_path}" "qt_lib_${module_lower}.pri")
set("${pri_file_name_var}" "${pri_file_name}" PARENT_SCOPE) set(pri_files "${pri_file_name}")
get_target_property(enabled_features "${target}" QT_ENABLED_PUBLIC_FEATURES) get_target_property(enabled_features "${target}" QT_ENABLED_PUBLIC_FEATURES)
get_target_property(disabled_features "${target}" QT_DISABLED_PUBLIC_FEATURES) get_target_property(disabled_features "${target}" QT_DISABLED_PUBLIC_FEATURES)
string (REPLACE ";" " " enabled_features "${enabled_features}") get_target_property(enabled_private_features "${target}" QT_ENABLED_PRIVATE_FEATURES)
string (REPLACE ";" " " disabled_features "${disabled_features}") get_target_property(disabled_private_features "${target}" QT_DISABLED_PRIVATE_FEATURES)
foreach(var enabled_features disabled_features enabled_private_features disabled_private_features)
if(${var} STREQUAL "${var}-NOTFOUND")
set(${var} "")
else()
string (REPLACE ";" " " ${var} "${${var}}")
endif()
endforeach()
if(arg_QMAKE_MODULE_CONFIG) if(arg_QMAKE_MODULE_CONFIG)
string(REPLACE ";" " " module_config "${arg_QMAKE_MODULE_CONFIG}") string(REPLACE ";" " " module_config "${arg_QMAKE_MODULE_CONFIG}")
@ -316,9 +324,10 @@ function(qt_generate_module_pri_file target target_path pri_file_name_var)
set(module_config "") set(module_config "")
endif() endif()
file(GENERATE if (NOT ${arg_INTERNAL_MODULE})
OUTPUT "${pri_file_name}" file(GENERATE
CONTENT OUTPUT "${pri_file_name}"
CONTENT
"QT.${module_lower}.VERSION = ${PROJECT_VERSION} "QT.${module_lower}.VERSION = ${PROJECT_VERSION}
QT.${module_lower}.name = ${module} QT.${module_lower}.name = ${module}
QT.${module_lower}.module = ${module_versioned} QT.${module_lower}.module = ${module_versioned}
@ -333,8 +342,31 @@ QT.${module_lower}.DEFINES = QT_${module_define}_LIB
QT.${module_lower}.enabled_features = ${enabled_features} QT.${module_lower}.enabled_features = ${enabled_features}
QT.${module_lower}.disabled_features = ${disabled_features}${module_config} QT.${module_lower}.disabled_features = ${disabled_features}${module_config}
QT_MODULES += ${module_lower} QT_MODULES += ${module_lower}
"
)
endif()
qt_path_join(private_pri_file "${target_path}" "qt_lib_${module_lower}_private.pri")
list(APPEND pri_files "${private_pri_file}")
file(GENERATE
OUTPUT "${private_pri_file}"
CONTENT
"QT.${module_lower}_private.VERSION = ${PROJECT_VERSION}
QT.${module_lower}_private.name = ${module}
QT.${module_lower}_private.module =
QT.${module_lower}_private.libs = $$QT_MODULE_LIB_BASE
QT.${module_lower}_private.includes = $$QT_MODULE_INCLUDE_BASE/${module}/${PROJECT_VERSION} $$QT_MODULE_INCLUDE_BASE/${module}/${PROJECT_VERSION}/${module}
QT.${module_lower}_private.frameworks =
QT.${module_lower}_private.depends = ${module_lower}
QT.${module_lower}_private.uses =
QT.${module_lower}_private.module_config = v2
QT.${module_lower}_private.enabled_features = ${enabled_private_features}
QT.${module_lower}_private.disabled_features = ${disabled_private_features}
" "
) )
set("${pri_files_var}" "${pri_files}" PARENT_SCOPE)
endfunction() endfunction()
function(qt_generate_global_config_pri_file) function(qt_generate_global_config_pri_file)
@ -1071,7 +1103,7 @@ function(add_qt_module target)
# Process arguments: # Process arguments:
qt_parse_all_arguments(arg "add_qt_module" qt_parse_all_arguments(arg "add_qt_module"
"NO_MODULE_HEADERS;STATIC;DISABLE_TOOLS_EXPORT;EXCEPTIONS" "NO_MODULE_HEADERS;STATIC;DISABLE_TOOLS_EXPORT;EXCEPTIONS;INTERNAL_MODULE"
"CONFIG_MODULE_NAME" "CONFIG_MODULE_NAME"
"${__default_private_args};${__default_public_args};QMAKE_MODULE_CONFIG" ${ARGN}) "${__default_private_args};${__default_public_args};QMAKE_MODULE_CONFIG" ${ARGN})
@ -1311,12 +1343,19 @@ set(QT_CMAKE_EXPORT_NAMESPACE ${QT_CMAKE_EXPORT_NAMESPACE})")
EXPORT_NAME_PREFIX ${INSTALL_CMAKE_NAMESPACE}${target} EXPORT_NAME_PREFIX ${INSTALL_CMAKE_NAMESPACE}${target}
CONFIG_INSTALL_DIR "${config_install_dir}") CONFIG_INSTALL_DIR "${config_install_dir}")
if (${arg_INTERNAL_MODULE})
set(arg_INTERNAL_MODULE "INTERNAL_MODULE")
else()
unset(arg_INTERNAL_MODULE)
endif()
qt_path_join(pri_target_path ${PROJECT_BINARY_DIR} mkspecs/modules) qt_path_join(pri_target_path ${PROJECT_BINARY_DIR} mkspecs/modules)
qt_generate_module_pri_file("${target}" "${pri_target_path}" module_pri_file_name qt_generate_module_pri_file("${target}" "${pri_target_path}" module_pri_files
${arg_INTERNAL_MODULE}
QMAKE_MODULE_CONFIG QMAKE_MODULE_CONFIG
${arg_QMAKE_MODULE_CONFIG} ${arg_QMAKE_MODULE_CONFIG}
) )
qt_install(FILES "${module_pri_file_name}" DESTINATION mkspecs/modules) qt_install(FILES "${module_pri_files}" DESTINATION mkspecs/modules)
### fixme: cmake is missing a built-in variable for this. We want to apply it only to modules and plugins ### fixme: cmake is missing a built-in variable for this. We want to apply it only to modules and plugins
# that belong to Qt. # that belong to Qt.

View File

@ -6,6 +6,7 @@
add_qt_module(AccessibilitySupport add_qt_module(AccessibilitySupport
STATIC STATIC
INTERNAL_MODULE
SOURCES SOURCES
qaccessiblebridgeutils.cpp qaccessiblebridgeutils_p.h qaccessiblebridgeutils.cpp qaccessiblebridgeutils_p.h
DEFINES DEFINES

View File

@ -6,6 +6,7 @@
add_qt_module(ClipboardSupport add_qt_module(ClipboardSupport
STATIC STATIC
INTERNAL_MODULE
SOURCES SOURCES
qmacmime.mm qmacmime_p.h qmacmime.mm qmacmime_p.h
DEFINES DEFINES

View File

@ -6,6 +6,7 @@
add_qt_module(DeviceDiscoverySupport add_qt_module(DeviceDiscoverySupport
STATIC STATIC
INTERNAL_MODULE
SOURCES SOURCES
qdevicediscovery_p.h qdevicediscovery_p.h
DEFINES DEFINES

View File

@ -6,6 +6,7 @@
add_qt_module(EdidSupport add_qt_module(EdidSupport
STATIC STATIC
INTERNAL_MODULE
SOURCES SOURCES
qedidparser.cpp qedidparser_p.h qedidparser.cpp qedidparser_p.h
DEFINES DEFINES

View File

@ -6,6 +6,7 @@
add_qt_module(EglSupport add_qt_module(EglSupport
STATIC STATIC
INTERNAL_MODULE
SOURCES SOURCES
qeglconvenience.cpp qeglconvenience_p.h qeglconvenience.cpp qeglconvenience_p.h
qeglstreamconvenience.cpp qeglstreamconvenience_p.h qeglstreamconvenience.cpp qeglstreamconvenience_p.h

View File

@ -6,6 +6,7 @@ qt_find_package(EGL) # special case
add_qt_module(EglSupport add_qt_module(EglSupport
STATIC STATIC
INTERNAL_MODULE
SOURCES SOURCES
qeglconvenience.cpp qeglconvenience_p.h qeglconvenience.cpp qeglconvenience_p.h
qeglstreamconvenience.cpp qeglstreamconvenience_p.h qeglstreamconvenience.cpp qeglstreamconvenience_p.h

View File

@ -6,6 +6,7 @@
add_qt_module(EventDispatcherSupport add_qt_module(EventDispatcherSupport
STATIC STATIC
INTERNAL_MODULE
DEFINES DEFINES
QT_NO_CAST_FROM_ASCII QT_NO_CAST_FROM_ASCII
LIBRARIES LIBRARIES

View File

@ -8,6 +8,7 @@ qt_find_package(GLIB2) # special case
add_qt_module(EventDispatcherSupport add_qt_module(EventDispatcherSupport
STATIC STATIC
INTERNAL_MODULE
DEFINES DEFINES
QT_NO_CAST_FROM_ASCII QT_NO_CAST_FROM_ASCII
LIBRARIES LIBRARIES

View File

@ -6,6 +6,7 @@
add_qt_module(FbSupport add_qt_module(FbSupport
STATIC STATIC
INTERNAL_MODULE
SOURCES SOURCES
qfbbackingstore.cpp qfbbackingstore_p.h qfbbackingstore.cpp qfbbackingstore_p.h
qfbcursor.cpp qfbcursor_p.h qfbcursor.cpp qfbcursor_p.h

View File

@ -6,6 +6,7 @@
add_qt_module(FontDatabaseSupport add_qt_module(FontDatabaseSupport
STATIC STATIC
INTERNAL_MODULE
DEFINES DEFINES
QT_NO_CAST_FROM_ASCII QT_NO_CAST_FROM_ASCII
LIBRARIES LIBRARIES

View File

@ -9,6 +9,7 @@ qt_find_package(Fontconfig) # special case
add_qt_module(FontDatabaseSupport add_qt_module(FontDatabaseSupport
STATIC STATIC
INTERNAL_MODULE
DEFINES DEFINES
QT_NO_CAST_FROM_ASCII QT_NO_CAST_FROM_ASCII
LIBRARIES LIBRARIES

View File

@ -6,6 +6,7 @@
add_qt_module(GlxSupport add_qt_module(GlxSupport
STATIC STATIC
INTERNAL_MODULE
SOURCES SOURCES
qglxconvenience.cpp qglxconvenience_p.h qglxconvenience.cpp qglxconvenience_p.h
DEFINES DEFINES

View File

@ -8,6 +8,7 @@ qt_find_package(X11) # special case
add_qt_module(GlxSupport add_qt_module(GlxSupport
STATIC STATIC
INTERNAL_MODULE
SOURCES SOURCES
qglxconvenience.cpp qglxconvenience_p.h qglxconvenience.cpp qglxconvenience_p.h
DEFINES DEFINES

View File

@ -6,6 +6,7 @@
add_qt_module(GraphicsSupport add_qt_module(GraphicsSupport
STATIC STATIC
INTERNAL_MODULE
SOURCES SOURCES
qrasterbackingstore.cpp qrasterbackingstore_p.h qrasterbackingstore.cpp qrasterbackingstore_p.h
DEFINES DEFINES

View File

@ -6,6 +6,7 @@
add_qt_module(InputSupport add_qt_module(InputSupport
STATIC STATIC
INTERNAL_MODULE
DEFINES DEFINES
QT_NO_CAST_FROM_ASCII QT_NO_CAST_FROM_ASCII
LIBRARIES LIBRARIES

View File

@ -11,6 +11,7 @@ qt_find_package(Mtdev) # special case
add_qt_module(InputSupport add_qt_module(InputSupport
STATIC STATIC
INTERNAL_MODULE
DEFINES DEFINES
QT_NO_CAST_FROM_ASCII QT_NO_CAST_FROM_ASCII
LIBRARIES LIBRARIES

View File

@ -6,6 +6,7 @@
add_qt_module(XkbCommonSupport add_qt_module(XkbCommonSupport
STATIC STATIC
INTERNAL_MODULE
SOURCES SOURCES
qxkbcommon.cpp qxkbcommon_p.h qxkbcommon.cpp qxkbcommon_p.h
qxkbcommon_3rdparty.cpp qxkbcommon_3rdparty.cpp

View File

@ -6,6 +6,7 @@
add_qt_module(KmsSupport add_qt_module(KmsSupport
STATIC STATIC
INTERNAL_MODULE
SOURCES SOURCES
qkmsdevice.cpp qkmsdevice_p.h qkmsdevice.cpp qkmsdevice_p.h
DEFINES DEFINES

View File

@ -8,6 +8,7 @@ qt_find_package(Libdrm) # special case
add_qt_module(KmsSupport add_qt_module(KmsSupport
STATIC STATIC
INTERNAL_MODULE
SOURCES SOURCES
qkmsdevice.cpp qkmsdevice_p.h qkmsdevice.cpp qkmsdevice_p.h
DEFINES DEFINES

View File

@ -6,6 +6,7 @@
add_qt_module(LinuxAccessibilitySupport add_qt_module(LinuxAccessibilitySupport
STATIC STATIC
INTERNAL_MODULE
SOURCES SOURCES
application.cpp application_p.h application.cpp application_p.h
atspiadaptor.cpp atspiadaptor_p.h atspiadaptor.cpp atspiadaptor_p.h

View File

@ -8,6 +8,7 @@ qt_find_package(ATSPI2) # special case
add_qt_module(LinuxAccessibilitySupport add_qt_module(LinuxAccessibilitySupport
STATIC STATIC
INTERNAL_MODULE
SOURCES SOURCES
application.cpp application_p.h application.cpp application_p.h
atspiadaptor.cpp atspiadaptor_p.h atspiadaptor.cpp atspiadaptor_p.h

View File

@ -6,6 +6,7 @@
add_qt_module(PlatformCompositorSupport add_qt_module(PlatformCompositorSupport
STATIC STATIC
INTERNAL_MODULE
SOURCES SOURCES
qopenglcompositor.cpp qopenglcompositor_p.h qopenglcompositor.cpp qopenglcompositor_p.h
qopenglcompositorbackingstore.cpp qopenglcompositorbackingstore_p.h qopenglcompositorbackingstore.cpp qopenglcompositorbackingstore_p.h

View File

@ -6,6 +6,7 @@
add_qt_module(ServiceSupport add_qt_module(ServiceSupport
STATIC STATIC
INTERNAL_MODULE
SOURCES SOURCES
genericunix/qgenericunixservices.cpp genericunix/qgenericunixservices_p.h genericunix/qgenericunixservices.cpp genericunix/qgenericunixservices_p.h
DEFINES DEFINES

View File

@ -6,6 +6,7 @@
add_qt_module(ThemeSupport add_qt_module(ThemeSupport
STATIC STATIC
INTERNAL_MODULE
SOURCES SOURCES
qabstractfileiconengine.cpp qabstractfileiconengine_p.h qabstractfileiconengine.cpp qabstractfileiconengine_p.h
DEFINES DEFINES

View File

@ -6,6 +6,7 @@
add_qt_module(VulkanSupport add_qt_module(VulkanSupport
STATIC STATIC
INTERNAL_MODULE
SOURCES SOURCES
qbasicvulkanplatforminstance.cpp qbasicvulkanplatforminstance_p.h qbasicvulkanplatforminstance.cpp qbasicvulkanplatforminstance_p.h
qvkconvenience.cpp qvkconvenience_p.h qvkconvenience.cpp qvkconvenience_p.h

View File

@ -8,6 +8,7 @@ qt_find_package(Vulkan) # special case
add_qt_module(VulkanSupport add_qt_module(VulkanSupport
STATIC STATIC
INTERNAL_MODULE
SOURCES SOURCES
qbasicvulkanplatforminstance.cpp qbasicvulkanplatforminstance_p.h qbasicvulkanplatforminstance.cpp qbasicvulkanplatforminstance_p.h
qvkconvenience.cpp qvkconvenience_p.h qvkconvenience.cpp qvkconvenience_p.h

View File

@ -6,6 +6,7 @@
add_qt_module(WindowsUIAutomationSupport add_qt_module(WindowsUIAutomationSupport
STATIC STATIC
INTERNAL_MODULE
SOURCES SOURCES
qwindowsuiawrapper.cpp qwindowsuiawrapper_p.h qwindowsuiawrapper.cpp qwindowsuiawrapper_p.h
uiaattributeids_p.h uiaattributeids_p.h

View File

@ -5,6 +5,7 @@
##################################################################### #####################################################################
add_qt_module(EglFSDeviceIntegration add_qt_module(EglFSDeviceIntegration
INTERNAL_MODULE
SOURCES SOURCES
api/qeglfsdeviceintegration.cpp api/qeglfsdeviceintegration_p.h api/qeglfsdeviceintegration.cpp api/qeglfsdeviceintegration_p.h
api/qeglfsglobal_p.h api/qeglfsglobal_p.h

View File

@ -6,6 +6,7 @@ qt_find_package(EGL) # special case
##################################################################### #####################################################################
add_qt_module(EglFSDeviceIntegration add_qt_module(EglFSDeviceIntegration
INTERNAL_MODULE
SOURCES SOURCES
api/qeglfsdeviceintegration.cpp api/qeglfsdeviceintegration_p.h api/qeglfsdeviceintegration.cpp api/qeglfsdeviceintegration_p.h
api/qeglfsglobal_p.h api/qeglfsglobal_p.h

View File

@ -5,6 +5,7 @@
##################################################################### #####################################################################
add_qt_module(EglFsKmsSupport add_qt_module(EglFsKmsSupport
INTERNAL_MODULE
NO_MODULE_HEADERS NO_MODULE_HEADERS
SOURCES SOURCES
qeglfskmsdevice.cpp qeglfskmsdevice.h qeglfskmsdevice.cpp qeglfskmsdevice.h

View File

@ -5,6 +5,7 @@
##################################################################### #####################################################################
add_qt_module(XcbQpa add_qt_module(XcbQpa
INTERNAL_MODULE
NO_MODULE_HEADERS NO_MODULE_HEADERS
SOURCES SOURCES
gl_integrations/qxcbglintegration.cpp gl_integrations/qxcbglintegration.h gl_integrations/qxcbglintegration.cpp gl_integrations/qxcbglintegration.h

View File

@ -27,6 +27,7 @@ qt_find_package(XKB_COMMON_X11 PROVIDED_TARGETS PkgConfig::XKB_COMMON_X11)
##################################################################### #####################################################################
add_qt_module(XcbQpa add_qt_module(XcbQpa
INTERNAL_MODULE
NO_MODULE_HEADERS NO_MODULE_HEADERS
SOURCES SOURCES
gl_integrations/qxcbglintegration.cpp gl_integrations/qxcbglintegration.h gl_integrations/qxcbglintegration.cpp gl_integrations/qxcbglintegration.h

View File

@ -1605,6 +1605,8 @@ def write_module(cm_fh: typing.IO[str], scope: Scope, *,
extra = [] extra = []
if 'static' in scope.get('CONFIG'): if 'static' in scope.get('CONFIG'):
extra.append('STATIC') extra.append('STATIC')
if 'internal_module' in scope.get('CONFIG'):
extra.append('INTERNAL_MODULE')
if 'no_module_headers' in scope.get('CONFIG'): if 'no_module_headers' in scope.get('CONFIG'):
extra.append('NO_MODULE_HEADERS') extra.append('NO_MODULE_HEADERS')