Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
CMake: Fix liblzma filename in Windows environments
This is a mess because liblzma DLL outside Cygwin and MSYS2 is liblzma.dll instead of lzma.dll to avoid a conflict with lzma.dll from LZMA SDK. On Cygwin the name was "liblzma-5.dll" while "cyglzma-5.dll" would have been correct (and match what Libtool produces). MSYS2 likely was broken too as it uses the "msys-" prefix. This change has no effect with MinGW-w64 because with that the "lib" prefix was correct already. With MSVC builds this is a small breaking change that requires developers to adjust the library name when linking against liblzma. The liblzma.dll name is kept as is but the import library and static library are now lzma.lib instead of liblzma.lib. This is helpful when using pkgconf because "pkgconf --msvc-syntax --libs liblzma" outputs "lzma.lib" (it's converted from "-llzma" in liblzma.pc). It would be easy to keep the liblzma.lib naming but the pkgconf compatibility seems worth it in the long run. The lzma.lib name is compatible with MinGW-w64 too as -llzma will find also lzma.lib. vcpkg had been patching CMakeLists.txt this way since 2022 but I learned this only recently. The reasoning for the patch makes sense, and while this is a small breaking change with MSVC, it seems like a decent compromise as it keeps the DLL name the same. 2022 patch in vcpkg: https://github.com/microsoft/vcpkg/blob/0707a17ecf1466d64cf1a3c1ee18c8ff02aadb2d/ports/liblzma/win_output_name.patch See the discussion: microsoft/vcpkg#39024 Thanks to Vincent Torri for confirming the naming issue on Cygwin.
- Loading branch information