xref: /llvm-project/clang/test/ClangScanDeps/modules-full-by-mod-name.c (revision 9d4837f47c48c634d4a0ac799188e1f5332495ef)
18e9f62e5SJan Svoboda // RUN: rm -rf %t
28e9f62e5SJan Svoboda // RUN: split-file %s %t
38e9f62e5SJan Svoboda 
48e9f62e5SJan Svoboda //--- module.modulemap
58e9f62e5SJan Svoboda module root { header "root.h" }
68e9f62e5SJan Svoboda module direct { header "direct.h" }
78e9f62e5SJan Svoboda module transitive { header "transitive.h" }
88e9f62e5SJan Svoboda //--- root.h
98e9f62e5SJan Svoboda #include "direct.h"
108e9f62e5SJan Svoboda #include "root/textual.h"
118e9f62e5SJan Svoboda //--- direct.h
128e9f62e5SJan Svoboda #include "transitive.h"
138e9f62e5SJan Svoboda //--- transitive.h
148e9f62e5SJan Svoboda // empty
158e9f62e5SJan Svoboda 
168e9f62e5SJan Svoboda //--- root/textual.h
178e9f62e5SJan Svoboda // This is here to verify that the "root" directory doesn't clash with name of
188e9f62e5SJan Svoboda // the "root" module.
198e9f62e5SJan Svoboda 
208e9f62e5SJan Svoboda //--- cdb.json.template
218e9f62e5SJan Svoboda [{
228e9f62e5SJan Svoboda   "file": "",
238e9f62e5SJan Svoboda   "directory": "DIR",
248e9f62e5SJan Svoboda   "command": "clang -fmodules -fmodules-cache-path=DIR/cache -I DIR -x c"
258e9f62e5SJan Svoboda }]
268e9f62e5SJan Svoboda 
278e9f62e5SJan Svoboda // RUN: sed "s|DIR|%/t|g" %t/cdb.json.template > %t/cdb.json
288e9f62e5SJan Svoboda // RUN: clang-scan-deps -compilation-database %t/cdb.json -format experimental-full -module-name=root > %t/result.json
298e9f62e5SJan Svoboda // RUN: cat %t/result.json | sed 's:\\\\\?:/:g' | FileCheck -DPREFIX=%/t %s
308e9f62e5SJan Svoboda 
318e9f62e5SJan Svoboda // CHECK:      {
328e9f62e5SJan Svoboda // CHECK-NEXT:   "modules": [
338e9f62e5SJan Svoboda // CHECK-NEXT:     {
348e9f62e5SJan Svoboda // CHECK-NEXT:       "clang-module-deps": [
358e9f62e5SJan Svoboda // CHECK-NEXT:         {
368e9f62e5SJan Svoboda // CHECK-NEXT:           "context-hash": "{{.*}}",
378e9f62e5SJan Svoboda // CHECK-NEXT:           "module-name": "transitive"
388e9f62e5SJan Svoboda // CHECK-NEXT:         }
398e9f62e5SJan Svoboda // CHECK-NEXT:       ],
408e9f62e5SJan Svoboda // CHECK-NEXT:       "clang-modulemap-file": "[[PREFIX]]/module.modulemap",
418e9f62e5SJan Svoboda // CHECK-NEXT:       "command-line": [
428e9f62e5SJan Svoboda // CHECK:            ],
438e9f62e5SJan Svoboda // CHECK-NEXT:       "context-hash": "{{.*}}",
448e9f62e5SJan Svoboda // CHECK-NEXT:       "file-deps": [
45*9d4837f4SJan Svoboda // CHECK-NEXT:         "[[PREFIX]]/module.modulemap",
468e9f62e5SJan Svoboda // CHECK-NEXT:         "[[PREFIX]]/direct.h"
478e9f62e5SJan Svoboda // CHECK-NEXT:       ],
4868eb3b20SArtem Chikin // CHECK-NEXT:       "link-libraries": [],
498e9f62e5SJan Svoboda // CHECK-NEXT:       "name": "direct"
508e9f62e5SJan Svoboda // CHECK-NEXT:     },
518e9f62e5SJan Svoboda // CHECK-NEXT:     {
528e9f62e5SJan Svoboda // CHECK-NEXT:       "clang-module-deps": [
538e9f62e5SJan Svoboda // CHECK-NEXT:         {
548e9f62e5SJan Svoboda // CHECK-NEXT:           "context-hash": "{{.*}}",
558e9f62e5SJan Svoboda // CHECK-NEXT:           "module-name": "direct"
568e9f62e5SJan Svoboda // CHECK-NEXT:         }
578e9f62e5SJan Svoboda // CHECK-NEXT:       ],
588e9f62e5SJan Svoboda // CHECK-NEXT:       "clang-modulemap-file": "[[PREFIX]]/module.modulemap",
598e9f62e5SJan Svoboda // CHECK-NEXT:       "command-line": [
608e9f62e5SJan Svoboda // CHECK:            ],
618e9f62e5SJan Svoboda // CHECK-NEXT:       "context-hash": "{{.*}}",
628e9f62e5SJan Svoboda // CHECK-NEXT:       "file-deps": [
63*9d4837f4SJan Svoboda // CHECK-NEXT:         "[[PREFIX]]/module.modulemap",
64*9d4837f4SJan Svoboda // CHECK-NEXT:         "[[PREFIX]]/root.h",
658e9f62e5SJan Svoboda // CHECK-NEXT:         "[[PREFIX]]/root/textual.h"
668e9f62e5SJan Svoboda // CHECK-NEXT:       ],
6768eb3b20SArtem Chikin // CHECK-NEXT:       "link-libraries": [],
688e9f62e5SJan Svoboda // CHECK-NEXT:       "name": "root"
698e9f62e5SJan Svoboda // CHECK-NEXT:     },
708e9f62e5SJan Svoboda // CHECK-NEXT:     {
718e9f62e5SJan Svoboda // CHECK-NEXT:       "clang-module-deps": [],
728e9f62e5SJan Svoboda // CHECK-NEXT:       "clang-modulemap-file": "[[PREFIX]]/module.modulemap",
738e9f62e5SJan Svoboda // CHECK-NEXT:       "command-line": [
748e9f62e5SJan Svoboda // CHECK:            ],
758e9f62e5SJan Svoboda // CHECK-NEXT:       "context-hash": "{{.*}}",
768e9f62e5SJan Svoboda // CHECK-NEXT:       "file-deps": [
77*9d4837f4SJan Svoboda // CHECK-NEXT:         "[[PREFIX]]/module.modulemap",
788e9f62e5SJan Svoboda // CHECK-NEXT:         "[[PREFIX]]/transitive.h"
798e9f62e5SJan Svoboda // CHECK-NEXT:       ],
8068eb3b20SArtem Chikin // CHECK-NEXT:       "link-libraries": [],
818e9f62e5SJan Svoboda // CHECK-NEXT:       "name": "transitive"
828e9f62e5SJan Svoboda // CHECK-NEXT:     }
838e9f62e5SJan Svoboda // CHECK-NEXT:   ],
848e9f62e5SJan Svoboda // CHECK-NEXT:   "translation-units": []
858e9f62e5SJan Svoboda // CHECK-NEXT: }
86