at v192 7.9 kB view raw
1diff --git a/CMakeLists.txt b/CMakeLists.txt 2index 8217cba..a6c1d70 100644 3--- a/CMakeLists.txt 4+++ b/CMakeLists.txt 5@@ -32,7 +32,7 @@ else(APPLE) 6 endif(${BUILD_FOR_ARM}) 7 endif(APPLE) 8 9-set(CMAKE_CXX_FLAGS "--std=c++0x -Wall -Wextra -Werror -Wno-unknown-warning-option -Wno-unused-parameter -Wno-null-dereference -Wno-unused-local-typedefs -DGTEST_USE_OWN_TR1_TUPLE=1 ${BUILD_PIC_COMPILER_FLAGS}") 10+set(CMAKE_CXX_FLAGS "--std=c++11 -DGTEST_USE_OWN_TR1_TUPLE=1 ${BUILD_PIC_COMPILER_FLAGS}") 11 12 set(TEST_BINARY "kinetic_client_test") 13 set(TEST_BINARY_PATH ${kinetic_cpp_client_BINARY_DIR}/${TEST_BINARY}) 14@@ -50,103 +50,16 @@ set(GENERATED_SOURCES_PATH ${kinetic_cpp_client_SOURCE_DIR}/src/main/generated) 15 set(PREFIX "${CMAKE_BINARY_DIR}/vendor") 16 set(EXTERNAL_PREFIX "${kinetic_cpp_client_BINARY_DIR}/vendor") 17 18-include(ExternalProject) 19- 20-set(KINETIC_PROTO_VERSION "3.0.0") 21-set(KINETIC_PROTO_MD5 "85ca027b870811a297c1f6d792498934") 22- 23-ExternalProject_add( 24- kinetic-proto 25- PREFIX ${PREFIX} 26- DOWNLOAD_COMMAND curl -L https://github.com/Seagate/kinetic-protocol/archive/${KINETIC_PROTO_VERSION}.tar.gz -o kinetic-proto.tar.gz && openssl md5 kinetic-proto.tar.gz | grep -q ${KINETIC_PROTO_MD5} && rm -rf kinetic-proto && mkdir -p kinetic-proto && tar -xz --strip-components 1 -C kinetic-proto -f kinetic-proto.tar.gz 27- BUILD_IN_SOURCE 1 28- CONFIGURE_COMMAND "" 29- BUILD_COMMAND "" 30- INSTALL_COMMAND "" 31-) 32- 33-ExternalProject_add( 34- gflags 35- PREFIX ${EXTERNAL_PREFIX} 36- URL "${kinetic_cpp_client_SOURCE_DIR}/tarballs/gflags-2.0-no-svn-files.tar.gz" 37- URL_MD5 "9084829124e02a7e6be0f0f824523423" 38- CONFIGURE_COMMAND ../gflags/configure --prefix=${EXTERNAL_PREFIX} --enable-static ${CONFIG_HOST_FLAG} ${CHILD_MAKE_FLAGS} ${PIC_MAKE_FLAGS} 39-) 40- 41-ExternalProject_add( 42- glog 43- PREFIX ${EXTERNAL_PREFIX} 44- URL "${kinetic_cpp_client_SOURCE_DIR}/tarballs/glog-0.3.3.tar.gz" 45- URL_MD5 "a6fd2c22f8996846e34c763422717c18" 46- PATCH_COMMAND sh ${kinetic_cpp_client_SOURCE_DIR}/patches/apply-glog-patches.sh ${kinetic_cpp_client_SOURCE_DIR} 47- CONFIGURE_COMMAND ../glog/configure --prefix=${EXTERNAL_PREFIX} --with-gflags=${EXTERNAL_PREFIX} --enable-static ${CONFIG_HOST_FLAG} ${CHILD_MAKE_FLAGS} ${PIC_MAKE_FLAGS} 48- DEPENDS gflags 49-) 50- 51-ExternalProject_add( 52- gtest 53- PREFIX ${EXTERNAL_PREFIX} 54- URL "${kinetic_cpp_client_SOURCE_DIR}/tarballs/gtest-1.6.0.zip" 55- URL_MD5 "4577b49f2973c90bf9ba69aa8166b786" 56- BUILD_IN_SOURCE 1 57- CONFIGURE_COMMAND "" 58- BUILD_COMMAND ${CMAKE_CXX_COMPILER} -DGTEST_USE_OWN_TR1_TUPLE=1 -I../gtest -I../gtest/include -c ../gtest/src/gtest-all.cc && ar -rv libgtest.a gtest-all.o && ranlib libgtest.a 59- INSTALL_COMMAND "" 60-) 61- 62-ExternalProject_add( 63- gmock 64- PREFIX ${EXTERNAL_PREFIX} 65- URL "${kinetic_cpp_client_SOURCE_DIR}/tarballs/gmock-1.6.0.zip" 66- URL_MD5 "f547f47321ca88d3965ca2efdcc2a3c1" 67- BUILD_IN_SOURCE 1 68- CONFIGURE_COMMAND "" 69- BUILD_COMMAND ${CMAKE_CXX_COMPILER} -DGTEST_USE_OWN_TR1_TUPLE=1 -I../gmock -I../gmock/include -I../gtest -I../gtest/include -c ../gmock/src/gmock-all.cc && ar -rv libgmock.a gmock-all.o && ranlib libgmock.a 70- INSTALL_COMMAND "" 71- DEPENDS gtest 72-) 73- 74-ExternalProject_add( 75- openssl 76- PREFIX ${EXTERNAL_PREFIX} 77- URL "${kinetic_cpp_client_SOURCE_DIR}/tarballs/openssl-1.0.1g.tar.gz" 78- URL_MD5 "de62b43dfcd858e66a74bee1c834e959" 79- BUILD_IN_SOURCE 1 80- CONFIGURE_COMMAND ${OPENSSL_CONFIGURE_COMMAND} --prefix=${EXTERNAL_PREFIX} ${BUILD_PIC_COMPILER_FLAG} 81- BUILD_COMMAND touch apps/openssl && touch openssl.pc && make ${CHILD_MAKE_FLAGS} build_libs libssl.pc libcrypto.pc 82- INSTALL_COMMAND make install_sw 83-) 84- 85-# The protobuf build requires the existence of a protoc binary that can be 86-# executed on the host machine. To handle cross compilation, we always build 87-# protobuf once for the host so that we have a suitable copy of protoc. 88-ExternalProject_add( 89- protoc 90- PREFIX ${EXTERNAL_PREFIX}/host 91- URL "${kinetic_cpp_client_SOURCE_DIR}/tarballs/protobuf-2.5.0.tar.bz2" 92- URL_MD5 "a72001a9067a4c2c4e0e836d0f92ece4" 93- CONFIGURE_COMMAND ../protoc/configure --prefix=${EXTERNAL_PREFIX}/host --enable-static 94-) 95- 96 # Protobuf code generation rules 97-set(PROTOC_PATH "${PREFIX}/host/bin/protoc") 98-set(PROTO_DIR "${CMAKE_BINARY_DIR}/vendor/src/kinetic-proto") 99+set(PROTOC_PATH "protoc") 100+set(PROTO_DIR "${CMAKE_BINARY_DIR}/kinetic-proto") 101 set(PROTO_ORIG_PATH "${PROTO_DIR}/kinetic.proto") 102 set(PROTO_MODIFIED_PATH "${PROTO_DIR}/kinetic_client.proto") 103-ExternalProject_add( 104- protobuf 105- PREFIX ${EXTERNAL_PREFIX} 106- URL "${kinetic_cpp_client_SOURCE_DIR}/tarballs/protobuf-2.5.0.tar.bz2" 107- URL_MD5 "a72001a9067a4c2c4e0e836d0f92ece4" 108- CONFIGURE_COMMAND ../protobuf/configure --prefix=${EXTERNAL_PREFIX} --enable-static --with-protoc=${PROTOC_PATH} ${CONFIG_HOST_FLAG} ${CHILD_MAKE_FLAGS} ${PIC_MAKE_FLAGS} 109- DEPENDS protoc 110-) 111 112 add_custom_command( 113 COMMENT "Compiling protobuf" 114 OUTPUT ${GENERATED_SOURCES_PATH}/kinetic_client.pb.h ${GENERATED_SOURCES_PATH}/kinetic_client.pb.cc 115 COMMAND mkdir -p ${GENERATED_SOURCES_PATH} && sed 's/com\\.seagate\\.kinetic\\.proto/com.seagate.kinetic.client.proto/' ${PROTO_ORIG_PATH} > ${PROTO_MODIFIED_PATH} && ${PROTOC_PATH} -I=${PROTO_DIR} --cpp_out=${GENERATED_SOURCES_PATH} ${PROTO_MODIFIED_PATH} 116- DEPENDS kinetic-proto protoc protobuf 117 ) 118 set_directory_properties(PROPERTIES ADDITIONAL_MAKE_CLEAN_FILES ${GENERATED_SOURCES_PATH}) 119 120@@ -157,21 +70,10 @@ include_directories( 121 122 src/test/mock 123 src/test 124- 125- ${EXTERNAL_PREFIX}/include 126- ${EXTERNAL_PREFIX}/src/gmock/include 127- ${EXTERNAL_PREFIX}/src/gtest/include 128 ) 129 130 set(LIBRARY_DEPENDENCIES 131 kinetic_client 132- ${CMAKE_BINARY_DIR}/vendor/lib/libglog.a 133- ${CMAKE_BINARY_DIR}/vendor/lib/libgflags.a 134- ${CMAKE_BINARY_DIR}/vendor/lib/libssl.a 135- ${CMAKE_BINARY_DIR}/vendor/lib/libcrypto.a 136- ${CMAKE_BINARY_DIR}/vendor/lib/libprotobuf.a 137- ${CMAKE_BINARY_DIR}/vendor/src/gtest/libgtest.a 138- ${CMAKE_BINARY_DIR}/vendor/src/gmock/libgmock.a 139 ${CMAKE_THREAD_LIBS_INIT} 140 dl 141 ) 142@@ -180,12 +82,68 @@ set(LIBRARY_DEPENDENCIES 143 # Otherwise glog uses the standard glibc unwinder and there is no dependency. 144 find_library(LIBUNWIND "unwind") 145 if(LIBUNWIND) 146- set(LIBRARY_DEPENDENCIES 147- ${LIBRARY_DEPENDENCIES} 148+ set(LIBRARY_DEPENDENCIES 149+ ${LIBRARY_DEPENDENCIES} 150 ${LIBUNWIND} 151 ) 152 endif() 153 154+find_library(LIBSSL "ssl") 155+if(LIBSSL) 156+ set(LIBRARY_DEPENDENCIES 157+ ${LIBRARY_DEPENDENCIES} 158+ ${LIBSSL} 159+ ) 160+endif() 161+ 162+find_library(LIBCRYPTO "crypto") 163+if(LIBCRYPTO) 164+ set(LIBRARY_DEPENDENCIES 165+ ${LIBRARY_DEPENDENCIES} 166+ ${LIBCRYPTO} 167+ ) 168+endif() 169+ 170+find_library(LIBPROTOBUF "protobuf") 171+if(LIBPROTOBUF) 172+ set(LIBRARY_DEPENDENCIES 173+ ${LIBRARY_DEPENDENCIES} 174+ ${LIBPROTOBUF} 175+ ) 176+endif() 177+ 178+find_library(LIBGLOG "glog") 179+if(LIBGLOG) 180+ set(LIBRARY_DEPENDENCIES 181+ ${LIBRARY_DEPENDENCIES} 182+ ${LIBGLOG} 183+ ) 184+endif() 185+ 186+find_library(LIBGFLAGS "gflags") 187+if(LIBGFLAGS) 188+ set(LIBRARY_DEPENDENCIES 189+ ${LIBRARY_DEPENDENCIES} 190+ ${LIBGFLAGS} 191+ ) 192+endif() 193+ 194+find_library(LIBGMOCK "gmock") 195+if(LIBGMOCK) 196+ set(LIBRARY_DEPENDENCIES 197+ ${LIBRARY_DEPENDENCIES} 198+ ${LIBGMOCK} 199+ ) 200+endif() 201+ 202+find_library(LIBGTEST "gtest") 203+if(LIBGTEST) 204+ set(LIBRARY_DEPENDENCIES 205+ ${LIBRARY_DEPENDENCIES} 206+ ${LIBGTEST} 207+ ) 208+endif() 209+ 210 add_library(kinetic_client 211 src/main/generated/kinetic_client.pb.cc 212 src/main/hmac_provider.cc 213diff --git a/src/test/kinetic_cpp_client_test.cc b/src/test/kinetic_cpp_client_test.cc 214index 2079fab..c5004a2 100644 215--- a/src/test/kinetic_cpp_client_test.cc 216+++ b/src/test/kinetic_cpp_client_test.cc 217@@ -22,6 +22,7 @@ 218 219 #include <iostream> 220 221+#include "gflags/gflags.h" 222 #include "gtest/gtest.h" 223 #include "glog/logging.h" 224