Index: include/llvm/Support/CMakeLists.txt =================================================================== --- include/llvm/Support/CMakeLists.txt +++ include/llvm/Support/CMakeLists.txt @@ -42,6 +42,20 @@ if(DEFINED llvm_vc) # Create custom target to generate the VC revision include. + + # If version_inc exists and is empty, remove it so that + # get_svn_script will fire. + file(WRITE "${version_inc}.txt" "") + execute_process(COMMAND ${CMAKE_COMMAND} -E compare_files + "${version_inc}.txt" "${version_inc}" + RESULT_VARIABLE files_not_equal + OUTPUT_QUIET + ERROR_QUIET) + file(REMOVE "${version_inc}.txt") + if(NOT files_not_equal) + file(REMOVE "${version_inc}") + endif() + add_custom_command(OUTPUT "${version_inc}" DEPENDS "${llvm_vc}" "${get_svn_script}" COMMAND @@ -55,7 +69,12 @@ PROPERTIES GENERATED TRUE HEADER_FILE_ONLY TRUE) else() - file(WRITE "${version_inc}" "") + # Ensure ${version_inc} is an empty file. + file(WRITE "${version_inc}.txt" "") + # Copy the file only if it has changed. + execute_process(COMMAND ${CMAKE_COMMAND} -E copy_if_different + "${version_inc}.txt" "${version_inc}") + file(REMOVE "${version_inc}.txt") endif() add_custom_target(llvm_vcsrevision_h DEPENDS "${version_inc}")