You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
191 lines
5.1 KiB
CMake
191 lines
5.1 KiB
CMake
# Copyright 2007 - 2021, Alan Antonuk and the rabbitmq-c contributors.
|
|
# SPDX-License-Identifier: mit
|
|
|
|
if (ENABLE_SSL_SUPPORT)
|
|
SET(AMQP_SSL_SOCKET_SHIM_PATH ${CMAKE_CURRENT_SOURCE_DIR}/../include/amqp_ssl_socket.h)
|
|
set(AMQP_SSL_SOCKET_H_PATH ${CMAKE_CURRENT_SOURCE_DIR}/../include/rabbitmq-c/ssl_socket.h)
|
|
|
|
set(AMQP_SSL_SRCS
|
|
amqp_openssl.c
|
|
amqp_openssl_bio.c
|
|
amqp_openssl_bio.h
|
|
)
|
|
set(AMQP_SSL_LIBS OpenSSL::SSL)
|
|
if (APPLE)
|
|
# Apple has deprecated OpenSSL in 10.7+. This disables that warning.
|
|
set_source_files_properties(${AMQP_SSL_SRCS}
|
|
PROPERTIES COMPILE_FLAGS -Wno-deprecated-declarations)
|
|
endif()
|
|
|
|
if (WIN32 AND NOT CMAKE_USE_PTHREADS_INIT)
|
|
set(AMQP_SSL_SRCS ${AMQP_SSL_SRCS} win32/threads.h win32/threads.c)
|
|
set(SSL_INCLUDE_DIRS win32)
|
|
else()
|
|
set(AMQP_SSL_SRCS ${AMQP_SSL_SRCS} unix/threads.h)
|
|
set(SSL_INCLUDE_DIRS unix)
|
|
endif()
|
|
endif()
|
|
|
|
set(PUBLIC_INCLUDE_DIRS
|
|
$<BUILD_INTERFACE:${CMAKE_CURRENT_BINARY_DIR}/../include>
|
|
$<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/../include>
|
|
$<INSTALL_INTERFACE:${CMAKE_INSTALL_INCLUDEDIR}>
|
|
)
|
|
|
|
set(PRIVATE_INCLUDE_DIRS
|
|
${CMAKE_CURRENT_BINARY_DIR}
|
|
${CMAKE_CURRENT_SOURCE_DIR}
|
|
${SSL_INCLUDE_DIRS}
|
|
)
|
|
|
|
set(RMQ_SOURCES
|
|
../include/amqp.h
|
|
../include/amqp_framing.h
|
|
${AMQP_SSL_SOCKET_SHIM_PATH}
|
|
../include/amqp_tcp_socket.h
|
|
../include/rabbitmq-c/amqp.h
|
|
../include/rabbitmq-c/framing.h
|
|
${AMQP_SSL_SOCKET_H_PATH}
|
|
../include/rabbitmq-c/tcp_socket.h
|
|
amqp_api.c
|
|
amqp_connection.c
|
|
amqp_consumer.c
|
|
amqp_framing.c
|
|
amqp_mem.c
|
|
${AMQP_SSL_SRCS}
|
|
amqp_private.h
|
|
amqp_socket.c
|
|
amqp_socket.h
|
|
amqp_table.c
|
|
amqp_table.h
|
|
amqp_tcp_socket.c
|
|
amqp_time.c
|
|
amqp_time.h
|
|
amqp_url.c
|
|
)
|
|
|
|
set(RMQ_LIBRARIES ${AMQP_SSL_LIBS} ${SOCKET_LIBRARIES} ${LIBRT} ${CMAKE_THREAD_LIBS_INIT})
|
|
|
|
if(BUILD_SHARED_LIBS)
|
|
if (NOT APPLE)
|
|
set(CMAKE_INSTALL_RPATH $ORIGIN)
|
|
endif()
|
|
|
|
add_library(rabbitmq SHARED)
|
|
set(RMQ_GEN_EXPORT_TARGET rabbitmq)
|
|
|
|
target_sources(rabbitmq PRIVATE ${RMQ_SOURCES})
|
|
|
|
target_include_directories(rabbitmq
|
|
PUBLIC ${PUBLIC_INCLUDE_DIRS}
|
|
PRIVATE ${PRIVATE_INCLUDE_DIRS}
|
|
)
|
|
|
|
target_compile_definitions(rabbitmq PRIVATE -DHAVE_CONFIG_H)
|
|
|
|
target_link_libraries(rabbitmq PRIVATE ${RMQ_LIBRARIES})
|
|
|
|
set_target_properties(rabbitmq PROPERTIES
|
|
VERSION ${RMQ_VERSION}
|
|
SOVERSION ${RMQ_SOVERSION}
|
|
)
|
|
|
|
if (APPLE)
|
|
set_target_properties(rabbitmq PROPERTIES
|
|
MACHO_CURRENT_VERSION ${RMQ_SOVERSION}.${RMQ_SOVERSION_AGE}.${RMQ_SOVERSION_REVISION}
|
|
MACHO_COMPATIBILITY_VERSION ${RMQ_SOVERSION}
|
|
)
|
|
endif()
|
|
|
|
if (WIN32)
|
|
set_target_properties(rabbitmq PROPERTIES OUTPUT_NAME rabbitmq.${RMQ_SOVERSION})
|
|
endif()
|
|
|
|
install(TARGETS rabbitmq EXPORT "${targets_export_name}"
|
|
RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR}
|
|
COMPONENT rabbitmq-c-runtime
|
|
LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR}
|
|
COMPONENT rabbitmq-c-runtime
|
|
NAMELINK_COMPONENT rabbitmq-c-development
|
|
ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR}
|
|
COMPONENT rabbitmq-c-development
|
|
)
|
|
|
|
add_library(rabbitmq::rabbitmq ALIAS rabbitmq)
|
|
endif()
|
|
|
|
if(BUILD_STATIC_LIBS)
|
|
add_library(rabbitmq-static STATIC)
|
|
|
|
target_sources(rabbitmq-static PRIVATE ${RMQ_SOURCES})
|
|
if (NOT BUILD_SHARED_LIBS)
|
|
set(RMQ_GEN_EXPORT_TARGET rabbitmq-static)
|
|
endif()
|
|
|
|
target_include_directories(rabbitmq-static
|
|
PUBLIC ${PUBLIC_INCLUDE_DIRS}
|
|
PRIVATE ${PRIVATE_INCLUDE_DIRS}
|
|
)
|
|
|
|
target_compile_definitions(rabbitmq-static
|
|
PUBLIC -DAMQP_STATIC
|
|
PRIVATE -DHAVE_CONFIG_H
|
|
)
|
|
|
|
target_link_libraries(rabbitmq-static PRIVATE ${RMQ_LIBRARIES})
|
|
|
|
set_target_properties(rabbitmq-static PROPERTIES
|
|
VERSION ${RMQ_VERSION}
|
|
SOVERSION ${RMQ_SOVERSION}
|
|
)
|
|
|
|
if (APPLE)
|
|
set_target_properties(rabbitmq-static PROPERTIES
|
|
MACHO_CURRENT_VERSION ${RMQ_SOVERSION}.${RMQ_SOVERSION_AGE}.${RMQ_SOVERSION_REVISION}
|
|
MACHO_COMPATIBILITY_VERSION ${RMQ_SOVERSION}
|
|
)
|
|
endif()
|
|
|
|
if (WIN32)
|
|
set_target_properties(rabbitmq-static PROPERTIES OUTPUT_NAME librabbitmq.${RMQ_SOVERSION})
|
|
else()
|
|
set_target_properties(rabbitmq-static PROPERTIES OUTPUT_NAME rabbitmq)
|
|
endif()
|
|
|
|
if(INSTALL_STATIC_LIBS)
|
|
install(TARGETS rabbitmq-static EXPORT "${targets_export_name}"
|
|
ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR}
|
|
COMPONENT rabbitmq-c-development
|
|
)
|
|
endif()
|
|
|
|
add_library(rabbitmq::rabbitmq-static ALIAS rabbitmq-static)
|
|
endif()
|
|
|
|
include(GenerateExportHeader)
|
|
generate_export_header(${RMQ_GEN_EXPORT_TARGET}
|
|
BASE_NAME AMQP
|
|
EXPORT_FILE_NAME ${CMAKE_CURRENT_BINARY_DIR}/../include/rabbitmq-c/export.h
|
|
STATIC_DEFINE AMQP_STATIC
|
|
INCLUDE_GUARD_NAME RABBITMQ_C_EXPORT_H
|
|
)
|
|
|
|
install(FILES
|
|
../include/amqp.h
|
|
../include/amqp_framing.h
|
|
../include/amqp_tcp_socket.h
|
|
${AMQP_SSL_SOCKET_SHIM_PATH}
|
|
DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}
|
|
COMPONENT rabbitmq-c-development
|
|
)
|
|
|
|
install(FILES
|
|
../include/rabbitmq-c/amqp.h
|
|
../include/rabbitmq-c/framing.h
|
|
../include/rabbitmq-c/tcp_socket.h
|
|
${AMQP_SSL_SOCKET_H_PATH}
|
|
${CMAKE_CURRENT_BINARY_DIR}/../include/rabbitmq-c/export.h
|
|
DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}/rabbitmq-c
|
|
COMPONENT rabbitmq-c-development
|
|
)
|