summaryrefslogtreecommitdiffstats
path: root/cmake/QtPublicCMakeHelpers.cmake
diff options
context:
space:
mode:
Diffstat (limited to 'cmake/QtPublicCMakeHelpers.cmake')
-rw-r--r--cmake/QtPublicCMakeHelpers.cmake20
1 files changed, 20 insertions, 0 deletions
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()