diff options
Diffstat (limited to 'ports/cpp-redis')
| -rw-r--r-- | ports/cpp-redis/CONTROL | 4 | ||||
| -rw-r--r-- | ports/cpp-redis/portfile.cmake | 59 | ||||
| -rw-r--r-- | ports/cpp-redis/tacopie/CMakeLists.txt | 8 |
3 files changed, 71 insertions, 0 deletions
diff --git a/ports/cpp-redis/CONTROL b/ports/cpp-redis/CONTROL new file mode 100644 index 000000000..5f001f04d --- /dev/null +++ b/ports/cpp-redis/CONTROL @@ -0,0 +1,4 @@ +Source: cpp-redis +Version: 4.3.1 +Build-Depends: tacopie +Description: cpp-redis is a C++11 Asynchronous Multi-Platform Lightweight Redis Client, with support for synchronous operations and pipelining. diff --git a/ports/cpp-redis/portfile.cmake b/ports/cpp-redis/portfile.cmake new file mode 100644 index 000000000..9187e344f --- /dev/null +++ b/ports/cpp-redis/portfile.cmake @@ -0,0 +1,59 @@ +include(vcpkg_common_functions) + +vcpkg_from_github( + OUT_SOURCE_PATH SOURCE_PATH + REPO Cylix/cpp_redis + REF 4.3.1 + SHA512 abf372542c53f37f504b3211b840b100d07a8f4b2e7f5584cc7550ab16ed617838e2df79064374c7a409458d8567f4834686318ea3a40249c767e36c744c7a47 + HEAD_REF master +) + +file(COPY ${CMAKE_CURRENT_LIST_DIR}/tacopie/CMakeLists.txt DESTINATION ${SOURCE_PATH}/tacopie) + +if(VCPKG_CRT_LINKAGE STREQUAL "dynamic") + set(MSVC_RUNTIME_LIBRARY_CONFIG "/MD") +else() + set(MSVC_RUNTIME_LIBRARY_CONFIG "/MT") +endif() + +# cpp-redis forcibly removes "/RTC1" in its cmake file. Because this is an ABI-sensitive flag, we need to re-add it in a form that won't be detected. +set(VCPKG_CXX_FLAGS_DEBUG "${VCPKG_CXX_FLAGS_DEBUG} -RTC1") +set(VCPKG_C_FLAGS_DEBUG "${VCPKG_C_FLAGS_DEBUG} -RTC1") + +vcpkg_configure_cmake( + SOURCE_PATH ${SOURCE_PATH} + PREFER_NINJA + OPTIONS + -DMSVC_RUNTIME_LIBRARY_CONFIG=${MSVC_RUNTIME_LIBRARY_CONFIG} + -DCMAKE_WINDOWS_EXPORT_ALL_SYMBOLS=TRUE +) + +vcpkg_install_cmake() + +file(REMOVE_RECURSE ${CURRENT_PACKAGES_DIR}/debug/include) + +file(GLOB_RECURSE FILES "${CURRENT_PACKAGES_DIR}/include/*") +foreach(file ${FILES}) + file(READ ${file} _contents) + string(REPLACE "ifndef __CPP_REDIS_USE_CUSTOM_TCP_CLIENT" "if 1" _contents "${_contents}") + if(VCPKG_LIBRARY_LINKAGE STREQUAL "dynamic") + string(REPLACE + "extern std::unique_ptr<logger_iface> active_logger;" + "extern __declspec(dllimport) std::unique_ptr<logger_iface> active_logger;" + _contents "${_contents}") + endif() + file(WRITE ${file} "${_contents}") +endforeach() + +file(GLOB FILES_TO_REMOVE "${CURRENT_PACKAGES_DIR}/debug/bin/cpp_redis.ilk" "${CURRENT_PACKAGES_DIR}/bin/cpp_redis.dll.manifest") +if(FILES_TO_REMOVE) + file(REMOVE_RECURSE ${FILES_TO_REMOVE}) +endif() + +file(INSTALL ${SOURCE_PATH}/LICENSE DESTINATION ${CURRENT_PACKAGES_DIR}/share/cpp-redis RENAME copyright) + +if(VCPKG_LIBRARY_LINKAGE STREQUAL "static") + file(REMOVE_RECURSE ${CURRENT_PACKAGES_DIR}/bin ${CURRENT_PACKAGES_DIR}/debug/bin) +endif() + +vcpkg_copy_pdbs() diff --git a/ports/cpp-redis/tacopie/CMakeLists.txt b/ports/cpp-redis/tacopie/CMakeLists.txt new file mode 100644 index 000000000..74959e2e1 --- /dev/null +++ b/ports/cpp-redis/tacopie/CMakeLists.txt @@ -0,0 +1,8 @@ +find_library(TACOPIE tacopie)
+find_path(TACOPIE_H tacopie/tacopie)
+
+message(STATUS "TACOPIE_H: ${TACOPIE_H}")
+
+add_library(tacopie INTERFACE)
+target_link_libraries(tacopie INTERFACE "${TACOPIE}")
+target_include_directories(tacopie INTERFACE "${TACOPIE_H}")
\ No newline at end of file |
