fix #132: build static libs
[awesomized/libmemcached] / src / libhashkit / CMakeLists.txt
index ffe4026b69bf4d48e81c06bfad0e974652e48386..9ed0a3acddd4c68c1fd05df086b2fe5216c731c5 100644 (file)
@@ -1,13 +1,6 @@
-if(HAVE_HSIEH_HASH)
-    set(HSIEH_CC hsieh.cc)
-else()
-    set(HSIEH_CC nohsieh.cc)
-endif()
-
-add_library(libhashkit SHARED
+set(libhashkit_sources
         aes.cc
         algorithm.cc
-        behavior.cc
         common.h
         crc32.cc
         digest.cc
@@ -17,25 +10,25 @@ add_library(libhashkit SHARED
         function.cc
         has.cc
         hashkit.cc
-        ${HSIEH_CC}
+        hsieh.cc
         jenkins.cc
-        ketama.cc
         md5.cc
         murmur.cc
         murmur3.cc
         murmur3_api.cc
         one_at_a_time.cc
-        rijndael.cc
         str_algorithm.cc
         strerror.cc
         string.cc
         )
+add_library(libhashkit)
 add_library(hashkit ALIAS libhashkit)
 set_target_properties(libhashkit PROPERTIES
+        CXX_STANDARD ${CXX_STANDARD}
         LIBRARY_OUTPUT_NAME hashkit
         LIBRARY_OUTPUT_NAME_DEBUG hashkit-dbg
-        SOVERSION ${LIBHASHKIT_SO_VERSION}
-        VERSION v${LIBHASHKIT_VERSION})
+        SOVERSION ${LIBHASHKIT_SO_SOVERSION}
+        VERSION ${LIBHASHKIT_SO_VERSION})
 target_compile_options(libhashkit PRIVATE -DBUILDING_HASHKIT)
 target_include_directories(libhashkit PRIVATE
         ${CMAKE_SOURCE_DIR}/src
@@ -45,15 +38,43 @@ target_include_directories(libhashkit PUBLIC
         $<BUILD_INTERFACE:${CMAKE_SOURCE_DIR}/include>
         $<BUILD_INTERFACE:${CMAKE_BINARY_DIR}/include>
         $<INSTALL_INTERFACE:include>)
+
+if(ENABLE_OPENSSL_CRYPTO)
+        find_package(OpenSSL)
+        if(OPENSSL_FOUND)
+                if(OPENSSL_CRYPTO_LIBRARY)
+                        target_compile_definitions(libhashkit PRIVATE HAVE_OPENSSL_CRYPTO)
+                        target_link_libraries(libhashkit PUBLIC OpenSSL::Crypto)
+                        pkgconfig_export(REQUIRES_PRIVATE libcrypto)
+                else()
+                        message(WARNING "Could not find OpenSSL::Crypto")
+                endif()
+        endif()
+endif()
+
+if (NOT OPENSSL_CRYPTO_LIBRARY)
+        set (libhashkit_sources ${libhashkit_sources} rijndael.cc)
+endif()
+
 configure_file(hashkitcon.h.in hashkitcon.h @ONLY)
 
 install(TARGETS libhashkit EXPORT libhashkit-targets
-        LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR})
+        RUNTIME COMPONENT bin DESTINATION ${CMAKE_INSTALL_BINDIR}
+        ARCHIVE COMPONENT lib DESTINATION ${CMAKE_INSTALL_LIBDIR}
+        LIBRARY COMPONENT lib DESTINATION ${CMAKE_INSTALL_LIBDIR}
+        ${TARGET_NAMELINK_COMPONENT}
+        )
 export(EXPORT libhashkit-targets NAMESPACE libmemcached::)
-install(EXPORT libhashkit-targets NAMESPACE libmemcached:: DESTINATION ${CMAKE_INSTALL_DATADIR}/${PROJECT_NAME}/cmake)
+install(EXPORT libhashkit-targets NAMESPACE libmemcached::
+        COMPONENT dev
+        DESTINATION ${CMAKE_INSTALL_LIBDIR}/cmake/${PROJECT_NAME})
 
 install_public_headers(
         libhashkit
 
         hashkit.h
         )
+
+target_sources(libhashkit PRIVATE
+        ${libhashkit_sources}
+        ${libhashkit_includes})