From 95401d8c2fcee53d6143bdd0cede0b833dbf5856 Mon Sep 17 00:00:00 2001 From: Kefu Chai Date: Thu, 21 Feb 2019 12:41:01 +0800 Subject: [PATCH] cmake: find_package(RabbitMQ) instead of just checking its header rabbitmq-c is not a header-only library. so we need to ensure that the library is also around before linking against it. in this change: * move the detection down to where librabbitmq is used * add FindRabbitMQ.cmake for find_package(RabbitMQ) * s/rabbitmq/RabbitMQ::RabbitMQ/ as the latter is an alias library target, which has more information attached to it. Signed-off-by: Kefu Chai --- CMakeLists.txt | 5 ----- cmake/modules/FindRabbitMQ.cmake | 19 +++++++++++++++++++ src/rgw/CMakeLists.txt | 13 +++++++------ 3 files changed, 26 insertions(+), 11 deletions(-) create mode 100644 cmake/modules/FindRabbitMQ.cmake diff --git a/CMakeLists.txt b/CMakeLists.txt index 47fdb00bcf65d..78dcfebb9be79 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -134,11 +134,6 @@ if(LINUX) endif(LINUX) CHECK_INCLUDE_FILES("valgrind/helgrind.h" HAVE_VALGRIND_HELGRIND_H) -CHECK_INCLUDE_FILE_CXX("amqp.h" HAVE_AMQP_H) -if(NOT HAVE_AMQP_H) - message(FATAL_ERROR "Can't find librabbitmq. Please run install-deps.sh") -endif() - include(CheckTypeSize) set(CMAKE_EXTRA_INCLUDE_FILES "linux/types.h") CHECK_TYPE_SIZE(__be16 __BE16) diff --git a/cmake/modules/FindRabbitMQ.cmake b/cmake/modules/FindRabbitMQ.cmake new file mode 100644 index 0000000000000..93aa8204b7c74 --- /dev/null +++ b/cmake/modules/FindRabbitMQ.cmake @@ -0,0 +1,19 @@ +find_path(rabbitmq_INCLUDE_DIR + NAMES amqp.h) + +find_library(rabbitmq_LIBRARY + NAMES rabbitmq) + +include(FindPackageHandleStandardArgs) + +find_package_handle_standard_args(RabbitMQ DEFAULT_MSG + rabbitmq_INCLUDE_DIR + rabbitmq_LIBRARY) + +if(RabbitMQ_FOUND AND NOT (TARGET RabbitMQ::RabbitMQ)) + add_library(RabbitMQ::RabbitMQ UNKNOWN IMPORTED) + set_target_properties(RabbitMQ::RabbitMQ PROPERTIES + INTERFACE_INCLUDE_DIRECTORIES "${rabbitmq_INCLUDE_DIR}" + IMPORTED_LINK_INTERFACE_LANGUAGES "C" + IMPORTED_LOCATION "${rabbitmq_LIBRARY}") +endif() diff --git a/src/rgw/CMakeLists.txt b/src/rgw/CMakeLists.txt index 7e3b1662393ec..c16caad4bd106 100644 --- a/src/rgw/CMakeLists.txt +++ b/src/rgw/CMakeLists.txt @@ -194,6 +194,7 @@ add_dependencies(rgw_a civetweb_h) target_include_directories(rgw_a SYSTEM PUBLIC "../rapidjson/include") +find_package(RabbitMQ REQUIRED) target_link_libraries(rgw_a PUBLIC dmclock::dmclock PRIVATE @@ -232,7 +233,7 @@ endif() add_library(radosgw_a STATIC ${radosgw_srcs} $) -target_link_libraries(radosgw_a PRIVATE rgw_a rabbitmq) +target_link_libraries(radosgw_a PRIVATE rgw_a RabbitMQ::RabbitMQ) if(WITH_RADOSGW_BEAST_FRONTEND AND WITH_RADOSGW_BEAST_OPENSSL) # used by rgw_asio_frontend.cc target_link_libraries(radosgw_a PRIVATE OpenSSL::SSL) @@ -258,7 +259,7 @@ target_link_libraries(radosgw-admin rgw_a librados cls_log_client cls_timeindex_client cls_version_client cls_user_client global ${FCGI_LIBRARY} ${LIB_RESOLV} - ${CURL_LIBRARIES} ${EXPAT_LIBRARIES} ${BLKID_LIBRARIES} rabbitmq) + ${CURL_LIBRARIES} ${EXPAT_LIBRARIES} ${BLKID_LIBRARIES} RabbitMQ::RabbitMQ) install(TARGETS radosgw-admin DESTINATION bin) set(radosgw_es_srcs @@ -269,7 +270,7 @@ target_link_libraries(radosgw-es rgw_a librados cls_log_client cls_timeindex_client cls_version_client cls_user_client global ${FCGI_LIBRARY} ${LIB_RESOLV} - ${CURL_LIBRARIES} ${EXPAT_LIBRARIES} ${BLKID_LIBRARIES} rabbitmq) + ${CURL_LIBRARIES} ${EXPAT_LIBRARIES} ${BLKID_LIBRARIES} RabbitMQ::RabbitMQ) install(TARGETS radosgw-es DESTINATION bin) set(radosgw_token_srcs @@ -287,7 +288,7 @@ target_link_libraries(radosgw-object-expirer rgw_a librados cls_log_client cls_timeindex_client cls_version_client cls_user_client global ${FCGI_LIBRARY} ${LIB_RESOLV} - ${CURL_LIBRARIES} ${EXPAT_LIBRARIES} rabbitmq) + ${CURL_LIBRARIES} ${EXPAT_LIBRARIES} RabbitMQ::RabbitMQ) install(TARGETS radosgw-object-expirer DESTINATION bin) set(librgw_srcs @@ -311,7 +312,7 @@ target_link_libraries(rgw ${LIB_RESOLV} ${CURL_LIBRARIES} ${EXPAT_LIBRARIES} - rabbitmq) + RabbitMQ::RabbitMQ) set_target_properties(rgw PROPERTIES OUTPUT_NAME rgw VERSION 2.0.0 SOVERSION 2) install(TARGETS rgw DESTINATION ${CMAKE_INSTALL_LIBDIR}) @@ -341,7 +342,7 @@ target_link_libraries(rgw_admin_user PRIVATE ${EXPAT_LIBRARIES} ${OPENLDAP_LIBRARIES} dmclock::dmclock - rabbitmq) + RabbitMQ::RabbitMQ) set_target_properties(rgw_admin_user PROPERTIES OUTPUT_NAME rgw_admin_user VERSION 1.0.0 SOVERSION 0) install(TARGETS rgw_admin_user DESTINATION ${CMAKE_INSTALL_LIBDIR}) -- 2.39.5