mirror of https://github.com/qt/qtgrpc.git
Use pkg-config to find gRPC libraries if CMake package is not found
Look for the gRPC libraries using PkgConfig module. This helps to find gRPC on systems that don't have CMake packages installed. Task-number: QTBUG-108833 Change-Id: Iaaa9d38facd6490c3d96d9eb30b0cdddde46edde Reviewed-by: Alexandru Croitor <alexandru.croitor@qt.io>
This commit is contained in:
parent
0d56724387
commit
b27a709a18
|
|
@ -8,10 +8,7 @@ endif()
|
||||||
|
|
||||||
set(WrapgRPC_FOUND FALSE)
|
set(WrapgRPC_FOUND FALSE)
|
||||||
|
|
||||||
set(__WrapgRPC_find_package_args "")
|
set(__WrapgRPC_find_package_args QUIET)
|
||||||
if(${CMAKE_FIND_PACKAGE_NAME}_FIND_QUIETLY)
|
|
||||||
list(APPEND __WrapgRPC_find_package_args QUIET)
|
|
||||||
endif()
|
|
||||||
|
|
||||||
if(NOT TARGET Threads::Threads)
|
if(NOT TARGET Threads::Threads)
|
||||||
find_package(Threads ${__WrapgRPC_find_package_args})
|
find_package(Threads ${__WrapgRPC_find_package_args})
|
||||||
|
|
@ -34,7 +31,45 @@ if(TARGET ZLIB::ZLIB)
|
||||||
qt_internal_disable_find_package_global_promotion(ZLIB::ZLIB)
|
qt_internal_disable_find_package_global_promotion(ZLIB::ZLIB)
|
||||||
endif()
|
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)
|
add_library(WrapgRPC::WrapLibgRPC INTERFACE IMPORTED)
|
||||||
target_link_libraries(WrapgRPC::WrapLibgRPC INTERFACE gRPC::grpc gRPC::grpc++)
|
target_link_libraries(WrapgRPC::WrapLibgRPC INTERFACE gRPC::grpc gRPC::grpc++)
|
||||||
get_target_property(Grpc_INCLUDE_PATH gRPC::grpc++ INTERFACE_INCLUDE_DIRECTORIES)
|
get_target_property(Grpc_INCLUDE_PATH gRPC::grpc++ INTERFACE_INCLUDE_DIRECTORIES)
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue