summaryrefslogtreecommitdiffstats
path: root/Modules/Platform
diff options
context:
space:
mode:
authorBrad King <brad.king@kitware.com>2014-04-14 17:58:03 (GMT)
committerBrad King <brad.king@kitware.com>2014-04-14 18:35:19 (GMT)
commit39d0ade07ee9034b2e0469fc270e0aa55fc34135 (patch)
tree31446dd48196cbb312397db8ae71e314410aebc7 /Modules/Platform
parent1c5871984a33922e3ec229ba28bacf0848e9b003 (diff)
downloadCMake-39d0ade07ee9034b2e0469fc270e0aa55fc34135.zip
CMake-39d0ade07ee9034b2e0469fc270e0aa55fc34135.tar.gz
CMake-39d0ade07ee9034b2e0469fc270e0aa55fc34135.tar.bz2
Windows-GNU: Support duplicate object names in large archives (#14874)
Since commit v2.6.0~388 (Added build rule variables CMAKE_<LANG>_ARCHIVE_..., 2008-01-29) we use separate "ar cr ..." and "ar r ..." steps to incrementally add a large list of object files to an archive. Since the "r" command replaces existing objects of the same name in an archive, if multiple objects have the same file name and appear in separate append steps then one overwrites the other. Instead, use "ar cq ..." and "ar q ..." to always append to the archive. We already remove the archive before creating it so this will not cause objects to be appended to existing archives on incremental rebuilds.
Diffstat (limited to 'Modules/Platform')
-rw-r--r--Modules/Platform/Windows-GNU.cmake4
1 files changed, 2 insertions, 2 deletions
diff --git a/Modules/Platform/Windows-GNU.cmake b/Modules/Platform/Windows-GNU.cmake
index 2bb7a20..9038243 100644
--- a/Modules/Platform/Windows-GNU.cmake
+++ b/Modules/Platform/Windows-GNU.cmake
@@ -67,8 +67,8 @@ macro(__windows_compiler_gnu lang)
if(MSYS OR MINGW)
# Create archiving rules to support large object file lists for static libraries.
- set(CMAKE_${lang}_ARCHIVE_CREATE "<CMAKE_AR> cr <TARGET> <LINK_FLAGS> <OBJECTS>")
- set(CMAKE_${lang}_ARCHIVE_APPEND "<CMAKE_AR> r <TARGET> <LINK_FLAGS> <OBJECTS>")
+ set(CMAKE_${lang}_ARCHIVE_CREATE "<CMAKE_AR> cq <TARGET> <LINK_FLAGS> <OBJECTS>")
+ set(CMAKE_${lang}_ARCHIVE_APPEND "<CMAKE_AR> q <TARGET> <LINK_FLAGS> <OBJECTS>")
set(CMAKE_${lang}_ARCHIVE_FINISH "<CMAKE_RANLIB> <TARGET>")
# Initialize C link type selection flags. These flags are used when