summaryrefslogtreecommitdiffstats
path: root/cmake/QtModuleHelpers.cmake
diff options
context:
space:
mode:
Diffstat (limited to 'cmake/QtModuleHelpers.cmake')
-rw-r--r--cmake/QtModuleHelpers.cmake70
1 files changed, 64 insertions, 6 deletions
diff --git a/cmake/QtModuleHelpers.cmake b/cmake/QtModuleHelpers.cmake
index ba03173073..d92e1524fe 100644
--- a/cmake/QtModuleHelpers.cmake
+++ b/cmake/QtModuleHelpers.cmake
@@ -16,9 +16,9 @@ macro(qt_internal_get_internal_add_module_keywords option_args single_args multi
NO_ADDITIONAL_TARGET_INFO
NO_GENERATE_METATYPES
NO_HEADERSCLEAN_CHECK
- GENERATE_CPP_EXPORTS # deprecated
NO_GENERATE_CPP_EXPORTS
NO_UNITY_BUILD
+ ${__qt_internal_sbom_optional_args}
)
set(${single_args}
MODULE_INCLUDE_NAME
@@ -34,6 +34,7 @@ macro(qt_internal_get_internal_add_module_keywords option_args single_args multi
SSG_HEADER_FILTERS
HEADER_SYNC_SOURCE_DIRECTORY
${__default_target_info_args}
+ ${__qt_internal_sbom_single_args}
)
set(${multi_args}
QMAKE_MODULE_CONFIG
@@ -44,6 +45,7 @@ macro(qt_internal_get_internal_add_module_keywords option_args single_args multi
${__default_private_args}
${__default_public_args}
${__default_private_module_args}
+ ${__qt_internal_sbom_multi_args}
)
endmacro()
@@ -236,6 +238,10 @@ function(qt_internal_add_module target)
set_target_properties(${target} PROPERTIES _qt_is_internal_module TRUE)
set_property(TARGET ${target} APPEND PROPERTY EXPORT_PROPERTIES _qt_is_internal_module)
endif()
+ if(arg_HEADER_MODULE)
+ set_target_properties(${target} PROPERTIES _qt_is_header_module TRUE)
+ set_property(TARGET ${target} APPEND PROPERTY EXPORT_PROPERTIES _qt_is_header_module)
+ endif()
if(NOT arg_CONFIG_MODULE_NAME)
set(arg_CONFIG_MODULE_NAME "${module_lower}")
@@ -423,8 +429,7 @@ function(qt_internal_add_module target)
# We should not generate export headers if module is defined as pure STATIC.
# Static libraries don't need to export their symbols, and corner cases when sources are
# also used in shared libraries, should be handled manually.
- if((NOT arg_NO_GENERATE_CPP_EXPORTS OR arg_GENERATE_CPP_EXPORTS) AND NOT arg_STATIC
- AND NOT arg_HEADER_MODULE)
+ if(NOT arg_NO_GENERATE_CPP_EXPORTS AND NOT arg_STATIC AND NOT arg_HEADER_MODULE)
if(arg_CPP_EXPORT_HEADER_BASE_NAME)
set(cpp_export_header_base_name
"CPP_EXPORT_HEADER_BASE_NAME;${arg_CPP_EXPORT_HEADER_BASE_NAME}"
@@ -440,7 +445,7 @@ function(qt_internal_add_module target)
set_source_files_properties("${module_depends_header}" PROPERTIES GENERATED TRUE)
set_target_properties(${target} PROPERTIES _qt_module_depends_header
"${module_depends_header}")
- if(NOT ${arg_HEADER_MODULE})
+ if(NOT arg_HEADER_MODULE)
set(module_header "${module_build_interface_include_dir}/${module_include_name}")
set_property(TARGET "${target}" PROPERTY MODULE_HEADER
"${module_header}")
@@ -497,8 +502,6 @@ function(qt_internal_add_module target)
endif()
endif()
- qt_internal_library_deprecation_level(deprecation_define)
-
if(NOT arg_HEADER_MODULE)
qt_autogen_tools_initial_setup(${target})
endif()
@@ -913,10 +916,64 @@ set(QT_ALLOW_MISSING_TOOLS_PACKAGES TRUE)")
endif()
qt_describe_module(${target})
+
+ if(QT_GENERATE_SBOM)
+ set(sbom_args "")
+ list(APPEND sbom_args TYPE QT_MODULE)
+
+ qt_get_cmake_configurations(configs)
+ foreach(config IN LISTS configs)
+ _qt_internal_sbom_append_multi_config_aware_single_arg_option(
+ RUNTIME_PATH
+ "${INSTALL_BINDIR}"
+ "${config}"
+ sbom_args
+ )
+ _qt_internal_sbom_append_multi_config_aware_single_arg_option(
+ LIBRARY_PATH
+ "${INSTALL_LIBDIR}"
+ "${config}"
+ sbom_args
+ )
+ _qt_internal_sbom_append_multi_config_aware_single_arg_option(
+ ARCHIVE_PATH
+ "${INSTALL_LIBDIR}"
+ "${config}"
+ sbom_args
+ )
+ _qt_internal_sbom_append_multi_config_aware_single_arg_option(
+ FRAMEWORK_PATH
+ "${INSTALL_LIBDIR}/${fw_versioned_binary_dir}"
+ "${config}"
+ sbom_args
+ )
+ endforeach()
+
+ _qt_internal_forward_function_args(
+ FORWARD_APPEND
+ FORWARD_PREFIX arg
+ FORWARD_OUT_VAR sbom_args
+ FORWARD_OPTIONS
+ ${__qt_internal_sbom_optional_args}
+ FORWARD_SINGLE
+ ${__qt_internal_sbom_single_args}
+ FORWARD_MULTI
+ ${__qt_internal_sbom_multi_args}
+ )
+
+ _qt_internal_extend_sbom(${target} ${sbom_args})
+ endif()
+
qt_add_list_file_finalizer(qt_finalize_module ${target} ${arg_INTERNAL_MODULE} ${arg_NO_PRIVATE_MODULE})
endfunction()
function(qt_internal_apply_apple_privacy_manifest target)
+ # Avoid "INTERFACE_LIBRARY targets may only have whitelisted properties" error on CMake < 3.17.
+ get_target_property(target_type ${target} TYPE)
+ if("${target_type}" STREQUAL "INTERFACE_LIBRARY")
+ return()
+ endif()
+
if(APPLE)
# Privacy manifest
get_target_property(is_framework ${target} FRAMEWORK)
@@ -956,6 +1013,7 @@ function(qt_finalize_module target)
qt_generate_module_pri_file("${target}" ${ARGN})
qt_internal_generate_pkg_config_file(${target})
qt_internal_apply_apple_privacy_manifest(${target})
+ _qt_internal_finalize_sbom(${target})
endfunction()
# Get a set of Qt module related values based on the target.