xref: /llvm-project/clang/test/ClangScanDeps/generate-modules-path-args.c (revision 71e32d5cf0053090aaad62d946fcfd00f1915f26)
16626f6feSBen Langmuir // RUN: rm -rf %t
26626f6feSBen Langmuir // RUN: split-file %s %t
36626f6feSBen Langmuir // RUN: sed "s|DIR|%/t|g" %t/cdb.json.template > %t/cdb.json
46626f6feSBen Langmuir // RUN: sed "s|DIR|%/t|g" %t/cdb_without.json.template > %t/cdb_without.json
56626f6feSBen Langmuir // RUN: clang-scan-deps -compilation-database %t/cdb.json \
6*71e32d5cSJan Svoboda // RUN:   -format experimental-full > %t/deps.json
76626f6feSBen Langmuir // RUN: cat %t/deps.json | sed 's:\\\\\?:/:g' | FileCheck -DPREFIX=%/t %s
83ce78cbdSBen Langmuir // RUN: clang-scan-deps -compilation-database %t/cdb.json \
9*71e32d5cSJan Svoboda // RUN:   -format experimental-full -dependency-target foo > %t/deps_mt1.json
103ce78cbdSBen Langmuir // RUN: cat %t/deps_mt1.json | sed 's:\\\\\?:/:g' | FileCheck -DPREFIX=%/t %s -check-prefix=DEPS_MT1
113ce78cbdSBen Langmuir // RUN: clang-scan-deps -compilation-database %t/cdb.json \
12*71e32d5cSJan Svoboda // RUN:   -format experimental-full -dependency-target foo -dependency-target bar > %t/deps_mt2.json
133ce78cbdSBen Langmuir // RUN: cat %t/deps_mt2.json | sed 's:\\\\\?:/:g' | FileCheck -DPREFIX=%/t %s -check-prefix=DEPS_MT2
146626f6feSBen Langmuir // RUN: clang-scan-deps -compilation-database %t/cdb_without.json \
15*71e32d5cSJan Svoboda // RUN:   -format experimental-full > %t/deps_without.json
166626f6feSBen Langmuir // RUN: cat %t/deps_without.json | sed 's:\\\\\?:/:g' | FileCheck -DPREFIX=%/t -check-prefix=WITHOUT %s
176626f6feSBen Langmuir 
186626f6feSBen Langmuir // CHECK:      {
196626f6feSBen Langmuir // CHECK-NEXT:   "modules": [
206626f6feSBen Langmuir // CHECK-NEXT:     {
216626f6feSBen Langmuir // CHECK:            "command-line": [
226626f6feSBen Langmuir // CHECK-NEXT:         "-cc1"
236626f6feSBen Langmuir // CHECK:              "-serialize-diagnostic-file"
246626f6feSBen Langmuir // CHECK-NEXT:         "[[PREFIX]]{{.*}}Mod{{.*}}.diag"
253ce78cbdSBen Langmuir // CHECK:              "-MT"
263ce78cbdSBen Langmuir // CHECK-NEXT:         "[[PREFIX]]{{.*}}Mod{{.*}}.pcm"
276626f6feSBen Langmuir // CHECK:              "-dependency-file"
286626f6feSBen Langmuir // CHECK-NEXT:         "[[PREFIX]]{{.*}}Mod{{.*}}.d"
296626f6feSBen Langmuir // CHECK:            ],
306626f6feSBen Langmuir 
313ce78cbdSBen Langmuir // DEPS_MT1:      "-MT"
323ce78cbdSBen Langmuir // DEPS_MT1-NEXT: "foo"
333ce78cbdSBen Langmuir 
343ce78cbdSBen Langmuir // DEPS_MT2:      "-MT"
353ce78cbdSBen Langmuir // DEPS_MT2-NEXT: "foo"
363ce78cbdSBen Langmuir // DEPS_MT2-NEXT: "-MT"
373ce78cbdSBen Langmuir // DEPS_MT2-NEXT: "bar"
383ce78cbdSBen Langmuir 
396626f6feSBen Langmuir // WITHOUT:      {
406626f6feSBen Langmuir // WITHOUT-NEXT:   "modules": [
416626f6feSBen Langmuir // WITHOUT-NEXT:     {
426626f6feSBen Langmuir // WITHOUT:            "command-line": [
436626f6feSBen Langmuir // WITHOUT-NEXT:         "-cc1"
446626f6feSBen Langmuir // WITHOUT-NOT:          "-serialize-diagnostic-file"
456626f6feSBen Langmuir // WITHOUT-NOT:          "-dependency-file"
463ce78cbdSBen Langmuir // WITHOUT-NOT:          "-MT"
476626f6feSBen Langmuir // WITHOUT:            ],
486626f6feSBen Langmuir 
496626f6feSBen Langmuir //--- cdb.json.template
506626f6feSBen Langmuir [{
516626f6feSBen Langmuir   "directory": "DIR",
526626f6feSBen Langmuir   "command": "clang -fsyntax-only DIR/tu.c -fmodules -fimplicit-module-maps -fmodules-cache-path=DIR/cache -serialize-diagnostics DIR/tu.diag -MD -MT tu -MF DIR/tu.d",
536626f6feSBen Langmuir   "file": "DIR/tu.c"
546626f6feSBen Langmuir }]
556626f6feSBen Langmuir 
566626f6feSBen Langmuir //--- cdb_without.json.template
576626f6feSBen Langmuir [{
586626f6feSBen Langmuir   "directory": "DIR",
596626f6feSBen Langmuir   "command": "clang -fsyntax-only DIR/tu.c -fmodules -fimplicit-module-maps -fmodules-cache-path=DIR/cache",
606626f6feSBen Langmuir   "file": "DIR/tu.c"
616626f6feSBen Langmuir }]
626626f6feSBen Langmuir 
636626f6feSBen Langmuir //--- module.modulemap
646626f6feSBen Langmuir module Mod { header "Mod.h" }
656626f6feSBen Langmuir 
666626f6feSBen Langmuir //--- Mod.h
676626f6feSBen Langmuir 
686626f6feSBen Langmuir //--- tu.c
696626f6feSBen Langmuir #include "Mod.h"
70