Skip to content
Snippets Groups Projects
Commit d8f681e1 authored by Douglas Gregor's avatar Douglas Gregor
Browse files

[Modules] Extend Darwin hack to include the modification time of SystemVersion.plist.

Fixes <rdar://problem/13856838>.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@181635 91177308-0d34-0410-b5e6-96231b3b80d8
parent 9dfd2432
No related branches found
No related tags found
No related merge requests found
......@@ -30,6 +30,7 @@
#include "llvm/Support/Host.h"
#include "llvm/Support/Path.h"
#include "llvm/Support/system_error.h"
#include <sys/stat.h>
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);
}
}
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment