From d8f681e135ebd536e25a60cdb23f4d531f1f993e Mon Sep 17 00:00:00 2001 From: Douglas Gregor Date: Fri, 10 May 2013 21:54:08 +0000 Subject: [PATCH] [Modules] Extend Darwin hack to include the modification time of SystemVersion.plist. Fixes . git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@181635 91177308-0d34-0410-b5e6-96231b3b80d8 --- lib/Frontend/CompilerInvocation.cpp | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/lib/Frontend/CompilerInvocation.cpp b/lib/Frontend/CompilerInvocation.cpp index 9c8eea10ad..6af3663001 100644 --- a/lib/Frontend/CompilerInvocation.cpp +++ b/lib/Frontend/CompilerInvocation.cpp @@ -30,6 +30,7 @@ #include "llvm/Support/Host.h" #include "llvm/Support/Path.h" #include "llvm/Support/system_error.h" +#include using namespace clang; //===----------------------------------------------------------------------===// @@ -1689,7 +1690,8 @@ std::string CompilerInvocation::getModuleHash() const { hsOpts.UseStandardCXXIncludes, hsOpts.UseLibcxx); - // Darwin-specific hack: if we have a sysroot, use the contents of + // Darwin-specific hack: if we have a sysroot, use the contents and + // modification time of // $sysroot/System/Library/CoreServices/SystemVersion.plist // as part of the module hash. if (!hsOpts.Sysroot.empty()) { @@ -1702,6 +1704,10 @@ std::string CompilerInvocation::getModuleHash() const { llvm::sys::path::append(systemVersionFile, "SystemVersion.plist"); if (!llvm::MemoryBuffer::getFile(systemVersionFile, buffer)) { code = hash_combine(code, buffer.get()->getBuffer()); + + struct stat statBuf; + if (stat(systemVersionFile.c_str(), &statBuf) == 0) + code = hash_combine(code, statBuf.st_mtime); } } -- 2.40.0