summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAlexey Edelev <alexey.edelev@qt.io>2024-02-13 13:33:46 +0100
committerAlexey Edelev <alexey.edelev@qt.io>2024-02-14 10:47:41 +0100
commit103eca1070a75bfa97d0b72b94e0c759ef0bcd1c (patch)
tree80ca27eaf06b31edcf8d7b4e9d56261c5a32633e
parent0b79ee6d3bb569767d8be42d64783c286ac82293 (diff)
Change the mechanism that copies framework header files
Split the header copy custom commands into two blocks and add <module>_sync_headers_fw_copy target that is responsible for the copy of CaMeL-case header aliases. For the Ninja generator we leave the file-level dependencies between the <module>_sync_headers_fw_copy target and header copy commands. For the Unix Makefiles generator we put the command directly to the target to make sure it's executed by make. Also add the explicit commands for creating the output header directories. Fixes: QTBUG-122200 Pick-to: 6.5 6.6 6.7 Change-Id: I71ba716d17a879f20ae0869cf2257d246ac17eff Reviewed-by: Alexandru Croitor <alexandru.croitor@qt.io>
-rw-r--r--cmake/QtFrameworkHelpers.cmake31
1 files changed, 26 insertions, 5 deletions
diff --git a/cmake/QtFrameworkHelpers.cmake b/cmake/QtFrameworkHelpers.cmake
index c15f74e5422..338febbb8c0 100644
--- a/cmake/QtFrameworkHelpers.cmake
+++ b/cmake/QtFrameworkHelpers.cmake
@@ -88,10 +88,12 @@ function(qt_copy_framework_headers target)
set(out_files "")
set(in_files "")
+ set(out_dirs "")
set(copy_commands "")
foreach(type IN ITEMS PUBLIC PRIVATE QPA RHI SSG)
set(in_files_${type} "")
set(fw_output_header_dir "${output_dir_${type}}")
+ list(APPEND out_dirs "${fw_output_header_dir}")
foreach(hdr IN LISTS arg_${type})
get_filename_component(in_file_path ${hdr} ABSOLUTE)
get_filename_component(in_file_name ${hdr} NAME)
@@ -108,13 +110,32 @@ function(qt_copy_framework_headers target)
list(REMOVE_DUPLICATES out_files)
list(REMOVE_DUPLICATES in_files)
+
+ set(copy_fw_sync_headers_command
+ "${CMAKE_COMMAND}" -E copy_directory
+ "${module_build_interface_include_dir}/.syncqt_staging"
+ "${output_dir}/${fw_versioned_header_dir}"
+ )
+
+ if(CMAKE_GENERATOR MATCHES "^Ninja")
+ add_custom_command(
+ OUTPUT "${output_dir}/${fw_versioned_header_dir}"
+ DEPENDS ${target}_sync_headers
+ COMMAND ${copy_fw_sync_headers_command}
+ VERBATIM
+ )
+ add_custom_target(${target}_copy_fw_sync_headers
+ DEPENDS "${output_dir}/${fw_versioned_header_dir}")
+ else()
+ add_custom_target(${target}_copy_fw_sync_headers
+ COMMAND ${copy_fw_sync_headers_command})
+ endif()
+
add_custom_command(
- OUTPUT "${output_dir}/${fw_versioned_header_dir}" ${out_files}
- DEPENDS ${in_files} ${target}_sync_headers
+ OUTPUT ${out_files}
+ DEPENDS ${target}_copy_fw_sync_headers ${in_files}
COMMAND
- ${CMAKE_COMMAND} -E copy_directory
- "${module_build_interface_include_dir}/.syncqt_staging"
- "${output_dir}/${fw_versioned_header_dir}"
+ ${CMAKE_COMMAND} -E make_directory ${out_dirs}
${copy_commands}
VERBATIM
COMMENT "Copy the ${target} header files to the framework directory"