Skip to content

Instantly share code, notes, and snippets.

@m0ppers
Created February 22, 2016 14:13
Show Gist options
  • Save m0ppers/8ef4480041394a410969 to your computer and use it in GitHub Desktop.
Save m0ppers/8ef4480041394a410969 to your computer and use it in GitHub Desktop.
cmake_minimum_required (VERSION 3.2)
include(FindPackageHandleStandardArgs)
include("cmake/HunterGate.cmake")
include(ExternalProject)
HunterGate(
URL "https://github.com/ruslo/hunter/archive/v0.12.45.tar.gz"
SHA1 "a1d363c7ffb324eb55a410715868ada32e595622"
)
project (arangodb-mesos-framework CXX)
set(CMAKE_LINKER "clang++")
set(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/bin)
SET(CMAKE_FIND_LIBRARY_SUFFIXES ".a")
SET(BUILD_SHARED_LIBRARIES OFF)
SET(CMAKE_EXE_LINKER_FLAGS "-static -static-libgcc -static-libstdc++")
add_executable(
arangodb-mesos-framework
src/framework.cpp
)
add_library(
arangodb-mesos STATIC
src/ArangoManager.cpp
src/ArangoScheduler.cpp
src/ArangoState.cpp
src/Caretaker.cpp
src/CaretakerStandalone.cpp
src/CaretakerCluster.cpp
src/Global.cpp
src/HttpServer.cpp
src/arangodb.pb.cc
src/utils.cpp
3rdParty/pbjson/src/pbjson.cpp
)
target_compile_features(arangodb-mesos-framework PRIVATE cxx_constexpr)
target_compile_features(arangodb-mesos PRIVATE cxx_constexpr)
if(NOT MESOS_SOURCE_PATH)
set(MESOS_SOURCE_PATH ${CMAKE_CURRENT_BINARY_DIR}/mesos)
endif()
find_path(MESOS_FOUND_SOURCE_PATH
NAMES build/3rdparty/libprocess/3rdparty/stout/include/Makefile
PATHS ${MESOS_SOURCE_PATH}
NO_CMAKE_SYSTEM_PATH
)
if(NOT MESOS_FOUND_SOURCE_PATH)
message(FATAL_ERROR "Please provide -DMESOS_SOURCE_PATH or link the mesos source directory to ${CMAKE_BINARY_DIR}/mesos")
endif ()
set(MESOS_LIBRARIES
${MESOS_FOUND_SOURCE_PATH}/build/src/.libs/libmesos_no_3rdparty.a
${MESOS_FOUND_SOURCE_PATH}/build/3rdparty/libprocess/.libs/libprocess.a
${MESOS_FOUND_SOURCE_PATH}/build/3rdparty/libprocess/3rdparty/glog-0.3.3/.libs/libglog.a
${MESOS_FOUND_SOURCE_PATH}/build/3rdparty/libprocess/3rdparty/protobuf-2.5.0/src/.libs/libprotobuf.a
${MESOS_FOUND_SOURCE_PATH}/build/3rdparty/zookeeper-3.4.5/src/c/.libs/libzookeeper_st.a
${MESOS_FOUND_SOURCE_PATH}/build/3rdparty/leveldb/libleveldb.a
${MESOS_FOUND_SOURCE_PATH}/build/3rdparty/libprocess/3rdparty/libev-4.15/.libs/libev.a
)
set(THREADS_PREFER_PTHREAD_FLAG ON)
find_package (Threads REQUIRED)
#hunter_add_package(CURL)
#find_package(CURL REQUIRED)
hunter_add_package(libmicrohttpd)
find_package(libmicrohttpd REQUIRED)
hunter_add_package(ZLIB)
find_package(ZLIB REQUIRED)
hunter_add_package(GnuTLS)
find_package(GnuTLS REQUIRED)
hunter_add_package(libgpgerror)
find_package(libgpgerror REQUIRED)
hunter_add_package(nettle)
find_package(nettle REQUIRED)
hunter_add_package(apr)
find_package(apr REQUIRED)
hunter_add_package(svn)
find_package(svn REQUIRED)
#find_path(MHD_INCLUDE_DIR
# libmicrohttpd/platform.h
#)
#find_library(MHD_LIBRARY
# microhttpd
#)
#find_package_handle_standard_args(Microhttpd DEFAULT_MSG
# MHD_LIBRARY MHD_INCLUDE_DIR)
#if ( NOT Microhttpd_FOUND)
# message(FATAL_ERROR "libmicrohttpd not found!")
#endif()
include_directories(
${CMAKE_CURRENT_SOURCE_DIR}/3rdParty/pbjson/src
${MESOS_FOUND_SOURCE_PATH}/3rdparty/libprocess/include
${MESOS_FOUND_SOURCE_PATH}/3rdparty/libprocess/3rdparty/stout/include
${MESOS_FOUND_SOURCE_PATH}/include
${MESOS_FOUND_SOURCE_PATH}/src
${MESOS_FOUND_SOURCE_PATH}/build/3rdparty/libprocess/3rdparty/stout/include
${MESOS_FOUND_SOURCE_PATH}/build/3rdparty/libprocess/include
${MESOS_FOUND_SOURCE_PATH}/build/3rdparty/zookeeper-3.4.5/src/c/include
${MESOS_FOUND_SOURCE_PATH}/build/3rdparty/zookeeper-3.4.5/src/c/generated
${MESOS_FOUND_SOURCE_PATH}/build/3rdparty/libprocess/3rdparty/protobuf-2.5.0/src
${MESOS_FOUND_SOURCE_PATH}/build/src
${MESOS_FOUND_SOURCE_PATH}/build/include
${MESOS_FOUND_SOURCE_PATH}/build/3rdparty/libprocess/3rdparty/picojson-1.3.0/
${libmicrohttpd_INCLUDE_DIR}
${CURL_INCLUDE_DIR}
)
target_link_libraries(
arangodb-mesos-framework
arangodb-mesos
)
target_link_libraries(
arangodb-mesos
${MESOS_LIBRARIES}
${ZLIB_LIBRARIES}
${CURL_LIBRARIES}
${svn_LIBRARIES}
${apr_LIBRARIES}
${libmicrohttpd_LIBRARY}
${GNUTLS_LIBRARIES}
${libgcrypt_LIBRARIES}
${libgpgerror_LIBRARIES}
${nettle_LIBRARY}
${hogweed_LIBRARY}
${OPENSSL_SSL_LIBRARY}
${OPENSSL_CRYPTO_LIBRARY}
${SASL2_LIBRARY}
${SASL2_ROOT}/lib/sasl2/libgssapiv2.a
Threads::Threads
)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment