brintos

brintos / llvm-project-archived public Read only

0
0
Text · 4.4 KiB · 19f9159 Raw
103 lines · c
1// This test exercises the different ways explicit modular dependencies are2// provided on the command-line.3 4// RUN: rm -rf %t5// RUN: split-file %s %t6 7//--- cdb.json.template8[{9  "file": "DIR/tu.c",10  "directory": "DIR",11  "command": "clang DIR/tu.c -fmodules -fmodules-cache-path=DIR/cache -o DIR/tu.o"12}]13 14//--- module.modulemap15module Transitive { header "transitive.h" }16module Direct { header "direct.h" }17//--- transitive.h18//--- direct.h19#include "transitive.h"20//--- tu.c21#include "direct.h"22 23// RUN: sed -e "s|DIR|%/t|g" %t/cdb.json.template > %t/cdb.json24 25// Check that the PCM path defaults to the modules cache from implicit build.26// RUN: clang-scan-deps -compilation-database %t/cdb.json -format experimental-full > %t/result_cache.json27// RUN: cat %t/result_cache.json  | sed 's:\\\\\?:/:g' | FileCheck %s -DPREFIX=%/t --check-prefixes=CHECK,CHECK_CACHE28 29// Check that the PCM path can be customized.30// RUN: clang-scan-deps -compilation-database %t/cdb.json -format experimental-full -module-files-dir %t/build > %t/result_build.json31// RUN: cat %t/result_build.json | sed 's:\\\\\?:/:g' | FileCheck %s -DPREFIX=%/t --check-prefixes=CHECK,CHECK_BUILD32 33// Check that the PCM file is loaded lazily by default.34// RUN: clang-scan-deps -compilation-database %t/cdb.json -format experimental-full > %t/result_lazy.json35// RUN: cat %t/result_lazy.json | sed 's:\\\\\?:/:g' | FileCheck %s -DPREFIX=%/t --check-prefixes=CHECK,CHECK_LAZY36 37// Check that the PCM file can be loaded eagerly.38// RUN: clang-scan-deps -compilation-database %t/cdb.json -format experimental-full -eager-load-pcm > %t/result_eager.json39// RUN: cat %t/result_eager.json | sed 's:\\\\\?:/:g' | FileCheck %s -DPREFIX=%/t --check-prefixes=CHECK,CHECK_EAGER40 41// CHECK:      {42// CHECK-NEXT:   "modules": [43// CHECK-NEXT:     {44// CHECK-NEXT:       "clang-module-deps": [45// CHECK-NEXT:         {46// CHECK-NEXT:           "context-hash": "{{.*}}",47// CHECK-NEXT:           "module-name": "Transitive"48// CHECK-NEXT:         }49// CHECK-NEXT:       ],50// CHECK-NEXT:       "clang-modulemap-file": "[[PREFIX]]/module.modulemap",51// CHECK-NEXT:       "command-line": [52// CHECK_CACHE:        "-fmodule-file={{.*}}/cache/{{.*}}/Transitive-{{.*}}.pcm"53// CHECK_BUILD:        "-fmodule-file={{.*}}/build/{{.*}}/Transitive-{{.*}}.pcm"54// CHECK_LAZY:         "-fmodule-map-file=[[PREFIX]]/module.modulemap"55// CHECK_LAZY:         "-fmodule-file=Transitive=[[PREFIX]]/{{.*}}/Transitive-{{.*}}.pcm"56// CHECK_EAGER-NOT:    "-fmodule-map-file={{.*}}"57// CHECK_EAGER:        "-fmodule-file=[[PREFIX]]/{{.*}}/Transitive-{{.*}}.pcm"58// CHECK:            ],59// CHECK-NEXT:       "context-hash": "{{.*}}",60// CHECK-NEXT:       "file-deps": [61// CHECK-NEXT:         "[[PREFIX]]/module.modulemap",62// CHECK-NEXT:         "[[PREFIX]]/direct.h"63// CHECK-NEXT:       ],64// CHECK-NEXT:       "link-libraries": [],65// CHECK-NEXT:       "name": "Direct"66// CHECK-NEXT:     },67// CHECK-NEXT:     {68// CHECK-NEXT:       "clang-module-deps": [],69// CHECK-NEXT:       "clang-modulemap-file": "[[PREFIX]]/module.modulemap",70// CHECK-NEXT:       "command-line": [71// CHECK:            ],72// CHECK-NEXT:       "context-hash": "{{.*}}",73// CHECK-NEXT:       "file-deps": [74// CHECK-NEXT:         "[[PREFIX]]/module.modulemap",75// CHECK-NEXT:         "[[PREFIX]]/transitive.h"76// CHECK-NEXT:       ],77// CHECK-NEXT:       "link-libraries": [],78// CHECK-NEXT:       "name": "Transitive"79// CHECK-NEXT:     }80// CHECK-NEXT:   ],81// CHECK-NEXT:   "translation-units": [82// CHECK-NEXT:     {83// CHECK:            "clang-context-hash": "{{.*}}",84// CHECK-NEXT:       "clang-module-deps": [85// CHECK-NEXT:         {86// CHECK-NEXT:           "context-hash": "{{.*}}",87// CHECK-NEXT:           "module-name": "Direct"88// CHECK-NEXT:         }89// CHECK-NEXT:       ],90// CHECK-NEXT:       "command-line": [91// CHECK_CACHE:        "-fmodule-file={{.*}}/cache/{{.*}}/Direct-{{.*}}.pcm"92// CHECK_BUILD:        "-fmodule-file={{.*}}/build/{{.*}}/Direct-{{.*}}.pcm"93// CHECK_LAZY:         "-fmodule-map-file=[[PREFIX]]/module.modulemap"94// CHECK_LAZY:         "-fmodule-file=Direct=[[PREFIX]]/{{.*}}/Direct-{{.*}}.pcm"95// CHECK_EAGER-NOT:    "-fmodule-map-file={{.*}}"96// CHECK_EAGER:        "-fmodule-file=[[PREFIX]]/{{.*}}/Direct-{{.*}}.pcm"97// CHECK:            ],98// CHECK:            "file-deps": [99// CHECK-NEXT:         "[[PREFIX]]/tu.c"100// CHECK-NEXT:       ],101// CHECK-NEXT:       "input-file": "[[PREFIX]]/tu.c"102// CHECK-NEXT:     }103