aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorb-r-o-c-k <brockmammen@gmail.com>2018-03-17 16:20:28 -0500
committerb-r-o-c-k <brockmammen@gmail.com>2018-03-18 12:50:39 -0500
commit15c53a44d325d0472a34eb430ae7cfc942097480 (patch)
tree1342678c82bbe3d1a2af11f4d7d8b1c3d9038d81
parentbf789b04f3d8b06f836aab384f3dee39b0188df6 (diff)
downloadrneovim-15c53a44d325d0472a34eb430ae7cfc942097480.tar.gz
rneovim-15c53a44d325d0472a34eb430ae7cfc942097480.tar.bz2
rneovim-15c53a44d325d0472a34eb430ae7cfc942097480.zip
build/windows: Add CMakeLists.txt for Libuv on Windows
Adding a CMakeLists.txt for Libuv removes the need for Python when building on Windows.
-rw-r--r--third-party/cmake/BuildLibuv.cmake35
-rw-r--r--third-party/cmake/LibuvCMakeLists.txt27
2 files changed, 40 insertions, 22 deletions
diff --git a/third-party/cmake/BuildLibuv.cmake b/third-party/cmake/BuildLibuv.cmake
index a1c7e7f986..f6a9660d1c 100644
--- a/third-party/cmake/BuildLibuv.cmake
+++ b/third-party/cmake/BuildLibuv.cmake
@@ -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/
diff --git a/third-party/cmake/LibuvCMakeLists.txt b/third-party/cmake/LibuvCMakeLists.txt
new file mode 100644
index 0000000000..063e4291f2
--- /dev/null
+++ b/third-party/cmake/LibuvCMakeLists.txt
@@ -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})