summaryrefslogtreecommitdiffstats
path: root/cmake/Qt3rdPartyLibraryHelpers.cmake
diff options
context:
space:
mode:
Diffstat (limited to 'cmake/Qt3rdPartyLibraryHelpers.cmake')
-rw-r--r--cmake/Qt3rdPartyLibraryHelpers.cmake48
1 files changed, 38 insertions, 10 deletions
diff --git a/cmake/Qt3rdPartyLibraryHelpers.cmake b/cmake/Qt3rdPartyLibraryHelpers.cmake
index 86178d1e40..924db182be 100644
--- a/cmake/Qt3rdPartyLibraryHelpers.cmake
+++ b/cmake/Qt3rdPartyLibraryHelpers.cmake
@@ -4,6 +4,7 @@ macro(qt_internal_get_add_library_option_args option_args)
STATIC
MODULE
INTERFACE
+ NO_UNITY_BUILD
)
endmacro()
@@ -14,12 +15,12 @@ endmacro()
# Everything else is just prepation for option validating.
function(qt_internal_add_common_qt_library_helper target)
qt_internal_get_add_library_option_args(option_args)
- qt_parse_all_arguments(arg "qt_internal_add_common_qt_library_helper"
+ cmake_parse_arguments(PARSE_ARGV 1 arg
"${option_args}"
""
""
- ${ARGN}
)
+ _qt_internal_validate_all_args_are_parsed(arg)
if(arg_SHARED)
set(arg_SHARED SHARED)
@@ -50,6 +51,11 @@ function(qt_internal_add_common_qt_library_helper target)
endif()
_qt_internal_add_library(${target} ${arg_STATIC} ${arg_SHARED} ${arg_MODULE} ${arg_INTERFACE})
+
+ if(arg_NO_UNITY_BUILD)
+ set_property(TARGET "${target}" PROPERTY UNITY_BUILD OFF)
+ endif()
+
qt_internal_mark_as_internal_library(${target})
endfunction()
@@ -67,12 +73,13 @@ function(qt_internal_add_cmake_library target)
${__default_public_args}
)
- qt_parse_all_arguments(arg "qt_add_cmake_library"
+ cmake_parse_arguments(PARSE_ARGV 1 arg
"${option_args}"
"${single_args}"
"${multi_args}"
- ${ARGN}
)
+ _qt_internal_validate_all_args_are_parsed(arg)
+ _qt_internal_validate_no_unity_build(arg)
qt_remove_args(library_helper_args
ARGS_TO_REMOVE
@@ -102,6 +109,8 @@ function(qt_internal_add_cmake_library target)
SOURCES ${arg_SOURCES}
INCLUDE_DIRECTORIES
${arg_INCLUDE_DIRECTORIES}
+ SYSTEM_INCLUDE_DIRECTORIES
+ ${arg_SYSTEM_INCLUDE_DIRECTORIES}
PUBLIC_INCLUDE_DIRECTORIES
${arg_PUBLIC_INCLUDE_DIRECTORIES}
PUBLIC_DEFINES
@@ -117,6 +126,7 @@ function(qt_internal_add_cmake_library target)
MOC_OPTIONS ${arg_MOC_OPTIONS}
ENABLE_AUTOGEN_TOOLS ${arg_ENABLE_AUTOGEN_TOOLS}
DISABLE_AUTOGEN_TOOLS ${arg_DISABLE_AUTOGEN_TOOLS}
+ NO_UNITY_BUILD # Disabled by default
)
endfunction()
@@ -139,12 +149,13 @@ function(qt_internal_add_3rdparty_library target)
${__default_public_args}
)
- qt_parse_all_arguments(arg "qt_internal_add_3rdparty_library"
+ cmake_parse_arguments(PARSE_ARGV 1 arg
"${library_option_args};${option_args}"
"${single_args}"
"${multi_args}"
- ${ARGN}
)
+ _qt_internal_validate_all_args_are_parsed(arg)
+ _qt_internal_validate_no_unity_build(arg)
qt_remove_args(library_helper_args
ARGS_TO_REMOVE
@@ -165,11 +176,20 @@ function(qt_internal_add_3rdparty_library target)
set_target_properties(${target} PROPERTIES
_qt_module_interface_name "${target}"
_qt_package_version "${PROJECT_VERSION}"
+ _qt_package_name "${INSTALL_CMAKE_NAMESPACE}${target}"
+ _qt_module_is_3rdparty_library TRUE
+ )
+
+ set(export_properties
+ "_qt_module_interface_name"
+ "_qt_package_version"
+ "_qt_package_name"
+ "_qt_module_is_3rdparty_library"
)
set_property(TARGET ${target}
APPEND PROPERTY
- EXPORT_PROPERTIES "_qt_module_interface_name;_qt_package_version")
+ EXPORT_PROPERTIES "${export_properties}")
qt_internal_add_qt_repo_known_module(${target})
qt_internal_add_target_aliases(${target})
@@ -183,7 +203,6 @@ function(qt_internal_add_3rdparty_library target)
ARCHIVE_OUTPUT_DIRECTORY "${QT_BUILD_DIR}/${INSTALL_LIBDIR}"
VERSION ${PROJECT_VERSION}
SOVERSION ${PROJECT_VERSION_MAJOR}
- _qt_module_is_3rdparty_library TRUE
_qt_module_skip_depends_include TRUE
)
set_property(TARGET "${target}"
@@ -230,6 +249,7 @@ function(qt_internal_add_3rdparty_library target)
MOC_OPTIONS ${arg_MOC_OPTIONS}
ENABLE_AUTOGEN_TOOLS ${arg_ENABLE_AUTOGEN_TOOLS}
DISABLE_AUTOGEN_TOOLS ${arg_DISABLE_AUTOGEN_TOOLS}
+ NO_UNITY_BUILD
)
if(NOT BUILD_SHARED_LIBS OR arg_INSTALL)
@@ -290,6 +310,7 @@ function(qt_internal_add_3rdparty_library target)
qt_internal_export_modern_cmake_config_targets_file(
TARGETS ${target}
EXPORT_NAME_PREFIX ${INSTALL_CMAKE_NAMESPACE}${target}
+ CONFIG_BUILD_DIR "${config_build_dir}"
CONFIG_INSTALL_DIR "${config_install_dir}"
)
@@ -300,6 +321,12 @@ function(qt_internal_add_3rdparty_library target)
qt_enable_separate_debug_info(${target} "${debug_install_dir}")
qt_internal_install_pdb_files(${target} "${INSTALL_LIBDIR}")
endif()
+
+ if(BUILD_SHARED_LIBS AND MSVC)
+ set_target_properties(${target} PROPERTIES
+ INTERPROCEDURAL_OPTIMIZATION OFF
+ )
+ endif()
endfunction()
function(qt_install_3rdparty_library_wrap_config_extra_file target)
@@ -333,12 +360,13 @@ function(qt_internal_add_3rdparty_header_module target)
set(multi_args
EXTERNAL_HEADERS
)
- qt_parse_all_arguments(arg "qt_internal_add_header_module"
+ cmake_parse_arguments(PARSE_ARGV 1 arg
"${option_args}"
"${single_args}"
"${multi_args}"
- ${ARGN}
)
+ _qt_internal_validate_all_args_are_parsed(arg)
+
qt_internal_add_module(${target}
INTERNAL_MODULE
HEADER_MODULE