diff --git a/CMakeLists.txt b/CMakeLists.txt index fe01b74c..6f1a3311 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -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) diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt index 584abfcb..95cd7455 100644 --- a/src/CMakeLists.txt +++ b/src/CMakeLists.txt @@ -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()