aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorii14 <59243201+ii14@users.noreply.github.com>2023-02-16 22:09:05 +0100
committerGitHub <noreply@github.com>2023-02-16 22:09:05 +0100
commit6dfabd0145c712e1419dcd6d5ce9192d766adbe3 (patch)
treef27ff293099427d2659aadab237db517a70f9446
parentbb377afd32cb4de2655ec0b28813f5237b66ed97 (diff)
downloadrneovim-6dfabd0145c712e1419dcd6d5ce9192d766adbe3.tar.gz
rneovim-6dfabd0145c712e1419dcd6d5ce9192d766adbe3.tar.bz2
rneovim-6dfabd0145c712e1419dcd6d5ce9192d766adbe3.zip
build: use libuv config file (#22209)
Libuv's recent changes in their pc file breaks cmake; they are using -l:libuv.a for the linker, and it seems cmake can't resolve that. Prefer using their cmake config file instead instead, and use the find module as a fall-back in case it fails. Closes https://github.com/neovim/neovim/issues/22271.
-rw-r--r--cmake/FindLibUV.cmake2
-rwxr-xr-xsrc/nvim/CMakeLists.txt12
2 files changed, 10 insertions, 4 deletions
diff --git a/cmake/FindLibUV.cmake b/cmake/FindLibUV.cmake
index e4946bee3f..d6c4e9cbef 100644
--- a/cmake/FindLibUV.cmake
+++ b/cmake/FindLibUV.cmake
@@ -13,7 +13,7 @@ endif()
find_path(LIBUV_INCLUDE_DIR uv.h
HINTS ${PC_LIBUV_INCLUDEDIR} ${PC_LIBUV_INCLUDE_DIRS})
-list(APPEND LIBUV_NAMES uv_a uv libuv)
+list(APPEND LIBUV_NAMES uv_a uv)
find_library(LIBUV_LIBRARY NAMES ${LIBUV_NAMES}
HINTS ${PC_LIBUV_LIBDIR} ${PC_LIBUV_LIBRARY_DIRS})
diff --git a/src/nvim/CMakeLists.txt b/src/nvim/CMakeLists.txt
index 04fe8aec5e..11f2c3dc6d 100755
--- a/src/nvim/CMakeLists.txt
+++ b/src/nvim/CMakeLists.txt
@@ -2,9 +2,15 @@ add_library(main_lib INTERFACE)
add_executable(nvim main.c)
add_library(libuv_lib INTERFACE)
-find_package(LibUV 1.28.0 REQUIRED)
-target_include_directories(libuv_lib SYSTEM BEFORE INTERFACE ${LIBUV_INCLUDE_DIRS})
-target_link_libraries(libuv_lib INTERFACE ${LIBUV_LIBRARIES})
+find_package(libuv CONFIG)
+if(TARGET libuv::uv_a)
+ target_link_libraries(libuv_lib INTERFACE libuv::uv_a)
+else()
+ # Fallback to find module for older libuv versions, that don't provide the cmake package
+ find_package(LibUV 1.28.0 REQUIRED MODULE)
+ target_include_directories(libuv_lib SYSTEM BEFORE INTERFACE ${LIBUV_INCLUDE_DIRS})
+ target_link_libraries(libuv_lib INTERFACE ${LIBUV_LIBRARIES})
+endif()
find_package(Msgpack 1.0.0 REQUIRED)
target_include_directories(main_lib SYSTEM BEFORE INTERFACE ${MSGPACK_INCLUDE_DIRS})