blob: 43c14d383789201ff0bc6b28e4c0359f6d7a6d00 [file] [log] [blame]
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}/grpc/third_party/protobuf/protoc)
set(GRPC_CPP_PLUGIN_PATH ${HOST_BUILD_DIR}/grpc/grpc_cpp_plugin)
endif()
# Enables systrace output
if (NOT TRACE_OUTPUT)
set(TRACE_OUTPUT ON)
endif()
# Set ROOT dir for every third party dependency
set(EXTERNAL_ROOT_DIR ${CMAKE_CURRENT_SOURCE_DIR}/../../../../external)
set(BORINGSSL_ROOT_DIR ${EXTERNAL_ROOT_DIR}/boringssl/src)
set(GMOCK_ROOT_DIR ${EXTERNAL_ROOT_DIR}/googletest/googlemock)
set(GRPC_ROOT_DIR ${EXTERNAL_ROOT_DIR}/grpc-grpc)
set(GTEST_ROOT_DIR ${EXTERNAL_ROOT_DIR}/googletest/googletest)
set(NANOPB_ROOT_DIR ${EXTERNAL_ROOT_DIR}/nanopb-c)
set(PROTOBUF_ROOT_DIR ${EXTERNAL_ROOT_DIR}/protobuf)
set(ZLIB_ROOT_DIR ${EXTERNAL_ROOT_DIR}/zlib/src)
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/install.cmake)
include(cmake/linker-script.cmake)
include(cmake/proto_compile.cmake)
include(cmake/test.cmake)
include(cmake/lint.cmake) # It has to be after proto_compile as it depends on it
# Set compiler flags used both for the profiler code and for its third party dependencies
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -fno-exceptions")
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fno-exceptions")
# 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(WARNING_FLAGS "-Wall -Werror")
set(CMAKE_POSITION_INDEPENDENT_CODE TRUE)
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} ${WARNING_FLAGS} -std=c11")
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${WARNING_FLAGS} -std=c++11")
# Add profiler components
add_subdirectory(perfa)
add_subdirectory(perfd)
add_subdirectory(proto)
add_subdirectory(utils)
# Add test utils directory
add_subdirectory(test)