diff options
Diffstat (limited to 'cmake/Qt3rdPartyLibraryHelpers.cmake')
-rw-r--r-- | cmake/Qt3rdPartyLibraryHelpers.cmake | 52 |
1 files changed, 43 insertions, 9 deletions
diff --git a/cmake/Qt3rdPartyLibraryHelpers.cmake b/cmake/Qt3rdPartyLibraryHelpers.cmake index 1db4683c69..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 @@ -164,7 +175,22 @@ 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 "${export_properties}") + qt_internal_add_qt_repo_known_module(${target}) qt_internal_add_target_aliases(${target}) _qt_internal_apply_strict_cpp(${target}) @@ -177,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}" @@ -224,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) @@ -284,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}" ) @@ -294,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) @@ -327,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 |