CMake: Allow specifying most SBOM options to qt_internal_add_foo
Previously, only a very short subset of options related to attribution files could be specified to qt_internal_add_module / qt_internal_extend_target. It is more convenient to allow specifying most (safe) options, instead of calling another function. Unsafe are considered paths like INSTALL_PATH and derivatives, TYPE which is too generic, and some other ones like LIBRARIES which would be duplicated, and causes warnings in cmake_parse_arguments if duplicated. Change the code to allow specifying most SBOM options and forwarding them to _qt_internal_extend_sbom. Task-number: QTBUG-122899 Change-Id: I6eb723e165edf59973d83c66eace43acdce237de Reviewed-by: Joerg Bornemann <joerg.bornemann@qt.io> (cherry picked from commit 81162cc8b6931c8659dc722be97eb788e344812a) Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org>
This commit is contained in:
parent
ba08a2fb17
commit
9be3d7a7a0
@ -130,49 +130,27 @@ function(qt_internal_add_cmake_library target)
|
||||
)
|
||||
endfunction()
|
||||
|
||||
macro(qt_internal_get_3rdparty_library_sbom_options option_args single_args multi_args)
|
||||
set(${option_args} "")
|
||||
set(${single_args}
|
||||
PACKAGE_VERSION
|
||||
CPE_VENDOR
|
||||
CPE_PRODUCT
|
||||
LICENSE_EXPRESSION
|
||||
DOWNLOAD_LOCATION
|
||||
${__qt_internal_sbom_single_args}
|
||||
)
|
||||
set(${multi_args}
|
||||
COPYRIGHTS
|
||||
CPE # Common Platform Enumeration, free-form
|
||||
${__qt_internal_sbom_multi_args}
|
||||
)
|
||||
endmacro()
|
||||
|
||||
# This function replaces qmake's qt_helper_lib feature. It is intended to
|
||||
# compile 3rdparty libraries as part of the build.
|
||||
#
|
||||
function(qt_internal_add_3rdparty_library target)
|
||||
qt_internal_get_add_library_option_args(library_option_args)
|
||||
qt_internal_get_3rdparty_library_sbom_options(
|
||||
sbom_option_args
|
||||
sbom_single_args
|
||||
sbom_multi_args
|
||||
)
|
||||
|
||||
set(option_args
|
||||
EXCEPTIONS
|
||||
INSTALL
|
||||
SKIP_AUTOMOC
|
||||
${sbom_option_args}
|
||||
${__qt_internal_sbom_optional_args}
|
||||
)
|
||||
set(single_args
|
||||
OUTPUT_DIRECTORY
|
||||
QMAKE_LIB_NAME
|
||||
${sbom_single_args}
|
||||
${__qt_internal_sbom_single_args}
|
||||
)
|
||||
set(multi_args
|
||||
${__default_private_args}
|
||||
${__default_public_args}
|
||||
${sbom_multi_args}
|
||||
${__qt_internal_sbom_multi_args}
|
||||
)
|
||||
|
||||
cmake_parse_arguments(PARSE_ARGV 1 arg
|
||||
@ -394,10 +372,12 @@ function(qt_internal_add_3rdparty_library target)
|
||||
FORWARD_APPEND
|
||||
FORWARD_PREFIX arg
|
||||
FORWARD_OUT_VAR sbom_args
|
||||
FORWARD_OPTIONS
|
||||
${__qt_internal_sbom_optional_args}
|
||||
FORWARD_SINGLE
|
||||
${sbom_single_args}
|
||||
${__qt_internal_sbom_single_args}
|
||||
FORWARD_MULTI
|
||||
${sbom_multi_args}
|
||||
${__qt_internal_sbom_multi_args}
|
||||
)
|
||||
|
||||
_qt_internal_extend_sbom(${target} ${sbom_args})
|
||||
|
@ -9,6 +9,7 @@ function(qt_internal_add_app target)
|
||||
INSTALL_VERSIONED_LINK
|
||||
EXCEPTIONS
|
||||
NO_UNITY_BUILD
|
||||
${__qt_internal_sbom_optional_args}
|
||||
)
|
||||
set(single_args
|
||||
${__default_target_info_args}
|
||||
@ -84,10 +85,6 @@ function(qt_internal_add_app target)
|
||||
MOC_OPTIONS ${arg_MOC_OPTIONS}
|
||||
ENABLE_AUTOGEN_TOOLS ${arg_ENABLE_AUTOGEN_TOOLS}
|
||||
DISABLE_AUTOGEN_TOOLS ${arg_DISABLE_AUTOGEN_TOOLS}
|
||||
ATTRIBUTION_ENTRY_INDEX "${arg_ATTRIBUTION_ENTRY_INDEX}"
|
||||
ATTRIBUTION_FILE_PATHS ${arg_ATTRIBUTION_FILE_PATHS}
|
||||
ATTRIBUTION_FILE_DIR_PATHS ${arg_ATTRIBUTION_FILE_DIR_PATHS}
|
||||
SBOM_DEPENDENCIES ${arg_SBOM_DEPENDENCIES}
|
||||
TARGET_VERSION ${arg_TARGET_VERSION}
|
||||
TARGET_PRODUCT ${arg_TARGET_PRODUCT}
|
||||
TARGET_DESCRIPTION ${arg_TARGET_DESCRIPTION}
|
||||
@ -144,6 +141,11 @@ function(qt_internal_add_app target)
|
||||
FORWARD_OUT_VAR sbom_args
|
||||
FORWARD_OPTIONS
|
||||
NO_INSTALL
|
||||
${__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})
|
||||
|
@ -138,10 +138,6 @@ function(qt_internal_add_executable name)
|
||||
MOC_OPTIONS ${arg_MOC_OPTIONS}
|
||||
ENABLE_AUTOGEN_TOOLS ${arg_ENABLE_AUTOGEN_TOOLS}
|
||||
DISABLE_AUTOGEN_TOOLS ${arg_DISABLE_AUTOGEN_TOOLS}
|
||||
ATTRIBUTION_ENTRY_INDEX "${arg_ATTRIBUTION_ENTRY_INDEX}"
|
||||
ATTRIBUTION_FILE_PATHS ${arg_ATTRIBUTION_FILE_PATHS}
|
||||
ATTRIBUTION_FILE_DIR_PATHS ${arg_ATTRIBUTION_FILE_DIR_PATHS}
|
||||
SBOM_DEPENDENCIES ${arg_SBOM_DEPENDENCIES}
|
||||
)
|
||||
set_target_properties("${name}" PROPERTIES
|
||||
RUNTIME_OUTPUT_DIRECTORY "${arg_OUTPUT_DIRECTORY}"
|
||||
@ -211,6 +207,23 @@ function(qt_internal_add_executable name)
|
||||
ADDITIONAL_INSTALL_ARGS ${additional_install_args})
|
||||
qt_internal_install_pdb_files(${name} "${arg_INSTALL_DIRECTORY}")
|
||||
endif()
|
||||
|
||||
if(QT_GENERATE_SBOM)
|
||||
set(sbom_args "")
|
||||
_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(${name} ${sbom_args})
|
||||
endif()
|
||||
endfunction()
|
||||
|
||||
# This function compiles the target at configure time the very first time and creates the custom
|
||||
|
@ -18,6 +18,7 @@ macro(qt_internal_get_internal_add_module_keywords option_args single_args multi
|
||||
NO_HEADERSCLEAN_CHECK
|
||||
NO_GENERATE_CPP_EXPORTS
|
||||
NO_UNITY_BUILD
|
||||
${__qt_internal_sbom_optional_args}
|
||||
)
|
||||
set(${single_args}
|
||||
MODULE_INCLUDE_NAME
|
||||
@ -641,10 +642,6 @@ function(qt_internal_add_module target)
|
||||
DISABLE_AUTOGEN_TOOLS ${arg_DISABLE_AUTOGEN_TOOLS}
|
||||
PRECOMPILED_HEADER ${arg_PRECOMPILED_HEADER}
|
||||
NO_PCH_SOURCES ${arg_NO_PCH_SOURCES}
|
||||
ATTRIBUTION_ENTRY_INDEX "${arg_ATTRIBUTION_ENTRY_INDEX}"
|
||||
ATTRIBUTION_FILE_PATHS ${arg_ATTRIBUTION_FILE_PATHS}
|
||||
ATTRIBUTION_FILE_DIR_PATHS ${arg_ATTRIBUTION_FILE_DIR_PATHS}
|
||||
SBOM_DEPENDENCIES ${arg_SBOM_DEPENDENCIES}
|
||||
)
|
||||
|
||||
# The public module define is not meant to be used when building the module itself,
|
||||
@ -920,9 +917,8 @@ set(QT_ALLOW_MISSING_TOOLS_PACKAGES TRUE)")
|
||||
|
||||
qt_describe_module(${target})
|
||||
|
||||
set(sbom_args "")
|
||||
|
||||
if(QT_GENERATE_SBOM)
|
||||
set(sbom_args "")
|
||||
list(APPEND sbom_args TYPE QT_MODULE)
|
||||
|
||||
qt_get_cmake_configurations(configs)
|
||||
@ -953,6 +949,18 @@ set(QT_ALLOW_MISSING_TOOLS_PACKAGES TRUE)")
|
||||
)
|
||||
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()
|
||||
|
||||
|
@ -9,6 +9,7 @@ macro(qt_internal_get_internal_add_plugin_keywords option_args single_args multi
|
||||
ALLOW_UNDEFINED_SYMBOLS
|
||||
SKIP_INSTALL
|
||||
NO_UNITY_BUILD
|
||||
${__qt_internal_sbom_optional_args}
|
||||
)
|
||||
set(${single_args}
|
||||
OUTPUT_DIRECTORY
|
||||
@ -314,10 +315,6 @@ function(qt_internal_add_plugin target)
|
||||
MOC_OPTIONS ${arg_MOC_OPTIONS}
|
||||
ENABLE_AUTOGEN_TOOLS ${arg_ENABLE_AUTOGEN_TOOLS}
|
||||
DISABLE_AUTOGEN_TOOLS ${arg_DISABLE_AUTOGEN_TOOLS}
|
||||
ATTRIBUTION_ENTRY_INDEX "${arg_ATTRIBUTION_ENTRY_INDEX}"
|
||||
ATTRIBUTION_FILE_PATHS ${arg_ATTRIBUTION_FILE_PATHS}
|
||||
ATTRIBUTION_FILE_DIR_PATHS ${arg_ATTRIBUTION_FILE_DIR_PATHS}
|
||||
SBOM_DEPENDENCIES ${arg_SBOM_DEPENDENCIES}
|
||||
)
|
||||
|
||||
qt_internal_add_repo_local_defines("${target}")
|
||||
@ -435,6 +432,18 @@ function(qt_internal_add_plugin target)
|
||||
)
|
||||
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()
|
||||
|
||||
|
@ -262,11 +262,10 @@ function(_qt_internal_sbom_end_project)
|
||||
set_property(GLOBAL PROPERTY _qt_internal_sbom_repo_begin_called FALSE)
|
||||
endfunction()
|
||||
|
||||
# Helper to get the options that _qt_internal_sbom_add_target understands.
|
||||
# Also used in qt_find_package_extend_sbom.
|
||||
macro(_qt_internal_get_sbom_add_target_options opt_args single_args multi_args)
|
||||
# Helper to get the options that _qt_internal_sbom_add_target understands, but that are also
|
||||
# a safe subset for qt_internal_add_module, qt_internal_extend_target, etc to understand.
|
||||
macro(_qt_internal_get_sbom_add_target_common_options opt_args single_args multi_args)
|
||||
set(${opt_args}
|
||||
NO_INSTALL
|
||||
NO_CURRENT_DIR_ATTRIBUTION
|
||||
NO_DEFAULT_QT_LICENSE
|
||||
NO_DEFAULT_DIRECTORY_QT_LICENSE
|
||||
@ -275,7 +274,6 @@ macro(_qt_internal_get_sbom_add_target_options opt_args single_args multi_args)
|
||||
NO_DEFAULT_QT_SUPPLIER
|
||||
)
|
||||
set(${single_args}
|
||||
TYPE
|
||||
PACKAGE_VERSION
|
||||
FRIENDLY_PACKAGE_NAME
|
||||
CPE_VENDOR
|
||||
@ -286,13 +284,32 @@ macro(_qt_internal_get_sbom_add_target_options opt_args single_args multi_args)
|
||||
)
|
||||
set(${multi_args}
|
||||
COPYRIGHTS
|
||||
LIBRARIES
|
||||
PUBLIC_LIBRARIES
|
||||
CPE
|
||||
SBOM_DEPENDENCIES
|
||||
ATTRIBUTION_FILE_PATHS
|
||||
ATTRIBUTION_FILE_DIR_PATHS
|
||||
)
|
||||
endmacro()
|
||||
|
||||
# Helper to get the options that _qt_internal_sbom_add_target understands.
|
||||
# Also used in qt_find_package_extend_sbom.
|
||||
macro(_qt_internal_get_sbom_add_target_options opt_args single_args multi_args)
|
||||
set(${opt_args}
|
||||
NO_INSTALL
|
||||
)
|
||||
set(${single_args}
|
||||
TYPE
|
||||
)
|
||||
set(${multi_args}
|
||||
LIBRARIES
|
||||
PUBLIC_LIBRARIES
|
||||
)
|
||||
|
||||
_qt_internal_get_sbom_add_target_common_options(
|
||||
common_opt_args common_single_args common_multi_args)
|
||||
list(APPEND opt_args ${common_opt_args})
|
||||
list(APPEND single_args ${common_single_args})
|
||||
list(APPEND multi_args ${common_multi_args})
|
||||
|
||||
_qt_internal_sbom_get_multi_config_single_args(multi_config_single_args)
|
||||
list(APPEND single_args ${multi_config_single_args})
|
||||
|
@ -41,11 +41,12 @@ function(qt_internal_extend_target target)
|
||||
|
||||
set(option_args
|
||||
NO_UNITY_BUILD
|
||||
${__qt_internal_sbom_optional_args}
|
||||
)
|
||||
set(single_args
|
||||
PRECOMPILED_HEADER
|
||||
EXTRA_LINKER_SCRIPT_CONTENT
|
||||
ATTRIBUTION_ENTRY_INDEX
|
||||
${__qt_internal_sbom_single_args}
|
||||
)
|
||||
set(multi_args
|
||||
${__default_public_args}
|
||||
@ -55,9 +56,7 @@ function(qt_internal_extend_target target)
|
||||
CONDITION_INDEPENDENT_SOURCES
|
||||
COMPILE_FLAGS
|
||||
EXTRA_LINKER_SCRIPT_EXPORTS
|
||||
SBOM_DEPENDENCIES
|
||||
ATTRIBUTION_FILE_PATHS
|
||||
ATTRIBUTION_FILE_DIR_PATHS
|
||||
${__qt_internal_sbom_multi_args}
|
||||
)
|
||||
|
||||
cmake_parse_arguments(PARSE_ARGV 1 arg
|
||||
@ -226,28 +225,20 @@ function(qt_internal_extend_target target)
|
||||
)
|
||||
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}
|
||||
if(QT_GENERATE_SBOM)
|
||||
set(sbom_args "")
|
||||
_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()
|
||||
|
||||
set(target_private "${target}Private")
|
||||
@ -438,13 +429,10 @@ 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
|
||||
_qt_internal_get_sbom_add_target_common_options(
|
||||
__qt_internal_sbom_optional_args
|
||||
__qt_internal_sbom_single_args
|
||||
__qt_internal_sbom_multi_args
|
||||
)
|
||||
|
||||
# Collection of arguments so they can be shared across qt_internal_add_executable
|
||||
@ -457,6 +445,7 @@ macro(qt_internal_setup_default_target_function_options)
|
||||
DELAY_TARGET_INFO
|
||||
QT_APP
|
||||
NO_UNITY_BUILD
|
||||
${__qt_internal_sbom_optional_args}
|
||||
)
|
||||
set(__qt_internal_add_executable_single_args
|
||||
CORE_LIBRARY
|
||||
|
@ -50,7 +50,9 @@ function(qt_internal_add_tool target_name)
|
||||
INSTALL_VERSIONED_LINK
|
||||
EXCEPTIONS
|
||||
NO_UNITY_BUILD
|
||||
TRY_RUN)
|
||||
TRY_RUN
|
||||
${__qt_internal_sbom_optional_args}
|
||||
)
|
||||
set(one_value_keywords
|
||||
TOOLS_TARGET
|
||||
INSTALL_DIR
|
||||
@ -132,10 +134,6 @@ function(qt_internal_add_tool target_name)
|
||||
LINK_OPTIONS ${arg_LINK_OPTIONS}
|
||||
MOC_OPTIONS ${arg_MOC_OPTIONS}
|
||||
DISABLE_AUTOGEN_TOOLS ${disable_autogen_tools}
|
||||
ATTRIBUTION_ENTRY_INDEX "${arg_ATTRIBUTION_ENTRY_INDEX}"
|
||||
ATTRIBUTION_FILE_PATHS ${arg_ATTRIBUTION_FILE_PATHS}
|
||||
ATTRIBUTION_FILE_DIR_PATHS ${arg_ATTRIBUTION_FILE_DIR_PATHS}
|
||||
SBOM_DEPENDENCIES ${arg_SBOM_DEPENDENCIES}
|
||||
TARGET_VERSION ${arg_TARGET_VERSION}
|
||||
TARGET_PRODUCT ${arg_TARGET_PRODUCT}
|
||||
TARGET_DESCRIPTION ${arg_TARGET_DESCRIPTION}
|
||||
@ -273,6 +271,18 @@ function(qt_internal_add_tool target_name)
|
||||
qt_internal_install_pdb_files(${target_name} "${install_dir}")
|
||||
|
||||
if(QT_GENERATE_SBOM)
|
||||
_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_name} ${sbom_args})
|
||||
endif()
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user