Meinersbur wrote:

@AaronBallman Thanks for having a look.

> With this patch, I get errors when loading a visual studio solution generated 
> with these change, and all of clang's libraries are placed at the top level. 
> The error is a dialog box saying "The solution already contains an item named 
> 'clang'."

I got similar errors with "Unittest" and "UnitTest". I only solved it by using 
"Unit". I am assuming this is because there is something else already with that 
name but inconsistent case. I never for this for "Clang"/"clang", but it could 
be when not all patches from the series are applied. Specifically I think 
clang-tools-extra may use "Clang"/"clang".

> Another thing (that is existing behavior) worth noting is that at some point, 
> we lost the ability to browse directly to files in Visual Studio. Instead of 
> going to `Clang Libraries->clangDriver->Source Files->ToolChain.cpp`, you 
> have to go to `Object Libraries->obj.clangDriver->Source 
> Files->ToolChain.cpp` which is pretty strange. Your patch doesn't change 
> this, but if we're correcting folder structure behavior, we should probably 
> address that at the same time if we can.

This is how CMake handles object libraries. There is one target 
`obj.clangDriver` that builds all the *.obj file, and a library that is not 
used. The target `clangDriver` then has a dependency on `obj.clangDriver` and 
has its *.obj files added, but not the source files. This is to be able to link 
a static library (`clangDriver_static`) and a dynamic library (`clangDriver`) 
at the [same 
time](https://github.com/llvm/llvm-project/blob/ca1bd5995f6ed934f9187305190a5abfac049173/llvm/cmake/modules/AddLLVM.cmake#L593)
 but compiling the source files just once. I don't know the reason, but in 
contrast to other subprojects Clang uses this build mode [even when building 
just one 
library](https://github.com/llvm/llvm-project/blob/ca1bd5995f6ed934f9187305190a5abfac049173/clang/cmake/modules/AddClang.cmake#L102).
 

There is an exception for XCode, and we could do the same for MSVC (or add the 
source files as `ADDITIONAL_HEADERS` to make them show up). However, for this 
patch series I did not intent to change anything about how the build system 
works.

https://github.com/llvm/llvm-project/pull/89743
_______________________________________________
llvm-branch-commits mailing list
llvm-branch-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-branch-commits

Reply via email to