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