diff --git a/cmake/FindWrapgRPC.cmake b/cmake/FindWrapgRPC.cmake index aedac66d..dd90e9c2 100644 --- a/cmake/FindWrapgRPC.cmake +++ b/cmake/FindWrapgRPC.cmake @@ -8,10 +8,7 @@ endif() set(WrapgRPC_FOUND FALSE) -set(__WrapgRPC_find_package_args "") -if(${CMAKE_FIND_PACKAGE_NAME}_FIND_QUIETLY) - list(APPEND __WrapgRPC_find_package_args QUIET) -endif() +set(__WrapgRPC_find_package_args QUIET) if(NOT TARGET Threads::Threads) find_package(Threads ${__WrapgRPC_find_package_args}) @@ -34,7 +31,45 @@ if(TARGET ZLIB::ZLIB) qt_internal_disable_find_package_global_promotion(ZLIB::ZLIB) endif() -if(gRPC_FOUND AND TARGET gRPC::grpc AND TARGET gRPC::grpc++) +function(WrapgRPC_ensure_grpc_lib libname) + if(TARGET gRPC::${libname}) + return() + endif() + pkg_check_modules(PC_${libname} QUIET ${libname}) + if(NOT PC_${libname}_FOUND) + return() + endif() + + find_library(${libname}_LIBRARY NAMES ${libname} HINTS ${PC_${libname}_LIBDIR}) + if(NOT ${libname}_LIBRARY) + return() + endif() + + find_path(${libname}_INCLUDE_DIRS NAMES ${libname}/${libname}.h ${PC_${libname}_INCLUDEDIR}) + if(NOT ${libname}_INCLUDE_DIRS) + return() + endif() + + add_library(gRPC::${libname} UNKNOWN IMPORTED) + set_target_properties(gRPC::${libname} PROPERTIES + IMPORTED_LOCATION ${${libname}_LIBRARY} + INTERFACE_INCLUDE_DIRECTORIES "${${libname}_INCLUDE_DIRS}" + ) +endfunction() + + +if(NOT TARGET gRPC::grpc OR NOT TARGET gRPC::grpc++) + find_package(PkgConfig QUIET) + if(PkgConfig_FOUND) + WrapgRPC_ensure_grpc_lib(grpc) + WrapgRPC_ensure_grpc_lib(grpc++) + endif() +endif() + +unset(WrapgRPC_ensure_grpc_lib) + +if(TARGET gRPC::grpc + AND TARGET gRPC::grpc++) add_library(WrapgRPC::WrapLibgRPC INTERFACE IMPORTED) target_link_libraries(WrapgRPC::WrapLibgRPC INTERFACE gRPC::grpc gRPC::grpc++) get_target_property(Grpc_INCLUDE_PATH gRPC::grpc++ INTERFACE_INCLUDE_DIRECTORIES)