diff options
author | erw7 <erw7.github@gmail.com> | 2018-05-22 01:08:41 +0900 |
---|---|---|
committer | erw7 <erw7.github@gmail.com> | 2018-05-22 01:08:41 +0900 |
commit | 5000c9dc1f004a22aa12ed03a42c64093e447fd2 (patch) | |
tree | 5608bea5cb94222cb23289c589cb61f9945d4a4c | |
parent | 828c9baad2a691ba87a99ee7dda7d7ac3b32cbe5 (diff) | |
download | rneovim-5000c9dc1f004a22aa12ed03a42c64093e447fd2.tar.gz rneovim-5000c9dc1f004a22aa12ed03a42c64093e447fd2.tar.bz2 rneovim-5000c9dc1f004a22aa12ed03a42c64093e447fd2.zip |
Change to use cmake to build libuv
-rw-r--r-- | third-party/cmake/BuildLibuv.cmake | 46 | ||||
-rw-r--r-- | third-party/cmake/LibuvCMakeLists.txt | 20 |
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} |