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)