mirror of
https://github.com/neovim/neovim.git
synced 2025-10-25 20:07:09 +00:00
Change to use cmake to build libuv
This commit is contained in:
48
third-party/cmake/BuildLibuv.cmake
vendored
48
third-party/cmake/BuildLibuv.cmake
vendored
@@ -64,26 +64,20 @@ elseif(MINGW AND CMAKE_CROSSCOMPILING)
|
|||||||
CONFIGURE_COMMAND ${UNIX_CFGCMD} --host=${CROSS_TARGET}
|
CONFIGURE_COMMAND ${UNIX_CFGCMD} --host=${CROSS_TARGET}
|
||||||
INSTALL_COMMAND ${MAKE_PRG} V=1 install)
|
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})
|
|
||||||
else()
|
|
||||||
set(LIBUV_MAKE_PRG ${CMAKE_MAKE_PROGRAM})
|
|
||||||
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})
|
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(INSTALL_CMD ${CMAKE_COMMAND} --build . --target install --config ${CMAKE_BUILD_TYPE})
|
||||||
|
endif()
|
||||||
BuildLibUv(BUILD_IN_SOURCE
|
BuildLibUv(BUILD_IN_SOURCE
|
||||||
PATCH_COMMAND ${LIBUV_PATCH_COMMAND}
|
PATCH_COMMAND ${LIBUV_PATCH_COMMAND}
|
||||||
CONFIGURE_COMMAND ${CMAKE_COMMAND} -E copy
|
CONFIGURE_COMMAND ${CMAKE_COMMAND} -E copy
|
||||||
@@ -96,13 +90,19 @@ elseif(WIN32 AND MSVC)
|
|||||||
-DBUILD_SHARED_LIBS=ON
|
-DBUILD_SHARED_LIBS=ON
|
||||||
-DCMAKE_INSTALL_PREFIX=${DEPS_INSTALL_DIR}
|
-DCMAKE_INSTALL_PREFIX=${DEPS_INSTALL_DIR}
|
||||||
BUILD_COMMAND ${CMAKE_COMMAND} --build . --config ${CMAKE_BUILD_TYPE}
|
BUILD_COMMAND ${CMAKE_COMMAND} --build . --config ${CMAKE_BUILD_TYPE}
|
||||||
INSTALL_COMMAND ${CMAKE_COMMAND} --build . --target install --config ${CMAKE_BUILD_TYPE}
|
INSTALL_COMMAND ${INSTALL_CMD})
|
||||||
# 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
|
elseif(MINGW)
|
||||||
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
|
# 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 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()
|
else()
|
||||||
message(FATAL_ERROR "Trying to build libuv in an unsupported system ${CMAKE_SYSTEM_NAME}/${CMAKE_C_COMPILER_ID}")
|
message(FATAL_ERROR "Trying to build libuv in an unsupported system ${CMAKE_SYSTEM_NAME}/${CMAKE_C_COMPILER_ID}")
|
||||||
|
|||||||
20
third-party/cmake/LibuvCMakeLists.txt
vendored
20
third-party/cmake/LibuvCMakeLists.txt
vendored
@@ -4,11 +4,19 @@ project(libuv LANGUAGES C)
|
|||||||
file(GLOB UV_SOURCES_COMMON src/*.c)
|
file(GLOB UV_SOURCES_COMMON src/*.c)
|
||||||
file(GLOB UV_SOURCES_WIN src/win/*.c)
|
file(GLOB UV_SOURCES_WIN src/win/*.c)
|
||||||
|
|
||||||
add_library(libuv ${UV_SOURCES_COMMON} ${UV_SOURCES_WIN})
|
if(MSVC)
|
||||||
target_compile_definitions(libuv PRIVATE WIN32_LEAN_AND_MEAN "_WIN32_WINNT=0x0600")
|
set(LIBUV libuv)
|
||||||
target_link_libraries(libuv iphlpapi psapi shell32 userenv ws2_32)
|
add_library(${LIBUV} ${UV_SOURCES_COMMON} ${UV_SOURCES_WIN})
|
||||||
target_include_directories(libuv PUBLIC ./include PRIVATE ./src)
|
else()
|
||||||
set_target_properties(libuv PROPERTIES DEFINE_SYMBOL BUILDING_UV_SHARED)
|
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
|
install(FILES
|
||||||
include/tree.h
|
include/tree.h
|
||||||
@@ -20,7 +28,7 @@ install(FILES
|
|||||||
DESTINATION include)
|
DESTINATION include)
|
||||||
|
|
||||||
include(GNUInstallDirs)
|
include(GNUInstallDirs)
|
||||||
install(TARGETS libuv
|
install(TARGETS ${LIBUV}
|
||||||
PUBLIC_HEADER
|
PUBLIC_HEADER
|
||||||
ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR}
|
ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR}
|
||||||
LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR}
|
LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR}
|
||||||
|
|||||||
Reference in New Issue
Block a user