summaryrefslogtreecommitdiff
path: root/CMakeLists.txt
diff options
context:
space:
mode:
authorFabrice Fontaine <fontaine.fabrice@gmail.com>2022-12-22 23:00:56 +0100
committerMichael Grunder <michael.grunder@gmail.com>2022-12-27 11:24:55 -0800
commitacd09461d3c796751a0ea07ea69d81e7ce264320 (patch)
treee870313bc3ef32c6094e7b16b11efcd86fc2f0df /CMakeLists.txt
parent97fcf0fd1ab74d6c943db0384efb81994ac67d58 (diff)
CMakeLists.txt: respect BUILD_SHARED_LIBS
To allow building hiredis on toolchain without dynamic library support, respect standard cmake BUILD_SHARED_LIBS: https://cmake.org/cmake/help/latest/variable/BUILD_SHARED_LIBS.html Signed-off-by: Fabrice Fontaine <fontaine.fabrice@gmail.com>
Diffstat (limited to 'CMakeLists.txt')
-rw-r--r--CMakeLists.txt78
1 files changed, 53 insertions, 25 deletions
diff --git a/CMakeLists.txt b/CMakeLists.txt
index 3d52d0c..f05caf2 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -1,5 +1,6 @@
CMAKE_MINIMUM_REQUIRED(VERSION 3.0.0)
+OPTION(BUILD_SHARED_LIBS "Build shared libraries" ON)
OPTION(ENABLE_SSL "Build hiredis_ssl for SSL support" OFF)
OPTION(DISABLE_TESTS "If tests should be compiled or not" OFF)
OPTION(ENABLE_SSL_TESTS "Should we test SSL connections" OFF)
@@ -44,35 +45,49 @@ IF(WIN32)
ADD_DEFINITIONS(-D_CRT_SECURE_NO_WARNINGS -DWIN32_LEAN_AND_MEAN)
ENDIF()
-ADD_LIBRARY(hiredis SHARED ${hiredis_sources})
ADD_LIBRARY(hiredis_static STATIC ${hiredis_sources})
-ADD_LIBRARY(hiredis::hiredis ALIAS hiredis)
ADD_LIBRARY(hiredis::hiredis_static ALIAS hiredis_static)
+SET(HIREDIS_DEFAULT_LIBRARY hiredis_static)
+SET(HIREDIS_TARGETS hiredis_static)
IF(NOT MSVC)
SET_TARGET_PROPERTIES(hiredis_static
PROPERTIES OUTPUT_NAME hiredis)
ENDIF()
-SET_TARGET_PROPERTIES(hiredis
- PROPERTIES WINDOWS_EXPORT_ALL_SYMBOLS TRUE
- VERSION "${HIREDIS_SONAME}")
+IF(BUILD_SHARED_LIBS)
+ ADD_LIBRARY(hiredis SHARED ${hiredis_sources})
+ ADD_LIBRARY(hiredis::hiredis ALIAS hiredis)
+ SET(HIREDIS_DEFAULT_LIBRARY hiredis)
+ SET(HIREDIS_TARGETS ${HIREDIS_TARGETS} hiredis)
+ SET_TARGET_PROPERTIES(hiredis
+ PROPERTIES WINDOWS_EXPORT_ALL_SYMBOLS TRUE
+ VERSION "${HIREDIS_SONAME}")
+ENDIF()
IF(MSVC)
SET_TARGET_PROPERTIES(hiredis_static
PROPERTIES COMPILE_FLAGS /Z7)
ENDIF()
IF(WIN32 OR MINGW)
- TARGET_LINK_LIBRARIES(hiredis PUBLIC ws2_32 crypt32)
+ IF(BUILD_SHARED_LIBS)
+ TARGET_LINK_LIBRARIES(hiredis PUBLIC ws2_32 crypt32)
+ ENDIF()
TARGET_LINK_LIBRARIES(hiredis_static PUBLIC ws2_32 crypt32)
ELSEIF(CMAKE_SYSTEM_NAME MATCHES "FreeBSD")
- TARGET_LINK_LIBRARIES(hiredis PUBLIC m)
+ IF(BUILD_SHARED_LIBS)
+ TARGET_LINK_LIBRARIES(hiredis PUBLIC m)
+ ENDIF()
TARGET_LINK_LIBRARIES(hiredis_static PUBLIC m)
ELSEIF(CMAKE_SYSTEM_NAME MATCHES "SunOS")
- TARGET_LINK_LIBRARIES(hiredis PUBLIC socket)
+ IF(BUILD_SHARED_LIBS)
+ TARGET_LINK_LIBRARIES(hiredis PUBLIC socket)
+ ENDIF()
TARGET_LINK_LIBRARIES(hiredis_static PUBLIC socket)
ENDIF()
-TARGET_INCLUDE_DIRECTORIES(hiredis PUBLIC $<INSTALL_INTERFACE:include> $<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}>)
+IF(BUILD_SHARED_LIBS)
+ TARGET_INCLUDE_DIRECTORIES(hiredis PUBLIC $<INSTALL_INTERFACE:include> $<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}>)
+ENDIF()
TARGET_INCLUDE_DIRECTORIES(hiredis_static PUBLIC $<INSTALL_INTERFACE:include> $<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}>)
CONFIGURE_FILE(hiredis.pc.in hiredis.pc @ONLY)
@@ -103,13 +118,13 @@ set(CPACK_RPM_PACKAGE_AUTOREQPROV ON)
include(CPack)
-INSTALL(TARGETS hiredis hiredis_static
+INSTALL(TARGETS ${HIREDIS_TARGETS}
EXPORT hiredis-targets
RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR}
LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR}
ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR})
-if (MSVC)
+if (MSVC AND BUILD_SHARED_LIBS)
INSTALL(FILES $<TARGET_PDB_FILE:hiredis>
DESTINATION ${CMAKE_INSTALL_BINDIR}
CONFIGURATIONS Debug RelWithDebInfo)
@@ -161,45 +176,58 @@ IF(ENABLE_SSL)
FIND_PACKAGE(OpenSSL REQUIRED)
SET(hiredis_ssl_sources
ssl.c)
- ADD_LIBRARY(hiredis_ssl SHARED
- ${hiredis_ssl_sources})
+
ADD_LIBRARY(hiredis_ssl_static STATIC
${hiredis_ssl_sources})
+ SET(HIREDIS_SSL_DEFAULT_LIBRARY hiredis_ssl_static)
+ SET(HIREDIS_SSL_TARGETS hiredis_ssl_static)
+ IF(BUILD_SHARED_LIBS)
+ ADD_LIBRARY(hiredis_ssl SHARED
+ ${hiredis_ssl_sources})
+ SET(HIREDIS_SSL_DEFAULT_LIBRARY hiredis_ssl)
+ SET(HIREDIS_SSL_TARGETS ${HIREDIS_SSL_TARGETS} hiredis_ssl)
+ ENDIF()
IF(NOT MSVC)
SET_TARGET_PROPERTIES(hiredis_ssl_static
PROPERTIES OUTPUT_NAME hiredis_ssl)
ENDIF()
- IF (APPLE)
+ IF (APPLE AND BUILD_SHARED_LIBS)
SET_PROPERTY(TARGET hiredis_ssl PROPERTY LINK_FLAGS "-Wl,-undefined -Wl,dynamic_lookup")
ENDIF()
- SET_TARGET_PROPERTIES(hiredis_ssl
- PROPERTIES
- WINDOWS_EXPORT_ALL_SYMBOLS TRUE
- VERSION "${HIREDIS_SONAME}")
+ IF(BUILD_SHARED_LIBS)
+ SET_TARGET_PROPERTIES(hiredis_ssl
+ PROPERTIES
+ WINDOWS_EXPORT_ALL_SYMBOLS TRUE
+ VERSION "${HIREDIS_SONAME}")
+ ENDIF()
IF(MSVC)
SET_TARGET_PROPERTIES(hiredis_ssl_static
PROPERTIES COMPILE_FLAGS /Z7)
ENDIF()
- TARGET_INCLUDE_DIRECTORIES(hiredis_ssl PRIVATE "${OPENSSL_INCLUDE_DIR}")
TARGET_INCLUDE_DIRECTORIES(hiredis_ssl_static PRIVATE "${OPENSSL_INCLUDE_DIR}")
+ IF(BUILD_SHARED_LIBS)
+ TARGET_INCLUDE_DIRECTORIES(hiredis_ssl PRIVATE "${OPENSSL_INCLUDE_DIR}")
+ TARGET_LINK_LIBRARIES(hiredis_ssl PRIVATE ${OPENSSL_LIBRARIES})
+ ENDIF()
- TARGET_LINK_LIBRARIES(hiredis_ssl PRIVATE ${OPENSSL_LIBRARIES})
IF (WIN32 OR MINGW)
- TARGET_LINK_LIBRARIES(hiredis_ssl PRIVATE hiredis)
+ IF (BUILD_SHARED_LIBS)
+ TARGET_LINK_LIBRARIES(hiredis_ssl PRIVATE hiredis)
+ ENDIF()
TARGET_LINK_LIBRARIES(hiredis_ssl_static PUBLIC hiredis_static)
ENDIF()
CONFIGURE_FILE(hiredis_ssl.pc.in hiredis_ssl.pc @ONLY)
- INSTALL(TARGETS hiredis_ssl hiredis_ssl_static
+ INSTALL(TARGETS ${HIREDIS_SSL_TARGETS}
EXPORT hiredis_ssl-targets
RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR}
LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR}
ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR})
- if (MSVC)
+ if (MSVC AND BUILD_SHARED_LIBS)
INSTALL(FILES $<TARGET_PDB_FILE:hiredis_ssl>
DESTINATION ${CMAKE_INSTALL_BINDIR}
CONFIGURATIONS Debug RelWithDebInfo)
@@ -236,10 +264,10 @@ ENDIF()
IF(NOT DISABLE_TESTS)
ENABLE_TESTING()
ADD_EXECUTABLE(hiredis-test test.c)
- TARGET_LINK_LIBRARIES(hiredis-test hiredis)
+ TARGET_LINK_LIBRARIES(hiredis-test ${HIREDIS_DEFAULT_LIBRARY})
IF(ENABLE_SSL_TESTS)
ADD_DEFINITIONS(-DHIREDIS_TEST_SSL=1)
- TARGET_LINK_LIBRARIES(hiredis-test hiredis_ssl)
+ TARGET_LINK_LIBRARIES(hiredis-test ${HIREDIS_SSL_DEFAULT_LIBRARY})
ENDIF()
IF(ENABLE_ASYNC_TESTS)
ADD_DEFINITIONS(-DHIREDIS_TEST_ASYNC=1)