compnerd wrote:

The patch is meant to support the following pattern (which IMO is actually the 
proper way to deal with the path canonicalisation):

```cmd
subst X: %UserProfile%\SourceCache
X:
cmake -B X:\b -G Ninja -S llvm-project\llvm
ninja -C \b
```

Everything is being built in `S:`, there is no reason that the path should be 
"canonicalised" to `%UserProfile%\SourceCache\llvm-project\llvm\...` instead of 
`X:\llvm-project` which is what you told the tools the path is.

I do not remember the details off hand, but IIRC, the symbolic link evaluation 
would implicitly traverse the substitution and give you the path of the storage 
rather than the actual disk path. Unlikely Unix, Windows does not have a single 
path tree and therefore the assumptions around paths do not hold up nearly as 
well in clang.

This isn't a higher level construction issue - the problem is the path 
representation in the internals of clang. It should be able to remember that 
the paths we are working with are based on a particular drive rather than 
trying to create a Unix-like approach of a singular path tree.

I do not know if there is an API that will let you resolve a path into a 
particular drive, but if so, that would likely be the proper tool to use here.

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

Reply via email to