diff options
-rw-r--r-- | cmake/FindLibUV.cmake | 6 | ||||
-rw-r--r-- | third-party/CMakeLists.txt | 9 | ||||
-rw-r--r-- | third-party/cmake/BuildLibuv.cmake | 31 | ||||
-rw-r--r-- | third-party/cmake/BuildLuajit.cmake | 10 | ||||
-rw-r--r-- | third-party/cmake/BuildLuv.cmake | 6 | ||||
-rw-r--r-- | third-party/cmake/LibuvCMakeLists.txt | 15 |
6 files changed, 42 insertions, 35 deletions
diff --git a/cmake/FindLibUV.cmake b/cmake/FindLibUV.cmake index 3a60a831ea..29eaf15b8e 100644 --- a/cmake/FindLibUV.cmake +++ b/cmake/FindLibUV.cmake @@ -31,11 +31,7 @@ if(LIBUV_USE_STATIC) "${CMAKE_STATIC_LIBRARY_PREFIX}uv${CMAKE_STATIC_LIBRARY_SUFFIX}") endif(LIBUV_USE_STATIC) -if(MSVC) - list(APPEND LIBUV_NAMES libuv) -else() - list(APPEND LIBUV_NAMES uv) -endif() +list(APPEND LIBUV_NAMES uv) find_library(LIBUV_LIBRARY NAMES ${LIBUV_NAMES} HINTS ${PC_LIBUV_LIBDIR} ${PC_LIBUV_LIBRARY_DIRS} diff --git a/third-party/CMakeLists.txt b/third-party/CMakeLists.txt index 654cc5846f..eaeffa2449 100644 --- a/third-party/CMakeLists.txt +++ b/third-party/CMakeLists.txt @@ -81,6 +81,15 @@ if(CMAKE_GENERATOR MATCHES "Makefiles") set(MAKE_PRG "$(MAKE)") endif() +if(MINGW AND CMAKE_GENERATOR MATCHES "Ninja") + find_program(MAKE_PRG NAMES mingw32-make) + if(NOT MAKE_PRG) + message(FATAL_ERROR "GNU Make for mingw32 is required to build the dependecies.") + else() + message(STATUS "Found GNU Make for mingw32 at ${MAKE_PRG}") + endif() +endif() + if(CMAKE_C_COMPILER_ARG1) set(DEPS_C_COMPILER "${CMAKE_C_COMPILER} ${CMAKE_C_COMPILER_ARG1}") else() diff --git a/third-party/cmake/BuildLibuv.cmake b/third-party/cmake/BuildLibuv.cmake index 084e707f92..0f2375e29b 100644 --- a/third-party/cmake/BuildLibuv.cmake +++ b/third-party/cmake/BuildLibuv.cmake @@ -64,21 +64,16 @@ elseif(MINGW AND CMAKE_CROSSCOMPILING) CONFIGURE_COMMAND ${UNIX_CFGCMD} --host=${CROSS_TARGET} INSTALL_COMMAND ${MAKE_PRG} V=1 install) -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 - ) - -elseif(WIN32 AND MSVC) +elseif(WIN32) set(UV_OUTPUT_DIR ${DEPS_BUILD_DIR}/src/libuv/${CMAKE_BUILD_TYPE}) + if(MSVC) + set(BUILD_SHARED ON) + elseif(MINGW) + set(BUILD_SHARED OFF) + else() + message(FATAL_ERROR "Trying to build libuv in an unsupported system ${CMAKE_SYSTEM_NAME}/${CMAKE_C_COMPILER_ID}") + endif() BuildLibUv(BUILD_IN_SOURCE PATCH_COMMAND ${LIBUV_PATCH_COMMAND} CONFIGURE_COMMAND ${CMAKE_COMMAND} -E copy @@ -88,16 +83,10 @@ elseif(WIN32 AND MSVC) -DCMAKE_C_COMPILER=${CMAKE_C_COMPILER} -DCMAKE_GENERATOR=${CMAKE_GENERATOR} -DCMAKE_BUILD_TYPE=${CMAKE_BUILD_TYPE} - -DBUILD_SHARED_LIBS=ON + -DBUILD_SHARED_LIBS=${BUILD_SHARED} -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 - 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) + INSTALL_COMMAND ${CMAKE_COMMAND} --build . --target install --config ${CMAKE_BUILD_TYPE}) 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/BuildLuajit.cmake b/third-party/cmake/BuildLuajit.cmake index 2fda221b12..721bca9f63 100644 --- a/third-party/cmake/BuildLuajit.cmake +++ b/third-party/cmake/BuildLuajit.cmake @@ -78,8 +78,12 @@ elseif(MINGW AND CMAKE_CROSSCOMPILING) elseif(MINGW) - - BuildLuaJit(BUILD_COMMAND ${CMAKE_MAKE_PROGRAM} CC=${DEPS_C_COMPILER} + if(CMAKE_GENERATOR MATCHES "Ninja") + set(LUAJIT_MAKE_PRG ${MAKE_PRG}) + else() + set(LUAJIT_MAKE_PRG ${CMAKE_MAKE_PROGRAM}) + endif() + BuildLuaJit(BUILD_COMMAND ${LUAJIT_MAKE_PRG} CC=${DEPS_C_COMPILER} PREFIX=${DEPS_INSTALL_DIR} CFLAGS+=-DLUAJIT_DISABLE_JIT CFLAGS+=-DLUA_USE_APICHECK @@ -87,7 +91,7 @@ elseif(MINGW) CCDEBUG+=-g BUILDMODE=static # Build a DLL too - COMMAND ${CMAKE_MAKE_PROGRAM} CC=${DEPS_C_COMPILER} BUILDMODE=dynamic + COMMAND ${LUAJIT_MAKE_PRG} CC=${DEPS_C_COMPILER} BUILDMODE=dynamic INSTALL_COMMAND ${CMAKE_COMMAND} -E make_directory ${DEPS_INSTALL_DIR}/bin COMMAND ${CMAKE_COMMAND} -E copy ${DEPS_BUILD_DIR}/src/luajit/src/luajit.exe ${DEPS_INSTALL_DIR}/bin diff --git a/third-party/cmake/BuildLuv.cmake b/third-party/cmake/BuildLuv.cmake index 339264746c..a62ee72f91 100644 --- a/third-party/cmake/BuildLuv.cmake +++ b/third-party/cmake/BuildLuv.cmake @@ -58,6 +58,12 @@ set(LUV_CONFIGURE_COMMAND_COMMON -DBUILD_SHARED_LIBS=OFF -DBUILD_MODULE=OFF) +if(USE_BUNDLED_LIBUV) + set(LUV_CONFIGURE_COMMAND_COMMON + ${LUV_CONFIGURE_COMMAND_COMMON} + -DCMAKE_PREFIX_PATH=${DEPS_INSTALL_DIR}) +endif() + if(MINGW AND CMAKE_CROSSCOMPILING) get_filename_component(TOOLCHAIN ${CMAKE_TOOLCHAIN_FILE} REALPATH) set(LUV_CONFIGURE_COMMAND diff --git a/third-party/cmake/LibuvCMakeLists.txt b/third-party/cmake/LibuvCMakeLists.txt index 063e4291f2..8b51a101c6 100644 --- a/third-party/cmake/LibuvCMakeLists.txt +++ b/third-party/cmake/LibuvCMakeLists.txt @@ -4,11 +4,13 @@ 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) +add_library(uv ${UV_SOURCES_COMMON} ${UV_SOURCES_WIN}) +target_compile_definitions(uv PRIVATE WIN32_LEAN_AND_MEAN "_WIN32_WINNT=0x0600") +target_link_libraries(uv iphlpapi psapi shell32 userenv ws2_32) +target_include_directories(uv PUBLIC ./include PRIVATE ./src) +if(BUILD_SHARED_LIBS) + set_target_properties(uv PROPERTIES DEFINE_SYMBOL BUILDING_UV_SHARED) +endif() install(FILES include/tree.h @@ -20,8 +22,9 @@ install(FILES DESTINATION include) include(GNUInstallDirs) -install(TARGETS libuv +install(TARGETS uv PUBLIC_HEADER ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR} LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR} + RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR} PUBLIC_HEADER DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}) |