[Frontend] Split -working-directory<path>

Clang no longer supports `-working-directory<path>`. Split this argument
into `-working-directory <path>` so that clients passing the old
argument still work.
This commit is contained in:
Ben Barham
2023-01-31 16:17:11 -08:00
parent 8e79233edd
commit b5caa97b6b
2 changed files with 14 additions and 1 deletions

View File

@@ -1247,6 +1247,16 @@ static bool ParseClangImporterArgs(ClangImporterOptions &Opts,
Opts.IndexStorePath = A->getValue();
for (const Arg *A : Args.filtered(OPT_Xcc)) {
StringRef clangArg = A->getValue();
if (clangArg.consume_front("-working-directory")) {
if (!clangArg.empty() && clangArg.front() != '=') {
// Have an old -working-directory<path> argument. Convert it into
// two separate arguments as Clang no longer supports that format.
Opts.ExtraArgs.push_back("-working-directory");
Opts.ExtraArgs.push_back(clangArg.str());
continue;
}
}
Opts.ExtraArgs.push_back(A->getValue());
}

View File

@@ -5,6 +5,9 @@
// RUN: %target-swift-frontend(mock-sdk: %clang-importer-sdk) -typecheck -Xcc -I -Xcc %S/Inputs/custom-modules -module-cache-path %t/mcp %s
// RUN: find %t/mcp -name "ObjCParseExtras-*.pcm" | count 1
// Check that the old working directory argument is mapped to the new format
// RUN: %target-swift-frontend(mock-sdk: %clang-importer-sdk) -typecheck -Xcc -I -Xcc custom-modules %s -dump-clang-diagnostics -module-cache-path %t/mcp -Xcc -working-directory%S/Inputs 2>&1 | %FileCheck %s
// Check that the working directory is set to the CWD if not explicitly passed
// RUN: cd %S/Inputs/ && %target-swift-frontend(mock-sdk: %clang-importer-sdk) -typecheck -Xcc -I -Xcc custom-modules %s -dump-clang-diagnostics -module-cache-path %t/mcp 2>&1 | %FileCheck %s
@@ -15,4 +18,4 @@ import ObjCParseExtras
print(SomeImageName)
// CHECK: clang
// CHECK: '-working-directory' '{{[^"]+}}/Inputs'
// CHECK: '-working-directory' 'SOURCE_DIR/test/ClangImporter/Inputs'