diff options
author | Daniel Grumberg <dgrumberg@apple.com> | 2024-04-02 15:03:46 +0100 |
---|---|---|
committer | GitHub <noreply@github.com> | 2024-04-02 15:03:46 +0100 |
commit | b31414bf4f9898f7817a9fcf8a91f62ec26f3eaf (patch) | |
tree | 216aa40d3f259da8c811839cd5e89f5616c6813b /clang/lib/FrontendTool/ExecuteCompilerInvocation.cpp | |
parent | e03f16f9fdfcb36ed05842f43f542107a0d46288 (diff) | |
download | llvm-b31414bf4f9898f7817a9fcf8a91f62ec26f3eaf.zip llvm-b31414bf4f9898f7817a9fcf8a91f62ec26f3eaf.tar.gz llvm-b31414bf4f9898f7817a9fcf8a91f62ec26f3eaf.tar.bz2 |
[clang][ExtractAPI] Add ability to create multiple symbol graphs (#86676)
This extends ExtractAPI to take into account symbols defined in categories to types defined in an external module.
This introduces 2 new command line flags, `--symbol-graph-dir=DIR` and `--emit-extension-symbol-graphs`, when used together this generates additional symbol graph files at `DIR/ExtendedModule@ProductName.symbols.json` for each external module that is extended in this way.
Additionally this makes some cleanups to tests to make them more resilient and cleans up the `APISet` data structure.
Diffstat (limited to 'clang/lib/FrontendTool/ExecuteCompilerInvocation.cpp')
-rw-r--r-- | clang/lib/FrontendTool/ExecuteCompilerInvocation.cpp | 10 |
1 files changed, 7 insertions, 3 deletions
diff --git a/clang/lib/FrontendTool/ExecuteCompilerInvocation.cpp b/clang/lib/FrontendTool/ExecuteCompilerInvocation.cpp index 2446aee..f85f036 100644 --- a/clang/lib/FrontendTool/ExecuteCompilerInvocation.cpp +++ b/clang/lib/FrontendTool/ExecuteCompilerInvocation.cpp @@ -181,9 +181,13 @@ CreateFrontendAction(CompilerInstance &CI) { #endif // Wrap the base FE action in an extract api action to generate - // symbol graph as a biproduct of compilation ( enabled with - // --emit-symbol-graph option ) - if (!FEOpts.SymbolGraphOutputDir.empty()) { + // symbol graph as a biproduct of compilation (enabled with + // --emit-symbol-graph option) + if (FEOpts.EmitSymbolGraph) { + if (FEOpts.SymbolGraphOutputDir.empty()) { + CI.getDiagnostics().Report(diag::warn_missing_symbol_graph_dir); + CI.getFrontendOpts().SymbolGraphOutputDir = "."; + } CI.getCodeGenOpts().ClearASTBeforeBackend = false; Act = std::make_unique<WrappingExtractAPIAction>(std::move(Act)); } |