summaryrefslogtreecommitdiff
path: root/CMakeLists.txt
diff options
context:
space:
mode:
authorMichael Grunder <michael.grunder@gmail.com>2020-04-09 08:05:14 -0700
committerGitHub <noreply@github.com>2020-04-09 08:05:14 -0700
commitec08c2b94a6d2e3f3572dfdac734fb8a92682ac8 (patch)
tree0a47e95eec8ad6f9dc31b03c8c2fe3dc55a66e01 /CMakeLists.txt
parentb314c0df3d05b362d484fffe5cc03ca98584e084 (diff)
Added CMake package config and fixed hiredis_ssl on Windows (#783)
* Add CMake package configuration so hiredis can be more easily included in other projects. * Fixes hiredis_ssl such that it compiles and works in windows Co-authored-by: nrivera <nrivera@blizzard.com> Co-authored-by: Nick <heronr1@gmail.com>
Diffstat (limited to 'CMakeLists.txt')
-rw-r--r--CMakeLists.txt67
1 files changed, 62 insertions, 5 deletions
diff --git a/CMakeLists.txt b/CMakeLists.txt
index 04a03ee..b402b3d 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -33,6 +33,12 @@ SET(hiredis_sources
sockcompat.c
alloc.c)
+SET(hiredis_sources ${hiredis_sources})
+
+IF(WIN32)
+ ADD_COMPILE_DEFINITIONS(_CRT_SECURE_NO_WARNINGS WIN32_LEAN_AND_MEAN)
+ENDIF()
+
ADD_LIBRARY(hiredis SHARED ${hiredis_sources})
SET_TARGET_PROPERTIES(hiredis
@@ -41,12 +47,16 @@ SET_TARGET_PROPERTIES(hiredis
IF(WIN32 OR MINGW)
TARGET_LINK_LIBRARIES(hiredis PRIVATE ws2_32)
ENDIF()
-TARGET_INCLUDE_DIRECTORIES(hiredis PUBLIC .)
+
+TARGET_INCLUDE_DIRECTORIES(hiredis PUBLIC $<INSTALL_INTERFACE:.> $<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}>)
CONFIGURE_FILE(hiredis.pc.in hiredis.pc @ONLY)
INSTALL(TARGETS hiredis
- DESTINATION "${CMAKE_INSTALL_LIBDIR}")
+ EXPORT hiredis-targets
+ RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR}
+ LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR}
+ ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR})
INSTALL(FILES hiredis.h read.h sds.h async.h alloc.h
DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}/hiredis)
@@ -57,6 +67,26 @@ INSTALL(DIRECTORY adapters
INSTALL(FILES ${CMAKE_CURRENT_BINARY_DIR}/hiredis.pc
DESTINATION ${CMAKE_INSTALL_LIBDIR}/pkgconfig)
+export(EXPORT hiredis-targets
+ FILE "${CMAKE_CURRENT_BINARY_DIR}/hiredis-targets.cmake"
+ NAMESPACE hiredis::)
+
+SET(CMAKE_CONF_INSTALL_DIR share/hiredis)
+SET(INCLUDE_INSTALL_DIR include)
+include(CMakePackageConfigHelpers)
+configure_package_config_file(hiredis-config.cmake.in ${CMAKE_CURRENT_BINARY_DIR}/hiredis-config.cmake
+ INSTALL_DESTINATION ${CMAKE_CONF_INSTALL_DIR}
+ PATH_VARS INCLUDE_INSTALL_DIR)
+
+INSTALL(EXPORT hiredis-targets
+ FILE hiredis-targets.cmake
+ NAMESPACE hiredis::
+ DESTINATION ${CMAKE_CONF_INSTALL_DIR})
+
+INSTALL(FILES ${CMAKE_CURRENT_BINARY_DIR}/hiredis-config.cmake
+ DESTINATION ${CMAKE_CONF_INSTALL_DIR})
+
+
IF(ENABLE_SSL)
IF (NOT OPENSSL_ROOT_DIR)
IF (APPLE)
@@ -64,23 +94,50 @@ IF(ENABLE_SSL)
ENDIF()
ENDIF()
FIND_PACKAGE(OpenSSL REQUIRED)
- ADD_LIBRARY(hiredis_ssl SHARED
+ SET(hiredis_ssl_sources
ssl.c)
+ ADD_LIBRARY(hiredis_ssl SHARED
+ ${hiredis_ssl_sources})
SET_TARGET_PROPERTIES(hiredis_ssl
- PROPERTIES
+ PROPERTIES WINDOWS_EXPORT_ALL_SYMBOLS TRUE
VERSION "${HIREDIS_SONAME}")
+
+
TARGET_INCLUDE_DIRECTORIES(hiredis_ssl PRIVATE "${OPENSSL_INCLUDE_DIR}")
TARGET_LINK_LIBRARIES(hiredis_ssl PRIVATE ${OPENSSL_LIBRARIES})
+ IF (WIN32 OR MINGW)
+ TARGET_LINK_LIBRARIES(hiredis_ssl PRIVATE hiredis)
+ ENDIF()
CONFIGURE_FILE(hiredis_ssl.pc.in hiredis_ssl.pc @ONLY)
INSTALL(TARGETS hiredis_ssl
- DESTINATION "${CMAKE_INSTALL_LIBDIR}")
+ EXPORT hiredis_ssl-targets
+ RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR}
+ LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR}
+ ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR})
INSTALL(FILES hiredis_ssl.h
DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}/hiredis)
INSTALL(FILES ${CMAKE_CURRENT_BINARY_DIR}/hiredis_ssl.pc
DESTINATION ${CMAKE_INSTALL_LIBDIR}/pkgconfig)
+
+ export(EXPORT hiredis_ssl-targets
+ FILE "${CMAKE_CURRENT_BINARY_DIR}/hiredis_ssl-targets.cmake"
+ NAMESPACE hiredis::)
+
+ SET(CMAKE_CONF_INSTALL_DIR share/hiredis_ssl)
+ configure_package_config_file(hiredis_ssl-config.cmake.in ${CMAKE_CURRENT_BINARY_DIR}/hiredis_ssl-config.cmake
+ INSTALL_DESTINATION ${CMAKE_CONF_INSTALL_DIR}
+ PATH_VARS INCLUDE_INSTALL_DIR)
+
+ INSTALL(EXPORT hiredis_ssl-targets
+ FILE hiredis_ssl-targets.cmake
+ NAMESPACE hiredis::
+ DESTINATION ${CMAKE_CONF_INSTALL_DIR})
+
+ INSTALL(FILES ${CMAKE_CURRENT_BINARY_DIR}/hiredis_ssl-config.cmake
+ DESTINATION ${CMAKE_CONF_INSTALL_DIR})
ENDIF()
IF(NOT DISABLE_TESTS)