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:53 UTC
[14/20] mesos git commit: CMake: Pulled third-party configuration
logic into its own .cmake file.
CMake: Pulled third-party configuration logic into its own .cmake file.
Review: https://reviews.apache.org/r/38751
Project: http://git-wip-us.apache.org/repos/asf/mesos/repo
Commit: http://git-wip-us.apache.org/repos/asf/mesos/commit/685df82d
Tree: http://git-wip-us.apache.org/repos/asf/mesos/tree/685df82d
Diff: http://git-wip-us.apache.org/repos/asf/mesos/diff/685df82d
Branch: refs/heads/master
Commit: 685df82d54814a1a004e695802d0c3d6fefbdd77
Parents: 868e787
Author: Alex Clemmer <cl...@gmail.com>
Authored: Sun Sep 27 15:41:30 2015 -0700
Committer: Joris Van Remoortere <jo...@gmail.com>
Committed: Sun Sep 27 16:17:39 2015 -0700
----------------------------------------------------------------------
3rdparty/libprocess/3rdparty/CMakeLists.txt | 2 +-
.../cmake/Process3rdpartyConfigure.cmake | 103 +++++++++++++++++++
.../libprocess/cmake/ProcessConfigure.cmake | 77 +++-----------
.../cmake/ProcessTestsConfigure.cmake | 35 +++++--
4 files changed, 144 insertions(+), 73 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/mesos/blob/685df82d/3rdparty/libprocess/3rdparty/CMakeLists.txt
----------------------------------------------------------------------
diff --git a/3rdparty/libprocess/3rdparty/CMakeLists.txt b/3rdparty/libprocess/3rdparty/CMakeLists.txt
index d77f357..c85586b 100644
--- a/3rdparty/libprocess/3rdparty/CMakeLists.txt
+++ b/3rdparty/libprocess/3rdparty/CMakeLists.txt
@@ -90,7 +90,7 @@ endif (WIN32)
# build directory into `configure` as a prefix; so if we're going to move the
# libraries, we might as well move them to a library folder.)
if (NOT WIN32)
- set(GLOG_CONFIG_CMD ${GLOG_ROOT}/src/../configure --prefix=${GLOG_LIB})
+ set(GLOG_CONFIG_CMD ${GLOG_ROOT}/src/../configure --prefix=${GLOG_LIB_ROOT})
set(GLOG_BUILD_CMD make)
set(GLOG_INSTALL_CMD make install)
# Patch glog to deal with a problem that appears when compiling on clang
http://git-wip-us.apache.org/repos/asf/mesos/blob/685df82d/3rdparty/libprocess/cmake/Process3rdpartyConfigure.cmake
----------------------------------------------------------------------
diff --git a/3rdparty/libprocess/cmake/Process3rdpartyConfigure.cmake b/3rdparty/libprocess/cmake/Process3rdpartyConfigure.cmake
new file mode 100644
index 0000000..9c369e2
--- /dev/null
+++ b/3rdparty/libprocess/cmake/Process3rdpartyConfigure.cmake
@@ -0,0 +1,103 @@
+# 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.
+
+# DEFINE DIRECTORY STRUCTURE FOR THIRD-PARTY LIBS.
+##################################################
+set(PROCESS_3RD_SRC ${CMAKE_SOURCE_DIR}/3rdparty/libprocess/3rdparty)
+set(PROCESS_3RD_BIN ${CMAKE_BINARY_DIR}/3rdparty/libprocess/3rdparty)
+
+set(STOUT ${PROCESS_3RD_SRC}/stout)
+
+EXTERNAL("boost" ${BOOST_VERSION} "${PROCESS_3RD_BIN}")
+EXTERNAL("picojson" ${PICOJSON_VERSION} "${PROCESS_3RD_BIN}")
+EXTERNAL("http_parser" ${HTTP_PARSER_VERSION} "${PROCESS_3RD_BIN}")
+EXTERNAL("libev" ${LIBEV_VERSION} "${PROCESS_3RD_BIN}")
+EXTERNAL("libevent" ${LIBEVENT_VERSION} "${PROCESS_3RD_BIN}")
+EXTERNAL("libapr" ${LIBAPR_VERSION} "${PROCESS_3RD_BIN}")
+EXTERNAL("protobuf" ${PROTOBUF_VERSION} "${PROCESS_3RD_BIN}")
+
+if (NOT WIN32)
+ EXTERNAL("glog" ${GLOG_VERSION} "${PROCESS_3RD_BIN}")
+elseif (WIN32)
+ # Glog 0.3.3 does not compile out of the box on Windows. Therefore, we
+ # require 0.3.4.
+ EXTERNAL("glog" "0.3.4" "${PROCESS_3RD_BIN}")
+
+ # NOTE: We expect cURL exists on Unix (usually pulled in with a package
+ # manager), but Windows has no package manager, so we have to go get it.
+ EXTERNAL("curl" ${CURL_VERSION} "${PROCESS_3RD_BIN}")
+endif (NOT WIN32)
+
+# Intermediate convenience variables for oddly-structured directories.
+set(GLOG_LIB_ROOT ${GLOG_ROOT}-lib/lib)
+set(PROTOBUF_LIB ${PROTOBUF_ROOT}-lib/lib)
+
+# Convenience variables for include directories of third-party dependencies.
+set(PROCESS_INCLUDE_DIR ${PROCESS_3RD_SRC}/../include)
+set(STOUT_INCLUDE_DIR ${STOUT}/include)
+
+set(BOOST_INCLUDE_DIR ${BOOST_ROOT})
+set(GPERFTOOLS_INCLUDE_DIR ${GPERFTOOLS}/src)
+set(HTTP_PARSER_INCLUDE_DIR ${HTTP_PARSER_ROOT})
+set(LIBEV_INCLUDE_DIR ${LIBEV_ROOT})
+set(PICOJSON_INCLUDE_DIR ${PICOJSON_ROOT})
+set(PROTOBUF_INCLUDE_DIR ${PROTOBUF_LIB}/include)
+
+if (WIN32)
+ set(CURL_INCLUDE_DIR ${CURL_ROOT}/include)
+ set(GLOG_INCLUDE_DIR ${GLOG_ROOT}/src/windows)
+else (WIN32)
+ set(GLOG_INCLUDE_DIR ${GLOG_LIB_ROOT}/include)
+endif (WIN32)
+
+# Convenience variables for `lib` directories of built third-party dependencies.
+set(HTTP_PARSER_LIB_DIR ${HTTP_PARSER_ROOT}-build)
+set(LIBEV_LIB_DIR ${LIBEV_ROOT}-build/.libs)
+
+if (WIN32)
+ set(CURL_LIB_DIR ${CURL_ROOT}/lib)
+ set(GLOG_LIB_DIR ${GLOG_ROOT}/Debug)
+ set(PROTOBUF_LIB_DIR ${PROTOBUF_ROOT}/vsprojects/Debug)
+else (WIN32)
+ set(GLOG_LIB_DIR ${GLOG_LIB_ROOT}/lib)
+ set(PROTOBUF_LIB_DIR ${PROTOBUF_LIB}/lib)
+endif (WIN32)
+
+# Convenience variables for "lflags", the symbols we pass to CMake to generate
+# things like `-L/path/to/glog` or `-lglog`.
+set(HTTP_PARSER_LFLAG http_parser)
+set(LIBEV_LFLAG ev)
+
+if (WIN32)
+ # Necessary because the lib names for (e.g.) glog are generated incorrectly
+ # on Windows. That is, on *nix, the glog binary should be (e.g.) libglog.so,
+ # and on Windows it should be glog.lib. But on Windows, it's actually
+ # libglog.lib. Hence, we have to special case it here because CMake assumes
+ # the library names are generated correctly.
+ set(CURL_LFLAG libcurl_a)
+ set(GLOG_LFLAG libglog)
+ set(PROTOBUF_LFLAG libprotobuf)
+else (WIN32)
+ set(GLOG_LFLAG glog)
+ set(PROTOBUF_LFLAG protobuf)
+endif (WIN32)
+
+# Convenience variable for `protoc`, the Protobuf compiler.
+set(PROTOC ${PROTOBUF_LIB}/bin/protoc)
+
+# Configure the process library, the last of our third-party libraries.
+#######################################################################
+include(ProcessConfigure)
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/mesos/blob/685df82d/3rdparty/libprocess/cmake/ProcessConfigure.cmake
----------------------------------------------------------------------
diff --git a/3rdparty/libprocess/cmake/ProcessConfigure.cmake b/3rdparty/libprocess/cmake/ProcessConfigure.cmake
index a5dea3a..076c883 100755
--- a/3rdparty/libprocess/cmake/ProcessConfigure.cmake
+++ b/3rdparty/libprocess/cmake/ProcessConfigure.cmake
@@ -44,36 +44,6 @@ set(PROCESS_PACKAGE_VERSION 0.0.1)
set(PROCESS_PACKAGE_SOVERSION 0)
set(PROCESS_TARGET process-${PROCESS_PACKAGE_VERSION})
-# DEFINE DIRECTORY STRUCTURE FOR THIRD-PARTY LIBS.
-##################################################
-set(PROCESS_3RD_SRC ${CMAKE_SOURCE_DIR}/3rdparty/libprocess/3rdparty)
-set(PROCESS_3RD_BIN ${CMAKE_BINARY_DIR}/3rdparty/libprocess/3rdparty)
-
-set(STOUT ${PROCESS_3RD_SRC}/stout)
-
-EXTERNAL("boost" ${BOOST_VERSION} "${PROCESS_3RD_BIN}")
-EXTERNAL("picojson" ${PICOJSON_VERSION} "${PROCESS_3RD_BIN}")
-EXTERNAL("http_parser" ${HTTP_PARSER_VERSION} "${PROCESS_3RD_BIN}")
-EXTERNAL("libev" ${LIBEV_VERSION} "${PROCESS_3RD_BIN}")
-EXTERNAL("libevent" ${LIBEVENT_VERSION} "${PROCESS_3RD_BIN}")
-EXTERNAL("libapr" ${LIBAPR_VERSION} "${PROCESS_3RD_BIN}")
-
-if (NOT WIN32)
- EXTERNAL("glog" ${GLOG_VERSION} "${PROCESS_3RD_BIN}")
-elseif (WIN32)
- # Glog 0.3.3 does not compile out of the box on Windows. Therefore, we
- # require 0.3.4.
- EXTERNAL("glog" "0.3.4" "${PROCESS_3RD_BIN}")
-endif (NOT WIN32)
-
-set(GLOG_LIB ${GLOG_ROOT}-lib/lib)
-
-# Directory structure for windows-only third-party libs.
-########################################################
-if (WIN32)
- EXTERNAL("curl" ${CURL_VERSION} "${PROCESS_3RD_BIN}")
-endif (WIN32)
-
# Define process library dependencies. Tells the process library build targets
# download/configure/build all third-party libraries before attempting to build.
################################################################################
@@ -84,6 +54,7 @@ set(PROCESS_DEPENDENCIES
${PICOJSON_TARGET}
${HTTP_PARSER_TARGET}
${LIBEV_TARGET}
+ ${PROTOBUF_TARGET}
)
# Define third-party include directories. Tells compiler toolchain where to get
@@ -91,35 +62,17 @@ set(PROCESS_DEPENDENCIES
###############################################################################
set(PROCESS_INCLUDE_DIRS
${PROCESS_INCLUDE_DIRS}
- ${PROCESS_3RD_SRC}/../include
- ${STOUT}/include
- ${BOOST_ROOT}
- ${LIBEV_ROOT}
- ${PICOJSON_ROOT}
- )
-
-if (WIN32)
- set(PROCESS_INCLUDE_DIRS
- ${PROCESS_INCLUDE_DIRS}
- ${GLOG_ROOT}/src/windows
- )
-else (WIN32)
- set(PROCESS_INCLUDE_DIRS
- ${PROCESS_INCLUDE_DIRS}
- ${GLOG_LIB}/include
- )
-endif (WIN32)
-
-set(PROCESS_INCLUDE_DIRS
- ${PROCESS_INCLUDE_DIRS}
- ${HTTP_PARSER_ROOT}
+ ${PROCESS_INCLUDE_DIR}
+ ${STOUT_INCLUDE_DIR}
+ ${BOOST_INCLUDE_DIR}
+ ${LIBEV_INCLUDE_DIR}
+ ${PICOJSON_INCLUDE_DIR}
+ ${GLOG_INCLUDE_DIR}
+ ${HTTP_PARSER_INCLUDE_DIR}
)
if (HAS_GPERFTOOLS)
- set(PROCESS_INCLUDE_DIRS
- ${PROCESS_INCLUDE_DIRS}
- ${GPERFTOOLS}/src
- )
+ set(PROCESS_INCLUDE_DIRS ${PROCESS_INCLUDE_DIRS} ${GPERFTOOLS_INCLUDE_DIR})
endif (HAS_GPERFTOOLS)
# Define third-party lib install directories. Used to tell the compiler
@@ -128,9 +81,9 @@ endif (HAS_GPERFTOOLS)
########################################################################
set(PROCESS_LIB_DIRS
${PROCESS_LIB_DIRS}
- ${GLOG_LIB}/lib
- ${LIBEV_ROOT}-build/.libs
- ${HTTP_PARSER_ROOT}-build
+ ${GLOG_LIB_DIR}
+ ${LIBEV_LIB_DIR}
+ ${HTTP_PARSER_LIB_DIR}
)
# Define third-party libs. Used to generate flags that the linker uses to
@@ -141,9 +94,9 @@ find_package(Threads REQUIRED)
set(PROCESS_LIBS
${PROCESS_LIBS}
${PROCESS_TARGET}
- glog
- ev
- http_parser
+ ${GLOG_LFLAG}
+ ${LIBEV_LFLAG}
+ ${HTTP_PARSER_LFLAG}
${CMAKE_THREAD_LIBS_INIT}
)
http://git-wip-us.apache.org/repos/asf/mesos/blob/685df82d/3rdparty/libprocess/cmake/ProcessTestsConfigure.cmake
----------------------------------------------------------------------
diff --git a/3rdparty/libprocess/cmake/ProcessTestsConfigure.cmake b/3rdparty/libprocess/cmake/ProcessTestsConfigure.cmake
index e105bd8..99496f2 100644
--- a/3rdparty/libprocess/cmake/ProcessTestsConfigure.cmake
+++ b/3rdparty/libprocess/cmake/ProcessTestsConfigure.cmake
@@ -33,13 +33,29 @@
# DIRECTORY STRUCTURE FOR THIRD-PARTY LIBS REQUIRED FOR TEST INFRASTRUCTURE.
############################################################################
-EXTERNAL("gmock" ${GMOCK_VERSION} "${PROCESS_3RD_BIN}")
-EXTERNAL("protobuf" ${PROTOBUF_VERSION} "${PROCESS_3RD_BIN}")
+EXTERNAL("gmock" ${GMOCK_VERSION} "${PROCESS_3RD_BIN}")
set(GTEST_SRC ${GMOCK_ROOT}/gtest)
set(GPERFTOOLS_VERSION 2.0)
set(GPERFTOOLS ${PROCESS_3RD_BIN}/gperftools-${GPERFTOOLS_VERSION})
-set(PROTOBUF_LIB ${PROTOBUF_ROOT}-lib/lib)
+
+# Convenience variables for include directories of third-party dependencies.
+set(GMOCK_INCLUDE_DIR ${GMOCK_ROOT}/include)
+set(GTEST_INCLUDE_DIR ${GTEST_SRC}/include)
+
+# Convenience variables for `lib` directories of built third-party dependencies.
+set(GTEST_LIB_DIR ${GMOCK_ROOT}-build/gtest/lib/.libs)
+
+if (WIN32)
+ set(GMOCK_LIB_DIR ${GMOCK_ROOT}/msvc/2010/Debug)
+else (WIN32)
+ set(GMOCK_LIB_DIR ${GMOCK_ROOT}-build/lib/.libs)
+endif (WIN32)
+
+# Convenience variables for "lflags", the symbols we pass to CMake to generate
+# things like `-L/path/to/glog` or `-lglog`.
+set(GMOCK_LFLAG gmock)
+set(GTEST_LFLAG gtest)
# COMPILER CONFIGURATION.
#########################
@@ -55,7 +71,6 @@ endif (APPLE)
set(PROCESS_TEST_DEPENDENCIES
${PROCESS_TEST_DEPENDENCIES}
${PROCESS_DEPENDENCIES}
- ${PROTOBUF_TARGET}
${GMOCK_TARGET}
)
@@ -66,8 +81,8 @@ set(PROCESS_TEST_INCLUDE_DIRS
${PROCESS_TEST_INCLUDE_DIRS}
../ # includes, e.g., decoder.hpp
${PROCESS_INCLUDE_DIRS}
- ${GMOCK_ROOT}/include
- ${GTEST_SRC}/include
+ ${GMOCK_INCLUDE_DIR}
+ ${GTEST_INCLUDE_DIR}
src
)
@@ -78,8 +93,8 @@ set(PROCESS_TEST_INCLUDE_DIRS
set(PROCESS_TEST_LIB_DIRS
${PROCESS_TEST_LIB_DIRS}
${PROCESS_LIB_DIRS}
- ${GMOCK_ROOT}-build/lib/.libs
- ${GMOCK_ROOT}-build/gtest/lib/.libs
+ ${GMOCK_LIB_DIR}
+ ${GTEST_LIB_DIR}
)
# DEFINE THIRD-PARTY LIBS. Used to generate flags that the linker uses to
@@ -88,6 +103,6 @@ set(PROCESS_TEST_LIB_DIRS
set(PROCESS_TEST_LIBS
${PROCESS_TEST_LIBS}
${PROCESS_LIBS}
- gmock
- gtest
+ ${GMOCK_LFLAG}
+ ${GTEST_LFLAG}
)