add static lib when building with system's static libuv

This commit is contained in:
Disyer 2022-06-13 06:59:09 +03:00
parent 73340d0a86
commit 71f5ae374a
2 changed files with 23 additions and 9 deletions

View File

@ -103,18 +103,32 @@ function(use_libuv)
if (FIND_LIBUV)
find_package(libuv ${LIBUV_VERSION} QUIET)
if (libuv_FOUND)
add_library(uv::uv-shared ALIAS uv)
if (BUILD_UVW_SHARED_LIB)
add_library(uv::uv-shared ALIAS uv)
else()
add_library(uv::uv-static ALIAS uv_a)
set(libuv-static_FOUND TRUE)
endif(BUILD_UVW_SHARED_LIB)
set(FETCH_LIBUV_DEFAULT OFF)
message(STATUS "libuv ${libuv_VERSION} found via cmake")
else(libuv_FOUND)
find_package(PkgConfig QUIET)
if (PkgConfig_FOUND)
pkg_check_modules(libuv IMPORTED_TARGET libuv>=${LIBUV_VERSION})
if (libuv_FOUND)
add_library(uv::uv-shared ALIAS PkgConfig::libuv)
set(FETCH_LIBUV_DEFAULT OFF)
message(STATUS "libuv ${libuv_VERSION} found via pkg-config")
endif(libuv_FOUND)
if (BUILD_UVW_SHARED_LIB)
pkg_check_modules(libuv IMPORTED_TARGET libuv>=${LIBUV_VERSION})
if (libuv_FOUND)
add_library(uv::uv-shared ALIAS PkgConfig::libuv)
set(FETCH_LIBUV_DEFAULT OFF)
message(STATUS "libuv ${libuv_VERSION} found via pkg-config")
endif(libuv_FOUND)
else()
pkg_check_modules(libuv-static IMPORTED_TARGET libuv-static>=${LIBUV_VERSION})
if (libuv-static_FOUND)
add_library(uv::uv-static ALIAS PkgConfig::libuv-static)
set(FETCH_LIBUV_DEFAULT OFF)
message(STATUS "static libuv ${libuv-static_VERSION} found via pkg-config")
endif(libuv-static_FOUND)
endif(BUILD_UVW_SHARED_LIB)
endif(PkgConfig_FOUND)
endif(libuv_FOUND)
endif(FIND_LIBUV)
@ -197,7 +211,7 @@ if(FETCH_LIBUV AND BUILD_UVW_LIBS)
else()
install(TARGETS uv_a EXPORT uvwConfig ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR}/uvw)
endif()
endif(FETCH_LIBUV AND BUILD_UVW_LIBS)
export(EXPORT uvwConfig)

View File

@ -72,7 +72,7 @@ else()
add_library(uvw STATIC)
add_library(uvw::uvw-static ALIAS uvw)
# If libuv is not fetched by ourselves, it's the caller's responsibility to make sure of the linkage.
if(FETCH_LIBUV OR libuv_FOUND)
if(FETCH_LIBUV OR libuv-static_FOUND)
target_link_libraries(uvw PUBLIC uv::uv-static)
endif()
endif()