From 141c21ae2b512ebf83a1a41d6ab4def4ee5afc1e Mon Sep 17 00:00:00 2001 From: Simon Ninon Date: Sun, 19 Mar 2017 21:26:38 -0700 Subject: [PATCH 1/6] download deps from cmakelist --- CMakeLists.txt | 25 ++++++++++++------------- examples/CMakeLists.txt | 9 +++++++-- install_deps.sh | 12 ------------ tacopie | 2 +- tests/CMakeLists.txt | 11 ++++++++--- 5 files changed, 28 insertions(+), 31 deletions(-) delete mode 100755 install_deps.sh diff --git a/CMakeLists.txt b/CMakeLists.txt index d0399013..a0084555 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -25,6 +25,7 @@ ### cmake_minimum_required(VERSION 2.8.7) set(CMAKE_MACOSX_RPATH 1) +include(${CMAKE_ROOT}/Modules/ExternalProject.cmake) ### @@ -51,7 +52,7 @@ IF (WIN32) IF ("${MSVC_RUNTIME_LIBRARY_CONFIG}" STREQUAL "") set(MSVC_RUNTIME_LIBRARY_CONFIG "/MT") - ENDIF() + ENDIF() foreach (flag_var CMAKE_CXX_FLAGS CMAKE_CXX_FLAGS_DEBUG CMAKE_CXX_FLAGS_RELEASE) IF ("${MSVC_RUNTIME_LIBRARY_CONFIG}" STREQUAL "/MT") @@ -75,20 +76,15 @@ ENDIF (WIN32) ### # variables ### -# gtest -set(GTEST_INCLUDES ${PROJECT_SOURCE_DIR}/deps/src/googletest/googletest/include) -# cpp_redis set(CPP_REDIS_INCLUDES ${PROJECT_SOURCE_DIR}/includes) -# tacopie -set(TACOPIE_FOLDER ${PROJECT_SOURCE_DIR}/tacopie) -set(TACOPIE_INCLUDES ${TACOPIE_FOLDER}/includes) +set(DEPS_INCLUDES ${PROJECT_SOURCE_DIR}/deps/include) +set(DEPS_LIBRARIES ${PROJECT_SOURCE_DIR}/deps/lib) ### # includes ### -include_directories(${CPP_REDIS_INCLUDES} - ${TACOPIE_INCLUDES}) +include_directories(${CPP_REDIS_INCLUDES} ${DEPS_INCLUDES}) ### @@ -156,7 +152,10 @@ install (DIRECTORY ${CPP_REDIS_INCLUDES}/ DESTINATION include USE_SOURCE_PERMISS ### # tacopie ### -add_subdirectory(tacopie) +ExternalProject_Add("tacopie" + GIT_SUBMODULES "" + CMAKE_ARGS "-DCMAKE_INSTALL_PREFIX=${PROJECT_SOURCE_DIR}/deps" + SOURCE_DIR "${PROJECT_SOURCE_DIR}/tacopie") ### @@ -171,7 +170,7 @@ ENDIF(BUILD_EXAMPLES) ### IF (BUILD_TESTS) add_subdirectory(tests) - IF (EXISTS ${PROJECT_SOURCE_DIR}/deps/src/googletest) - add_subdirectory(${PROJECT_SOURCE_DIR}/deps/src/googletest) - ENDIF () + ExternalProject_Add("googletest" + GIT_REPOSITORY "https://github.com/google/googletest.git" + CMAKE_ARGS "-DCMAKE_INSTALL_PREFIX=${PROJECT_SOURCE_DIR}/deps") ENDIF(BUILD_TESTS) diff --git a/examples/CMakeLists.txt b/examples/CMakeLists.txt index ee829afc..0cb03930 100644 --- a/examples/CMakeLists.txt +++ b/examples/CMakeLists.txt @@ -31,8 +31,13 @@ ENDIF (NOT WIN32) ### # includes ### -include_directories(${PROJECT_SOURCE_DIR}/includes - ${CPP_REDIS_INCLUDES}) +include_directories(${CPP_REDIS_INCLUDES}) + + +### +# libraries +### +link_directories(${DEPS_LIBRARIES}) ### diff --git a/install_deps.sh b/install_deps.sh deleted file mode 100755 index c48fc987..00000000 --- a/install_deps.sh +++ /dev/null @@ -1,12 +0,0 @@ -#!/bin/sh - -DEPS_DIR=`pwd`/deps -DEPS_SRC_DIR=$DEPS_DIR/src - -# Create deps folder -mkdir -p $DEPS_SRC_DIR - -# GoogleTest -cd $DEPS_SRC_DIR -## Fetch the GoogleTest sources -git clone https://github.com/google/googletest.git diff --git a/tacopie b/tacopie index 8a3b0ede..69c78c65 160000 --- a/tacopie +++ b/tacopie @@ -1 +1 @@ -Subproject commit 8a3b0edee6021588cf90bde3744b9eb2957a65c1 +Subproject commit 69c78c6553d80f00b36ee412224cb95ac3e3dcdf diff --git a/tests/CMakeLists.txt b/tests/CMakeLists.txt index de745266..031974fa 100644 --- a/tests/CMakeLists.txt +++ b/tests/CMakeLists.txt @@ -38,9 +38,14 @@ ENDIF (NOT WIN32) ### # includes ### -include_directories(SYSTEM ${PROJECT_SOURCE_DIR}/includes - ${CPP_REDIS_INCLUDES} - ${GTEST_INCLUDES}) +include_directories(${DEPS_INCLUDES} ${CPP_REDIS_INCLUDES}) + + +### +# libraries +### +link_directories(${DEPS_LIBRARIES}) + ### # sources From f84d4871672fee65905fe7b7d1058c05802ce3b2 Mon Sep 17 00:00:00 2001 From: Simon Ninon Date: Sun, 19 Mar 2017 21:27:49 -0700 Subject: [PATCH 2/6] remove install-deps from travis --- .travis.yml | 1 - tacopie | 2 +- 2 files changed, 1 insertion(+), 2 deletions(-) diff --git a/.travis.yml b/.travis.yml index d7614e32..0f209129 100644 --- a/.travis.yml +++ b/.travis.yml @@ -27,7 +27,6 @@ before_install: install: - if [ "$CXX" = "g++" ]; then export CXX="g++-4.8" CC="gcc-4.8"; fi - - ./install_deps.sh - if [[ "$TRAVIS_OS_NAME" == "osx" ]]; then brew install redis; fi - if [[ "$TRAVIS_OS_NAME" == "osx" ]]; then (redis-server&); fi diff --git a/tacopie b/tacopie index 69c78c65..94ed27f7 160000 --- a/tacopie +++ b/tacopie @@ -1 +1 @@ -Subproject commit 69c78c6553d80f00b36ee412224cb95ac3e3dcdf +Subproject commit 94ed27f7c1340c0fec01d6d1a13b8f0d37a89155 From a8f226c4ccf511affcf7af3278e3d40e4e46fe62 Mon Sep 17 00:00:00 2001 From: Simon Ninon Date: Sun, 19 Mar 2017 22:01:30 -0700 Subject: [PATCH 3/6] update tacopie ref --- tacopie | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tacopie b/tacopie index 94ed27f7..a413ec0b 160000 --- a/tacopie +++ b/tacopie @@ -1 +1 @@ -Subproject commit 94ed27f7c1340c0fec01d6d1a13b8f0d37a89155 +Subproject commit a413ec0b5be0c847da1ffa45f3a4a740687102a1 From 7d3ab9d980d33f220f80a979aafac0a3a509b47c Mon Sep 17 00:00:00 2001 From: Simon Ninon Date: Sun, 19 Mar 2017 23:21:36 -0700 Subject: [PATCH 4/6] fix windows compilation --- includes/cpp_redis/network/tcp_client.hpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/includes/cpp_redis/network/tcp_client.hpp b/includes/cpp_redis/network/tcp_client.hpp index 98f819eb..78273e84 100644 --- a/includes/cpp_redis/network/tcp_client.hpp +++ b/includes/cpp_redis/network/tcp_client.hpp @@ -62,7 +62,7 @@ class tcp_client : public tcp_client_iface { auto callback = std::move(request.async_read_callback); m_client.async_read({request.size, [=](tacopie::tcp_client::read_result& result) { - if (not callback) { + if (!callback) { return; } @@ -76,7 +76,7 @@ class tcp_client : public tcp_client_iface { auto callback = std::move(request.async_write_callback); m_client.async_write({std::move(request.buffer), [=](tacopie::tcp_client::write_result& result) { - if (not callback) { + if (!callback) { return; } From d71a0091e41a35bcbb01c51e0a96a83065cba8c0 Mon Sep 17 00:00:00 2001 From: Simon Ninon Date: Sun, 19 Mar 2017 23:30:33 -0700 Subject: [PATCH 5/6] update tacopie ref --- tacopie | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tacopie b/tacopie index a413ec0b..59a50f15 160000 --- a/tacopie +++ b/tacopie @@ -1 +1 @@ -Subproject commit a413ec0b5be0c847da1ffa45f3a4a740687102a1 +Subproject commit 59a50f151a180de2a07881146f4e32a2d14879a0 From ffdb6856ba9c8c6d356df1d0101299892a0e44df Mon Sep 17 00:00:00 2001 From: Simon Ninon Date: Mon, 20 Mar 2017 00:25:00 -0700 Subject: [PATCH 6/6] make network module optional - update ref to tacopie --- CMakeLists.txt | 23 ++++++++++++++++++----- sources/network/redis_connection.cpp | 9 +++++++-- tacopie | 2 +- 3 files changed, 26 insertions(+), 8 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index a0084555..f6408353 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -79,7 +79,9 @@ ENDIF (WIN32) set(CPP_REDIS_INCLUDES ${PROJECT_SOURCE_DIR}/includes) set(DEPS_INCLUDES ${PROJECT_SOURCE_DIR}/deps/include) set(DEPS_LIBRARIES ${PROJECT_SOURCE_DIR}/deps/lib) - +IF ("${USE_TACOPIE}" STREQUAL "") + set(USE_TACOPIE "true") +ENDIF () ### # includes @@ -100,6 +102,10 @@ foreach(dir ${SRC_DIRS}) # set sources set(SOURCES ${SOURCES} ${s_${dir}} ${h_${dir}} ${i_${dir}}) endforeach() +# filter tcp_client if no tacopie +IF (NOT USE_TACOPIE) + list(REMOVE_ITEM SRC_DIRS "source/network/tcp_client.cpp" "include/cpp_redis/network/tcp_client.hpp") +ENDIF (NOT USE_TACOPIE) ### @@ -136,6 +142,11 @@ IF (LOGGING_ENABLED) set_target_properties(${PROJECT} PROPERTIES COMPILE_DEFINITIONS "__CPP_REDIS_LOGGING_ENABLED=${LOGGING_ENABLED}") ENDIF (LOGGING_ENABLED) +# __CPP_REDIS_USE_TACOPIE +IF (USE_TACOPIE) + set_target_properties(${PROJECT} PROPERTIES COMPILE_DEFINITIONS "__CPP_REDIS_USE_TACOPIE=${USE_TACOPIE}") +ENDIF (USE_TACOPIE) + ### # install @@ -152,10 +163,12 @@ install (DIRECTORY ${CPP_REDIS_INCLUDES}/ DESTINATION include USE_SOURCE_PERMISS ### # tacopie ### -ExternalProject_Add("tacopie" - GIT_SUBMODULES "" - CMAKE_ARGS "-DCMAKE_INSTALL_PREFIX=${PROJECT_SOURCE_DIR}/deps" - SOURCE_DIR "${PROJECT_SOURCE_DIR}/tacopie") +IF (USE_TACOPIE) + ExternalProject_Add("tacopie" + GIT_SUBMODULES "" + CMAKE_ARGS "-DCMAKE_INSTALL_PREFIX=${PROJECT_SOURCE_DIR}/deps" + SOURCE_DIR "${PROJECT_SOURCE_DIR}/tacopie") +ENDIF (USE_TACOPIE) ### diff --git a/sources/network/redis_connection.cpp b/sources/network/redis_connection.cpp index 56cf8027..6667ad9d 100644 --- a/sources/network/redis_connection.cpp +++ b/sources/network/redis_connection.cpp @@ -22,17 +22,22 @@ #include #include -#include #include -#include +#ifdef __CPP_REDIS_USE_TACOPIE +#include +#endif /* __CPP_REDIS_USE_TACOPIE */ namespace cpp_redis { namespace network { std::function()> get_tcp_client = []() -> std::shared_ptr { +#ifdef __CPP_REDIS_USE_TACOPIE return std::make_shared(); +#else + return nullptr; +#endif /* __CPP_REDIS_USE_TACOPIE */ }; redis_connection::redis_connection(void) diff --git a/tacopie b/tacopie index 59a50f15..64443c83 160000 --- a/tacopie +++ b/tacopie @@ -1 +1 @@ -Subproject commit 59a50f151a180de2a07881146f4e32a2d14879a0 +Subproject commit 64443c83c01a7f25336bee527b23591a6e12a2ce