102871701SBen Langmuir // If secondary output files such as .d are enabled, ensure it affects the 202871701SBen Langmuir // module context hash since it may impact the resulting module build commands. 302871701SBen Langmuir 402871701SBen Langmuir // RUN: rm -rf %t 502871701SBen Langmuir // RUN: split-file %s %t 602871701SBen Langmuir // RUN: sed "s|DIR|%/t|g" %t/cdb.json.template > %t/cdb.json 702871701SBen Langmuir 871e32d5cSJan Svoboda // RUN: clang-scan-deps -compilation-database %t/cdb.json -j 1 \ 902871701SBen Langmuir // RUN: -format experimental-full > %t/deps.json 1002871701SBen Langmuir // RUN: cat %t/deps.json | sed 's:\\\\\?:/:g' | FileCheck -DPREFIX=%/t %s 1102871701SBen Langmuir 1202871701SBen Langmuir // CHECK: { 1302871701SBen Langmuir // CHECK-NEXT: "modules": [ 1402871701SBen Langmuir // CHECK: { 1502871701SBen Langmuir // CHECK: "command-line": [ 1602871701SBen Langmuir // CHECK: "-dependency-file" 1702871701SBen Langmuir // CHECK: ] 1802871701SBen Langmuir // CHECK: "context-hash": "[[HASH1:.*]]" 1902871701SBen Langmuir // CHECK: "name": "Mod" 2002871701SBen Langmuir // CHECK-NEXT: } 2102871701SBen Langmuir // CHECK-NEXT: { 2202871701SBen Langmuir // CHECK: "command-line": [ 2302871701SBen Langmuir // CHECK-NOT: "-dependency-file" 2402871701SBen Langmuir // CHECK: ] 2502871701SBen Langmuir // CHECK: "context-hash": "[[HASH2:.*]]" 2602871701SBen Langmuir // CHECK: "name": "Mod" 2702871701SBen Langmuir // CHECK-NEXT: } 2802871701SBen Langmuir // CHECK-NEXT: ] 2902871701SBen Langmuir // CHECK-NEXT: "translation-units": [ 3002871701SBen Langmuir // CHECK-NEXT: { 3102871701SBen Langmuir // CHECK: "clang-module-deps": [ 3202871701SBen Langmuir // CHECK-NEXT: { 3302871701SBen Langmuir // CHECK-NEXT: "context-hash": "[[HASH1]]" 3402871701SBen Langmuir // CHECK-NEXT: "module-name": "Mod" 3502871701SBen Langmuir // CHECK-NEXT: } 3602871701SBen Langmuir // CHECK-NEXT: ] 3702871701SBen Langmuir // CHECK-NEXT: "command-line": [ 38*83902c40SBen Langmuir // CHECK: "-dependency-file" 3902871701SBen Langmuir // CHECK: ] 4002871701SBen Langmuir // CHECK: "input-file": "{{.*}}tu1.c" 4102871701SBen Langmuir // CHECK-NEXT: } 42*83902c40SBen Langmuir // CHECK: { 4302871701SBen Langmuir // CHECK: "clang-module-deps": [ 4402871701SBen Langmuir // CHECK-NEXT: { 4502871701SBen Langmuir // CHECK-NEXT: "context-hash": "[[HASH2]]" 4602871701SBen Langmuir // CHECK-NEXT: "module-name": "Mod" 4702871701SBen Langmuir // CHECK-NEXT: } 4802871701SBen Langmuir // CHECK-NEXT: ] 4902871701SBen Langmuir // CHECK-NEXT: "command-line": [ 5002871701SBen Langmuir // CHECK-NOT: "-MF" 51*83902c40SBen Langmuir // CHECK-NOT: "-dependency-file" 5202871701SBen Langmuir // CHECK: ] 5302871701SBen Langmuir // CHECK: "input-file": "{{.*}}tu2.c" 5402871701SBen Langmuir 5502871701SBen Langmuir //--- cdb.json.template 5602871701SBen Langmuir [ 5702871701SBen Langmuir { 5802871701SBen Langmuir "directory": "DIR", 5902871701SBen Langmuir "command": "clang -MD -MF DIR/tu1.d -fsyntax-only DIR/tu1.c -fmodules -fimplicit-module-maps -fmodules-cache-path=DIR/cache", 6002871701SBen Langmuir "file": "DIR/tu1.c" 6102871701SBen Langmuir }, 6202871701SBen Langmuir { 6302871701SBen Langmuir "directory": "DIR", 6402871701SBen Langmuir "command": "clang -fsyntax-only DIR/tu2.c -fmodules -fimplicit-module-maps -fmodules-cache-path=DIR/cache", 6502871701SBen Langmuir "file": "DIR/tu2.c" 6602871701SBen Langmuir }, 6702871701SBen Langmuir ] 6802871701SBen Langmuir 6902871701SBen Langmuir //--- module.modulemap 7002871701SBen Langmuir module Mod { header "Mod.h" } 7102871701SBen Langmuir 7202871701SBen Langmuir //--- Mod.h 7302871701SBen Langmuir 7402871701SBen Langmuir //--- tu1.c 7502871701SBen Langmuir #include "Mod.h" 7602871701SBen Langmuir 7702871701SBen Langmuir //--- tu2.c 7802871701SBen Langmuir #include "Mod.h" 79