86 lines · c
1// RUN: rm -rf %t2// RUN: split-file %s %t3 4//--- module.modulemap5module root { header "root.h" }6module direct { header "direct.h" }7module transitive { header "transitive.h" }8//--- root.h9#include "direct.h"10#include "root/textual.h"11//--- direct.h12#include "transitive.h"13//--- transitive.h14// empty15 16//--- root/textual.h17// This is here to verify that the "root" directory doesn't clash with name of18// the "root" module.19 20//--- cdb.json.template21[{22 "file": "",23 "directory": "DIR",24 "command": "clang -fmodules -fmodules-cache-path=DIR/cache -I DIR -x c"25}]26 27// RUN: sed "s|DIR|%/t|g" %t/cdb.json.template > %t/cdb.json28// RUN: clang-scan-deps -compilation-database %t/cdb.json -format experimental-full -module-names=root > %t/result.json29// RUN: cat %t/result.json | sed 's:\\\\\?:/:g' | FileCheck -DPREFIX=%/t %s30 31// CHECK: {32// CHECK-NEXT: "modules": [33// CHECK-NEXT: {34// CHECK-NEXT: "clang-module-deps": [35// CHECK-NEXT: {36// CHECK-NEXT: "context-hash": "{{.*}}",37// CHECK-NEXT: "module-name": "transitive"38// CHECK-NEXT: }39// CHECK-NEXT: ],40// CHECK-NEXT: "clang-modulemap-file": "[[PREFIX]]/module.modulemap",41// CHECK-NEXT: "command-line": [42// CHECK: ],43// CHECK-NEXT: "context-hash": "{{.*}}",44// CHECK-NEXT: "file-deps": [45// CHECK-NEXT: "[[PREFIX]]/module.modulemap",46// CHECK-NEXT: "[[PREFIX]]/direct.h"47// CHECK-NEXT: ],48// CHECK-NEXT: "link-libraries": [],49// CHECK-NEXT: "name": "direct"50// CHECK-NEXT: },51// CHECK-NEXT: {52// CHECK-NEXT: "clang-module-deps": [53// CHECK-NEXT: {54// CHECK-NEXT: "context-hash": "{{.*}}",55// CHECK-NEXT: "module-name": "direct"56// CHECK-NEXT: }57// CHECK-NEXT: ],58// CHECK-NEXT: "clang-modulemap-file": "[[PREFIX]]/module.modulemap",59// CHECK-NEXT: "command-line": [60// CHECK: ],61// CHECK-NEXT: "context-hash": "{{.*}}",62// CHECK-NEXT: "file-deps": [63// CHECK-NEXT: "[[PREFIX]]/module.modulemap",64// CHECK-NEXT: "[[PREFIX]]/root.h",65// CHECK-NEXT: "[[PREFIX]]/root/textual.h"66// CHECK-NEXT: ],67// CHECK-NEXT: "link-libraries": [],68// CHECK-NEXT: "name": "root"69// CHECK-NEXT: },70// CHECK-NEXT: {71// CHECK-NEXT: "clang-module-deps": [],72// CHECK-NEXT: "clang-modulemap-file": "[[PREFIX]]/module.modulemap",73// CHECK-NEXT: "command-line": [74// CHECK: ],75// CHECK-NEXT: "context-hash": "{{.*}}",76// CHECK-NEXT: "file-deps": [77// CHECK-NEXT: "[[PREFIX]]/module.modulemap",78// CHECK-NEXT: "[[PREFIX]]/transitive.h"79// CHECK-NEXT: ],80// CHECK-NEXT: "link-libraries": [],81// CHECK-NEXT: "name": "transitive"82// CHECK-NEXT: }83// CHECK-NEXT: ],84// CHECK-NEXT: "translation-units": []85// CHECK-NEXT: }86