aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--CMakeLists.txt4
-rw-r--r--cmake/FindLibUV.cmake39
-rw-r--r--src/CMakeLists.txt24
3 files changed, 49 insertions, 18 deletions
diff --git a/CMakeLists.txt b/CMakeLists.txt
index b32bd5e2de..38fa216010 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -40,10 +40,6 @@ if(NOT CMAKE_USE_PTHREADS_INIT)
message(SEND_ERROR "The pthread library must be installed on your system.")
endif(NOT CMAKE_USE_PTHREADS_INIT)
-# Detect if clock_gettime exists in -lrt. If so we need to link with it because
-# the static libuv doesn't but uses clock_gettime.
-check_library_exists(rt clock_gettime "time.h" HAVE_CLOCK_GETTIME)
-
find_package(LibIntl)
if(LibIntl_FOUND)
include_directories(${LibIntl_INCLUDE_DIR})
diff --git a/cmake/FindLibUV.cmake b/cmake/FindLibUV.cmake
index b11d2b1949..357f12c3fd 100644
--- a/cmake/FindLibUV.cmake
+++ b/cmake/FindLibUV.cmake
@@ -46,6 +46,45 @@ mark_as_advanced(LIBUV_INCLUDE_DIR LIBUV_LIBRARY)
set(LIBUV_LIBRARIES ${LIBUV_LIBRARY})
set(LIBUV_INCLUDE_DIRS ${LIBUV_INCLUDE_DIR})
+# Deal with the fact that libuv.pc is missing important dependency information.
+
+include(CheckLibraryExists)
+
+check_library_exists(dl dlopen "dlfcn.h" HAVE_LIBDL)
+if(HAVE_LIBDL)
+ list(APPEND LIBUV_LIBRARIES dl)
+endif()
+
+check_library_exists(kstat kstat_lookup "kstat.h" HAVE_LIBKSTAT)
+if(HAVE_LIBKSTAT)
+ list(APPEND LIBUV_LIBRARIES kstat)
+endif()
+
+check_library_exists(kvm kvm_open "kvm.h" HAVE_LIBKVM)
+if(HAVE_LIBKVM)
+ list(APPEND LIBUV_LIBRARIES kvm)
+endif()
+
+check_library_exists(nsl gethostbyname "nsl.h" HAVE_LIBNSL)
+if(HAVE_LIBNSL)
+ list(APPEND LIBUV_LIBRARIES nsl)
+endif()
+
+check_library_exists(perfstat perfstat_cpu "libperfstat.h" HAVE_LIBPERFSTAT)
+if(HAVE_LIBPERFSTAT)
+ list(APPEND LIBUV_LIBRARIES perfstat)
+endif()
+
+check_library_exists(rt clock_gettime "time.h" HAVE_LIBRT)
+if(HAVE_LIBRT)
+ list(APPEND LIBUV_LIBRARIES rt)
+endif()
+
+check_library_exists(sendfile sendfile "" HAVE_LIBSENDFILE)
+if(HAVE_LIBSENDFILE)
+ list(APPEND LIBUV_LIBRARIES sendfile)
+endif()
+
include(FindPackageHandleStandardArgs)
# handle the QUIETLY and REQUIRED arguments and set LIBUV_FOUND to TRUE
diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt
index 86be94238a..e89672a91f 100644
--- a/src/CMakeLists.txt
+++ b/src/CMakeLists.txt
@@ -1,3 +1,5 @@
+include(CheckLibraryExists)
+
file( GLOB NEOVIM_SOURCES *.c )
foreach(sfile ${NEOVIM_SOURCES})
@@ -25,25 +27,12 @@ if(CMAKE_C_COMPILER_ID MATCHES "Clang")
endif()
endif()
-# The libraries we link against for nvim
-set(NVIM_LINK_LIBRARIES
- m
- ${LIBUV_LIBRARIES}
- ${LUAJIT_LIBRARIES}
- ${CMAKE_THREAD_LIBS_INIT})
-
-# Add any libraries needed for a specific platform
-if(HAVE_CLOCK_GETTIME)
- # Work around libuv.a not linking in rt.
- list(APPEND NVIM_LINK_LIBRARIES rt)
-endif(HAVE_CLOCK_GETTIME)
+# Our dependencies come first.
if (LibIntl_FOUND)
list(APPEND NVIM_LINK_LIBRARIES ${LibIntl_LIBRARY})
endif()
-include(CheckLibraryExists)
-
check_library_exists(curses tgetent "" HAVE_LIBCURSES)
if (HAVE_LIBCURSES)
list(APPEND NVIM_LINK_LIBRARIES curses)
@@ -52,6 +41,13 @@ else()
list(APPEND NVIM_LINK_LIBRARIES ${CURSES_LIBRARIES})
endif()
+# Put these last on the link line, since multiple things may depend on them.
+list(APPEND NVIM_LINK_LIBRARIES
+ ${LIBUV_LIBRARIES}
+ ${LUAJIT_LIBRARIES}
+ m
+ ${CMAKE_THREAD_LIBS_INIT})
+
if(NOT DEFINED ENV{SKIP_EXEC})
add_executable(nvim ${NEOVIM_SOURCES} ${OS_SOURCES})
target_link_libraries(nvim ${NVIM_LINK_LIBRARIES})