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)