File tree Expand file tree Collapse file tree 6 files changed +72
-4
lines changed
lib/Tooling/DependencyScanning Expand file tree Collapse file tree 6 files changed +72
-4
lines changed Original file line number Diff line number Diff line change @@ -619,6 +619,13 @@ void ModuleDepCollectorPP::EndOfMainFile() {
619619 for (StringRef VFS : MDC.ScanInstance .getHeaderSearchOpts ().VFSOverlayFiles )
620620 MDC.addFileDep (VFS);
621621
622+ if (Module *CurrentModule = PP.getCurrentModuleImplementation ()) {
623+ if (OptionalFileEntryRef CurrentModuleMap =
624+ PP.getHeaderSearchInfo ().getModuleMap ().getModuleMapFileForUniquing (
625+ CurrentModule))
626+ MDC.addFileDep (CurrentModuleMap->getName ());
627+ }
628+
622629 for (const Module *M :
623630 MDC.ScanInstance .getPreprocessor ().getAffectingClangModules ())
624631 if (!MDC.isPrebuiltModule (M))
Original file line number Diff line number Diff line change 1+ // RUN: rm -rf %t
2+ // RUN: split-file %s %t
3+
4+ // RUN: sed -e "s|DIR|%/t|g" %t/vfs.yaml.in > %t/vfs.yaml
5+
6+ // RUN: clang-scan-deps -format experimental-full -j 1 -- \
7+ // RUN: %clang -ivfsoverlay %t/vfs.yaml -fmodules -fimplicit-module-maps \
8+ // RUN: -fmodules-cache-path=%t/cache -fmodule-name=ModuleName \
9+ // RUN: -I %/t/remapped -c %t/header-impl.c -o %t/header-impl.o \
10+ // RUN: | sed 's:\\\\\?:/:g' | FileCheck %s -DPREFIX=%/t
11+
12+ // CHECK: "command-line": [
13+ // CHECK: "-fmodule-map-file=[[PREFIX]]/remapped/module.modulemap"
14+ // CHECK: "file-deps": [
15+ // CHECK: "[[PREFIX]]/original/module.modulemap"
16+
17+ // Verify that "file-deps" references actual on-disk module map and not using the virtual path.
18+
19+ //--- vfs.yaml.in
20+ {
21+ "version" : 0 ,
22+ "case-sensitive" : "false" ,
23+ "roots" : [
24+ {
25+ "name" : "DIR /remapped ",
26+ " type ": " directory ",
27+ " contents ": [
28+ {
29+ " name ": " module .modulemap ",
30+ " type ": " file ",
31+ " external - contents ": " DIR /original /module .modulemap "
32+ },
33+ {
34+ "name" : "header.h" ,
35+ "type" : "file" ,
36+ "external-contents" : "DIR/original/header.h"
37+ }
38+ ]
39+ }
40+ ]
41+ }
42+
43+ //--- original/module.modulemap
44+ module ModuleName {
45+ header "header.h"
46+ export *
47+ }
48+
49+ //--- original/header.h
50+ int foo_function (void );
51+
52+ //--- header-impl.c
53+ #include <header.h>
54+
55+ int foo_function (void ) {
56+ return 0 ;
57+ }
Original file line number Diff line number Diff line change 4646// CHECK: "file-deps": [
4747// CHECK-NEXT: "[[PREFIX]]/modules-fmodule-name-no-module-built.m",
4848// CHECK-NEXT: "[[PREFIX]]/Inputs/header3.h",
49- // CHECK-NEXT: "[[PREFIX]]/Inputs/header.h"
49+ // CHECK-NEXT: "[[PREFIX]]/Inputs/header.h",
50+ // CHECK-NEXT: "[[PREFIX]]/Inputs/module.modulemap"
5051// CHECK-NEXT: ],
5152// CHECK-NEXT: "input-file": "[[PREFIX]]/modules-fmodule-name-no-module-built.m"
5253// CHECK-NEXT: }
Original file line number Diff line number Diff line change 8080// CHECK: "file-deps": [
8181// CHECK-NEXT: "[[PREFIX]]/tu.m",
8282// CHECK-NEXT: "[[PREFIX]]/shared/H.h",
83- // CHECK-NEXT: "[[PREFIX]]/overlay.json"
83+ // CHECK-NEXT: "[[PREFIX]]/overlay.json",
84+ // CHECK-NEXT: "[[PREFIX]]/frameworks/A.framework/Modules/module.modulemap"
8485// CHECK-NEXT: ],
8586// CHECK-NEXT: "input-file": "[[PREFIX]]/tu.m"
8687// CHECK-NEXT: }
Original file line number Diff line number Diff line change @@ -28,7 +28,8 @@ framework module FWPrivate { header "private.h" }
2828// CHECK: "-fmodule-name=FWPrivate",
2929// CHECK: ],
3030// CHECK: "file-deps": [
31- // CHECK-NEXT: "[[PREFIX]]/tu.m"
31+ // CHECK-NEXT: "[[PREFIX]]/tu.m",
32+ // CHECK-NEXT: "[[PREFIX]]/frameworks/FW.framework/Modules/module.private.modulemap"
3233// CHECK-NEXT: ],
3334// CHECK-NEXT: "input-file": "[[PREFIX]]/tu.m"
3435// CHECK-NEXT: }
Original file line number Diff line number Diff line change 6565// CHECK: "file-deps": [
6666// CHECK-NEXT: "[[PREFIX]]/tu.m",
6767// CHECK-NEXT: "[[PREFIX]]/frameworks/FW.framework/PrivateHeaders/Missed.h",
68- // CHECK-NEXT: "[[PREFIX]]/frameworks/FW.framework/Headers/FW.h"
68+ // CHECK-NEXT: "[[PREFIX]]/frameworks/FW.framework/Headers/FW.h",
69+ // CHECK-NEXT: "[[PREFIX]]/frameworks/FW.framework/Modules/module.modulemap"
6970// CHECK-NEXT: ],
7071// CHECK-NEXT: "input-file": "[[PREFIX]]/tu.m"
7172// CHECK-NEXT: }
You can’t perform that action at this time.
0 commit comments