Files
swift-mirror/test/ScanDependencies/clang_module_output_symlink.swift
Ben Langmuir 576cc8cee1 [Caching] Use clang to prefix-map -fmodule-file-cache-key paths
When prefix mapping paths that are used in clang, ensure we are
consistently using the same prefix mapper from clang. This prevents
mismatches that could cause modules to fail to load.

rdar://123324072
2024-02-28 13:44:28 -08:00

40 lines
1.5 KiB
Swift

// Test that after compiling a module to a path containing a symlink we still
// get the same scanner output.
// REQUIRES: OS=macosx
// RUN: %empty-directory(%t)
// RUN: split-file %s %t
// RUN: mkdir %t/module-outputs
// RUN: ln -s module-outputs %t/symlink
// RUN: %target-swift-frontend -scan-dependencies %t/a.swift -o %t/deps.json -module-name A -emit-dependencies -emit-dependencies-path %t/deps.d -disable-implicit-concurrency-module-import -disable-implicit-string-processing-module-import -I %t -module-cache-path %t/symlink -verify -cache-compile-job -cas-path %t/cas
// Check the contents of the JSON output
// RUN: %validate-json %t/deps.json | %FileCheck %s
// CHECK: "-fmodule-file=C=[[PCM_PATH:.*symlink.*C-.*.pcm]]"
// CHECK: "-fmodule-file-cache-key"
// CHECK-NEXT: "-Xcc"
// CHECK-NEXT: "[[PCM_PATH]]"
// CHECK-NEXT: "-Xcc"
// CHECK-NEXT: "llvmcas://
// Emit one of the modules, which will be in the symlinked path.
// RUN: %{python} %S/../CAS/Inputs/BuildCommandExtractor.py %t/deps.json clang:C > %t/C.cmd
// RUN: %swift_frontend_plain @%t/C.cmd
// RUN: %target-swift-frontend -scan-dependencies %t/a.swift -o %t/deps2.json -module-name A -emit-dependencies -emit-dependencies-path %t/deps.d -disable-implicit-concurrency-module-import -disable-implicit-string-processing-module-import -I %t -module-cache-path %t/symlink -verify -cache-compile-job -cas-path %t/cas
// RUN: diff -u %t/deps.json %t/deps2.json
//--- module.modulemap
module B { header "B.h" }
module C { header "C.h" }
//--- B.h
#include "C.h"
//--- C.h
//--- a.swift
import B