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 2016/03/01 19:29:58 UTC

[02/11] mesos git commit: CMake:[3/4] Transitioned to static-everything builds on Windows.

CMake:[3/4] Transitioned to static-everything builds on Windows.

Review: https://reviews.apache.org/r/43694/


Project: http://git-wip-us.apache.org/repos/asf/mesos/repo
Commit: http://git-wip-us.apache.org/repos/asf/mesos/commit/839829ad
Tree: http://git-wip-us.apache.org/repos/asf/mesos/tree/839829ad
Diff: http://git-wip-us.apache.org/repos/asf/mesos/diff/839829ad

Branch: refs/heads/master
Commit: 839829adcd4ab225e4c07fc77281ae6daf5b1cc2
Parents: e042e80
Author: Alex Clemmer <cl...@gmail.com>
Authored: Tue Mar 1 10:01:09 2016 -0800
Committer: Joris Van Remoortere <jo...@gmail.com>
Committed: Tue Mar 1 10:25:34 2016 -0800

----------------------------------------------------------------------
 3rdparty/libprocess/3rdparty/CMakeLists.txt     | 20 ++++++++------------
 .../http-parser/CMakeLists.txt.template         |  2 +-
 .../cmake/Process3rdpartyConfigure.cmake        | 15 ++++++++-------
 .../libprocess/cmake/ProcessConfigure.cmake     |  9 +++++++--
 .../cmake/ProcessTestsConfigure.cmake           |  4 ++++
 3rdparty/libprocess/src/CMakeLists.txt          | 11 ++++++++++-
 6 files changed, 38 insertions(+), 23 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/mesos/blob/839829ad/3rdparty/libprocess/3rdparty/CMakeLists.txt
----------------------------------------------------------------------
diff --git a/3rdparty/libprocess/3rdparty/CMakeLists.txt b/3rdparty/libprocess/3rdparty/CMakeLists.txt
index 2b2da5b..ad979e5 100644
--- a/3rdparty/libprocess/3rdparty/CMakeLists.txt
+++ b/3rdparty/libprocess/3rdparty/CMakeLists.txt
@@ -54,7 +54,7 @@ if (WIN32)
   #
   # [1] https://github.com/google/glog/pull/43
   set(GLOG_URL   ${UPSTREAM_URL}/glog-v0.3.4-g4d391fe.tar.gz)
-  set(CURL_URL   ${UPSTREAM_URL}/curl-static-${CURL_VERSION}.tar.gz)
+  set(CURL_URL   ${UPSTREAM_URL}/curl-${CURL_VERSION}.tar.gz)
   set(LIBAPR_URL ${UPSTREAM_URL}/libapr-${LIBAPR_VERSION}.tar.gz)
 endif (WIN32)
 
@@ -200,6 +200,7 @@ if (WIN32)
   ExternalProject_Add(
     ${LIBAPR_TARGET}
     PREFIX          ${LIBAPR_CMAKE_ROOT}
+    CMAKE_ARGS      -DBUILD_SHARED_LIBS=OFF
     INSTALL_COMMAND ${LIBAPR_INSTALL_CMD}
     URL             ${LIBAPR_URL}
     )
@@ -213,9 +214,9 @@ if (WIN32)
   ExternalProject_Add(
     ${CURL_TARGET}
     PREFIX            ${CURL_CMAKE_ROOT}
+    CMAKE_ARGS        -DBUILD_CURL_TESTS=OFF -DCURL_STATICLIB=ON -DCMAKE_C_FLAGS_DEBUG="/MTd"
     PATCH_COMMAND     ${CMAKE_NOOP}
-    CONFIGURE_COMMAND ${CMAKE_NOOP}
-    BUILD_COMMAND     ${CMAKE_NOOP}
+    BUILD_COMMAND     msbuild /p:RuntimeLibrary=MT_StaticDebug lib/libcurl.vcxproj
     INSTALL_COMMAND   ${CMAKE_NOOP}
     URL               ${CURL_URL}
   )
@@ -236,7 +237,7 @@ if (WIN32)
   # library that compiles on Windows. We need to either send this as a PR back
   # to the protobuf project, or we need to apply these changes to our existing
   # protobuf tarball in the patch step.
-  set(PROTOBUF_URL ${UPSTREAM_URL}/protobuf-${PROTOBUF_VERSION}-msvc1900.tar.gz)
+  set(PROTOBUF_URL ${UPSTREAM_URL}/protobuf-3.0.0-beta-2.tar.gz)
 endif (WIN32)
 
 # NOTE: `gmock` is "installed" into a lib directory, see "NOTE: (fix for
@@ -253,15 +254,9 @@ if (NOT WIN32)
   set(PROTOBUF_BUILD_CMD   make)
   set(PROTOBUF_INSTALL_CMD make install)
 elseif (WIN32)
-  set(PROTOBUF_PATCH_CMD   ${CMAKE_NOOP})
-  set(PROTOBUF_CONFIG_CMD  ${CMAKE_NOOP})
+  set(PROTOBUF_CONFIG_CMD  cmake -G "Visual Studio 14 2015 Win64" ../protobuf-${PROTOBUF_VERSION}/cmake -DBUILD_SHARED_LIBS=OFF -Dprotobuf_MSVC_STATIC_RUNTIME=ON -Dprotobuf_BUILD_TESTS=OFF)
+  set(PROTOBUF_BUILD_CMD   msbuild protobuf.sln)
   set(PROTOBUF_INSTALL_CMD ${CMAKE_NOOP})
-  VS_BUILD_CMD(
-      PROTOBUF
-      ${PROTOBUF_ROOT}/vsprojects/protobuf.sln
-      ${CMAKE_BUILD_TYPE}
-      ${PROTOBUF_ROOT}/vsprojects
-      "libprotobuf libprotoc protoc")
 endif (NOT WIN32)
 
 # NOTE: An implicit consequence of the following code is that on non-Windows
@@ -283,6 +278,7 @@ ExternalProject_Add(
 ExternalProject_Add(
   ${PROTOBUF_TARGET}
   PREFIX            ${PROTOBUF_CMAKE_ROOT}
+  CMAKE_ARGS        -DBUILD_SHARED_LIBS=${BUILD_SHARED_LIBS} -DCMAKE_CXX_FLAGS_DEBUG="/MTd"
   PATCH_COMMAND     ${PROTOBUF_PATCH_CMD}
   CONFIGURE_COMMAND ${PROTOBUF_CONFIG_CMD}
   BUILD_COMMAND     ${PROTOBUF_BUILD_CMD}

http://git-wip-us.apache.org/repos/asf/mesos/blob/839829ad/3rdparty/libprocess/3rdparty/http-parser/CMakeLists.txt.template
----------------------------------------------------------------------
diff --git a/3rdparty/libprocess/3rdparty/http-parser/CMakeLists.txt.template b/3rdparty/libprocess/3rdparty/http-parser/CMakeLists.txt.template
index bf2aa38..056a1c1 100644
--- a/3rdparty/libprocess/3rdparty/http-parser/CMakeLists.txt.template
+++ b/3rdparty/libprocess/3rdparty/http-parser/CMakeLists.txt.template
@@ -31,4 +31,4 @@ set(HTTP_PARSER_SRC
   http_parser.h
   )
 
-add_library(http_parser ${HTTP_PARSER_SRC})
+add_library(http_parser STATIC ${HTTP_PARSER_SRC})

http://git-wip-us.apache.org/repos/asf/mesos/blob/839829ad/3rdparty/libprocess/cmake/Process3rdpartyConfigure.cmake
----------------------------------------------------------------------
diff --git a/3rdparty/libprocess/cmake/Process3rdpartyConfigure.cmake b/3rdparty/libprocess/cmake/Process3rdpartyConfigure.cmake
index 5db49b0..167b599 100644
--- a/3rdparty/libprocess/cmake/Process3rdpartyConfigure.cmake
+++ b/3rdparty/libprocess/cmake/Process3rdpartyConfigure.cmake
@@ -36,8 +36,9 @@ elseif (WIN32)
   # 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.
+  # NOTE: We expect cURL and zlib exist 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)
 
@@ -75,10 +76,10 @@ set(LIBEV_LIB_DIR       ${LIBEV_ROOT}-build/.libs)
 
 if (WIN32)
   set(HTTP_PARSER_LIB_DIR ${HTTP_PARSER_ROOT}-build/${CMAKE_BUILD_TYPE})
-  set(CURL_LIB_DIR        ${CURL_ROOT}/lib)
+  set(CURL_LIB_DIR        ${CURL_ROOT}-build/lib/${CMAKE_BUILD_TYPE})
   set(GLOG_LIB_DIR        ${GLOG_ROOT}-build/${CMAKE_BUILD_TYPE})
   set(LIBEVENT_LIB_DIR    ${LIBEVENT_ROOT}-build/lib)
-  set(PROTOBUF_LIB_DIR    ${PROTOBUF_ROOT}/vsprojects/${CMAKE_BUILD_TYPE})
+  set(PROTOBUF_LIB_DIR    ${PROTOBUF_ROOT}-build/${CMAKE_BUILD_TYPE})
 else (WIN32)
   set(HTTP_PARSER_LIB_DIR ${HTTP_PARSER_ROOT}-build)
   set(GLOG_LIB_DIR        ${GLOG_LIB_ROOT}/lib)
@@ -99,8 +100,8 @@ if (WIN32)
   # and on Windows it should be curl.lib. But on Windows, it's actually
   # libcurl.lib. Hence, we have to special case it here because CMake assumes
   # the library names are generated correctly.
-  set(CURL_LFLAG     libcurl_a)
-  set(PROTOBUF_LFLAG libprotobuf)
+  set(CURL_LFLAG     libcurl)
+  set(PROTOBUF_LFLAG libprotobufd)
 else (WIN32)
   set(CURL_LFLAG     curl)
   set(DL_LFLAG       dl)
@@ -112,7 +113,7 @@ endif (WIN32)
 if (NOT WIN32)
   set(PROTOC ${PROTOBUF_LIB_ROOT}/bin/protoc)
 else (NOT WIN32)
-  set(PROTOC ${PROTOBUF_ROOT}/vsprojects/${CMAKE_BUILD_TYPE}/protoc.exe)
+  set(PROTOC ${PROTOBUF_ROOT}-build/${CMAKE_BUILD_TYPE}/protoc.exe)
 endif (NOT WIN32)
 
 # Configure the process library, the last of our third-party libraries.

http://git-wip-us.apache.org/repos/asf/mesos/blob/839829ad/3rdparty/libprocess/cmake/ProcessConfigure.cmake
----------------------------------------------------------------------
diff --git a/3rdparty/libprocess/cmake/ProcessConfigure.cmake b/3rdparty/libprocess/cmake/ProcessConfigure.cmake
index 2a37fdb..6b804cd 100755
--- a/3rdparty/libprocess/cmake/ProcessConfigure.cmake
+++ b/3rdparty/libprocess/cmake/ProcessConfigure.cmake
@@ -121,7 +121,6 @@ find_package(Threads REQUIRED)
 
 set(PROCESS_LIBS
   ${PROCESS_LIBS}
-  ${PROCESS_TARGET}
   ${GLOG_LFLAG}
   ${HTTP_PARSER_LFLAG}
   ${CMAKE_THREAD_LIBS_INIT}
@@ -134,7 +133,12 @@ elseif (ENABLE_LIBEVENT)
 endif (NOT ENABLE_LIBEVENT)
 
 if (WIN32)
-  set(PROCESS_LIBS ${PROCESS_LIBS} ${CURL_LFLAG})
+  set(PROCESS_LIBS
+    ${PROCESS_LIBS}
+    ${CURL_LFLAG}
+    ws2_32
+    Mswsock
+    )
 elseif (NOT WIN32)
   find_package(ZLIB REQUIRED)
 
@@ -149,5 +153,6 @@ elseif (NOT WIN32)
   set(PROCESS_LIBS
     ${PROCESS_LIBS}
     ${ZLIB_LIBRARIES}
+    pthread
     )
 endif (WIN32)

http://git-wip-us.apache.org/repos/asf/mesos/blob/839829ad/3rdparty/libprocess/cmake/ProcessTestsConfigure.cmake
----------------------------------------------------------------------
diff --git a/3rdparty/libprocess/cmake/ProcessTestsConfigure.cmake b/3rdparty/libprocess/cmake/ProcessTestsConfigure.cmake
index 3a2e099..83afd25 100644
--- a/3rdparty/libprocess/cmake/ProcessTestsConfigure.cmake
+++ b/3rdparty/libprocess/cmake/ProcessTestsConfigure.cmake
@@ -75,6 +75,7 @@ endif (APPLE)
 set(PROCESS_TEST_DEPENDENCIES
   ${PROCESS_TEST_DEPENDENCIES}
   ${PROCESS_DEPENDENCIES}
+  ${PROCESS_TARGET}
   ${GMOCK_TARGET}
   )
 
@@ -97,6 +98,8 @@ set(PROCESS_TEST_INCLUDE_DIRS
 set(PROCESS_TEST_LIB_DIRS
   ${PROCESS_TEST_LIB_DIRS}
   ${PROCESS_LIB_DIRS}
+  ${CMAKE_CURRENT_BINARY_DIR}/.. # libprocess directory.
+
   ${GMOCK_LIB_DIR}
   ${GTEST_LIB_DIR}
   )
@@ -106,6 +109,7 @@ set(PROCESS_TEST_LIB_DIRS
 #########################################################################
 set(PROCESS_TEST_LIBS
   ${PROCESS_TEST_LIBS}
+  ${PROCESS_TARGET}
   ${PROCESS_LIBS}
   ${GMOCK_LFLAG}
   ${GTEST_LFLAG}

http://git-wip-us.apache.org/repos/asf/mesos/blob/839829ad/3rdparty/libprocess/src/CMakeLists.txt
----------------------------------------------------------------------
diff --git a/3rdparty/libprocess/src/CMakeLists.txt b/3rdparty/libprocess/src/CMakeLists.txt
index 12dfaf6..a8379d3 100644
--- a/3rdparty/libprocess/src/CMakeLists.txt
+++ b/3rdparty/libprocess/src/CMakeLists.txt
@@ -67,12 +67,21 @@ endif (ENABLE_LIBEVENT)
 ###########################################################################
 include_directories(${PROCESS_INCLUDE_DIRS})
 
+# LINKING LIBRARIES BY DIRECTORY (might generate, e.g., -L/path/to/thing on
+# Linux).
+###########################################################################
+link_directories(${PROCESS_LIB_DIRS})
+
 # THE PROCESS LIBRARY (generates, e.g., libprocess.so, etc., on Linux).
 #######################################################################
-add_library(${PROCESS_TARGET} ${PROCESS_SRC})
+add_library(${PROCESS_TARGET} STATIC ${PROCESS_SRC})
 set_target_properties(
   ${PROCESS_TARGET} PROPERTIES
   VERSION ${PROCESS_PACKAGE_VERSION}
   SOVERSION ${PROCESS_PACKAGE_SOVERSION}
   )
 add_dependencies(${PROCESS_TARGET} ${PROCESS_DEPENDENCIES})
+
+# ADD LINKER FLAGS (generates, e.g., -lglog on Linux).
+######################################################
+target_link_libraries(${PROCESS_TARGET} ${PROCESS_LIBS})