109 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" }8module root1 { header "root1.h"}9//--- root.h10#include "direct.h"11#include "root/textual.h"12 13//--- root1.h14#include "direct.h"15 16//--- direct.h17#include "transitive.h"18//--- transitive.h19// empty20 21//--- root/textual.h22// This is here to verify that the "root" directory doesn't clash with name of23// the "root" module.24 25//--- cdb.json.template26[{27 "file": "",28 "directory": "DIR",29 "command": "clang -fmodules -fmodules-cache-path=DIR/cache -I DIR -x c"30}]31 32// RUN: sed "s|DIR|%/t|g" %t/cdb.json.template > %t/cdb.json33// RUN: clang-scan-deps -compilation-database %t/cdb.json -format experimental-full -module-names=root,root1,direct > %t/result.json34// RUN: cat %t/result.json | sed 's:\\\\\?:/:g' | FileCheck -DPREFIX=%/t %s35 36// CHECK: {37// CHECK-NEXT: "modules": [38// CHECK-NEXT: {39// CHECK-NEXT: "clang-module-deps": [40// CHECK-NEXT: {41// CHECK-NEXT: "context-hash": "{{.*}}",42// CHECK-NEXT: "module-name": "transitive"43// CHECK-NEXT: }44// CHECK-NEXT: ],45// CHECK-NEXT: "clang-modulemap-file": "[[PREFIX]]/module.modulemap",46// CHECK-NEXT: "command-line": [47// CHECK: ],48// CHECK-NEXT: "context-hash": "{{.*}}",49// CHECK-NEXT: "file-deps": [50// CHECK-NEXT: "[[PREFIX]]/module.modulemap",51// CHECK-NEXT: "[[PREFIX]]/direct.h"52// CHECK-NEXT: ],53// CHECK-NEXT: "link-libraries": [],54// CHECK-NEXT: "name": "direct"55// CHECK-NEXT: },56// CHECK-NEXT: {57// CHECK-NEXT: "clang-module-deps": [58// CHECK-NEXT: {59// CHECK-NEXT: "context-hash": "{{.*}}",60// CHECK-NEXT: "module-name": "direct"61// CHECK-NEXT: }62// CHECK-NEXT: ],63// CHECK-NEXT: "clang-modulemap-file": "[[PREFIX]]/module.modulemap",64// CHECK-NEXT: "command-line": [65// CHECK: ],66// CHECK-NEXT: "context-hash": "{{.*}}",67// CHECK-NEXT: "file-deps": [68// CHECK-NEXT: "[[PREFIX]]/module.modulemap",69// CHECK-NEXT: "[[PREFIX]]/root.h",70// CHECK-NEXT: "[[PREFIX]]/root/textual.h"71// CHECK-NEXT: ],72// CHECK-NEXT: "link-libraries": [],73// CHECK-NEXT: "name": "root"74// CHECK-NEXT: },75// CHECK-NEXT: {76// CHECK-NEXT: "clang-module-deps": [77// CHECK-NEXT: {78// CHECK-NEXT: "context-hash": "{{.*}}",79// CHECK-NEXT: "module-name": "direct"80// CHECK-NEXT: }81// CHECK-NEXT: ],82// CHECK-NEXT: "clang-modulemap-file": "[[PREFIX]]/module.modulemap",83// CHECK-NEXT: "command-line": [84// CHECK: ],85// CHECK-NEXT: "context-hash": "{{.*}}",86// CHECK-NEXT: "file-deps": [87// CHECK-NEXT: "[[PREFIX]]/module.modulemap",88// CHECK-NEXT: "[[PREFIX]]/root1.h"89// CHECK-NEXT: ],90// CHECK-NEXT: "link-libraries": [],91// CHECK-NEXT: "name": "root1"92// CHECK-NEXT: },93// CHECK-NEXT: {94// CHECK-NEXT: "clang-module-deps": [],95// CHECK-NEXT: "clang-modulemap-file": "[[PREFIX]]/module.modulemap",96// CHECK-NEXT: "command-line": [97// CHECK: ],98// CHECK-NEXT: "context-hash": "{{.*}}",99// CHECK-NEXT: "file-deps": [100// CHECK-NEXT: "[[PREFIX]]/module.modulemap",101// CHECK-NEXT: "[[PREFIX]]/transitive.h"102// CHECK-NEXT: ],103// CHECK-NEXT: "link-libraries": [],104// CHECK-NEXT: "name": "transitive"105// CHECK-NEXT: }106// CHECK-NEXT: ],107// CHECK-NEXT: "translation-units": []108// CHECK-NEXT: }109