Only modify lto.exports.def when contents have changed.
authorRafael Espindola <rafael.espindola@gmail.com>
Tue, 8 Oct 2013 15:07:00 +0000 (15:07 +0000)
committerRafael Espindola <rafael.espindola@gmail.com>
Tue, 8 Oct 2013 15:07:00 +0000 (15:07 +0000)
Patch by Greg Bedwell.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@192182 91177308-0d34-0410-b5e6-96231b3b80d8

tools/lto/CMakeLists.txt

index 89160ee02397f19e690f144869ce7668d36d5308..957a9f0036c30bafe0e1e894debd3adac5c43daa 100644 (file)
@@ -15,10 +15,16 @@ if( NOT CYGWIN AND LLVM_ENABLE_PIC )
     # 'EXPORTS'.  The file "lto.exports" already contains the list, so we
     # massage it into the correct format here to create "lto.exports.def".
     set(LTO_EXPORTS_DEF ${CMAKE_CURRENT_BINARY_DIR}/lto.exports.def)
+    set(LTO_EXPORTS_DEF_TEMP ${LTO_EXPORTS_DEF}.txt)
     file(READ "lto.exports" exports_list)
-    file(WRITE ${LTO_EXPORTS_DEF} "LIBRARY LTO\n")
-    file(APPEND ${LTO_EXPORTS_DEF} "EXPORTS\n")
-    file(APPEND ${LTO_EXPORTS_DEF} ${exports_list})
+    file(WRITE ${LTO_EXPORTS_DEF_TEMP} "LIBRARY LTO\n")
+    file(APPEND ${LTO_EXPORTS_DEF_TEMP} "EXPORTS\n")
+    file(APPEND ${LTO_EXPORTS_DEF_TEMP} ${exports_list})
+
+    # Copy the file only if it has changed.
+    execute_process(COMMAND ${CMAKE_COMMAND} -E copy_if_different
+      ${LTO_EXPORTS_DEF_TEMP} ${LTO_EXPORTS_DEF})
+
     set(SHARED_LIB_SOURCES ${SOURCES} ${LTO_EXPORTS_DEF})
   else()
     set(SHARED_LIB_SOURCES ${SOURCES})