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/CMakeLists.txt b/CMakeLists.txt index d0399013..f6408353 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,17 @@ 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) +IF ("${USE_TACOPIE}" STREQUAL "") + set(USE_TACOPIE "true") +ENDIF () ### # includes ### -include_directories(${CPP_REDIS_INCLUDES} - ${TACOPIE_INCLUDES}) +include_directories(${CPP_REDIS_INCLUDES} ${DEPS_INCLUDES}) ### @@ -104,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) ### @@ -140,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 @@ -156,7 +163,12 @@ install (DIRECTORY ${CPP_REDIS_INCLUDES}/ DESTINATION include USE_SOURCE_PERMISS ### # tacopie ### -add_subdirectory(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) ### @@ -171,7 +183,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/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; } 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/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 8a3b0ede..64443c83 160000 --- a/tacopie +++ b/tacopie @@ -1 +1 @@ -Subproject commit 8a3b0edee6021588cf90bde3744b9eb2957a65c1 +Subproject commit 64443c83c01a7f25336bee527b23591a6e12a2ce 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