From c40708a2ce4f6ed1adcc1de39fc7b4fc27db32f8 Mon Sep 17 00:00:00 2001 From: Erik Arvstedt Date: Sat, 6 Jul 2024 15:22:42 +0200 Subject: [PATCH] cmake/findllvm: fix incorrect lib dir setup for zig2 Line `link_directories("${CMAKE_PREFIX_PATH}/lib")` was evaluated as `link_directories("/lib")` in the default case of `CMAKE_PREFIX_PATH` being empty. This caused cmake to add `-L/lib -Wl,-rpath,/lib` to the zig2 build flags. This could result in errors on systems where libraries set via `CMAKE_LIBRARY_PATH` had conflicting versions in `/lib`: - `-L/lib` could cause linking zig2 to fail - `-Wl,-rpath,/lib` adds `/lib` as the first entry of the zig2 `RPATH`. This could cause running zig2 (to build zig3) to fail. In case of conflicting lib dirs, cmake emitted this warning, which is now fixed: ``` Cannot generate a safe runtime search path for target zig2 because files in some directories may conflict with libraries in implicit directories: runtime library [libclang-cpp.so.18.1] in /nix/store/...-clang-18.1.5-lib/lib may be hidden by files in: /lib ``` --- cmake/Findllvm.cmake | 1 - 1 file changed, 1 deletion(-) diff --git a/cmake/Findllvm.cmake b/cmake/Findllvm.cmake index ed8acba37e..c4eb49fe76 100644 --- a/cmake/Findllvm.cmake +++ b/cmake/Findllvm.cmake @@ -176,7 +176,6 @@ if(ZIG_USE_LLVM_CONFIG) OUTPUT_STRIP_TRAILING_WHITESPACE) string(REPLACE " " ";" LLVM_INCLUDE_DIRS "${LLVM_INCLUDE_DIRS_SPACES}") - link_directories("${CMAKE_PREFIX_PATH}/lib") link_directories("${LLVM_LIBDIRS}") else() # Here we assume that we're cross compiling with Zig, of course. No reason