[clang] [libclang][Cygwin] Provide unversioned DLL file alongside versioned one (PR #147132)
Tomohiro Kashiwada via cfe-commits
cfe-commits at lists.llvm.org
Tue Jul 8 05:15:44 PDT 2025
kikairoya wrote:
I'm thinking about each DLLs:
- libLLVM:
- On Linux:
`libLLVM.so`(symlink) and `libLLVM.so.21.0git` are built and installed.
`libLLVM-21git.so`(symlink) is installed but doesn't appear in build-tree.
- On Cygwin:
Only `libLLVM-21git.dll.a` and `cygLLVM-21git.dll` are built and installed.
It might be better to make them symlinks and provide `libLLVM.dll.a` and `cygLLVM-21.0git.dll` as their link targets for consistency with other DLLs. These symlinks may be install-only targets.
`llvm-config` should print `-lLLVM-21git` as ever for consistency with other Platforms.
Additionally, installing a symlink `cygLLVM.dll` is convenient for dlopen.
- libclang:
- On Linux:
`libclang.so`(symlink), `libclang.so.21.0git`(symlink) and `libclang.so.21.0.0git` are built and installed.
- On Cygwin:
Only `libclang.dll.a` and `cygclang-21.0git.dll` are built and installed.
`cygclang.dll`(maybe a symlink) is needed for `check-clang-python` so it must be built in build-tree.
This is the first motivation for this PR.
- Other C libraries (e.g. Remarks):
- On Linux:
`libRemarks.so`(symlink) and `libRemarks.so.21.0git` are built and installed.
- On Cygwin:
`libRemarks.dll.a` and `cygRemarks-21.0git.dll` are built and installed.
Additionally, installing a symlink `cygRemarks.dll` is convenient for dlopen.
- Other DLLs without C interface (libclang-cpp):
- On Linux:
`libclang-cpp.so`(symlink) and `libclang-cpp.so.21.0git` are built and installed.
- On Cygwin:
`libclang-cpp.dll.a` and `cygclang-cpp-21.0git.dll` are built and installed.
This DLL won't use with dlopen since it have no C interface but installing symlink `cygclang-cpp.dll` as other DLLs isn't worse.
I had focused to make a symlink `cygclang.dll` but it could be applied to all other DLLs.
Also, I can make `libLLVM-21git.dll.a` a symlink to `libLLVM.dll.a` and make `cygLLVM-21git.dll` a symlink to `cygLLVM-21.0git.dll`.
So, installed-tree will be:
- bin/
- `cygclang.dll`@ -> `cygclang-21.0git.dll`
- `cygclang-21.0git.dll`
- `cygclang-cpp.dll`@ -> `cygclang-cpp-21.0git.dll` (may be omitted)
- `cygclang-cpp-21.0git.dll`
- `cygLLVM.dll`@ -> `cygLLVM-21.0git.dll`
- `cygLLVM-21git.dll`@ -> `cygLLVM-21.0git.dll` (may not appear in build-tree)
- `cygLLVM-21.0git.dll`
- `cygRemarks.dll`@ -> `cygRemarks-21.0git.dll`
- `cygRemarks-21.0git.dll`
- lib/
- `libclang.dll.a`
- `libclang-cpp.dll.a`
- `libLLVM.dll.a`
- `libLLVM-21git.dll.a`@ -> `libLLVM.dll.a` (may not appear in build-tree)
- `libRemarks.dll.a`
I would like to know if there are any concerns to do this.
https://github.com/llvm/llvm-project/pull/147132
More information about the cfe-commits
mailing list