diff options
Diffstat (limited to 'cmake/QtModuleHelpers.cmake')
-rw-r--r-- | cmake/QtModuleHelpers.cmake | 70 |
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. |