Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
[Clang][ScanDeps] Use the virtual path for module maps
Make clang-scan-deps use the virtual path for module maps instead of the on disk path. This is needed so that modulemap relative lookups are done correctly in the actual module builds. The file dependencies still use the on disk path as that's what matters for build invalidation. Differential Revision: https://reviews.llvm.org/D114206
- Loading branch information
Showing
2 changed files
with
63 additions
and
1 deletion.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,56 @@ | ||
// RUN: rm -rf %t.dir | ||
// RUN: split-file %s %t.dir | ||
// RUN: sed -e "s|DIR|%/t.dir|g" %t.dir/build/compile-commands.json.in > %t.dir/build/compile-commands.json | ||
// RUN: sed -e "s|DIR|%/t.dir|g" %t.dir/build/vfs.yaml.in > %t.dir/build/vfs.yaml | ||
// RUN: clang-scan-deps -compilation-database %t.dir/build/compile-commands.json -j 1 -format experimental-full \ | ||
// RUN: -mode preprocess-minimized-sources -generate-modules-path-args > %t.db | ||
// RUN: %python %S/../../utils/module-deps-to-rsp.py %t.db --module-name=A > %t.A.cc1.rsp | ||
// RUN: cat %t.A.cc1.rsp | sed 's:\\\\\?:/:g' | FileCheck %s | ||
|
||
// CHECK-NOT: build/module.modulemap | ||
// CHECK: A/module.modulemap | ||
|
||
//--- build/compile-commands.json.in | ||
|
||
[ | ||
{ | ||
"directory": "DIR", | ||
"command": "clang DIR/main.m -Imodules/A -fmodules -fmodules-cache-path=module-cache -fimplicit-modules -fimplicit-module-maps -ivfsoverlay build/vfs.yaml", | ||
"file": "DIR/main.m" | ||
} | ||
] | ||
|
||
//--- build/module.modulemap | ||
|
||
module A { | ||
umbrella header "A.h" | ||
} | ||
|
||
//--- modules/A/A.h | ||
|
||
typedef int A_t; | ||
|
||
//--- build/vfs.yaml.in | ||
|
||
{ | ||
"version": 0, | ||
"case-sensitive": "false", | ||
"roots": [ | ||
{ | ||
"contents": [ | ||
{ | ||
"external-contents": "DIR/build/module.modulemap", | ||
"name": "module.modulemap", | ||
"type": "file" | ||
}], | ||
"name": "DIR/modules/A", | ||
"type": "directory" | ||
} | ||
] | ||
} | ||
|
||
//--- main.m | ||
|
||
@import A; | ||
|
||
A_t a = 0; |