xref: /llvm-project/clang/test/ClangScanDeps/modules-context-hash-outputs.c (revision 83902c403611af3a52453867cb8848fb3fd6a39c)
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