94 lines · plain
1// This test checks that modules loaded during compilation (but not imported)2// are still reported as dependencies.3 4// RUN: rm -rf %t && mkdir %t5// RUN: split-file %s %t6 7//--- frameworks/FW.framework/Modules/module.modulemap8framework module FW { umbrella header "FW.h" }9//--- frameworks/FW.framework/Headers/FW.h10//--- frameworks/FW.framework/Modules/module.private.modulemap11framework module FW_Private { umbrella header "FW_Private.h" }12//--- frameworks/FW.framework/PrivateHeaders/FW_Private.h13 14//--- cdb.json.template15[{16 "file": "DIR/tu.m",17 "directory": "DIR",18 "command": "clang -fmodules -fmodules-cache-path=DIR/cache -F DIR/frameworks -c DIR/tu.m -o DIR/tu.o"19}]20//--- tu.m21@import FW.Private;22 23// RUN: sed -e "s|DIR|%/t|g" %t/cdb.json.template > %t/cdb.json24// RUN: clang-scan-deps -compilation-database %t/cdb.json -format experimental-full > %t/result.json25// RUN: cat %t/result.json | sed 's:\\\\\?:/:g' | FileCheck %s -DPREFIX=%/t26// CHECK: {27// CHECK-NEXT: "modules": [28// CHECK-NEXT: {29// CHECK: "clang-module-deps": [],30// CHECK-NEXT: "clang-modulemap-file": "[[PREFIX]]/frameworks/FW.framework/Modules/module.modulemap",31// CHECK-NEXT: "command-line": [32// CHECK: ],33// CHECK-NEXT: "context-hash": "{{.*}}",34// CHECK: "file-deps": [35// CHECK-NEXT: "[[PREFIX]]/frameworks/FW.framework/Modules/module.modulemap",36// CHECK-NEXT: "[[PREFIX]]/frameworks/FW.framework/Headers/FW.h"37// CHECK-NEXT: ],38// CHECK-NEXT: "link-libraries": [39// CHECK-NEXT: {40// CHECK-NEXT: "isFramework": true,41// CHECK-NEXT: "link-name": "FW"42// CHECK-NEXT: }43// CHECK-NEXT: ],44// CHECK-NEXT: "name": "FW"45// CHECK: },46// CHECK: {47// CHECK: "clang-module-deps": [],48// CHECK-NEXT: "clang-modulemap-file": "[[PREFIX]]/frameworks/FW.framework/Modules/module.private.modulemap",49// CHECK-NEXT: "command-line": [50// CHECK: ],51// CHECK-NEXT: "context-hash": "{{.*}}",52// CHECK: "file-deps": [53// CHECK-NEXT: "[[PREFIX]]/frameworks/FW.framework/Modules/module.private.modulemap",54// CHECK-NEXT: "[[PREFIX]]/frameworks/FW.framework/PrivateHeaders/FW_Private.h"55// CHECK-NEXT: ],56// CHECK-NEXT: "link-libraries": [57// CHECK-NEXT: {58// CHECK-NEXT: "isFramework": true,59// CHECK-NEXT: "link-name": "FW"60// CHECK-NEXT: }61// CHECK-NEXT: ],62// CHECK-NEXT: "name": "FW_Private"63// CHECK: }64// CHECK: ],65// CHECK-NEXT: "translation-units": [66// CHECK-NEXT: {67// CHECK: "clang-context-hash": "{{.*}}",68// CHECK-NEXT: "clang-module-deps": [69// CHECK-NEXT: {70// CHECK-NEXT: "context-hash": "{{.*}}",71// CHECK-NEXT: "module-name": "FW"72// CHECK-NEXT: },73// CHECK-NEXT: {74// CHECK-NEXT: "context-hash": "{{.*}}",75// CHECK-NEXT: "module-name": "FW_Private"76// CHECK-NEXT: }77// CHECK-NEXT: ],78// CHECK-NEXT: "command-line": [79// CHECK: "-fmodule-file={{.*}}/FW-{{.*}}.pcm"80// CHECK: "-fmodule-file={{.*}}/FW_Private-{{.*}}.pcm"81// CHECK: ],82// CHECK: "file-deps": [83// CHECK-NEXT: "[[PREFIX]]/tu.m"84// CHECK-NEXT: ],85// CHECK-NEXT: "input-file": "[[PREFIX]]/tu.m"86// CHECK-NEXT: }87 88// RUN: %deps-to-rsp %t/result.json --module-name=FW > %t/FW.cc1.rsp89// RUN: %deps-to-rsp %t/result.json --module-name=FW_Private > %t/FW_Private.cc1.rsp90// RUN: %deps-to-rsp %t/result.json --tu-index=0 > %t/tu.rsp91// RUN: %clang @%t/FW.cc1.rsp92// RUN: %clang @%t/FW_Private.cc1.rsp93// RUN: %clang @%t/tu.rsp94