You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@mesos.apache.org by jo...@apache.org on 2015/09/28 01:27:57 UTC
[18/20] mesos git commit: CMake: Moved compiler configuration logic
to its own file.
CMake: Moved compiler configuration logic to its own file.
Review: https://reviews.apache.org/r/38755
Project: http://git-wip-us.apache.org/repos/asf/mesos/repo
Commit: http://git-wip-us.apache.org/repos/asf/mesos/commit/96b25d8d
Tree: http://git-wip-us.apache.org/repos/asf/mesos/tree/96b25d8d
Diff: http://git-wip-us.apache.org/repos/asf/mesos/diff/96b25d8d
Branch: refs/heads/master
Commit: 96b25d8dc143b0a2f8d0ea0cb21dda8996493b66
Parents: a79ace3
Author: Alex Clemmer <cl...@gmail.com>
Authored: Sun Sep 27 15:41:35 2015 -0700
Committer: Joris Van Remoortere <jo...@gmail.com>
Committed: Sun Sep 27 16:23:32 2015 -0700
----------------------------------------------------------------------
cmake/CompilationConfigure.cmake | 116 ++++++++++++++++++++++++++++++++++
cmake/MesosConfigure.cmake | 83 +-----------------------
2 files changed, 119 insertions(+), 80 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/mesos/blob/96b25d8d/cmake/CompilationConfigure.cmake
----------------------------------------------------------------------
diff --git a/cmake/CompilationConfigure.cmake b/cmake/CompilationConfigure.cmake
new file mode 100644
index 0000000..98a08ee
--- /dev/null
+++ b/cmake/CompilationConfigure.cmake
@@ -0,0 +1,116 @@
+# Licensed to the Apache Software Foundation (ASF) under one
+# or more contributor license agreements. See the NOTICE file
+# distributed with this work for additional information
+# regarding copyright ownership. The ASF licenses this file
+# to you under the Apache License, Version 2.0 (the
+# "License"); you may not use this file except in compliance
+# with the License. You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+# CONFIGURE COMPILATION.
+########################
+string(COMPARE EQUAL ${CMAKE_SYSTEM_NAME} "Linux" LINUX)
+
+if (_DEBUG)
+ set(CMAKE_BUILD_TYPE Debug)
+endif (_DEBUG)
+
+# Make sure C++ 11 features we need are supported. This is split into two
+# cases: Windows and "other platforms".
+# * For "other platforms", we simply check if the C++11 flags work
+# * For Windows, it looks like (1) C++11 is enabled by default on MSVC 1900 or
+# later, and (2) C++11 is totally broken for 1800 or earlier (i.e., Mesos
+# will not compile on MSVC pre-1900). So, when in Windows, we just check the
+# MSVC version, and don't try to check or pass in C++11 flags at all.
+CHECK_CXX_COMPILER_FLAG("-std=c++11" COMPILER_SUPPORTS_CXX11)
+if (WIN32)
+ # Windows case first.
+
+ # We don't support compilation against mingw headers (which, e.g., Clang on
+ # Windows does at this point), because this is likely to cost us more effort
+ # to support than it will be worth at least in the short term.
+ if (NOT CMAKE_CXX_COMPILER_ID MATCHES MSVC)
+ message(
+ WARNING
+ "Mesos does not support compiling on Windows with "
+ "${CMAKE_CXX_COMPILER_ID}. Please use MSVC.")
+ endif (NOT CMAKE_CXX_COMPILER_ID MATCHES MSVC)
+
+ # MSVC 1900 supports C++11; earlier versions don't. So, warn if you try to
+ # use anything else.
+ if (${MSVC_VERSION} LESS 1900)
+ message(
+ WARNING
+ "Mesos does not support compiling on MSVC versions earlier than 1900. "
+ "Please use MSVC 1900 (included with Visual Studio 2015 or later).")
+ endif (${MSVC_VERSION} LESS 1900)
+
+ set(CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} /MTd")
+ set(CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELEASE} /MT")
+elseif (COMPILER_SUPPORTS_CXX11)
+ # Finally, on non-Windows platforms, we must check that the current compiler
+ # supports C++11.
+ set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11")
+else (WIN32)
+ message(
+ FATAL_ERROR
+ "The compiler ${CMAKE_CXX_COMPILER} does not support the `-std=c++11` "
+ "flag. Please use a different C++ compiler.")
+endif (WIN32)
+
+# Convenience flags to simplify Windows support in C++ source.
+if (MSVC)
+ add_definitions(-DMESOS_MSVC)
+endif (MSVC)
+
+# Configure directory structure for different platforms.
+########################################################
+if (NOT WIN32)
+ set(EXEC_INSTALL_PREFIX ${CMAKE_INSTALL_PREFIX})
+ set(SHARE_INSTALL_PREFIX ${CMAKE_INSTALL_PREFIX}/share)
+ set(DATA_INSTALL_PREFIX ${SHARE_INSTALL_PREFIX}/mesos)
+
+ set(LIBEXEC_INSTALL_DIR ${EXEC_INSTALL_PREFIX}/libexec)
+ set(PKG_LIBEXEC_INSTALL_DIR ${LIBEXEC_INSTALL_DIR}/mesos)
+ set(LIB_INSTALL_DIR ${EXEC_INSTALL_PREFIX}/libmesos)
+else (NOT WIN32)
+ set(EXEC_INSTALL_PREFIX "WARNINGDONOTUSEME")
+ set(LIBEXEC_INSTALL_DIR "WARNINGDONOTUSEME")
+ set(PKG_LIBEXEC_INSTALL_DIR "WARNINGDONOTUSEME")
+ set(LIB_INSTALL_DIR "WARNINGDONOTUSEME")
+endif (NOT WIN32)
+
+# Add preprocessor definitions required to build third-party libraries.
+#######################################################################
+if (WIN32)
+ # Windows-specific workaround for a glog issue documented here[1].
+ # Basically, Windows.h and glog/logging.h both define ERROR. Since we don't
+ # need the Windows ERROR, we can use this flag to avoid defining it at all.
+ # Unlike the other fix (defining GLOG_NO_ABBREVIATED_SEVERITIES), this fix
+ # is guaranteed to require no changes to the original Mesos code. See also
+ # the note in the code itself[2].
+ #
+ # [1] https://google-glog.googlecode.com/svn/trunk/doc/glog.html#windows
+ # [2] https://code.google.com/p/google-glog/source/browse/trunk/src/windows/glog/logging.h?r=113
+ add_definitions(-DNOGDI)
+ add_definitions(-DNOMINMAX)
+endif (WIN32)
+
+# Enable the INT64 support for PicoJSON.
+add_definitions(-DPICOJSON_USE_INT64)
+# NOTE: PicoJson requires __STDC_FORMAT_MACROS to be defined before importing
+# 'inttypes.h'. Since other libraries may also import this header, it must
+# be globally defined so that PicoJson has access to the macros, regardless
+# of the order of inclusion.
+add_definitions(-D__STDC_FORMAT_MACROS)
+
+add_definitions(-DPKGLIBEXECDIR="${PKG_LIBEXEC_INSTALL_DIR}")
+add_definitions(-DLIBDIR="${LIB_INSTALL_DIR}")
+add_definitions(-DVERSION="${PACKAGE_VERSION}")
http://git-wip-us.apache.org/repos/asf/mesos/blob/96b25d8d/cmake/MesosConfigure.cmake
----------------------------------------------------------------------
diff --git a/cmake/MesosConfigure.cmake b/cmake/MesosConfigure.cmake
index 1fff02e..2f4c412 100755
--- a/cmake/MesosConfigure.cmake
+++ b/cmake/MesosConfigure.cmake
@@ -39,76 +39,9 @@ message(STATUS "************************************************************")
################################
enable_testing()
-# CONFIGURE COMPILATION.
-########################
-string(COMPARE EQUAL ${CMAKE_SYSTEM_NAME} "Linux" LINUX)
-
-if (_DEBUG)
- set(CMAKE_BUILD_TYPE Debug)
-endif (_DEBUG)
-
-# Make sure C++ 11 features we need are supported. This is split into two
-# cases: Windows and "other platforms".
-# * For "other platforms", we simply check if the C++11 flags work
-# * For Windows, it looks like (1) C++11 is enabled by default on MSVC 1900 or
-# later, and (2) C++11 is totally broken for 1800 or earlier (i.e., Mesos
-# will not compile on MSVC pre-1900). So, when in Windows, we just check the
-# MSVC version, and don't try to check or pass in C++11 flags at all.
-CHECK_CXX_COMPILER_FLAG("-std=c++11" COMPILER_SUPPORTS_CXX11)
-if (WIN32)
- # Windows case first.
-
- # We don't support compilation against mingw headers (which, e.g., Clang on
- # Windows does at this point), because this is likely to cost us more effort
- # to support than it will be worth at least in the short term.
- if (NOT CMAKE_CXX_COMPILER_ID MATCHES MSVC)
- message(
- WARNING
- "Mesos does not support compiling on Windows with "
- "${CMAKE_CXX_COMPILER_ID}. Please use MSVC.")
- endif (NOT CMAKE_CXX_COMPILER_ID MATCHES MSVC)
-
- # MSVC 1900 supports C++11; earliser versions don't. So, warn if you try to
- # use anything else.
- if (${MSVC_VERSION} LESS 1900)
- message(
- WARNING
- "Mesos does not support compiling on MSVC versions earlier than 1900. "
- "Please use MSVC 1900 (included with Visual Studio 2015 or later).")
- endif (${MSVC_VERSION} LESS 1900)
-
- set(CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} /MTd")
- set(CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELEASE} /MT")
-elseif (COMPILER_SUPPORTS_CXX11)
- # Finally, on non-Windows platforms, we must check that the current compiler
- # supports C++11.
- set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11")
-else (WIN32)
- message(
- FATAL_ERROR
- "The compiler ${CMAKE_CXX_COMPILER} does not support the `-std=c++11` "
- "flag. Please use a different C++ compiler.")
-endif (WIN32)
-
-# Convenience flags to simplify Windows support in C++ source.
-if (MSVC)
- add_definitions(-DMESOS_MSVC)
-endif (MSVC)
-
-# Compiler constants required for third-party libs.
-if (WIN32)
- # Windows-specific workaround for a glog issue documented here[1].
- # Basically, Windows.h and glog/logging.h both define ERROR. Since we don't
- # need the Windows ERROR, we can use this flag to avoid defining it at all.
- # Unlike the other fix (defining GLOG_NO_ABBREVIATED_SEVERITIES), this fix
- # is guaranteed to require no changes to the original Mesos code. See also
- # the note in the code itself[2].
- #
- # [1] https://google-glog.googlecode.com/svn/trunk/doc/glog.html#windows
- # [2] https://code.google.com/p/google-glog/source/browse/trunk/src/windows/glog/logging.h?r=113
- add_definitions(-DNOGDI)
- add_definitions(-DNOMINMAX)
-endif (WIN32)
+# CONFIGURE COMPILER.
+#####################
+include(CompilationConfigure)
# THIRD-PARTY CONFIGURATION.
############################
@@ -129,13 +62,3 @@ if (WIN32)
string(REPLACE ";" " " MESOS_BUILD_CMD "${MESOS_BUILD_CMD}")
file(WRITE ${CMAKE_BINARY_DIR}/make.bat ${MESOS_BUILD_CMD})
endif (WIN32)
-
-# Add preprocessor definitions required to build third-party libraries.
-#######################################################################
-# Enable the INT64 support for PicoJSON.
-add_definitions(-DPICOJSON_USE_INT64)
-# NOTE: PicoJson requires __STDC_FORMAT_MACROS to be defined before importing
-# 'inttypes.h'. Since other libraries may also import this header, it must
-# be globally defined so that PicoJson has access to the macros, regardless
-# of the order of inclusion.
-add_definitions(-D__STDC_FORMAT_MACROS)