[PATCH] D64817: [CMake] Fix LLVM build non-determinism on RHEL
Amy Kwan via Phabricator via llvm-commits
llvm-commits at lists.llvm.org
Wed Oct 16 09:22:46 PDT 2019
amyk updated this revision to Diff 225241.
amyk added a comment.
Updated with appropriate diff.
CHANGES SINCE LAST ACTION
https://reviews.llvm.org/D64817/new/
https://reviews.llvm.org/D64817
Files:
llvm/cmake/modules/HandleLLVMOptions.cmake
Index: llvm/cmake/modules/HandleLLVMOptions.cmake
===================================================================
--- llvm/cmake/modules/HandleLLVMOptions.cmake
+++ llvm/cmake/modules/HandleLLVMOptions.cmake
@@ -145,6 +145,27 @@
set(CMAKE_MODULE_LINKER_FLAGS "${CMAKE_MODULE_LINKER_FLAGS} -Wl,-flat_namespace -Wl,-undefined -Wl,suppress")
endif()
+if(${CMAKE_SYSTEM_NAME} MATCHES "Linux")
+ # RHEL has ar and ranlib being non-deterministic by default. The D flag forces determinism,
+ # however only GNU version of ar and ranlib have this option
+ execute_process(COMMAND ${CMAKE_AR} rD t.a
+ WORKING_DIRECTORY ${CMAKE_BINARY_DIR} RESULT_VARIABLE AR_RESULT OUTPUT_VARIABLE RANLIB_OUTPUT)
+ if(${AR_RESULT} EQUAL 0)
+ execute_process(COMMAND ${CMAKE_RANLIB} -D t.a
+ WORKING_DIRECTORY ${CMAKE_BINARY_DIR} RESULT_VARIABLE RANLIB_RESULT OUTPUT_VARIABLE RANLIB_OUTPUT)
+ if(${RANLIB_RESULT} EQUAL 0)
+ set(CMAKE_C_ARCHIVE_CREATE "<CMAKE_AR> Dqc <TARGET> <LINK_FLAGS> <OBJECTS>")
+ set(CMAKE_C_ARCHIVE_APPEND "<CMAKE_AR> Dq <TARGET> <LINK_FLAGS> <OBJECTS>")
+ set(CMAKE_C_ARCHIVE_FINISH "<CMAKE_RANLIB> -D <TARGET>")
+
+ set(CMAKE_CXX_ARCHIVE_CREATE "<CMAKE_AR> Dqc <TARGET> <LINK_FLAGS> <OBJECTS>")
+ set(CMAKE_CXX_ARCHIVE_APPEND "<CMAKE_AR> Dq <TARGET> <LINK_FLAGS> <OBJECTS>")
+ set(CMAKE_CXX_ARCHIVE_FINISH "<CMAKE_RANLIB> -D <TARGET>")
+ endif()
+ file(REMOVE ${CMAKE_BINARY_DIR}/t.a)
+ endif()
+endif()
+
if(${CMAKE_SYSTEM_NAME} MATCHES "AIX")
if(NOT LLVM_BUILD_32_BITS)
if (CMAKE_CXX_COMPILER_ID MATCHES "XL")
-------------- next part --------------
A non-text attachment was scrubbed...
Name: D64817.225241.patch
Type: text/x-patch
Size: 1616 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20191016/d3b4b14d/attachment.bin>
More information about the llvm-commits
mailing list