bd7e907798
- Replace first patch - Drop second and third patches (already in version) https://github.com/redis/hiredis/blob/v1.1.0/CHANGELOG.md Signed-off-by: Fabrice Fontaine <fontaine.fabrice@gmail.com> Signed-off-by: Peter Korsgaard <peter@korsgaard.com>
172 lines
6.3 KiB
Diff
172 lines
6.3 KiB
Diff
From 286ba29771611abfaf126527141cac1d406c7eaf Mon Sep 17 00:00:00 2001
|
|
From: Fabrice Fontaine <fontaine.fabrice@gmail.com>
|
|
Date: Thu, 22 Dec 2022 23:00:56 +0100
|
|
Subject: [PATCH] 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>
|
|
[Upstream status: https://github.com/redis/hiredis/pull/1147]
|
|
---
|
|
CMakeLists.txt | 70 ++++++++++++++++++++++++++++++++++----------------
|
|
1 file changed, 48 insertions(+), 22 deletions(-)
|
|
|
|
diff --git a/CMakeLists.txt b/CMakeLists.txt
|
|
index 3d52d0c..66a1383 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,7 +118,7 @@ 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}
|
|
@@ -161,39 +176,50 @@ 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)
|
|
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}
|
|
@@ -236,10 +262,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)
|
|
--
|
|
2.35.1
|
|
|