Skip to content

Commit 23b42cf

Browse files
[CAS] Support legacy prefix map option
Bring back legacy prefix map option to allow an older swift-driver to work with newer swift-frontend. For old swift-driver, it will always send the old style prefix map option, so the new compiler needs to support that. rdar://164208526
1 parent a302d4e commit 23b42cf

File tree

3 files changed

+14
-1
lines changed

3 files changed

+14
-1
lines changed

include/swift/Option/Options.td

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2343,7 +2343,7 @@ def scanner_prefix_map_paths : MultiArg<["-"], "scanner-prefix-map-paths", 2>,
23432343
HelpText<"Remap paths reported by dependency scanner">, MetaVarName<"<prefix> <replacement>">;
23442344

23452345
def scanner_prefix_map : Separate<["-"], "scanner-prefix-map">,
2346-
Flags<[NewDriverOnlyOption]>,
2346+
Flags<[FrontendOption, NewDriverOnlyOption]>,
23472347
HelpText<"Remap paths reported by dependency scanner">, MetaVarName<"<prefix=replacement>">;
23482348

23492349
def scanner_prefix_map_sdk : Separate<["-"], "scanner-prefix-map-sdk">,

lib/Frontend/CompilerInvocation.cpp

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2519,6 +2519,12 @@ static bool ParseSearchPathArgs(SearchPathOptions &Opts, ArgList &Args,
25192519
Opts.ScannerPrefixMapper.push_back({A->getValue(0), A->getValue(1)});
25202520
}
25212521

2522+
// Handle legacy prefix map option.
2523+
for (StringRef Opt : Args.getAllArgValues(OPT_scanner_prefix_map)) {
2524+
if (auto Mapping = llvm::MappedPrefix::getFromJoined(Opt))
2525+
Opts.ScannerPrefixMapper.push_back({Mapping->Old, Mapping->New});
2526+
}
2527+
25222528
Opts.ResolvedPluginVerification |=
25232529
Args.hasArg(OPT_resolved_plugin_verification);
25242530

test/CAS/module_path_remap.swift

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -31,4 +31,11 @@
3131
// RUN: %{python} %S/Inputs/SwiftDepsExtractor.py %t/deps.json clang:F commandLine | %FileCheck %s -check-prefix CLANG-CMD
3232
// CLANG-CMD: /^src/test/ScanDependencies/Inputs/CHeaders/module.modulemap
3333

34+
/// Check the legacy option.
35+
// RUN: %target-swift-frontend -scan-dependencies -module-cache-path %t/clang-module-cache %s -o %t/deps2.json \
36+
// RUN: -I %S/../ScanDependencies/Inputs/CHeaders -I %S/../ScanDependencies/Inputs/Swift -emit-dependencies \
37+
// RUN: -import-objc-header %S/../ScanDependencies/Inputs/CHeaders/Bridging.h -swift-version 4 -cache-compile-job \
38+
// RUN: -cas-path %t/cas -scanner-prefix-map %swift_src_root=/^src -scanner-prefix-map %t=/^tmp -scanner-output-dir %t -auto-bridging-header-chaining
3439

40+
// RUN: %{python} %S/Inputs/SwiftDepsExtractor.py %t/deps2.json deps2 casFSRootID > %t/deps2.fs.casid
41+
// RUN: %cache-tool -cas-path %t/cas -cache-tool-action print-include-tree-list @%t/deps2.fs.casid | %FileCheck %s -check-prefix DEPS-FS

0 commit comments

Comments
 (0)