[clang] [clang][driver] Add \<executable\>/../include/c++/v1 to include path on Darwin (PR #70817)
Liviu Ionescu via cfe-commits
cfe-commits at lists.llvm.org
Wed Nov 1 17:10:01 PDT 2023
ilg-ul wrote:
> for your use case, can you stick symlinks in to preserve that toolchain folder structure relative to the ~/tmp/clang++ symlink? i.e. make that ~/tmp/bin/clang++ -> /Users/ilg/Library/xPacks/@xpack-dev-tools/clang/15.0.7-3.1/.content/bin/clang-15 and add ~/tmp/lib -> /Users/ilg/Library/xPacks/@xpack-dev-tools/clang/15.0.7-3.1/.content/lib (and same for include).
I'm not sure I understand your proposal, but I'm afraid changing the structure of the symlinks is not possible, it is done automatically by a tool.
The example above was just to demonstrate the bug.
In the actual use case, which is inspired by the npm use case, in the project there is a folder `xpacks` with symlinks to all dependent binaries, with dual indirections, something like this:
```
ilg at wksi native-cmake-clang13-debug % ls -lAR xpacks
total 0
drwxr-xr-x 61 ilg staff 1952 Oct 31 14:42 .bin
drwxr-xr-x 3 ilg staff 96 Oct 31 14:42 @micro-os-plus
drwxr-xr-x 3 ilg staff 96 Oct 31 14:42 @xpack-dev-tools
xpacks/.bin:
total 0
lrwxr-xr-x 1 ilg staff 44 Oct 31 14:42 clang -> ../@xpack-dev-tools/clang/.content/bin/clang
lrwxr-xr-x 1 ilg staff 46 Oct 31 14:42 clang++ -> ../@xpack-dev-tools/clang/.content/bin/clang++
lrwxr-xr-x 1 ilg staff 50 Oct 31 14:42 clang-check -> ../@xpack-dev-tools/clang/.content/bin/clang-check
lrwxr-xr-x 1 ilg staff 47 Oct 31 14:42 clang-cl -> ../@xpack-dev-tools/clang/.content/bin/clang-cl
lrwxr-xr-x 1 ilg staff 48 Oct 31 14:42 clang-cpp -> ../@xpack-dev-tools/clang/.content/bin/clang-cpp
lrwxr-xr-x 1 ilg staff 48 Oct 31 14:42 clang-doc -> ../@xpack-dev-tools/clang/.content/bin/clang-doc
lrwxr-xr-x 1 ilg staff 51 Oct 31 14:42 clang-format -> ../@xpack-dev-tools/clang/.content/bin/clang-format
lrwxr-xr-x 1 ilg staff 60 Oct 31 14:42 clang-offload-bundler -> ../@xpack-dev-tools/clang/.content/bin/clang-offload-bundler
lrwxr-xr-x 1 ilg staff 60 Oct 31 14:42 clang-offload-wrapper -> ../@xpack-dev-tools/clang/.content/bin/clang-offload-wrapper
lrwxr-xr-x 1 ilg staff 53 Oct 31 14:42 clang-refactor -> ../@xpack-dev-tools/clang/.content/bin/clang-refactor
lrwxr-xr-x 1 ilg staff 51 Oct 31 14:42 clang-rename -> ../@xpack-dev-tools/clang/.content/bin/clang-rename
lrwxr-xr-x 1 ilg staff 54 Oct 31 14:42 clang-scan-deps -> ../@xpack-dev-tools/clang/.content/bin/clang-scan-deps
lrwxr-xr-x 1 ilg staff 49 Oct 31 14:42 clang-tidy -> ../@xpack-dev-tools/clang/.content/bin/clang-tidy
lrwxr-xr-x 1 ilg staff 45 Oct 31 14:42 clangd -> ../@xpack-dev-tools/clang/.content/bin/clangd
lrwxr-xr-x 1 ilg staff 61 Oct 31 14:42 clangd-xpc-test-client -> ../@xpack-dev-tools/clang/.content/bin/clangd-xpc-test-client
lrwxr-xr-x 1 ilg staff 51 Oct 31 14:42 darwin-debug -> ../@xpack-dev-tools/clang/.content/bin/darwin-debug
lrwxr-xr-x 1 ilg staff 47 Oct 31 14:42 diagtool -> ../@xpack-dev-tools/clang/.content/bin/diagtool
lrwxr-xr-x 1 ilg staff 55 Oct 31 14:42 git-clang-format -> ../@xpack-dev-tools/clang/.content/bin/git-clang-format
lrwxr-xr-x 1 ilg staff 47 Oct 31 14:42 hmaptool -> ../@xpack-dev-tools/clang/.content/bin/hmaptool
lrwxr-xr-x 1 ilg staff 45 Oct 31 14:42 ld.lld -> ../@xpack-dev-tools/clang/.content/bin/ld.lld
lrwxr-xr-x 1 ilg staff 47 Oct 31 14:42 ld64.lld -> ../@xpack-dev-tools/clang/.content/bin/ld64.lld
lrwxr-xr-x 1 ilg staff 57 Oct 31 14:42 ld64.lld.darwinnew -> ../@xpack-dev-tools/clang/.content/bin/ld64.lld.darwinnew
lrwxr-xr-x 1 ilg staff 42 Oct 31 14:42 lld -> ../@xpack-dev-tools/clang/.content/bin/lld
lrwxr-xr-x 1 ilg staff 47 Oct 31 14:42 lld-link -> ../@xpack-dev-tools/clang/.content/bin/lld-link
lrwxr-xr-x 1 ilg staff 43 Oct 31 14:42 lldb -> ../@xpack-dev-tools/clang/.content/bin/lldb
lrwxr-xr-x 1 ilg staff 53 Oct 31 14:42 lldb-argdumper -> ../@xpack-dev-tools/clang/.content/bin/lldb-argdumper
lrwxr-xr-x 1 ilg staff 49 Oct 31 14:42 lldb-instr -> ../@xpack-dev-tools/clang/.content/bin/lldb-instr
lrwxr-xr-x 1 ilg staff 50 Oct 31 14:42 lldb-server -> ../@xpack-dev-tools/clang/.content/bin/lldb-server
lrwxr-xr-x 1 ilg staff 50 Oct 31 14:42 lldb-vscode -> ../@xpack-dev-tools/clang/.content/bin/lldb-vscode
lrwxr-xr-x 1 ilg staff 53 Oct 31 14:42 llvm-addr2line -> ../@xpack-dev-tools/clang/.content/bin/llvm-addr2line
lrwxr-xr-x 1 ilg staff 46 Oct 31 14:42 llvm-ar -> ../@xpack-dev-tools/clang/.content/bin/llvm-ar
lrwxr-xr-x 1 ilg staff 46 Oct 31 14:42 llvm-as -> ../@xpack-dev-tools/clang/.content/bin/llvm-as
lrwxr-xr-x 1 ilg staff 57 Oct 31 14:42 llvm-bitcode-strip -> ../@xpack-dev-tools/clang/.content/bin/llvm-bitcode-strip
lrwxr-xr-x 1 ilg staff 50 Oct 31 14:42 llvm-config -> ../@xpack-dev-tools/clang/.content/bin/llvm-config
lrwxr-xr-x 1 ilg staff 47 Oct 31 14:42 llvm-cov -> ../@xpack-dev-tools/clang/.content/bin/llvm-cov
lrwxr-xr-x 1 ilg staff 51 Oct 31 14:42 llvm-cxxdump -> ../@xpack-dev-tools/clang/.content/bin/llvm-cxxdump
lrwxr-xr-x 1 ilg staff 51 Oct 31 14:42 llvm-cxxfilt -> ../@xpack-dev-tools/clang/.content/bin/llvm-cxxfilt
lrwxr-xr-x 1 ilg staff 50 Oct 31 14:42 llvm-cxxmap -> ../@xpack-dev-tools/clang/.content/bin/llvm-cxxmap
lrwxr-xr-x 1 ilg staff 48 Oct 31 14:42 llvm-diff -> ../@xpack-dev-tools/clang/.content/bin/llvm-diff
lrwxr-xr-x 1 ilg staff 47 Oct 31 14:42 llvm-dis -> ../@xpack-dev-tools/clang/.content/bin/llvm-dis
lrwxr-xr-x 1 ilg staff 51 Oct 31 14:42 llvm-dlltool -> ../@xpack-dev-tools/clang/.content/bin/llvm-dlltool
lrwxr-xr-x 1 ilg staff 47 Oct 31 14:42 llvm-lib -> ../@xpack-dev-tools/clang/.content/bin/llvm-lib
lrwxr-xr-x 1 ilg staff 58 Oct 31 14:42 llvm-libtool-darwin -> ../@xpack-dev-tools/clang/.content/bin/llvm-libtool-darwin
lrwxr-xr-x 1 ilg staff 46 Oct 31 14:42 llvm-nm -> ../@xpack-dev-tools/clang/.content/bin/llvm-nm
lrwxr-xr-x 1 ilg staff 51 Oct 31 14:42 llvm-objcopy -> ../@xpack-dev-tools/clang/.content/bin/llvm-objcopy
lrwxr-xr-x 1 ilg staff 51 Oct 31 14:42 llvm-objdump -> ../@xpack-dev-tools/clang/.content/bin/llvm-objdump
lrwxr-xr-x 1 ilg staff 52 Oct 31 14:42 llvm-profdata -> ../@xpack-dev-tools/clang/.content/bin/llvm-profdata
lrwxr-xr-x 1 ilg staff 50 Oct 31 14:42 llvm-ranlib -> ../@xpack-dev-tools/clang/.content/bin/llvm-ranlib
lrwxr-xr-x 1 ilg staff 46 Oct 31 14:42 llvm-rc -> ../@xpack-dev-tools/clang/.content/bin/llvm-rc
lrwxr-xr-x 1 ilg staff 51 Oct 31 14:42 llvm-readelf -> ../@xpack-dev-tools/clang/.content/bin/llvm-readelf
lrwxr-xr-x 1 ilg staff 51 Oct 31 14:42 llvm-readobj -> ../@xpack-dev-tools/clang/.content/bin/llvm-readobj
lrwxr-xr-x 1 ilg staff 48 Oct 31 14:42 llvm-size -> ../@xpack-dev-tools/clang/.content/bin/llvm-size
lrwxr-xr-x 1 ilg staff 51 Oct 31 14:42 llvm-strings -> ../@xpack-dev-tools/clang/.content/bin/llvm-strings
lrwxr-xr-x 1 ilg staff 49 Oct 31 14:42 llvm-strip -> ../@xpack-dev-tools/clang/.content/bin/llvm-strip
lrwxr-xr-x 1 ilg staff 54 Oct 31 14:42 llvm-symbolizer -> ../@xpack-dev-tools/clang/.content/bin/llvm-symbolizer
lrwxr-xr-x 1 ilg staff 50 Oct 31 14:42 llvm-tblgen -> ../@xpack-dev-tools/clang/.content/bin/llvm-tblgen
lrwxr-xr-x 1 ilg staff 57 Oct 31 14:42 set-xcode-analyzer -> ../@xpack-dev-tools/clang/.content/bin/set-xcode-analyzer
lrwxr-xr-x 1 ilg staff 49 Oct 31 14:42 split-file -> ../@xpack-dev-tools/clang/.content/bin/split-file
lrwxr-xr-x 1 ilg staff 46 Oct 31 14:42 wasm-ld -> ../@xpack-dev-tools/clang/.content/bin/wasm-ld
xpacks/@micro-os-plus:
total 0
lrwxr-xr-x 1 ilg staff 75 Oct 31 14:42 architecture-synthetic-posix -> /Users/ilg/Library/xPacks/@micro-os-plus/architecture-synthetic-posix/4.0.2
xpacks/@xpack-dev-tools:
total 0
lrwxr-xr-x 1 ilg staff 59 Oct 31 14:42 clang -> /Users/ilg/Library/xPacks/@xpack-dev-tools/clang/13.0.1-1.1
ilg at wksi native-cmake-clang13-debug %
```
This project in particular has binary dependencies only to clang, but other projects can also have dependencies to cmake, ninja, etc, and all binaries are linked in the `.bin` folder.
With the proposed change, clang correctly idenifies the proper `include/c++/v1` folder from the final destination where the toolchain is installed.
https://github.com/llvm/llvm-project/pull/70817
More information about the cfe-commits
mailing list