brintos

brintos / llvm-project-archived public Read only

0
0
Text · 9.6 KiB · 696e621 Raw
220 lines · c
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 {9  umbrella header "FW.h"10  module * { export * }11}12//--- frameworks/FW.framework/Headers/FW.h13//--- frameworks/FW.framework/Modules/module.private.modulemap14framework module FW_Private {15  umbrella header "FW_Private.h"16  module * { export * }17}18//--- frameworks/FW.framework/PrivateHeaders/FW_Private.h19#include "One.h"20//--- frameworks/FW.framework/PrivateHeaders/One.h21//--- frameworks/FW.framework/PrivateHeaders/Two.h22 23// Let's check we report the non-imported modular dependencies for a translation unit.24 25//--- from_tu.cdb.json.template26[{27  "file": "DIR/from_tu.m",28  "directory": "DIR",29  "command": "clang -fmodules -fmodules-cache-path=DIR/cache -F DIR/frameworks -c DIR/from_tu.m -o DIR/from_tu.o"30}]31//--- from_tu.m32#include "FW/FW.h"33#include "FW/Two.h"34 35// RUN: sed -e "s|DIR|%/t|g" %t/from_tu.cdb.json.template > %t/from_tu.cdb.json36// RUN: clang-scan-deps -compilation-database %t/from_tu.cdb.json -format experimental-full > %t/from_tu_result.json37// RUN: cat %t/from_tu_result.json | sed 's:\\\\\?:/:g' | FileCheck %s -DPREFIX=%/t --check-prefixes=CHECK_TU38// CHECK_TU:      {39// CHECK_TU-NEXT:   "modules": [40// CHECK_TU-NEXT:     {41// CHECK_TU-NEXT:       "clang-module-deps": [],42// CHECK_TU-NEXT:       "clang-modulemap-file": "[[PREFIX]]/frameworks/FW.framework/Modules/module.modulemap",43// CHECK_TU-NEXT:       "command-line": [44// CHECK_TU:            ],45// CHECK_TU-NEXT:       "context-hash": "{{.*}}",46// CHECK_TU-NEXT:       "file-deps": [47// CHECK_TU-NEXT:         "[[PREFIX]]/frameworks/FW.framework/Modules/module.modulemap",48// CHECK_TU-NEXT:         "[[PREFIX]]/frameworks/FW.framework/Headers/FW.h"49// CHECK_TU-NEXT:       ],50// CHECK_TU-NEXT:       "link-libraries": [51// CHECK_TU-NEXT:         {52// CHECK_TU-NEXT:           "isFramework": true,53// CHECK_TU-NEXT:           "link-name": "FW"54// CHECK_TU-NEXT:         }55// CHECK_TU-NEXT:       ],56// CHECK_TU-NEXT:       "name": "FW"57// CHECK_TU-NEXT:     },58// CHECK_TU-NEXT:     {59// CHECK_TU-NEXT:       "clang-module-deps": [],60// CHECK_TU-NEXT:       "clang-modulemap-file": "[[PREFIX]]/frameworks/FW.framework/Modules/module.private.modulemap",61// CHECK_TU-NEXT:       "command-line": [62// CHECK_TU:            ],63// CHECK_TU-NEXT:       "context-hash": "{{.*}}",64// CHECK_TU-NEXT:       "file-deps": [65// CHECK_TU-NEXT:         "[[PREFIX]]/frameworks/FW.framework/Modules/module.private.modulemap",66// CHECK_TU-NEXT:         "[[PREFIX]]/frameworks/FW.framework/PrivateHeaders/FW_Private.h",67// CHECK_TU-NEXT:         "[[PREFIX]]/frameworks/FW.framework/PrivateHeaders/One.h"68// CHECK_TU-NEXT:       ],69// CHECK_TU-NEXT:       "link-libraries": [70// CHECK_TU-NEXT:         {71// CHECK_TU-NEXT:           "isFramework": true,72// CHECK_TU-NEXT:           "link-name": "FW"73// CHECK_TU-NEXT:         }74// CHECK_TU-NEXT:       ],75// CHECK_TU-NEXT:       "name": "FW_Private"76// CHECK_TU-NEXT:     }77// CHECK_TU-NEXT:   ],78// CHECK_TU-NEXT:   "translation-units": [79// CHECK_TU-NEXT:     {80// CHECK_TU:            "clang-context-hash": "{{.*}}",81// CHECK_TU-NEXT:       "clang-module-deps": [82// CHECK_TU-NEXT:         {83// CHECK_TU-NEXT:           "context-hash": "{{.*}}",84// CHECK_TU-NEXT:           "module-name": "FW"85// CHECK_TU-NEXT:         },86// CHECK_TU-NEXT:         {87// CHECK_TU-NEXT:           "context-hash": "{{.*}}",88// CHECK_TU-NEXT:           "module-name": "FW_Private"89// CHECK_TU-NEXT:         }90// CHECK_TU-NEXT:       ],91// CHECK_TU-NEXT:       "command-line": [92// CHECK_TU:              "-fmodule-file={{.*}}/FW-{{.*}}.pcm"93// CHECK_TU:              "-fmodule-file={{.*}}/FW_Private-{{.*}}.pcm"94// CHECK_TU:            ],95// CHECK_TU:            "file-deps": [96// CHECK_TU-NEXT:         "[[PREFIX]]/from_tu.m",97// CHECK_TU-NEXT:         "[[PREFIX]]/frameworks/FW.framework/PrivateHeaders/Two.h"98// CHECK_TU-NEXT:       ],99// CHECK_TU-NEXT:       "input-file": "[[PREFIX]]/from_tu.m"100// CHECK_TU-NEXT:     }101 102// RUN: %deps-to-rsp %t/from_tu_result.json --module-name=FW > %t/FW.cc1.rsp103// RUN: %deps-to-rsp %t/from_tu_result.json --module-name=FW_Private > %t/FW_Private.cc1.rsp104// RUN: %deps-to-rsp %t/from_tu_result.json --tu-index=0 > %t/tu.rsp105// RUN: %clang @%t/FW.cc1.rsp106// RUN: %clang @%t/FW_Private.cc1.rsp107// RUN: %clang @%t/tu.rsp108 109// Now let's check we report the dependencies for modules as well.110 111//--- from_module.cdb.json.template112[{113  "file": "DIR/from_module.m",114  "directory": "DIR",115  "command": "clang -fmodules -fmodules-cache-path=DIR/cache -F DIR/frameworks -c DIR/from_module.m -o DIR/from_module.o"116}]117//--- module.modulemap118module Mod { header "Mod.h" }119//--- Mod.h120#include "FW/FW.h"121#include "FW/Two.h"122//--- from_module.m123#include "Mod.h"124 125// RUN: sed -e "s|DIR|%/t|g" %t/from_module.cdb.json.template > %t/from_module.cdb.json126// RUN: clang-scan-deps -compilation-database %t/from_module.cdb.json -format experimental-full > %t/from_module_result.json127// RUN: cat %t/from_module_result.json | sed 's:\\\\\?:/:g' | FileCheck %s -DPREFIX=%/t --check-prefixes=CHECK_MODULE128// CHECK_MODULE:      {129// CHECK_MODULE-NEXT:   "modules": [130// CHECK_MODULE-NEXT:     {131// CHECK_MODULE-NEXT:       "clang-module-deps": [],132// CHECK_MODULE-NEXT:       "clang-modulemap-file": "[[PREFIX]]/frameworks/FW.framework/Modules/module.modulemap",133// CHECK_MODULE-NEXT:       "command-line": [134// CHECK_MODULE:            ],135// CHECK_MODULE-NEXT:       "context-hash": "{{.*}}",136// CHECK_MODULE-NEXT:       "file-deps": [137// CHECK_MODULE-NEXT:         "[[PREFIX]]/frameworks/FW.framework/Modules/module.modulemap",138// CHECK_MODULE-NEXT:         "[[PREFIX]]/frameworks/FW.framework/Headers/FW.h"139// CHECK_MODULE-NEXT:       ],140// CHECK_MODULE-NEXT:       "link-libraries": [141// CHECK_MODULE-NEXT:         {142// CHECK_MODULE-NEXT:           "isFramework": true,143// CHECK_MODULE-NEXT:           "link-name": "FW"144// CHECK_MODULE-NEXT:         }145// CHECK_MODULE-NEXT:       ],146// CHECK_MODULE-NEXT:       "name": "FW"147// CHECK_MODULE-NEXT:     },148// CHECK_MODULE-NEXT:     {149// CHECK_MODULE-NEXT:       "clang-module-deps": [],150// CHECK_MODULE-NEXT:       "clang-modulemap-file": "[[PREFIX]]/frameworks/FW.framework/Modules/module.private.modulemap",151// CHECK_MODULE-NEXT:       "command-line": [152// CHECK_MODULE:            ],153// CHECK_MODULE-NEXT:       "context-hash": "{{.*}}",154// CHECK_MODULE-NEXT:       "file-deps": [155// CHECK_MODULE-NEXT:         "[[PREFIX]]/frameworks/FW.framework/Modules/module.private.modulemap",156// CHECK_MODULE-NEXT:         "[[PREFIX]]/frameworks/FW.framework/PrivateHeaders/FW_Private.h",157// CHECK_MODULE-NEXT:         "[[PREFIX]]/frameworks/FW.framework/PrivateHeaders/One.h"158// CHECK_MODULE-NEXT:       ],159// CHECK_MODULE-NEXT:       "link-libraries": [160// CHECK_MODULE-NEXT:         {161// CHECK_MODULE-NEXT:           "isFramework": true,162// CHECK_MODULE-NEXT:           "link-name": "FW"163// CHECK_MODULE-NEXT:         }164// CHECK_MODULE-NEXT:       ],165// CHECK_MODULE-NEXT:       "name": "FW_Private"166// CHECK_MODULE-NEXT:     },167// CHECK_MODULE-NEXT:     {168// CHECK_MODULE-NEXT:       "clang-module-deps": [169// CHECK_MODULE-NEXT:         {170// CHECK_MODULE-NEXT:           "context-hash": "{{.*}}",171// CHECK_MODULE-NEXT:           "module-name": "FW"172// CHECK_MODULE-NEXT:         },173// CHECK_MODULE-NEXT:         {174// CHECK_MODULE-NEXT:           "context-hash": "{{.*}}",175// CHECK_MODULE-NEXT:           "module-name": "FW_Private"176// CHECK_MODULE-NEXT:         }177// CHECK_MODULE-NEXT:       ],178// CHECK_MODULE-NEXT:       "clang-modulemap-file": "[[PREFIX]]/module.modulemap",179// CHECK_MODULE-NEXT:       "command-line": [180// CHECK_MODULE:              "-fmodule-file={{.*}}/FW-{{.*}}.pcm"181// CHECK_MODULE:              "-fmodule-file={{.*}}/FW_Private-{{.*}}.pcm"182// CHECK_MODULE:            ],183// CHECK_MODULE-NEXT:       "context-hash": "{{.*}}",184// CHECK_MODULE-NEXT:       "file-deps": [185// CHECK_MODULE-NEXT:         "[[PREFIX]]/module.modulemap"186// CHECK_MODULE-NEXT:         "[[PREFIX]]/Mod.h",187// CHECK_MODULE-NEXT:         "[[PREFIX]]/frameworks/FW.framework/Modules/module.modulemap",188// CHECK_MODULE-NEXT:         "[[PREFIX]]/frameworks/FW.framework/Modules/module.private.modulemap",189// CHECK_MODULE-NEXT:         "[[PREFIX]]/frameworks/FW.framework/PrivateHeaders/Two.h"190// CHECK_MODULE-NEXT:       ],191// CHECK_MODULE-NEXT:       "link-libraries": [],192// CHECK_MODULE-NEXT:       "name": "Mod"193// CHECK_MODULE-NEXT:     }194// CHECK_MODULE-NEXT:   ],195// CHECK_MODULE-NEXT:   "translation-units": [196// CHECK_MODULE-NEXT:     {197// CHECK_MODULE:            "clang-context-hash": "{{.*}}",198// CHECK_MODULE-NEXT:       "clang-module-deps": [199// CHECK_MODULE-NEXT:         {200// CHECK_MODULE-NEXT:           "context-hash": "{{.*}}",201// CHECK_MODULE-NEXT:           "module-name": "Mod"202// CHECK_MODULE-NEXT:         }203// CHECK_MODULE-NEXT:       ],204// CHECK_MODULE-NEXT:       "command-line": [205// CHECK_MODULE:            ],206// CHECK_MODULE:            "file-deps": [207// CHECK_MODULE-NEXT:         "[[PREFIX]]/from_module.m"208// CHECK_MODULE-NEXT:       ],209// CHECK_MODULE-NEXT:       "input-file": "[[PREFIX]]/from_module.m"210// CHECK_MODULE-NEXT:     }211 212// RUN: %deps-to-rsp %t/from_module_result.json --module-name=FW > %t/FW.cc1.rsp213// RUN: %deps-to-rsp %t/from_module_result.json --module-name=FW_Private > %t/FW_Private.cc1.rsp214// RUN: %deps-to-rsp %t/from_module_result.json --module-name=Mod > %t/Mod.cc1.rsp215// RUN: %deps-to-rsp %t/from_module_result.json --tu-index=0 > %t/tu.rsp216// RUN: %clang @%t/FW.cc1.rsp217// RUN: %clang @%t/FW_Private.cc1.rsp218// RUN: %clang @%t/Mod.cc1.rsp219// RUN: %clang @%t/tu.rsp220