================
@@ -0,0 +1,181 @@
+//===- TUSummaryExtractorFrontendAction.cpp 
-------------------------------===//
+//
+// Part of the LLVM Project, under the Apache License v2.0 with LLVM 
Exceptions.
+// See https://llvm.org/LICENSE.txt for license information.
+// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
+//
+//===----------------------------------------------------------------------===//
+
+#include "clang/Analysis/Scalable/Frontend/TUSummaryExtractorFrontendAction.h"
+#include "clang/AST/ASTConsumer.h"
+#include "clang/Analysis/Scalable/Serialization/SerializationFormatRegistry.h"
+#include "clang/Analysis/Scalable/TUSummary/ExtractorRegistry.h"
+#include "clang/Analysis/Scalable/TUSummary/TUSummary.h"
+#include "clang/Analysis/Scalable/TUSummary/TUSummaryBuilder.h"
+#include "clang/Analysis/Scalable/TUSummary/TUSummaryExtractor.h"
+#include "clang/Basic/DiagnosticFrontend.h"
+#include "clang/Frontend/MultiplexConsumer.h"
----------------
steakhal wrote:

Let me try to summarise what we currently have and then the problem how I 
understand it:

The `Scalable/` directory contains a bunch of sub-directories such as `Model`, 
`Serialization`, etc. The sources within those directories are part of the 
`clangAnalysisScalable` library in the `Scalable/` directory.
However, I tried to add an exception, the `Scalable/Fontend` directory that 
would NOT be part of the `clangAnalysisScalable` library. And this is what I 
think violates some bazel rule.

While it's possible in CMake describe what I wanted (and it provably doesn't 
have any circles), it's a surprising and undesirable layout because it detaches 
the library dependency graph from the directory structure.
I did this because I wanted to avoid breaking up the `clangAnalysisScalable` 
library but I don't think there is a way around it to have a sensible library 
layering here.

I think I could fix this by erasing the `clangAnalysisScalable` and creating 
the libraries in its subdirectories instead. That way, the directories would 
nicely nest again. For example:
 - `Scalable/EntityLinker/*.cpp` -> `clangAnalysisScalableEntityLinker`
 - `Scalable/Frontend/*.cpp` -> `clangAnalysisScalableFrontend`
 - `Scalable/Model/*.cpp` -> `clangAnalysisScalableModel`
 - `Scalable/Serialization/*.cpp` -> `clangAnalysisScalableSerialization`
 - `Scalable/Support/*.cpp` -> `clangAnalysisScalableSupport`
 - `Scalable/TUSummary/*.cpp` -> `clangAnalysisScalableTUSummary`

There wouldn't be a library directly inside `Scalable/` anymore.
(I'll likely try to reduce the number of sub-directories to have fewer 
sub-libraries)

https://github.com/llvm/llvm-project/pull/185656
_______________________________________________
cfe-commits mailing list
[email protected]
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits

Reply via email to