Changeset View
Changeset View
Standalone View
Standalone View
clang/test/ClangScanDeps/modules-basic.c
- This file was added.
// RUN: rm -rf %t | |||||
// RUN: split-file %s %t | |||||
//--- include/module.modulemap | |||||
module top { header "top.h" } | |||||
module left { header "left.h" } | |||||
module right { header "right.h" } | |||||
module right_extra { header "right-extra.h" } | |||||
module bottom { header "bottom.h" } | |||||
//--- include/top.h | |||||
// | |||||
#define D1 | |||||
//--- include/left.h | |||||
/// | |||||
#include "top.h" | |||||
#define D2 | |||||
//--- include/right.h | |||||
//// | |||||
#include "right-extra.h" | |||||
#include "top.h" | |||||
#define D3 | |||||
//--- include/right-extra.h | |||||
///// | |||||
#define D4 | |||||
//--- include/bottom.h | |||||
////// | |||||
#include "left.h" | |||||
#include "right.h" | |||||
#define D5 | |||||
//--- include/t.h | |||||
//--- tu.c | |||||
#include "bottom.h" | |||||
#ifdef D1 | |||||
#endif | |||||
#ifdef D2 | |||||
#endif | |||||
#ifdef D3 | |||||
#endif | |||||
#ifdef D4 | |||||
#endif | |||||
#ifdef D5 | |||||
#endif | |||||
#define D1 | |||||
#define D2 | |||||
#define D3 | |||||
#define D4 | |||||
#define D5 | |||||
//--- cdb.json.template | |||||
[{ | |||||
"file": "DIR/tu.c", | |||||
"directory": "DIR", | |||||
"command": "clang -fsyntax-only DIR/tu.c -fmodules -fmodules-cache-path=DIR/cache -fimplicit-module-maps -I DIR/include" | |||||
}] | |||||
// RUN: sed "s|DIR|%/t|g" %t/cdb.json.template > %t/cdb.json | |||||
// RUN: clang-scan-deps -compilation-database %t/cdb.json -format experimental-full > %t/result.json | |||||
// RUN: cat %t/result.json | sed 's:\\\\\?:/:g' | FileCheck %s -DPREFIX=%/t | |||||
// CHECK: { | |||||
// CHECK-NEXT: "modules": [ | |||||
// CHECK-NEXT: { | |||||
// CHECK-NEXT: clang-module-deps": [ | |||||
// CHECK-NEXT: { | |||||
// CHECK-NEXT: "context-hash": "[[X_HASH:.*]]", | |||||
// CHECK-NEXT: "module-name": "x" | |||||
// CHECK-NEXT: } | |||||
// CHECK-NEXT: ], | |||||
// CHECK-NEXT: "clang-modulemap-file": "[[PREFIX]]/include/module.modulemap", | |||||
// CHECK-NEXT: "command-line": [ | |||||
// CHECK-NEXT: "-cc1", | |||||
// CHECK: "-o", | |||||
// CHECK-NEXT: "[[PREFIX]]/cache/{{.*}}/m-{{.*}}.pcm", | |||||
// CHECK: "-emit-module", | |||||
// CHECK: "[[PREFIX]]/include/module.modulemap", | |||||
// CHECK: "-fmodules", | |||||
// CHECK: "-fmodule-name=m", | |||||
// CHECK: ], | |||||
// CHECK-NEXT: "context-hash": "[[M_HASH:.*]]", | |||||
// CHECK-NEXT: "file-deps": [ | |||||
// CHECK-NEXT: "[[PREFIX]]/include/m.h", | |||||
// CHECK-NEXT: "[[PREFIX]]/include/module.modulemap" | |||||
// CHECK-NEXT: ], | |||||
// CHECK-NEXT: "name": "m" | |||||
// CHECK-NEXT: }, | |||||
// CHECK-NEXT: { | |||||
// CHECK-NEXT: "clang-module-deps": [], | |||||
// CHECK-NEXT: "clang-modulemap-file": "[[PREFIX]]/include/module.modulemap", | |||||
// CHECK-NEXT: "command-line": [ | |||||
// CHECK-NEXT: "-cc1", | |||||
// CHECK: "-o", | |||||
// CHECK-NEXT: "[[PREFIX]]/cache/{{.*}}/x-{{.*}}.pcm", | |||||
// CHECK: "-emit-module", | |||||
// CHECK: "[[PREFIX]]/include/module.modulemap", | |||||
// CHECK: "-fmodules", | |||||
// CHECK: "-fmodule-name=x", | |||||
// CHECK: ], | |||||
// CHECK-NEXT: "context-hash": "[[X_HASH]]", | |||||
// CHECK-NEXT: "file-deps": [ | |||||
// CHECK-NEXT: "[[PREFIX]]/include/module.modulemap", | |||||
// CHECK-NEXT: "[[PREFIX]]/include/x.h" | |||||
// CHECK-NEXT: ], | |||||
// CHECK-NEXT: "name": "x" | |||||
// CHECK-NEXT: } | |||||
// CHECK-NEXT: ], | |||||
// CHECK-NEXT: "translation-units": [ | |||||
// CHECK-NEXT: { | |||||
// CHECK-NEXT: "commands": [ | |||||
// CHECK-NEXT: { | |||||
// CHECK-NEXT: "clang-context-hash": "{{.*}}", | |||||
// CHECK-NEXT: "clang-module-deps": [ | |||||
// CHECK-NEXT: { | |||||
// CHECK-NEXT: "context-hash": "[[M_HASH]]", | |||||
// CHECK-NEXT: "module-name": "m" | |||||
// CHECK-NEXT: } | |||||
// CHECK-NEXT: ], | |||||
// CHECK-NEXT: "command-line": [ | |||||
// CHECK-NEXT: "-cc1", | |||||
// CHECK: "-fmodule-map-file=[[PREFIX]]/include/module.modulemap", | |||||
// CHECK: "-fmodule-file=m=[[PREFIX]]/cache/{{.*}}/m-{{.*}}.pcm", | |||||
// CHECK: ], | |||||
// CHECK-NEXT: "executable": "clang", | |||||
// CHECK-NEXT: "file-deps": [ | |||||
// CHECK-NEXT: "[[PREFIX]]/tu.c", | |||||
// CHECK-NEXT: "[[PREFIX]]/include/t.h" | |||||
// CHECK-NEXT: ], | |||||
// CHECK-NEXT: "input-file": "[[PREFIX]]/tu.c" | |||||
// CHECK-NEXT: } | |||||
// CHECK-NEXT: ] | |||||
// CHECK-NEXT: } | |||||
// CHECK-NEXT: ] | |||||
// CHECK-NEXT: } |