From 686b13b2f3349df255e62a3d1b2ca5edf2848726 Mon Sep 17 00:00:00 2001 From: Jeff Date: Sat, 19 Sep 2020 09:50:54 -0400 Subject: [PATCH] fix up cmake lokimq target --- CMakeLists.txt | 13 +++++++++---- cmake/FindLokiMQ.cmake | 21 --------------------- cmake/link_dep_libs.cmake | 13 +++++++++++++ 3 files changed, 22 insertions(+), 25 deletions(-) delete mode 100644 cmake/FindLokiMQ.cmake create mode 100644 cmake/link_dep_libs.cmake diff --git a/CMakeLists.txt b/CMakeLists.txt index 6ed1bcacc..43cbb0309 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -78,6 +78,7 @@ include(cmake/target_link_libraries_system.cmake) include(cmake/add_import_library.cmake) include(cmake/add_log_tag.cmake) include(cmake/libatomic.cmake) +include(cmake/link_dep_libs.cmake) if (STATIC_LINK) set(CMAKE_FIND_LIBRARY_SUFFIXES ${CMAKE_STATIC_LIBRARY_SUFFIX}) @@ -148,10 +149,14 @@ endif() option(FORCE_LOKIMQ_SUBMODULE "force using lokimq submodule" OFF) if(NOT FORCE_LOKIMQ_SUBMODULE) - find_package(LokiMQ 1.2) -endif() -if(LokiMQ_FOUND) - message(STATUS "using system lokimq") + pkg_check_modules(LOKIMQ liblokimq>=1.2) +endif() +if(LOKIMQ_FOUND) + add_library(lokimq INTERFACE) + link_dep_libs(lokimq INTERFACE "${LOKIMQ_LIBRARY_DIRS}" ${LOKIMQ_LIBRARIES}) + target_include_directories(lokimq INTERFACE ${LOKIMQ_INCLUDE_DIRS}) + add_library(lokimq::lokimq ALIAS lokimq) + message(STATUS "Found system liblokimq ${LOKIMQ_VERSION}") else() message(STATUS "using lokimq submodule") add_subdirectory(${CMAKE_SOURCE_DIR}/external/loki-mq) diff --git a/cmake/FindLokiMQ.cmake b/cmake/FindLokiMQ.cmake deleted file mode 100644 index a191d475f..000000000 --- a/cmake/FindLokiMQ.cmake +++ /dev/null @@ -1,21 +0,0 @@ -find_package(PkgConfig) -if (PKG_CONFIG_FOUND) - pkg_check_modules(PC_LOKIMQ QUIET liblokimq>=${LokiMQ_VERSION}) -endif() - -find_path(LOKIMQ_INCLUDE_DIR lokimq/lokimq.h - HINTS ${PC_LOKIMQ_INCLUDEDIR} ${PC_LOKIMQ_INCLUDE_DIRS}) - -find_library(LOKIMQ_LIBRARY NAMES lokimq - HINTS ${PC_LOKIMQ_LIBDIR} ${PC_LOKIMQ_LIBRARY_DIRS}) - -mark_as_advanced(LOKIMQ_INCLUDE_DIR LOKIMQ_LIBRARY) - -set(LOKIMQ_LIBRARIES ${LOKIMQ_LIBRARY} ${PC_LOKIMQ_LIBRARIES}) -set(LOKIMQ_INCLUDE_DIRS ${LOKIMQ_INCLUDE_DIR}) - -include(FindPackageHandleStandardArgs) -find_package_handle_standard_args(LokiMQ DEFAULT_MSG - LOKIMQ_LIBRARY LOKIMQ_INCLUDE_DIR) - -mark_as_advanced(LOKIMQ_INCLUDE_DIR LOKIMQ_LIBRARY) diff --git a/cmake/link_dep_libs.cmake b/cmake/link_dep_libs.cmake new file mode 100644 index 000000000..14e4b4f16 --- /dev/null +++ b/cmake/link_dep_libs.cmake @@ -0,0 +1,13 @@ +# Properly links a target to a list of library names by finding the given libraries. Takes: +# - a target +# - a linktype (e.g. INTERFACE, PUBLIC, PRIVATE) +# - a library search path (or "" for defaults) +# - any number of library names +function(link_dep_libs target linktype libdirs) + foreach(lib ${ARGN}) + find_library(link_lib-${lib} NAMES ${lib} PATHS ${libdirs}) + if(link_lib-${lib}) + target_link_libraries(${target} ${linktype} ${link_lib-${lib}}) + endif() + endforeach() +endfunction()