neovim

Neovim text editor
git clone https://git.dasho.dev/neovim.git
Log | Files | Refs | README

commit 6dfabd0145c712e1419dcd6d5ce9192d766adbe3
parent bb377afd32cb4de2655ec0b28813f5237b66ed97
Author: ii14 <59243201+ii14@users.noreply.github.com>
Date:   Thu, 16 Feb 2023 22:09:05 +0100

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.
Diffstat:
Mcmake/FindLibUV.cmake | 2+-
Msrc/nvim/CMakeLists.txt | 12+++++++++---
2 files changed, 10 insertions(+), 4 deletions(-)

diff --git 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 @@ -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})