]> git.apps.os.sepia.ceph.com Git - ceph.git/commitdiff
cmake: find_package(RabbitMQ) instead of just checking its header
authorKefu Chai <kchai@redhat.com>
Thu, 21 Feb 2019 04:41:01 +0000 (12:41 +0800)
committerKefu Chai <kchai@redhat.com>
Thu, 21 Feb 2019 11:00:24 +0000 (19:00 +0800)
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 <kchai@redhat.com>
CMakeLists.txt
cmake/modules/FindRabbitMQ.cmake [new file with mode: 0644]
src/rgw/CMakeLists.txt

index 47fdb00bcf65dd416a01cc26c83dd578487fa397..78dcfebb9be790f267b56772b36fa62435053c54 100644 (file)
@@ -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 (file)
index 0000000..93aa820
--- /dev/null
@@ -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()
index 7e3b1662393ecffb346a576b9bcd3cfb62352760..c16caad4bd1068b5909a12e082e575afdfca8d5a 100644 (file)
@@ -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_OBJECTS:civetweb_common_objs>)
-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})