diff options
Diffstat (limited to 'cmake/QtTargetHelpers.cmake')
-rw-r--r-- | cmake/QtTargetHelpers.cmake | 78 |
1 files changed, 77 insertions, 1 deletions
diff --git a/cmake/QtTargetHelpers.cmake b/cmake/QtTargetHelpers.cmake index e669047ff1..b90b95870d 100644 --- a/cmake/QtTargetHelpers.cmake +++ b/cmake/QtTargetHelpers.cmake @@ -45,6 +45,7 @@ function(qt_internal_extend_target target) set(single_args PRECOMPILED_HEADER EXTRA_LINKER_SCRIPT_CONTENT + ATTRIBUTION_ENTRY_INDEX ) set(multi_args ${__default_public_args} @@ -54,6 +55,9 @@ function(qt_internal_extend_target target) CONDITION_INDEPENDENT_SOURCES COMPILE_FLAGS EXTRA_LINKER_SCRIPT_EXPORTS + SBOM_DEPENDENCIES + ATTRIBUTION_FILE_PATHS + ATTRIBUTION_FILE_DIR_PATHS ) cmake_parse_arguments(PARSE_ARGV 1 arg @@ -99,10 +103,13 @@ function(qt_internal_extend_target target) get_target_property(target_type ${target} TYPE) set(is_library FALSE) set(is_interface_lib FALSE) + set(is_executable FALSE) if(${target_type} STREQUAL "STATIC_LIBRARY" OR ${target_type} STREQUAL "SHARED_LIBRARY") set(is_library TRUE) elseif(target_type STREQUAL "INTERFACE_LIBRARY") set(is_interface_lib TRUE) + elseif(target_type STREQUAL "EXECUTABLE") + set(is_executable TRUE) endif() foreach(lib ${arg_PUBLIC_LIBRARIES} ${arg_LIBRARIES}) @@ -207,6 +214,42 @@ function(qt_internal_extend_target target) endif() endforeach() + if(arg_LIBRARIES) + _qt_internal_append_to_target_property_without_duplicates(${target} + _qt_extend_target_libraries "${arg_LIBRARIES}" + ) + endif() + + if(arg_PUBLIC_LIBRARIES) + _qt_internal_append_to_target_property_without_duplicates(${target} + _qt_extend_target_public_libraries "${arg_PUBLIC_LIBRARIES}" + ) + endif() + + if(arg_SBOM_DEPENDENCIES) + _qt_internal_extend_sbom_dependencies(${target} + SBOM_DEPENDENCIES ${arg_SBOM_DEPENDENCIES} + ) + endif() + + if(NOT "${arg_ATTRIBUTION_ENTRY_INDEX}" STREQUAL "") + _qt_internal_extend_sbom(${target} + ATTRIBUTION_ENTRY_INDEX "${arg_ATTRIBUTION_ENTRY_INDEX}" + ) + endif() + + if(arg_ATTRIBUTION_FILE_PATHS) + _qt_internal_extend_sbom(${target} + ATTRIBUTION_FILE_PATHS ${arg_ATTRIBUTION_FILE_PATHS} + ) + endif() + + if(arg_ATTRIBUTION_FILE_DIR_PATHS) + _qt_internal_extend_sbom(${target} + ATTRIBUTION_FILE_DIR_PATHS ${arg_ATTRIBUTION_FILE_DIR_PATHS} + ) + endif() + set(target_private "${target}Private") get_target_property(is_internal_module ${target} _qt_is_internal_module) # Internal modules don't have Private targets but we still need to @@ -273,6 +316,20 @@ function(qt_internal_extend_target target) set_target_properties(${target} PROPERTIES _qt_extra_linker_script_exports "${arg_EXTRA_LINKER_SCRIPT_EXPORTS}") endif() + + if(is_executable) + # If linking against Gui, make sure to also build the default QPA plugin. + # This makes the experience of an initial Qt configuration to build and run one single + # test / executable nicer. + set(linked_libs ${arg_PUBLIC_LIBRARIES} ${arg_LIBRARIES}) + if(linked_libs MATCHES "(^|;)(${QT_CMAKE_EXPORT_NAMESPACE}::|Qt::)?Gui($|;)" AND + TARGET qpa_default_plugins) + add_dependencies("${target}" qpa_default_plugins) + endif() + + # For executables collect static plugins that these targets depend on. + qt_internal_import_plugins(${target} ${linked_libs}) + endif() endfunction() # Given CMAKE_CONFIG and ALL_CMAKE_CONFIGS, determines if a directory suffix needs to be appended @@ -281,7 +338,7 @@ endfunction() function(qt_get_install_target_default_args) cmake_parse_arguments(PARSE_ARGV 0 arg "" - "OUT_VAR;CMAKE_CONFIG;RUNTIME;LIBRARY;ARCHIVE;INCLUDES;BUNDLE" + "OUT_VAR;OUT_VAR_RUNTIME;CMAKE_CONFIG;RUNTIME;LIBRARY;ARCHIVE;INCLUDES;BUNDLE" "ALL_CMAKE_CONFIGS") _qt_internal_validate_all_args_are_parsed(arg) @@ -331,6 +388,13 @@ function(qt_get_install_target_default_args) BUNDLE DESTINATION "${bundle}${suffix}" INCLUDES DESTINATION "${includes}${suffix}") set(${arg_OUT_VAR} "${args}" PARENT_SCOPE) + + if(arg_OUT_VAR_RUNTIME) + set(args + "${runtime}${suffix}" + ) + set(${arg_OUT_VAR_RUNTIME} "${args}" PARENT_SCOPE) + endif() endfunction() macro(qt_internal_setup_default_target_function_options) @@ -374,6 +438,15 @@ macro(qt_internal_setup_default_target_function_options) TARGET_COPYRIGHT ) + set(__qt_internal_sbom_single_args + ATTRIBUTION_ENTRY_INDEX + ) + set(__qt_internal_sbom_multi_args + SBOM_DEPENDENCIES + ATTRIBUTION_FILE_PATHS + ATTRIBUTION_FILE_DIR_PATHS + ) + # Collection of arguments so they can be shared across qt_internal_add_executable # and qt_internal_add_test_helper. set(__qt_internal_add_executable_optional_args @@ -391,10 +464,12 @@ macro(qt_internal_setup_default_target_function_options) INSTALL_DIRECTORY VERSION ${__default_target_info_args} + ${__qt_internal_sbom_single_args} ) set(__qt_internal_add_executable_multi_args ${__default_private_args} ${__default_public_args} + ${__qt_internal_sbom_multi_args} ) endmacro() @@ -462,6 +537,7 @@ function(qt_internal_setup_cmake_config_postfix) # If postfix is set by user avoid changing it, but save postfix variable that has # a non-default value for further warning. if("${${postfix_var}}" STREQUAL "") + set(${postfix_var} "${${default_postfix_var}}") set(${postfix_var} "${${default_postfix_var}}" PARENT_SCOPE) elseif(NOT "${${postfix_var}}" STREQUAL "${${default_postfix_var}}") list(APPEND custom_postfix_vars ${postfix_var}) |