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)
|
add_custom_target(sync_headers)
|
||||||
endif()
|
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.
|
# 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,
|
# 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
|
# 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
|
# 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.
|
# without taking into the account the CMake source tree and syncqt outputs.
|
||||||
if(arg_EXTERNAL_HEADERS_DIR)
|
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}/"
|
qt_install(DIRECTORY "${arg_EXTERNAL_HEADERS_DIR}/"
|
||||||
DESTINATION "${module_install_interface_include_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")
|
set(syncqt_args_rsp "${binary_dir_real}/${target}_syncqt_args")
|
||||||
qt_configure_file(OUTPUT "${syncqt_args_rsp}" CONTENT "${syncqt_args_string}")
|
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(
|
add_custom_command(
|
||||||
OUTPUT
|
OUTPUT
|
||||||
${syncqt_outputs}
|
${syncqt_outputs}
|
||||||
@ -165,6 +180,7 @@ function(qt_internal_target_sync_headers target module_headers module_headers_ge
|
|||||||
${QT_CMAKE_EXPORT_NAMESPACE}::syncqt
|
${QT_CMAKE_EXPORT_NAMESPACE}::syncqt
|
||||||
"@${syncqt_args_rsp}"
|
"@${syncqt_args_rsp}"
|
||||||
${build_time_syncqt_arguments}
|
${build_time_syncqt_arguments}
|
||||||
|
${external_headers_dir_copy_cmd}
|
||||||
COMMAND
|
COMMAND
|
||||||
${CMAKE_COMMAND} -E touch "${syncqt_timestamp}"
|
${CMAKE_COMMAND} -E touch "${syncqt_timestamp}"
|
||||||
DEPENDS
|
DEPENDS
|
||||||
@ -184,6 +200,9 @@ function(qt_internal_target_sync_headers target module_headers module_headers_ge
|
|||||||
set_target_properties(${target}
|
set_target_properties(${target}
|
||||||
PROPERTIES _qt_internal_sync_headers_target ${target}_sync_headers)
|
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
|
# This target is required when building docs, to make all header files and their aliases
|
||||||
# available for qdoc.
|
# available for qdoc.
|
||||||
# ${target}_sync_headers is added as dependency to make sure that
|
# ${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
|
COMMAND
|
||||||
${QT_CMAKE_EXPORT_NAMESPACE}::syncqt
|
${QT_CMAKE_EXPORT_NAMESPACE}::syncqt
|
||||||
"@${syncqt_all_args_rsp}"
|
"@${syncqt_all_args_rsp}"
|
||||||
|
${external_headers_dir_copy_cmd}
|
||||||
DEPENDS
|
DEPENDS
|
||||||
${module_headers}
|
${module_headers}
|
||||||
${syncqt_all_args_rsp}
|
${syncqt_all_args_rsp}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user