blob: e42cf190bd0d0a768002ca8b28d53aa910543fb7 [file] [log] [blame]
# 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 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)
# Intermediate convenience variables for oddly-structured directories.
set(GLOG_LIB_ROOT ${GLOG_ROOT}-lib/lib)
set(PROTOBUF_LIB_ROOT ${PROTOBUF_ROOT}-lib/lib)
set(LIBEV_LIB_ROOT ${LIBEV_ROOT}-lib/lib)
set(LIBEVENT_LIB_ROOT ${LIBEVENT_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})
if (WIN32)
set(CURL_INCLUDE_DIR ${CURL_ROOT}/include)
set(GLOG_INCLUDE_DIR ${GLOG_ROOT}/src/windows)
set(PROTOBUF_INCLUDE_DIR ${PROTOBUF_ROOT}/src)
set(LIBEVENT_INCLUDE_DIR
${LIBEVENT_ROOT}/include
${LIBEVENT_ROOT}-build/include)
else (WIN32)
set(GLOG_INCLUDE_DIR ${GLOG_LIB_ROOT}/include)
set(PROTOBUF_INCLUDE_DIR ${PROTOBUF_LIB_ROOT}/include)
set(LIBEVENT_INCLUDE_DIR ${LIBEVENT_LIB_ROOT}/include)
endif (WIN32)
# Convenience variables for `lib` directories of built third-party dependencies.
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}-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}-build/${CMAKE_BUILD_TYPE})
else (WIN32)
set(HTTP_PARSER_LIB_DIR ${HTTP_PARSER_ROOT}-build)
set(GLOG_LIB_DIR ${GLOG_LIB_ROOT}/lib)
set(LIBEVENT_LIB_DIR ${LIBEVENT_LIB_ROOT}/lib)
set(PROTOBUF_LIB_DIR ${PROTOBUF_LIB_ROOT}/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)
set(LIBEVENT_LFLAG event)
set(GLOG_LFLAG glog)
if (WIN32)
# Necessary because the lib names for (e.g.) curl are generated incorrectly
# on Windows. That is, on *nix, the curl binary should be (e.g.) libcurl.so,
# 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)
set(PROTOBUF_LFLAG libprotobufd)
else (WIN32)
set(CURL_LFLAG curl)
set(DL_LFLAG dl)
set(PROTOBUF_LFLAG protobuf)
set(SASL_LFLAG sasl2)
endif (WIN32)
# Convenience variable for `protoc`, the Protobuf compiler.
if (NOT WIN32)
set(PROTOC ${PROTOBUF_LIB_ROOT}/bin/protoc)
else (NOT WIN32)
set(PROTOC ${PROTOBUF_ROOT}-build/${CMAKE_BUILD_TYPE}/protoc.exe)
endif (NOT WIN32)
# Configure the process library, the last of our third-party libraries.
#######################################################################
include(StoutConfigure)
include(ProcessConfigure)
# Define target for AGENT.
##########################
set(
AGENT_TARGET mesos-slave
CACHE STRING "Target we use to refer to slave executable")