102871701SBen Langmuir // Ensure '-DFOO -fmodules-ignore-macro=FOO' and '' both produce the same 202871701SBen Langmuir // canonical module build command. 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 802871701SBen Langmuir // 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-NOT: "FOO" 1702871701SBen Langmuir // CHECK-NOT: "-fmodules-ignore-macro 1802871701SBen Langmuir // CHECK: ] 1902871701SBen Langmuir // CHECK: "context-hash": "[[HASH_NO_FOO:.*]]" 2002871701SBen Langmuir // CHECK: "name": "Mod" 2102871701SBen Langmuir // CHECK-NEXT: } 2202871701SBen Langmuir // CHECK-NEXT: { 2302871701SBen Langmuir // CHECK: "command-line": [ 2402871701SBen Langmuir // CHECK: "-D" 2502871701SBen Langmuir // CHECK-NEXT: "FOO" 2602871701SBen Langmuir // CHECK: ] 2702871701SBen Langmuir // CHECK: "context-hash": "[[HASH_FOO:.*]]" 2802871701SBen Langmuir // CHECK: "name": "Mod" 2902871701SBen Langmuir // CHECK-NEXT: } 3002871701SBen Langmuir // CHECK-NEXT: ] 3102871701SBen Langmuir // CHECK-NEXT: "translation-units": [ 3202871701SBen Langmuir // CHECK-NEXT: { 3302871701SBen Langmuir // CHECK: "clang-module-deps": [ 3402871701SBen Langmuir // CHECK-NEXT: { 3502871701SBen Langmuir // CHECK-NEXT: "context-hash": "[[HASH_NO_FOO]]" 3602871701SBen Langmuir // CHECK-NEXT: "module-name": "Mod" 3702871701SBen Langmuir // CHECK-NEXT: } 3802871701SBen Langmuir // CHECK-NEXT: ] 3902871701SBen Langmuir // CHECK-NEXT: "command-line": [ 4002871701SBen Langmuir // CHECK-NOT: "-DFOO" 41*83902c40SBen Langmuir // CHECK-NOT: "FOO" 4202871701SBen Langmuir // CHECK: ] 4302871701SBen Langmuir // CHECK: "input-file": "{{.*}}tu1.c" 4402871701SBen Langmuir // CHECK-NEXT: } 45*83902c40SBen Langmuir // CHECK: { 4602871701SBen Langmuir // CHECK: "clang-module-deps": [ 4702871701SBen Langmuir // CHECK-NEXT: { 4802871701SBen Langmuir // CHECK-NEXT: "context-hash": "[[HASH_FOO]]" 4902871701SBen Langmuir // CHECK-NEXT: "module-name": "Mod" 5002871701SBen Langmuir // CHECK-NEXT: } 5102871701SBen Langmuir // CHECK-NEXT: ] 5202871701SBen Langmuir // CHECK-NEXT: "command-line": [ 53*83902c40SBen Langmuir // CHECK: "-D" 54*83902c40SBen Langmuir // CHECK-NEXT: "FOO" 5502871701SBen Langmuir // CHECK: ] 5602871701SBen Langmuir // CHECK: "input-file": "{{.*}}tu2.c" 5702871701SBen Langmuir // CHECK-NEXT: } 58*83902c40SBen Langmuir // CHECK: { 5902871701SBen Langmuir // CHECK: "clang-module-deps": [ 6002871701SBen Langmuir // CHECK-NEXT: { 6102871701SBen Langmuir // CHECK-NEXT: "context-hash": "[[HASH_NO_FOO]]" 6202871701SBen Langmuir // CHECK-NEXT: "module-name": "Mod" 6302871701SBen Langmuir // CHECK-NEXT: } 6402871701SBen Langmuir // CHECK-NEXT: ] 6502871701SBen Langmuir // CHECK-NEXT: "command-line": [ 6602871701SBen Langmuir // CHECK: "-fmodules-ignore-macro=FOO" 67*83902c40SBen Langmuir // CHECK: "-D" 68*83902c40SBen Langmuir // CHECK-NEXT: "FOO" 6902871701SBen Langmuir // CHECK: ] 7002871701SBen Langmuir // CHECK: "input-file": "{{.*}}tu3.c" 7102871701SBen Langmuir 7202871701SBen Langmuir //--- cdb.json.template 7302871701SBen Langmuir [ 7402871701SBen Langmuir { 7502871701SBen Langmuir "directory": "DIR", 7602871701SBen Langmuir "command": "clang -fsyntax-only DIR/tu1.c -fmodules -fimplicit-module-maps -fmodules-cache-path=DIR/cache", 7702871701SBen Langmuir "file": "DIR/tu1.c" 7802871701SBen Langmuir }, 7902871701SBen Langmuir { 8002871701SBen Langmuir "directory": "DIR", 8102871701SBen Langmuir "command": "clang -DFOO -fsyntax-only DIR/tu2.c -fmodules -fimplicit-module-maps -fmodules-cache-path=DIR/cache", 8202871701SBen Langmuir "file": "DIR/tu2.c" 8302871701SBen Langmuir }, 8402871701SBen Langmuir { 8502871701SBen Langmuir "directory": "DIR", 8602871701SBen Langmuir "command": "clang -DFOO -fmodules-ignore-macro=FOO -fsyntax-only DIR/tu3.c -fmodules -fimplicit-module-maps -fmodules-cache-path=DIR/cache", 8702871701SBen Langmuir "file": "DIR/tu3.c" 8802871701SBen Langmuir }, 8902871701SBen Langmuir ] 9002871701SBen Langmuir 9102871701SBen Langmuir //--- module.modulemap 9202871701SBen Langmuir module Mod { header "Mod.h" } 9302871701SBen Langmuir 9402871701SBen Langmuir //--- Mod.h 9502871701SBen Langmuir 9602871701SBen Langmuir //--- tu1.c 9702871701SBen Langmuir #include "Mod.h" 9802871701SBen Langmuir 9902871701SBen Langmuir //--- tu2.c 10002871701SBen Langmuir #include "Mod.h" 10102871701SBen Langmuir 10202871701SBen Langmuir //--- tu3.c 10302871701SBen Langmuir #include "Mod.h" 104