From 2201934efa1b9889d474347e705784bf6925e120 Mon Sep 17 00:00:00 2001 From: Alexey Edelev Date: Wed, 29 Dec 2021 18:00:52 +0100 Subject: Use 'copy' but not 'copy_if_different' on Windows platforms Use custom script to copy big Android artifacts on Windows platforms. The script uses 'copy' but not 'copy_if_different' when source file size is bigger than 2GB. 'cmake -E copy_if_different' only compares first 2GB of files because of cmake issue, so this step only workaround the problem. Pick-to: 6.2 6.3 Task-number: QTBUG-99491 Change-Id: Id076734700e334dfc3330da412462c2b53829b33 Reviewed-by: Alexandru Croitor Reviewed-by: Qt CI Bot --- cmake/QtPublicCMakeHelpers.cmake | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+) create mode 100644 cmake/QtPublicCMakeHelpers.cmake (limited to 'cmake/QtPublicCMakeHelpers.cmake') diff --git a/cmake/QtPublicCMakeHelpers.cmake b/cmake/QtPublicCMakeHelpers.cmake new file mode 100644 index 0000000000..86b8edacd4 --- /dev/null +++ b/cmake/QtPublicCMakeHelpers.cmake @@ -0,0 +1,20 @@ +# copy_if_different works incorrect in Windows if file size if bigger than 2GB. +# See https://gitlab.kitware.com/cmake/cmake/-/issues/23052 and QTBUG-99491 for details. +function(_qt_internal_copy_file_if_different_command out_var src_file dst_file) + # The CMake version higher than 3.23 doesn't contain the issue + if(CMAKE_HOST_WIN32 AND CMAKE_VERSION VERSION_LESS 3.23) + set(${out_var} "${CMAKE_COMMAND}" + "-DSRC_FILE_PATH=${src_file}" + "-DDST_FILE_PATH=${dst_file}" + -P "${_qt_6_config_cmake_dir}/QtCopyFileIfDifferent.cmake" + PARENT_SCOPE + ) + else() + set(${out_var} "${CMAKE_COMMAND}" + -E copy_if_different + "${src_file}" + "${dst_file}" + PARENT_SCOPE + ) + endif() +endfunction() -- cgit v1.2.3