You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@parquet.apache.org by uw...@apache.org on 2017/05/12 12:55:42 UTC

parquet-cpp git commit: PARQUET-977: Improve MSVC build.

Repository: parquet-cpp
Updated Branches:
  refs/heads/master a5e6482e2 -> 305aaccaf


PARQUET-977: Improve MSVC build.

- Fix "msvc" COMPILER_FAMILY detection.
- Fix CMAKE_C*_FLAGS for MSVC.

Author: revaliu <re...@microsoft.com>

Closes #320 from rip-nsk/master and squashes the following commits:

6ae8419 [revaliu] PARQUET-977: Add check for supported version of MSVC
c9d860f [revaliu] PARQUET-977: Improve MSVC build.


Project: http://git-wip-us.apache.org/repos/asf/parquet-cpp/repo
Commit: http://git-wip-us.apache.org/repos/asf/parquet-cpp/commit/305aacca
Tree: http://git-wip-us.apache.org/repos/asf/parquet-cpp/tree/305aacca
Diff: http://git-wip-us.apache.org/repos/asf/parquet-cpp/diff/305aacca

Branch: refs/heads/master
Commit: 305aaccaffd0571ddfee194ae958820bbbd2f140
Parents: a5e6482
Author: revaliu <re...@microsoft.com>
Authored: Fri May 12 14:55:37 2017 +0200
Committer: Uwe L. Korn <uw...@apache.org>
Committed: Fri May 12 14:55:37 2017 +0200

----------------------------------------------------------------------
 CMakeLists.txt                          | 16 +++++++++++-----
 cmake_modules/CompilerInfo.cmake        | 18 +++++++++++++++---
 cmake_modules/ThirdpartyToolchain.cmake | 12 +++++++++---
 3 files changed, 35 insertions(+), 11 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/parquet-cpp/blob/305aacca/CMakeLists.txt
----------------------------------------------------------------------
diff --git a/CMakeLists.txt b/CMakeLists.txt
index e18cf7b..9c0ffc6 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -363,12 +363,13 @@ endif()
 #   -O3: Enable all compiler optimizations
 #   Debug symbols are stripped for reduced binary size. Add
 #   -DPARQUET_CXXFLAGS="-g" to include them
-set(CXX_FLAGS_DEBUG "-ggdb -O0")
 if (MSVC)
-  set(CXX_FLAGS_DEBUG "${CXX_FLAGS_DEBUG} /bigobj")
+  set(CXX_FLAGS_DEBUG "${CXX_FLAGS_DEBUG} /bigobj") # TODO set /bigobj only for specific lib
+else()
+  set(CXX_FLAGS_DEBUG "-ggdb -O0")
+  set(CXX_FLAGS_FASTDEBUG "-ggdb -O1")
+  set(CXX_FLAGS_RELEASE "-O3")
 endif()
-set(CXX_FLAGS_FASTDEBUG "-ggdb -O1")
-set(CXX_FLAGS_RELEASE "-O3")
 
 string (TOUPPER ${CMAKE_BUILD_TYPE} CMAKE_BUILD_TYPE)
 
@@ -385,7 +386,12 @@ endif ()
 
 message(STATUS "Build Type: ${CMAKE_BUILD_TYPE}")
 
-SET(CMAKE_CXX_FLAGS "${PARQUET_CXXFLAGS} ${CMAKE_CXX_FLAGS} -std=c++11 -Wall -fno-strict-aliasing")
+set(CMAKE_CXX_FLAGS "${PARQUET_CXXFLAGS} ${CMAKE_CXX_FLAGS}")
+if (MSVC)
+  set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -W3")
+else()
+  set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11 -fno-strict-aliasing -Wall")
+endif()
 
 if (PARQUET_USE_SSE)
   SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -march=native")

http://git-wip-us.apache.org/repos/asf/parquet-cpp/blob/305aacca/cmake_modules/CompilerInfo.cmake
----------------------------------------------------------------------
diff --git a/cmake_modules/CompilerInfo.cmake b/cmake_modules/CompilerInfo.cmake
index bf59ab1..8eba874 100644
--- a/cmake_modules/CompilerInfo.cmake
+++ b/cmake_modules/CompilerInfo.cmake
@@ -15,15 +15,27 @@
 # specific language governing permissions and limitations
 # under the License.
 #
-# Sets COMPILER_FAMILY to 'clang' or 'gcc'
+# Sets COMPILER_FAMILY to 'clang' or 'gcc' or 'msvc'
 # Sets COMPILER_VERSION to the version
-execute_process(COMMAND "${CMAKE_CXX_COMPILER}" -v
+if(NOT MSVC)
+  set(COMPILER_GET_VERSION_SWITCH "-v")
+endif()
+
+execute_process(COMMAND "${CMAKE_CXX_COMPILER}" ${COMPILER_GET_VERSION_SWITCH}
+                OUTPUT_VARIABLE COMPILER_VERSION_FULL
                 ERROR_VARIABLE COMPILER_VERSION_FULL)
-message(INFO " ${COMPILER_VERSION_FULL}")
+message(STATUS "Compiler id: ${CMAKE_CXX_COMPILER_ID}")
 string(TOLOWER "${COMPILER_VERSION_FULL}" COMPILER_VERSION_FULL_LOWER)
 
 if(MSVC)
   set(COMPILER_FAMILY "msvc")
+  if ("${COMPILER_VERSION_FULL}" MATCHES ".*Microsoft \\(R\\) C/C\\+\\+ Optimizing Compiler Version 19.*x64")
+    string(REGEX REPLACE ".*Optimizing Compiler Version ([0-9]+\\.[0-9]+\\.[0-9]+\\.[0-9]+).*" "\\1"
+      COMPILER_VERSION "${COMPILER_VERSION_FULL}")
+  elseif(NOT "${COMPILER_VERSION_FULL}" STREQUAL "")
+    message(FATAL_ERROR "Not supported MSVC compiler:\n${COMPILER_VERSION_FULL}\n"
+      "Supported MSVC versions: Visual Studio 2015 2017 x64")
+  endif()
 
 # clang on Linux and Mac OS X before 10.9
 elseif("${COMPILER_VERSION_FULL}" MATCHES ".*clang version.*")

http://git-wip-us.apache.org/repos/asf/parquet-cpp/blob/305aacca/cmake_modules/ThirdpartyToolchain.cmake
----------------------------------------------------------------------
diff --git a/cmake_modules/ThirdpartyToolchain.cmake b/cmake_modules/ThirdpartyToolchain.cmake
index 74b4632..c8faf8d 100644
--- a/cmake_modules/ThirdpartyToolchain.cmake
+++ b/cmake_modules/ThirdpartyToolchain.cmake
@@ -22,9 +22,15 @@ set(THRIFT_VERSION "0.10.0")
 set(BROTLI_VERSION "v0.6.0")
 
 string(TOUPPER ${CMAKE_BUILD_TYPE} UPPERCASE_BUILD_TYPE)
-# Set -fPIC on all external projects and include the main CXX_FLAGS
-set(EP_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${CMAKE_CXX_FLAGS_${UPPERCASE_BUILD_TYPE}} -fPIC")
-set(EP_C_FLAGS "${CMAKE_C_FLAGS} ${CMAKE_C_FLAGS_${UPPERCASE_BUILD_TYPE}} -fPIC")
+
+set(EP_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${CMAKE_CXX_FLAGS_${UPPERCASE_BUILD_TYPE}}")
+set(EP_C_FLAGS "${CMAKE_C_FLAGS} ${CMAKE_C_FLAGS_${UPPERCASE_BUILD_TYPE}}")
+
+if (NOT MSVC)
+  # Set -fPIC on all external projects
+  set(EP_CXX_FLAGS "${EP_CXX_FLAGS} -fPIC")
+  set(EP_C_FLAGS "${EP_C_FLAGS} -fPIC")
+endif()
 
 # ----------------------------------------------------------------------
 # Configure toolchain with environment variables, if the exist