1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54
|
cmake_minimum_required(VERSION 2.8)
# Configure HOST_BUILD_DIR
if((NOT CMAKE_CROSSCOMPILING) AND (NOT HOST_BUILD_DIR))
if (CMAKE_RUNTIME_OUTPUT_DIRECTORY)
set(HOST_BUILD_DIR ${CMAKE_RUNTIME_OUTPUT_DIRECTORY})
else()
set(HOST_BUILD_DIR ${CMAKE_CURRENT_BINARY_DIR})
endif()
endif()
if(HOST_BUILD_DIR)
set(PROTOBUF_PROTOC_EXECUTABLE ${HOST_BUILD_DIR}/protoc)
set(GRPC_CPP_PLUGIN_PATH ${HOST_BUILD_DIR}/grpc_cpp_plugin)
endif()
# Set ROOT dir for every third party dependency
set(GRPC_ROOT_DIR ${CMAKE_CURRENT_SOURCE_DIR}/../../../../external/grpc-grpc)
set(PROTOBUF_ROOT_DIR ${CMAKE_CURRENT_SOURCE_DIR}/../../../../external/protobuf)
set(BORINGSSL_ROOT_DIR ${CMAKE_CURRENT_SOURCE_DIR}/../../../../external/boringssl/src)
set(GMOCK_ROOT_DIR ${CMAKE_CURRENT_SOURCE_DIR}/../../../../external/gmock)
set(GTEST_ROOT_DIR ${CMAKE_CURRENT_SOURCE_DIR}/../../../../external/gtest)
set(ZLIB_ROOT_DIR ${CMAKE_CURRENT_SOURCE_DIR}/../../../../external/zlib/src)
set(NANOPB_ROOT_DIR ${CMAKE_CURRENT_SOURCE_DIR}/../../../../external/nanopb-c)
set(protobuf_BUILD_TESTS OFF CACHE BOOL "Build tests")
set(protobuf_WITH_ZLIB OFF CACHE BOOL "Build with zlib support") # Tell protobuf to not try to find zlib
set(HAVE_ZLIB 1) # But still tell it to use it.
# Include additional cmake modules after setting global variables
include(cmake/proto_compile.cmake)
include(cmake/test.cmake)
# Include gRPC
set(GRPC_INCLUDE_DIR ${GRPC_ROOT_DIR}/include)
set(PROTOBUF_INCLUDE_DIR ${PROTOBUF_ROOT_DIR}/src)
add_subdirectory(${GRPC_ROOT_DIR} ./grpc EXCLUDE_FROM_ALL)
# Set command line flags for profiler code
include_directories(${CMAKE_CURRENT_SOURCE_DIR}
${CMAKE_CURRENT_BINARY_DIR}
${PROTOBUF_INCLUDE_DIR}
${GRPC_INCLUDE_DIR})
set(CMAKE_POSITION_INDEPENDENT_CODE TRUE)
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -std=c11")
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11")
# Add profiler components
add_subdirectory(cpu)
add_subdirectory(network)
add_subdirectory(perfa)
add_subdirectory(perfd)
add_subdirectory(proto)
add_subdirectory(utils)
|