mirror of
https://github.com/neovim/neovim.git
synced 2025-02-25 18:55:25 -06:00
build/windows: Add CMakeLists.txt for Libuv on Windows
Adding a CMakeLists.txt for Libuv removes the need for Python when building on Windows.
This commit is contained in:
35
third-party/cmake/BuildLibuv.cmake
vendored
35
third-party/cmake/BuildLibuv.cmake
vendored
@@ -70,28 +70,19 @@ elseif(MINGW)
|
||||
|
||||
elseif(WIN32 AND MSVC)
|
||||
|
||||
find_package(PythonInterp 2.6 REQUIRED)
|
||||
if(NOT PYTHONINTERP_FOUND OR PYTHON_VERSION_MAJOR GREATER 2)
|
||||
message(FATAL_ERROR "Python2 is required to build libuv on windows, use -DPYTHON_EXECUTABLE to set a python interpreter")
|
||||
endif()
|
||||
|
||||
include(TargetArch)
|
||||
if(TARGET_ARCH STREQUAL "X86_64")
|
||||
set(TARGET_ARCH x64)
|
||||
elseif(TARGET_ARCH STREQUAL "X86")
|
||||
set(TARGET_ARCH x86)
|
||||
endif()
|
||||
if(CMAKE_BUILD_TYPE STREQUAL "Debug")
|
||||
set(TARGET_CONFIG debug)
|
||||
else()
|
||||
set(TARGET_CONFIG release)
|
||||
endif()
|
||||
set(UV_OUTPUT_DIR ${DEPS_BUILD_DIR}/src/libuv/${TARGET_CONFIG})
|
||||
BuildLibUv(
|
||||
BUILD_COMMAND set PYTHON=${PYTHON_EXECUTABLE} COMMAND ${DEPS_BUILD_DIR}/src/libuv/vcbuild.bat shared ${TARGET_CONFIG} ${TARGET_ARCH}
|
||||
INSTALL_COMMAND ${CMAKE_COMMAND} -E make_directory ${DEPS_INSTALL_DIR}/lib
|
||||
COMMAND ${CMAKE_COMMAND} -E make_directory ${DEPS_INSTALL_DIR}/bin
|
||||
COMMAND ${CMAKE_COMMAND} -E copy ${UV_OUTPUT_DIR}/libuv.lib ${DEPS_INSTALL_DIR}/lib
|
||||
set(UV_OUTPUT_DIR ${DEPS_BUILD_DIR}/src/libuv/${CMAKE_BUILD_TYPE})
|
||||
BuildLibUv(BUILD_IN_SOURCE
|
||||
CONFIGURE_COMMAND ${CMAKE_COMMAND} -E copy
|
||||
${CMAKE_CURRENT_SOURCE_DIR}/cmake/LibuvCMakeLists.txt
|
||||
${DEPS_BUILD_DIR}/src/libuv/CMakeLists.txt
|
||||
COMMAND ${CMAKE_COMMAND} ${DEPS_BUILD_DIR}/src/libuv/CMakeLists.txt
|
||||
-DCMAKE_C_COMPILER=${CMAKE_C_COMPILER}
|
||||
-DCMAKE_GENERATOR=${CMAKE_GENERATOR}
|
||||
-DCMAKE_BUILD_TYPE=${CMAKE_BUILD_TYPE}
|
||||
-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/
|
||||
|
||||
27
third-party/cmake/LibuvCMakeLists.txt
vendored
Normal file
27
third-party/cmake/LibuvCMakeLists.txt
vendored
Normal file
@@ -0,0 +1,27 @@
|
||||
cmake_minimum_required(VERSION 2.8.7)
|
||||
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)
|
||||
|
||||
install(FILES
|
||||
include/tree.h
|
||||
include/uv.h
|
||||
include/uv-version.h
|
||||
include/uv-errno.h
|
||||
include/uv-threadpool.h
|
||||
include/uv-win.h
|
||||
DESTINATION include)
|
||||
|
||||
include(GNUInstallDirs)
|
||||
install(TARGETS libuv
|
||||
PUBLIC_HEADER
|
||||
ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR}
|
||||
LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR}
|
||||
PUBLIC_HEADER DESTINATION ${CMAKE_INSTALL_INCLUDEDIR})
|
||||
Reference in New Issue
Block a user