qt5base-lts/cmake/QtCopyFileIfDifferent.cmake
Alexey Edelev 2201934efa 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 <alexandru.croitor@qt.io>
Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org>
2022-02-10 02:31:05 +01:00

16 lines
562 B
CMake

# 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.
cmake_minimum_required(VERSION 3.16)
set(copy_strategy "copy_if_different")
if(CMAKE_HOST_WIN32)
file(SIZE "${SRC_FILE_PATH}" size)
# If file size is bigger than 2GB copy it unconditionally
if(size GREATER_EQUAL 2147483648)
set(copy_strategy "copy")
endif()
endif()
execute_process(COMMAND ${CMAKE_COMMAND} -E ${copy_strategy} "${SRC_FILE_PATH}" "${DST_FILE_PATH}")