1f35230aeSJan Svoboda// This test checks that we're reporting module maps affecting the compilation by describing excluded headers. 2f35230aeSJan Svoboda 3f35230aeSJan Svoboda// RUN: rm -rf %t 4f35230aeSJan Svoboda// RUN: split-file %s %t 5f35230aeSJan Svoboda 6f35230aeSJan Svoboda//--- frameworks/X.framework/Modules/module.modulemap 7f35230aeSJan Svobodaframework module X { 8f35230aeSJan Svoboda umbrella header "X.h" 9f35230aeSJan Svoboda exclude header "Excluded.h" 10f35230aeSJan Svoboda} 11f35230aeSJan Svoboda//--- frameworks/X.framework/Headers/X.h 12f35230aeSJan Svoboda//--- frameworks/X.framework/Headers/Excluded.h 13f35230aeSJan Svoboda 14f35230aeSJan Svoboda//--- mod/module.modulemap 15f35230aeSJan Svobodamodule Mod { header "Mod.h" } 16f35230aeSJan Svoboda//--- mod/Mod.h 17f35230aeSJan Svoboda#include <X/Excluded.h> 18f35230aeSJan Svoboda 19f35230aeSJan Svoboda//--- tu.m 20f35230aeSJan Svoboda@import Mod; 21f35230aeSJan Svoboda 22f35230aeSJan Svoboda//--- cdb.json.template 23f35230aeSJan Svoboda[{ 24f35230aeSJan Svoboda "file": "DIR/tu.m", 25f35230aeSJan Svoboda "directory": "DIR", 26f35230aeSJan Svoboda "command": "clang -fmodules -fmodules-cache-path=DIR/cache -I DIR/mod -F DIR/frameworks -Werror=non-modular-include-in-module -c DIR/tu.m -o DIR/tu.m" 27f35230aeSJan Svoboda}] 28f35230aeSJan Svoboda 29f35230aeSJan Svoboda// RUN: sed -e "s|DIR|%/t|g" %t/cdb.json.template > %t/cdb.json 30f35230aeSJan Svoboda// RUN: clang-scan-deps -compilation-database %t/cdb.json -format experimental-full > %t/result.json 31f35230aeSJan Svoboda// RUN: cat %t/result.json | sed 's:\\\\\?:/:g' | FileCheck %s -DPREFIX=%/t 32f35230aeSJan Svoboda 33f35230aeSJan Svoboda// CHECK: { 34f35230aeSJan Svoboda// CHECK-NEXT: "modules": [ 35f35230aeSJan Svoboda// CHECK-NEXT: { 36f35230aeSJan Svoboda// CHECK-NEXT: "clang-module-deps": [], 37f35230aeSJan Svoboda// CHECK-NEXT: "clang-modulemap-file": "[[PREFIX]]/mod/module.modulemap", 38f35230aeSJan Svoboda// CHECK-NEXT: "command-line": [ 39f35230aeSJan Svoboda// CHECK: "-fmodule-map-file=[[PREFIX]]/frameworks/X.framework/Modules/module.modulemap" 40f35230aeSJan Svoboda// CHECK-NOT: "-fmodule-file={{.*}}" 41f35230aeSJan Svoboda// CHECK: ], 42f35230aeSJan Svoboda// CHECK-NEXT: "context-hash": "{{.*}}", 43f35230aeSJan Svoboda// CHECK-NEXT: "file-deps": [ 44f35230aeSJan Svoboda// CHECK: ], 45*68eb3b20SArtem Chikin// CHECK-NEXT: "link-libraries": [], 46f35230aeSJan Svoboda// CHECK-NEXT: "name": "Mod" 47f35230aeSJan Svoboda// CHECK-NEXT: } 48f35230aeSJan Svoboda// CHECK-NEXT: ] 49f35230aeSJan Svoboda// CHECK: } 50f35230aeSJan Svoboda 51f35230aeSJan Svoboda// RUN: %deps-to-rsp %t/result.json --module-name=Mod > %t/Mod.cc1.rsp 52f35230aeSJan Svoboda// RUN: %deps-to-rsp %t/result.json --tu-index=0 > %t/tu.rsp 53f35230aeSJan Svoboda 54f35230aeSJan Svoboda// RUN: %clang @%t/Mod.cc1.rsp 55f35230aeSJan Svoboda// RUN: %clang @%t/tu.rsp 56