Introduce '-fmodules-user-build-path' which accepts the "canonical" path to a user workspace build.
This is used to avoid conflicts with user modules with the same name from different workspaces. rdar://16042513 llvm-svn: 202683
This commit is contained in:
@@ -918,6 +918,7 @@ static void ParseHeaderSearchArgs(HeaderSearchOptions &Opts, ArgList &Args) {
|
||||
Opts.UseLibcxx = (strcmp(A->getValue(), "libc++") == 0);
|
||||
Opts.ResourceDir = Args.getLastArgValue(OPT_resource_dir);
|
||||
Opts.ModuleCachePath = Args.getLastArgValue(OPT_fmodules_cache_path);
|
||||
Opts.ModuleUserBuildPath = Args.getLastArgValue(OPT_fmodules_user_build_path);
|
||||
Opts.DisableModuleHash = Args.hasArg(OPT_fdisable_module_hash);
|
||||
// -fmodules implies -fmodule-maps
|
||||
Opts.ModuleMaps = Args.hasArg(OPT_fmodule_maps) || Args.hasArg(OPT_fmodules);
|
||||
@@ -1821,6 +1822,9 @@ std::string CompilerInvocation::getModuleHash() const {
|
||||
hsOpts.UseStandardCXXIncludes,
|
||||
hsOpts.UseLibcxx);
|
||||
|
||||
// Extend the signature with the user build path.
|
||||
code = hash_combine(code, hsOpts.ModuleUserBuildPath);
|
||||
|
||||
// Darwin-specific hack: if we have a sysroot, use the contents and
|
||||
// modification time of
|
||||
// $sysroot/System/Library/CoreServices/SystemVersion.plist
|
||||
|
||||
Reference in New Issue
Block a user