112 lines · c
1// UNSUPPORTED: target=powerpc64-ibm-aix{{.*}}2 3// RUN: rm -rf %t4// RUN: split-file %s %t5 6//--- module.modulemap7module root { header "root.h" }8module direct { header "direct.h" }9module transitive { header "transitive.h" }10module addition { header "addition.h" }11//--- root.h12#include "direct.h"13#include "root/textual.h"14//--- direct.h15#include "transitive.h"16//--- transitive.h17// empty18 19//--- addition.h20// empty21 22//--- tu.c23#include "root.h"24 25//--- root/textual.h26// This is here to verify that the "root" directory doesn't clash with name of27// the "root" module.28 29//--- cdb.json.template30[{31 "file": "",32 "directory": "DIR",33 "command": "clang -fmodules -fmodules-cache-path=DIR/cache -I DIR -x c -c"34}]35 36// RUN: sed "s|DIR|%/t|g" %t/cdb.json.template > %t/cdb.json37// RUN: clang-scan-deps -compilation-database %t/cdb.json -format experimental-full -tu-buffer-path %t/tu.c > %t/result.json38// RUN: cat %t/result.json | sed 's:\\\\\?:/:g' | FileCheck -DPREFIX=%/t %s --check-prefix=CHECK39 40// CHECK: {41// CHECK-NEXT: "modules": [42// CHECK-NEXT: {43// CHECK-NEXT: "clang-module-deps": [44// CHECK-NEXT: {45// CHECK-NEXT: "context-hash": "{{.*}}",46// CHECK-NEXT: "module-name": "transitive"47// CHECK-NEXT: }48// CHECK-NEXT: ],49// CHECK-NEXT: "clang-modulemap-file": "[[PREFIX]]/module.modulemap",50// CHECK-NEXT: "command-line": [51// CHECK: ],52// CHECK-NEXT: "context-hash": "{{.*}}",53// CHECK-NEXT: "file-deps": [54// CHECK-NEXT: "[[PREFIX]]/module.modulemap"55// CHECK-NEXT: "[[PREFIX]]/direct.h"56// CHECK-NEXT: ],57// CHECK: "name": "direct"58// CHECK-NEXT: },59// CHECK-NEXT: {60// CHECK-NEXT: "clang-module-deps": [61// CHECK-NEXT: {62// CHECK-NEXT: "context-hash": "{{.*}}",63// CHECK-NEXT: "module-name": "direct"64// CHECK-NEXT: }65// CHECK-NEXT: ],66// CHECK-NEXT: "clang-modulemap-file": "[[PREFIX]]/module.modulemap",67// CHECK-NEXT: "command-line": [68// CHECK: ],69// CHECK-NEXT: "context-hash": "{{.*}}",70// CHECK-NEXT: "file-deps": [71// CHECK-NEXT: "[[PREFIX]]/module.modulemap"72// CHECK-NEXT: "[[PREFIX]]/root.h"73// CHECK-NEXT: "[[PREFIX]]/root/textual.h"74// CHECK-NEXT: ],75// CHECK: "name": "root"76// CHECK-NEXT: },77// CHECK-NEXT: {78// CHECK-NEXT: "clang-module-deps": [],79// CHECK-NEXT: "clang-modulemap-file": "[[PREFIX]]/module.modulemap",80// CHECK-NEXT: "command-line": [81// CHECK: ],82// CHECK-NEXT: "context-hash": "{{.*}}",83// CHECK-NEXT: "file-deps": [84// CHECK-NEXT: "[[PREFIX]]/module.modulemap"85// CHECK-NEXT: "[[PREFIX]]/transitive.h"86// CHECK-NEXT: ],87// CHECK: "name": "transitive"88// CHECK-NEXT: }89// CHECK-NEXT: ],90// CHECK-NEXT: "translation-units": [91// CHECK-NEXT: {92// CHECK-NEXT: "commands": [93// CHECK-NEXT: {94// CHECK-NEXT: "clang-context-hash": "{{.*}}",95// CHECK-NEXT: "clang-module-deps": [96// CHECK-NEXT: {97// CHECK-NEXT: "context-hash": "{{.*}}",98// CHECK-NEXT: "module-name": "root"99// CHECK-NEXT: }100// CHECK-NEXT: ],101// CHECK-NEXT: "command-line": [102// CHECK: ],103// CHECK: "file-deps": [104// CHECK-NEXT: [[PREFIX]]/tu.c105// CHECK-NEXT: ],106// CHECK-NEXT: "input-file": "[[PREFIX]]/tu.c"107// CHECK-NEXT: }108// CHECK-NEXT: ]109// CHECK-NEXT: }110// CHECK-NEXT: ]111// CHECK-NEXT: }112