THRIFT-2850 CMake: Windows improvements, doc, TMemoryBufferTest fix
diff --git a/build/cmake/DefinePlatformSpecifc.cmake b/build/cmake/DefinePlatformSpecifc.cmake
old mode 100644
new mode 100755
index db411d5..40ec627
--- a/build/cmake/DefinePlatformSpecifc.cmake
+++ b/build/cmake/DefinePlatformSpecifc.cmake
@@ -69,19 +69,18 @@
endif()
elseif(UNIX)
- # For UNIX
- # WITH_*THREADS selects which threading library to use
- if(WITH_BOOSTTHREADS)
- add_definitions("-DUSE_BOOST_THREAD=1")
- elseif(WITH_STDTHREADS)
- add_definitions("-DUSE_STD_THREAD=1")
- endif()
-
find_program( MEMORYCHECK_COMMAND valgrind )
set( MEMORYCHECK_COMMAND_OPTIONS "--gen-suppressions=all --leak-check=full" )
set( MEMORYCHECK_SUPPRESSIONS_FILE "${PROJECT_SOURCE_DIR}/test/valgrind.suppress" )
endif()
+# WITH_*THREADS selects which threading library to use
+if(WITH_BOOSTTHREADS)
+ add_definitions("-DUSE_BOOST_THREAD=1")
+elseif(WITH_STDTHREADS)
+ add_definitions("-DUSE_STD_THREAD=1")
+endif()
+
# GCC and Clang.
if(CMAKE_COMPILER_IS_GNUCC OR CMAKE_COMPILER_IS_GNUCXX OR CMAKE_CXX_COMPILER_ID MATCHES "Clang")
# FIXME -pedantic can not be used at the moment because of: https://issues.apache.org/jira/browse/THRIFT-2784
diff --git a/build/cmake/README.md b/build/cmake/README.md
index d76a96e..311ef15 100644
--- a/build/cmake/README.md
+++ b/build/cmake/README.md
@@ -15,15 +15,22 @@
## Usage
just do this:
- mkdir build
- cmake ${THRIFT_SRC}
+ mkdir cmake-build && cd cmake-build
+ cmake ..
if you use a specific toolchain pass it to cmake, the same for options:
- cmake -DCMAKE_TOOLCHAIN_FILE=${THRIFT_SRC}/contrib/mingw32-toolchain.cmake ${THRIFT_SRC}
- cmake -DCMAKE_C_COMPILER=clang-3.5 -DCMAKE_CXX_COMPILER=clang++-3.5 ${THRIFT_SRC}
- cmake -DTHRIFT_COMPILER_HS=OFF ${THRIFT_SRC}
- cmake -DWITH_ZLIB=ON ${THRIFT_SRC}
+ cmake -DCMAKE_TOOLCHAIN_FILE=${THRIFT_SRC}/contrib/mingw32-toolchain.cmake ..
+ cmake -DCMAKE_C_COMPILER=clang-3.5 -DCMAKE_CXX_COMPILER=clang++-3.5 ..
+ cmake -DTHRIFT_COMPILER_HS=OFF ..
+ cmake -DWITH_ZLIB=ON ..
+
+or on Windows
+
+ cmake -G "Visual Studio 12 2013 Win64" \
+ -DBOOST_ROOT=C:/3rdparty/boost_1_58_0 \
+ -DZLIB_ROOT=C:/3rdparty/zlib128-dll \
+ -DWITH_SHARED_LIB=off -DWITH_BOOSTTHREADS=ON ..
and open the development environment you like with the solution or do this:
@@ -51,4 +58,3 @@
* tutorial
* test
* merge into /README.md
-
diff --git a/lib/cpp/test/CMakeLists.txt b/lib/cpp/test/CMakeLists.txt
index 5027ffe..8587fa8 100644
--- a/lib/cpp/test/CMakeLists.txt
+++ b/lib/cpp/test/CMakeLists.txt
@@ -74,7 +74,7 @@
TServerTransportTest.cpp
)
-if(NOT WITH_BOOSTTHREADS AND NOT WITH_STDTHREADS)
+if(NOT WITH_BOOSTTHREADS AND NOT WITH_STDTHREADS AND NOT MSVC)
list(APPEND UnitTest_SOURCES RWMutexStarveTest.cpp)
endif()
diff --git a/lib/cpp/test/TMemoryBufferTest.cpp b/lib/cpp/test/TMemoryBufferTest.cpp
index 82b9ed6..ec0f392 100644
--- a/lib/cpp/test/TMemoryBufferTest.cpp
+++ b/lib/cpp/test/TMemoryBufferTest.cpp
@@ -38,27 +38,28 @@
BOOST_AUTO_TEST_CASE(test_read_write_grow)
{
- // Added to test the fix for THRIFT-1248
- TMemoryBuffer uut;
- const int maxSiz = 65536;
- std::vector<uint8_t> buf;
- buf.resize(maxSiz);
- for (uint32_t i = 0; i < maxSiz; ++i)
- {
- buf[i] = static_cast<uint8_t>(i);
- }
+ // Added to test the fix for THRIFT-1248
+ TMemoryBuffer uut;
+ const int maxSize = 65536;
+ uint8_t verify[maxSize];
+ std::vector<uint8_t> buf;
+ buf.resize(maxSize);
- for (uint32_t i = 1; i < maxSiz; i *= 2)
- {
- uut.write(&buf[0], i);
- }
+ for (uint32_t i = 0; i < maxSize; ++i)
+ {
+ buf[i] = static_cast<uint8_t>(i);
+ }
- for (uint32_t i = 1; i < maxSiz; i *= 2)
- {
- uint8_t verify[i];
- uut.read(verify, i);
- BOOST_CHECK_EQUAL(0, ::memcmp(verify, &buf[0], i));
- }
+ for (uint32_t i = 1; i < maxSize; i *= 2)
+ {
+ uut.write(&buf[0], i);
+ }
+
+ for (uint32_t i = 1; i < maxSize; i *= 2)
+ {
+ uut.read(verify, i);
+ BOOST_CHECK_EQUAL(0, ::memcmp(verify, &buf[0], i));
+ }
}
BOOST_AUTO_TEST_CASE(test_roundtrip)