You are viewing a plain text version of this content. The canonical link for it is here.
Posted to common-commits@hadoop.apache.org by cm...@apache.org on 2015/01/09 20:21:04 UTC
hadoop git commit: HDFS-7574. Make cmake work in Windows Visual
Studio 2010 (Thanh Do via Colin P. McCabe)
Repository: hadoop
Updated Branches:
refs/heads/HDFS-6994 411c31fab -> 2e42564ad
HDFS-7574. Make cmake work in Windows Visual Studio 2010 (Thanh Do via Colin P. McCabe)
Project: http://git-wip-us.apache.org/repos/asf/hadoop/repo
Commit: http://git-wip-us.apache.org/repos/asf/hadoop/commit/2e42564a
Tree: http://git-wip-us.apache.org/repos/asf/hadoop/tree/2e42564a
Diff: http://git-wip-us.apache.org/repos/asf/hadoop/diff/2e42564a
Branch: refs/heads/HDFS-6994
Commit: 2e42564ad3bad751f0e8b82c55bfdfd07d615d27
Parents: 411c31f
Author: Colin Patrick Mccabe <cm...@cloudera.com>
Authored: Fri Jan 9 11:17:33 2015 -0800
Committer: Colin Patrick Mccabe <cm...@cloudera.com>
Committed: Fri Jan 9 11:17:33 2015 -0800
----------------------------------------------------------------------
.../libhdfs3/CMake/CMakeTestCompileStrerror.cpp | 3 ++
.../src/contrib/libhdfs3/CMake/Options.cmake | 36 +++++++++++++++++---
.../src/contrib/libhdfs3/CMake/Platform.cmake | 7 ++++
.../src/contrib/libhdfs3/src/CMakeLists.txt | 36 +++++++++++++-------
.../src/contrib/libhdfs3/test/CMakeLists.txt | 10 +++++-
5 files changed, 73 insertions(+), 19 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/hadoop/blob/2e42564a/hadoop-hdfs-project/hadoop-hdfs/src/contrib/libhdfs3/CMake/CMakeTestCompileStrerror.cpp
----------------------------------------------------------------------
diff --git a/hadoop-hdfs-project/hadoop-hdfs/src/contrib/libhdfs3/CMake/CMakeTestCompileStrerror.cpp b/hadoop-hdfs-project/hadoop-hdfs/src/contrib/libhdfs3/CMake/CMakeTestCompileStrerror.cpp
index 62d082b..ab92314 100644
--- a/hadoop-hdfs-project/hadoop-hdfs/src/contrib/libhdfs3/CMake/CMakeTestCompileStrerror.cpp
+++ b/hadoop-hdfs-project/hadoop-hdfs/src/contrib/libhdfs3/CMake/CMakeTestCompileStrerror.cpp
@@ -17,6 +17,9 @@
*/
#include <string.h>
+#ifdef _WIN32
+#define strerror_r(errnum, buf, buflen) strerror_s((buf), (buflen), (errnum))
+#endif
int main()
{
http://git-wip-us.apache.org/repos/asf/hadoop/blob/2e42564a/hadoop-hdfs-project/hadoop-hdfs/src/contrib/libhdfs3/CMake/Options.cmake
----------------------------------------------------------------------
diff --git a/hadoop-hdfs-project/hadoop-hdfs/src/contrib/libhdfs3/CMake/Options.cmake b/hadoop-hdfs-project/hadoop-hdfs/src/contrib/libhdfs3/CMake/Options.cmake
index eb74bd8..b957c40 100644
--- a/hadoop-hdfs-project/hadoop-hdfs/src/contrib/libhdfs3/CMake/Options.cmake
+++ b/hadoop-hdfs-project/hadoop-hdfs/src/contrib/libhdfs3/CMake/Options.cmake
@@ -28,6 +28,7 @@ CHECK_FUNCTION_EXISTS(dladdr HAVE_DLADDR)
CHECK_FUNCTION_EXISTS(nanosleep HAVE_NANOSLEEP)
IF(ENABLE_DEBUG STREQUAL ON)
+ # TODO: set platform debug flag (/Z7) for Windows.
SET(CMAKE_BUILD_TYPE Debug CACHE
STRING "Choose the type of build, options are: None Debug Release RelWithDebInfo MinSizeRel." FORCE)
SET(CMAKE_CXX_FLAGS_DEBUG "-g -O0" CACHE STRING "compiler flags for debug" FORCE)
@@ -39,19 +40,32 @@ ELSE(ENABLE_DEBUG STREQUAL ON)
SET(CMAKE_C_FLAGS_DEBUG "-g -O2" CACHE STRING "compiler flags for debug" FORCE)
ENDIF(ENABLE_DEBUG STREQUAL ON)
-SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fno-strict-aliasing")
-SET(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -fno-strict-aliasing")
+IF(NOT MSVC)
+ # Ignore no-strict-aliasing in windows.
+ SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fno-strict-aliasing")
+ SET(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -fno-strict-aliasing")
+ENDIF(NOT MSVC)
IF(ENABLE_COVERAGE STREQUAL ON)
INCLUDE(CodeCoverage)
ENDIF(ENABLE_COVERAGE STREQUAL ON)
IF(ENABLE_FRAME_POINTER STREQUAL ON)
- SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fno-omit-frame-pointer")
+ IF(MSVC)
+ SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /Oy-")
+ ELSE(MSVC)
+ SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fno-omit-frame-pointer")
+ ENDIF(MSVC)
ENDIF(ENABLE_FRAME_POINTER STREQUAL ON)
IF(ENABLE_SSE STREQUAL ON)
- SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -msse4.2")
+ IF(MSVC)
+ # In Visual Studio 2013, this option will use SS4.2 instructions
+ # if available. Not sure about the behaviour in Visual Studio 2010.
+ SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /arch:SSE2")
+ ELSE(MSVC)
+ SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -msse4.2")
+ ENDIF(MSVC)
ENDIF(ENABLE_SSE STREQUAL ON)
IF(NOT TEST_HDFS_PREFIX)
@@ -74,7 +88,17 @@ ENDIF(OS_LINUX)
SET(BOOST_ROOT ${CMAKE_PREFIX_PATH})
IF(ENABLE_BOOST STREQUAL ON)
MESSAGE(STATUS "using boost instead of native compiler c++0x support.")
- FIND_PACKAGE(Boost 1.53 REQUIRED)
+ IF(MSVC)
+ # Find boost libraries with flavor: mt-sgd (multi-thread, static, and debug)
+ SET(Boost_USE_STATIC_LIBS ON)
+ SET(Boost_USE_MULTITHREADED ON)
+ SET(Boost_USE_STATIC_RUNTIME ON)
+ FIND_PACKAGE(Boost 1.53 COMPONENTS thread chrono system atomic iostreams REQUIRED)
+ INCLUDE_DIRECTORIES("${Boost_INCLUDE_DIRS}")
+ LINK_DIRECTORIES("${Boost_LIBRARY_DIRS}")
+ ELSE(MSVC)
+ FIND_PACKAGE(Boost 1.53 REQUIRED)
+ ENDIF(MSVC)
SET(NEED_BOOST true CACHE INTERNAL "boost is required")
ELSE(ENABLE_BOOST STREQUAL ON)
SET(NEED_BOOST false CACHE INTERNAL "boost is required")
@@ -131,6 +155,8 @@ ELSEIF(CMAKE_COMPILER_IS_CLANG)
SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -stdlib=libc++")
SET(CMAKE_XCODE_ATTRIBUTE_CLANG_CXX_LIBRARY "libc++")
ENDIF(ENABLE_LIBCPP STREQUAL ON)
+ELSEIF(MSVC)
+ SET(CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} /MTd")
ENDIF(CMAKE_COMPILER_IS_GNUCXX)
TRY_COMPILE(STRERROR_R_RETURN_INT
http://git-wip-us.apache.org/repos/asf/hadoop/blob/2e42564a/hadoop-hdfs-project/hadoop-hdfs/src/contrib/libhdfs3/CMake/Platform.cmake
----------------------------------------------------------------------
diff --git a/hadoop-hdfs-project/hadoop-hdfs/src/contrib/libhdfs3/CMake/Platform.cmake b/hadoop-hdfs-project/hadoop-hdfs/src/contrib/libhdfs3/CMake/Platform.cmake
index f5f18e6..0388493 100644
--- a/hadoop-hdfs-project/hadoop-hdfs/src/contrib/libhdfs3/CMake/Platform.cmake
+++ b/hadoop-hdfs-project/hadoop-hdfs/src/contrib/libhdfs3/CMake/Platform.cmake
@@ -20,6 +20,8 @@ IF(CMAKE_SYSTEM_NAME STREQUAL "Linux")
SET(OS_LINUX true CACHE INTERNAL "Linux operating system")
ELSEIF(CMAKE_SYSTEM_NAME STREQUAL "Darwin")
SET(OS_MACOSX true CACHE INTERNAL "Mac Darwin operating system")
+ELSEIF(CMAKE_SYSTEM_NAME STREQUAL "Windows")
+ SET(OS_WINDOWS true CACHE INTERNAL "Windows operation system")
ELSE(CMAKE_SYSTEM_NAME STREQUAL "Linux")
MESSAGE(FATAL_ERROR "Unsupported OS: \"${CMAKE_SYSTEM_NAME}\"")
ENDIF(CMAKE_SYSTEM_NAME STREQUAL "Linux")
@@ -44,6 +46,11 @@ IF(CMAKE_COMPILER_IS_GNUCXX)
SET(GCC_COMPILER_VERSION_PATCH ${GCC_COMPILER_VERSION_PATCH} CACHE INTERNAL "gcc patch version")
MESSAGE(STATUS "checking compiler: GCC (${GCC_COMPILER_VERSION_MAJOR}.${GCC_COMPILER_VERSION_MINOR}.${GCC_COMPILER_VERSION_PATCH})")
+ELSEIF(MSVC)
+ IF (NOT(${MSVC_VERSION} EQUAL 1600))
+ MESSAGE(FATAL_ERROR "Only supports Visual Studio 2010. Unsupported MSVC_VERSION: ${MSVC_VERSION}")
+ ENDIF(NOT(${MSVC_VERSION} EQUAL 1600))
+ MESSAGE(STATUS "checking compiler: MSVC version ${MSVC_VERSION}")
ELSE(CMAKE_COMPILER_IS_GNUCXX)
EXECUTE_PROCESS(COMMAND ${CMAKE_C_COMPILER} --version OUTPUT_VARIABLE COMPILER_OUTPUT)
IF(COMPILER_OUTPUT MATCHES "clang")
http://git-wip-us.apache.org/repos/asf/hadoop/blob/2e42564a/hadoop-hdfs-project/hadoop-hdfs/src/contrib/libhdfs3/src/CMakeLists.txt
----------------------------------------------------------------------
diff --git a/hadoop-hdfs-project/hadoop-hdfs/src/contrib/libhdfs3/src/CMakeLists.txt b/hadoop-hdfs-project/hadoop-hdfs/src/contrib/libhdfs3/src/CMakeLists.txt
index aa6ce01..b203379 100644
--- a/hadoop-hdfs-project/hadoop-hdfs/src/contrib/libhdfs3/src/CMakeLists.txt
+++ b/hadoop-hdfs-project/hadoop-hdfs/src/contrib/libhdfs3/src/CMakeLists.txt
@@ -71,21 +71,31 @@ ADD_CUSTOM_COMMAND(
WORKING_DIRECTORY ${CMAKE_BINARY_DIR}
)
-TARGET_LINK_LIBRARIES(libhdfs3-static pthread)
-TARGET_LINK_LIBRARIES(libhdfs3-shared pthread)
+IF(NOT MSVC)
+ # pthread is not available in Windows.
+ TARGET_LINK_LIBRARIES(libhdfs3-static pthread)
+ TARGET_LINK_LIBRARIES(libhdfs3-shared pthread)
+ENDIF(NOT MSVC)
IF(NEED_BOOST)
- INCLUDE_DIRECTORIES(${Boost_INCLUDE_DIR})
- TARGET_LINK_LIBRARIES(libhdfs3-static boost_thread)
- TARGET_LINK_LIBRARIES(libhdfs3-static boost_chrono)
- TARGET_LINK_LIBRARIES(libhdfs3-static boost_system)
- TARGET_LINK_LIBRARIES(libhdfs3-static boost_atomic)
- TARGET_LINK_LIBRARIES(libhdfs3-static boost_iostreams)
- TARGET_LINK_LIBRARIES(libhdfs3-shared boost_thread)
- TARGET_LINK_LIBRARIES(libhdfs3-shared boost_chrono)
- TARGET_LINK_LIBRARIES(libhdfs3-shared boost_system)
- TARGET_LINK_LIBRARIES(libhdfs3-shared boost_atomic)
- TARGET_LINK_LIBRARIES(libhdfs3-shared boost_iostreams)
+ IF(MSVC)
+ # We already find boost libraries in options.cmake
+ # therefore just need to link here.
+ TARGET_LINK_LIBRARIES(libhdfs3-static ${Boost_LIBRARIES})
+ TARGET_LINK_LIBRARIES(libhdfs3-shared ${Boost_LIBRARIES})
+ ELSE(MSVC)
+ INCLUDE_DIRECTORIES(${Boost_INCLUDE_DIR})
+ TARGET_LINK_LIBRARIES(libhdfs3-static boost_thread)
+ TARGET_LINK_LIBRARIES(libhdfs3-static boost_chrono)
+ TARGET_LINK_LIBRARIES(libhdfs3-static boost_system)
+ TARGET_LINK_LIBRARIES(libhdfs3-static boost_atomic)
+ TARGET_LINK_LIBRARIES(libhdfs3-static boost_iostreams)
+ TARGET_LINK_LIBRARIES(libhdfs3-shared boost_thread)
+ TARGET_LINK_LIBRARIES(libhdfs3-shared boost_chrono)
+ TARGET_LINK_LIBRARIES(libhdfs3-shared boost_system)
+ TARGET_LINK_LIBRARIES(libhdfs3-shared boost_atomic)
+ TARGET_LINK_LIBRARIES(libhdfs3-shared boost_iostreams)
+ ENDIF(MSVC)
ENDIF(NEED_BOOST)
IF(NEED_GCCEH)
http://git-wip-us.apache.org/repos/asf/hadoop/blob/2e42564a/hadoop-hdfs-project/hadoop-hdfs/src/contrib/libhdfs3/test/CMakeLists.txt
----------------------------------------------------------------------
diff --git a/hadoop-hdfs-project/hadoop-hdfs/src/contrib/libhdfs3/test/CMakeLists.txt b/hadoop-hdfs-project/hadoop-hdfs/src/contrib/libhdfs3/test/CMakeLists.txt
index b8cca0b..2838f4a 100644
--- a/hadoop-hdfs-project/hadoop-hdfs/src/contrib/libhdfs3/test/CMakeLists.txt
+++ b/hadoop-hdfs-project/hadoop-hdfs/src/contrib/libhdfs3/test/CMakeLists.txt
@@ -19,7 +19,15 @@
CMAKE_MINIMUM_REQUIRED(VERSION 2.8)
SET(TEST_WORKING_DIR ${CMAKE_CURRENT_SOURCE_DIR}/data/)
-ADD_DEFINITIONS(-DGTEST_LANG_CXX11=0 -Dprivate=public -Dprotected=public -DDATA_DIR="${TEST_WORKING_DIR}/")
+
+IF(MSVC)
+ # in Windows, redefine private = public, protected = public cause
+ # a serious linking curse. Hence this preprocessor symbol.
+ # In the future, we may want to get rid of this definition even for MacOS and Linux.
+ ADD_DEFINITIONS(-DGTEST_LANG_CXX11=0 -D_WIN_TEST_ -DDATA_DIR="${TEST_WORKING_DIR}/")
+ELSE(MSVC)
+ ADD_DEFINITIONS(-DGTEST_LANG_CXX11=0 -Dprivate=public -Dprotected=public -DDATA_DIR="${TEST_WORKING_DIR}/")
+ENDIF(MSVC)
ADD_SUBDIRECTORY(function)
ADD_SUBDIRECTORY(unit)