Fix external header support in qtsync
We should sync external headers for 3rdpary projects like freetype and harfbuzz-ng and keep the directory structure. Fixes: QTBUG-113416 Change-Id: Ie66edb9a21cff37ca6c8c68b6d225de6d8bbad81 Reviewed-by: Michal Klocek <michal.klocek@qt.io> (cherry picked from commit 65b0bc0eed10307cb2ab0a0c45eb6787bed96614) Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org>
This commit is contained in:
parent
8b67e2381a
commit
da317be412
@ -454,6 +454,12 @@ macro(qt_build_repo_begin)
|
||||
add_custom_target(sync_headers)
|
||||
endif()
|
||||
|
||||
# The special target that we use to sync 3rd-party headers before the gn run when building
|
||||
# qtwebengine in top-level builds.
|
||||
if(NOT TARGET thirdparty_sync_headers)
|
||||
add_custom_target(thirdparty_sync_headers)
|
||||
endif()
|
||||
|
||||
# Add global qt_plugins, qpa_plugins and qpa_default_plugins convenience custom targets.
|
||||
# Internal executables will add a dependency on the qpa_default_plugins target,
|
||||
# so that building and running a test ensures it won't fail at runtime due to a missing qpa
|
||||
|
@ -469,6 +469,8 @@ function(qt_internal_add_module target)
|
||||
# If EXTERNAL_HEADERS_DIR is set we install the specified directory and keep the structure
|
||||
# without taking into the account the CMake source tree and syncqt outputs.
|
||||
if(arg_EXTERNAL_HEADERS_DIR)
|
||||
set_property(TARGET ${target}
|
||||
PROPERTY _qt_external_headers_dir "${arg_EXTERNAL_HEADERS_DIR}")
|
||||
qt_install(DIRECTORY "${arg_EXTERNAL_HEADERS_DIR}/"
|
||||
DESTINATION "${module_install_interface_include_dir}"
|
||||
)
|
||||
|
@ -158,6 +158,21 @@ function(qt_internal_target_sync_headers target module_headers module_headers_ge
|
||||
set(syncqt_args_rsp "${binary_dir_real}/${target}_syncqt_args")
|
||||
qt_configure_file(OUTPUT "${syncqt_args_rsp}" CONTENT "${syncqt_args_string}")
|
||||
|
||||
get_target_property(external_headers_dir ${target} _qt_external_headers_dir)
|
||||
if(external_headers_dir)
|
||||
if(NOT IS_ABSOLUTE "${external_headers_dir}")
|
||||
get_filename_component(external_headers_dir "${external_headers_dir}" ABSOLUTE)
|
||||
endif()
|
||||
if(EXISTS "${external_headers_dir}")
|
||||
set(external_headers_dir_copy_cmd
|
||||
COMMAND
|
||||
${CMAKE_COMMAND}
|
||||
-E copy_directory
|
||||
"${external_headers_dir}"
|
||||
"${module_build_interface_include_dir}"
|
||||
)
|
||||
endif()
|
||||
endif()
|
||||
add_custom_command(
|
||||
OUTPUT
|
||||
${syncqt_outputs}
|
||||
@ -165,6 +180,7 @@ function(qt_internal_target_sync_headers target module_headers module_headers_ge
|
||||
${QT_CMAKE_EXPORT_NAMESPACE}::syncqt
|
||||
"@${syncqt_args_rsp}"
|
||||
${build_time_syncqt_arguments}
|
||||
${external_headers_dir_copy_cmd}
|
||||
COMMAND
|
||||
${CMAKE_COMMAND} -E touch "${syncqt_timestamp}"
|
||||
DEPENDS
|
||||
@ -184,6 +200,9 @@ function(qt_internal_target_sync_headers target module_headers module_headers_ge
|
||||
set_target_properties(${target}
|
||||
PROPERTIES _qt_internal_sync_headers_target ${target}_sync_headers)
|
||||
|
||||
if(is_3rd_party_library)
|
||||
add_dependencies(thirdparty_sync_headers ${target}_sync_headers)
|
||||
endif()
|
||||
# This target is required when building docs, to make all header files and their aliases
|
||||
# available for qdoc.
|
||||
# ${target}_sync_headers is added as dependency to make sure that
|
||||
@ -196,6 +215,7 @@ function(qt_internal_target_sync_headers target module_headers module_headers_ge
|
||||
COMMAND
|
||||
${QT_CMAKE_EXPORT_NAMESPACE}::syncqt
|
||||
"@${syncqt_all_args_rsp}"
|
||||
${external_headers_dir_copy_cmd}
|
||||
DEPENDS
|
||||
${module_headers}
|
||||
${syncqt_all_args_rsp}
|
||||
|
Loading…
x
Reference in New Issue
Block a user