xref: /llvm-project/clang/test/ClangScanDeps/optimize-fmodulemap.m (revision 68eb3b202f30a1c3f2575f44b9d16365258e66b6)
1// Check that unused directly passed -fmodule-map-file options get dropped.
2
3// RUN: rm -rf %t && split-file %s %t
4// RUN: sed -e "s|DIR|%/t|g" %t/build/cdb.json.in > %t/build/cdb.json
5// RUN: clang-scan-deps -compilation-database %t/build/cdb.json \
6// RUN:   -format experimental-full > %t/deps.json
7// RUN: cat %t/deps.json | sed 's:\\\\\?:/:g' | FileCheck %s -DPREFIX=%/t
8
9// CHECK:      {
10// CHECK-NEXT:   "modules": [
11// CHECK-NEXT:     {
12// CHECK-NEXT:       "clang-module-deps": [
13// CHECK-NEXT:         {
14// CHECK-NEXT:           "context-hash": "{{.*}}",
15// CHECK-NEXT:           "module-name": "B"
16// CHECK-NEXT:         }
17// CHECK-NEXT:       ],
18// CHECK-NEXT:       "clang-modulemap-file": "[[PREFIX]]/modules/A/module.modulemap",
19// CHECK-NEXT:       "command-line": [
20// CHECK-NOT:          "-fmodule-map-file=[[PREFIX]]/modules/A/module.modulemap"
21// CHECK:              "-fmodule-map-file=[[PREFIX]]/modules/B/module.modulemap"
22// CHECK-NOT:          "-fmodule-map-file=[[PREFIX]]/modules/A/module.modulemap"
23// CHECK:            ],
24// CHECK-NEXT:       "context-hash": "{{.*}}",
25// CHECK-NEXT:       "file-deps": [
26// CHECK:            ],
27// CHECK-NEXT:       "link-libraries": [],
28// CHECK-NEXT:       "name": "A"
29// CHECK-NEXT:     },
30// CHECK-NEXT:     {
31// CHECK-NEXT:       "clang-module-deps": [],
32// CHECK-NEXT:       "clang-modulemap-file": "[[PREFIX]]/modules/B/module.modulemap",
33// CHECK-NEXT:       "command-line": [
34// CHECK-NOT:          "-fmodule-map-file=
35// CHECK:            ],
36// CHECK-NEXT:       "context-hash": "{{.*}}",
37// CHECK-NEXT:       "file-deps": [
38// CHECK:            ],
39// CHECK-NEXT:       "link-libraries": [],
40// CHECK-NEXT:       "name": "B"
41// CHECK-NEXT:     }
42// CHECK-NEXT:   ],
43// CHECK-NEXT:   "translation-units": [
44// CHECK:        ]
45// CHECK:      }
46
47//--- build/cdb.json.in
48[{
49  "directory": "DIR",
50  "command": "clang -c DIR/tu.m -I DIR/modules/B -fmodule-map-file=DIR/modules/A/module.modulemap -fmodules -fmodules-cache-path=DIR/cache -fimplicit-module-maps",
51  "file": "DIR/tu.m"
52}]
53
54//--- build/vfs.yaml.in
55
56//--- tu.m
57@import A;
58
59//--- modules/A/module.modulemap
60module A { header "A.h" }
61
62//--- modules/A/A.h
63#include <B.h>
64
65//--- modules/B/module.modulemap
66module B { header "B.h" }
67
68//--- modules/B/B.h
69