[clang] [clang][deps] Support single-file mode for all formats (PR #88764)
Jan Svoboda via cfe-commits
cfe-commits at lists.llvm.org
Mon Apr 15 11:13:34 PDT 2024
================
@@ -694,38 +687,28 @@ static std::string getModuleCachePath(ArrayRef<std::string> Args) {
return std::string(Path);
}
-// getCompilationDataBase - If -compilation-database is set, load the
-// compilation database from the specified file. Otherwise if the we're
-// generating P1689 format, trying to generate the compilation database
-// form specified command line after the positional parameter "--".
+/// Attempts to construct the compilation database from '-compilation-database'
+/// or from the arguments following the positional '--'.
static std::unique_ptr<tooling::CompilationDatabase>
-getCompilationDataBase(int argc, char **argv, std::string &ErrorMessage) {
+getCompilationDatabase(int argc, char **argv, std::string &ErrorMessage) {
ParseArgs(argc, argv);
+ if (!(CommandLine.empty() ^ CompilationDB.empty())) {
+ llvm::errs() << "The compilation command line must be provided either via "
+ "'-compilation-database' or after '--'.";
+ return nullptr;
+ }
+
if (!CompilationDB.empty())
return tooling::JSONCompilationDatabase::loadFromFile(
CompilationDB, ErrorMessage,
tooling::JSONCommandLineSyntax::AutoDetect);
- if (Format != ScanningOutputFormat::P1689) {
- llvm::errs() << "the --compilation-database option: must be specified at "
- "least once!";
- return nullptr;
- }
-
- // Trying to get the input file, the output file and the command line options
- // from the positional parameter "--".
- char **DoubleDash = std::find(argv, argv + argc, StringRef("--"));
- if (DoubleDash == argv + argc) {
- llvm::errs() << "The command line arguments is required after '--' in "
- "P1689 per file mode.";
- return nullptr;
- }
-
llvm::IntrusiveRefCntPtr<DiagnosticsEngine> Diags =
CompilerInstance::createDiagnostics(new DiagnosticOptions);
driver::Driver TheDriver(CommandLine[0], llvm::sys::getDefaultTargetTriple(),
*Diags);
+ TheDriver.setCheckInputsExist(false);
----------------
jansvoboda11 wrote:
This is here because some tests rely on the fact that we fail later and print a specific error message if the main input file doesn't exist.
https://github.com/llvm/llvm-project/pull/88764
More information about the cfe-commits
mailing list