aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorerw7 <erw7.github@gmail.com>2018-05-22 01:08:41 +0900
committererw7 <erw7.github@gmail.com>2018-05-22 01:08:41 +0900
commit5000c9dc1f004a22aa12ed03a42c64093e447fd2 (patch)
tree5608bea5cb94222cb23289c589cb61f9945d4a4c
parent828c9baad2a691ba87a99ee7dda7d7ac3b32cbe5 (diff)
downloadrneovim-5000c9dc1f004a22aa12ed03a42c64093e447fd2.tar.gz
rneovim-5000c9dc1f004a22aa12ed03a42c64093e447fd2.tar.bz2
rneovim-5000c9dc1f004a22aa12ed03a42c64093e447fd2.zip
Change to use cmake to build libuv
-rw-r--r--third-party/cmake/BuildLibuv.cmake46
-rw-r--r--third-party/cmake/LibuvCMakeLists.txt20
2 files changed, 37 insertions, 29 deletions
diff --git a/third-party/cmake/BuildLibuv.cmake b/third-party/cmake/BuildLibuv.cmake
index 8fc7ad67f9..fbda512a64 100644
--- a/third-party/cmake/BuildLibuv.cmake
+++ b/third-party/cmake/BuildLibuv.cmake
@@ -64,26 +64,20 @@ elseif(MINGW AND CMAKE_CROSSCOMPILING)
CONFIGURE_COMMAND ${UNIX_CFGCMD} --host=${CROSS_TARGET}
INSTALL_COMMAND ${MAKE_PRG} V=1 install)
-elseif(MINGW)
+elseif((WIN32 AND MSVC) OR (MINGW AND CMAKE_GENERATOR MATCHES "Ninja"))
- if(CMAKE_GENERATOR MATCHES "Ninja")
- set(LIBUV_MAKE_PRG ${MAKE_PRG})
+ set(UV_OUTPUT_DIR ${DEPS_BUILD_DIR}/src/libuv/${CMAKE_BUILD_TYPE})
+ if(MSVC)
+ set(INSTALL_CMD ${CMAKE_COMMAND} --build . --target install --config ${CMAKE_BUILD_TYPE}
+ # Some applications (lua-client/luarocks) look for uv.lib instead of libuv.lib
+ COMMAND ${CMAKE_COMMAND} -E copy ${UV_OUTPUT_DIR}/libuv.lib ${DEPS_INSTALL_DIR}/lib/uv.lib
+ COMMAND ${CMAKE_COMMAND} -E copy ${UV_OUTPUT_DIR}/libuv.dll ${DEPS_INSTALL_DIR}/bin/
+ COMMAND ${CMAKE_COMMAND} -E copy ${UV_OUTPUT_DIR}/libuv.dll ${DEPS_INSTALL_DIR}/bin/uv.dll
+ COMMAND ${CMAKE_COMMAND} -E make_directory ${DEPS_INSTALL_DIR}/include
+ COMMAND ${CMAKE_COMMAND} -E copy_directory ${DEPS_BUILD_DIR}/src/libuv/include ${DEPS_INSTALL_DIR}/include)
else()
- set(LIBUV_MAKE_PRG ${CMAKE_MAKE_PROGRAM})
+ set(INSTALL_CMD ${CMAKE_COMMAND} --build . --target install --config ${CMAKE_BUILD_TYPE})
endif()
- # Native MinGW
- BuildLibUv(BUILD_IN_SOURCE
- PATCH_COMMAND ${LIBUV_PATCH_COMMAND}
- BUILD_COMMAND ${LIBUV_MAKE_PRG} -f Makefile.mingw
- INSTALL_COMMAND ${CMAKE_COMMAND} -E make_directory ${DEPS_INSTALL_DIR}/lib
- COMMAND ${CMAKE_COMMAND} -E copy ${DEPS_BUILD_DIR}/src/libuv/libuv.a ${DEPS_INSTALL_DIR}/lib
- COMMAND ${CMAKE_COMMAND} -E make_directory ${DEPS_INSTALL_DIR}/include
- COMMAND ${CMAKE_COMMAND} -E copy_directory ${DEPS_BUILD_DIR}/src/libuv/include ${DEPS_INSTALL_DIR}/include
- )
-
-elseif(WIN32 AND MSVC)
-
- set(UV_OUTPUT_DIR ${DEPS_BUILD_DIR}/src/libuv/${CMAKE_BUILD_TYPE})
BuildLibUv(BUILD_IN_SOURCE
PATCH_COMMAND ${LIBUV_PATCH_COMMAND}
CONFIGURE_COMMAND ${CMAKE_COMMAND} -E copy
@@ -96,13 +90,19 @@ elseif(WIN32 AND MSVC)
-DBUILD_SHARED_LIBS=ON
-DCMAKE_INSTALL_PREFIX=${DEPS_INSTALL_DIR}
BUILD_COMMAND ${CMAKE_COMMAND} --build . --config ${CMAKE_BUILD_TYPE}
- INSTALL_COMMAND ${CMAKE_COMMAND} --build . --target install --config ${CMAKE_BUILD_TYPE}
- # Some applications (lua-client/luarocks) look for uv.lib instead of libuv.lib
- COMMAND ${CMAKE_COMMAND} -E copy ${UV_OUTPUT_DIR}/libuv.lib ${DEPS_INSTALL_DIR}/lib/uv.lib
- COMMAND ${CMAKE_COMMAND} -E copy ${UV_OUTPUT_DIR}/libuv.dll ${DEPS_INSTALL_DIR}/bin/
- COMMAND ${CMAKE_COMMAND} -E copy ${UV_OUTPUT_DIR}/libuv.dll ${DEPS_INSTALL_DIR}/bin/uv.dll
+ INSTALL_COMMAND ${INSTALL_CMD})
+
+elseif(MINGW)
+
+ # Native MinGW
+ BuildLibUv(BUILD_IN_SOURCE
+ PATCH_COMMAND ${LIBUV_PATCH_COMMAND}
+ BUILD_COMMAND ${CMAKE_MAKE_PROGRAM} -f Makefile.mingw
+ INSTALL_COMMAND ${CMAKE_COMMAND} -E make_directory ${DEPS_INSTALL_DIR}/lib
+ COMMAND ${CMAKE_COMMAND} -E copy ${DEPS_BUILD_DIR}/src/libuv/libuv.a ${DEPS_INSTALL_DIR}/lib
COMMAND ${CMAKE_COMMAND} -E make_directory ${DEPS_INSTALL_DIR}/include
- COMMAND ${CMAKE_COMMAND} -E copy_directory ${DEPS_BUILD_DIR}/src/libuv/include ${DEPS_INSTALL_DIR}/include)
+ COMMAND ${CMAKE_COMMAND} -E copy_directory ${DEPS_BUILD_DIR}/src/libuv/include ${DEPS_INSTALL_DIR}/include
+ )
else()
message(FATAL_ERROR "Trying to build libuv in an unsupported system ${CMAKE_SYSTEM_NAME}/${CMAKE_C_COMPILER_ID}")
diff --git a/third-party/cmake/LibuvCMakeLists.txt b/third-party/cmake/LibuvCMakeLists.txt
index 063e4291f2..d739e7ed12 100644
--- a/third-party/cmake/LibuvCMakeLists.txt
+++ b/third-party/cmake/LibuvCMakeLists.txt
@@ -4,11 +4,19 @@ project(libuv LANGUAGES C)
file(GLOB UV_SOURCES_COMMON src/*.c)
file(GLOB UV_SOURCES_WIN src/win/*.c)
-add_library(libuv ${UV_SOURCES_COMMON} ${UV_SOURCES_WIN})
-target_compile_definitions(libuv PRIVATE WIN32_LEAN_AND_MEAN "_WIN32_WINNT=0x0600")
-target_link_libraries(libuv iphlpapi psapi shell32 userenv ws2_32)
-target_include_directories(libuv PUBLIC ./include PRIVATE ./src)
-set_target_properties(libuv PROPERTIES DEFINE_SYMBOL BUILDING_UV_SHARED)
+if(MSVC)
+ set(LIBUV libuv)
+ add_library(${LIBUV} ${UV_SOURCES_COMMON} ${UV_SOURCES_WIN})
+else()
+ set(LIBUV uv)
+ add_library(${LIBUV} STATIC ${UV_SOURCES_COMMON} ${UV_SOURCES_WIN})
+endif()
+target_compile_definitions(${LIBUV} PRIVATE WIN32_LEAN_AND_MEAN "_WIN32_WINNT=0x0600")
+target_link_libraries(${LIBUV} iphlpapi psapi shell32 userenv ws2_32)
+target_include_directories(${LIBUV} PUBLIC ./include PRIVATE ./src)
+if(MSVC)
+ set_target_properties(${LIBUV} PROPERTIES DEFINE_SYMBOL BUILDING_UV_SHARED)
+endif()
install(FILES
include/tree.h
@@ -20,7 +28,7 @@ install(FILES
DESTINATION include)
include(GNUInstallDirs)
-install(TARGETS libuv
+install(TARGETS ${LIBUV}
PUBLIC_HEADER
ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR}
LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR}