cmake_minimum_required(VERSION 3.5.1) project(cmix) set(CMAKE_CXX_STANDARD 11) set(CMAKE_CXX_STANDARD_REQUIRED ON) if(WIN32) set(CMAKE_CXX_EXTENSIONS ON) else(WIN32) set(CMAKE_CXX_EXTENSIONS OFF) endif(WIN32) set(CMAKE_C_STANDARD 99) set(CMAKE_C_STANDARD_REQUIRED ON) set(CMAKE_C_EXTENSIONS OFF) list(APPEND CMAKE_MODULE_PATH ${CMAKE_CURRENT_SOURCE_DIR}/CMakeModules ${CMAKE_CURRENT_SOURCE_DIR}/wubwubcmake) list(APPEND CMAKE_PREFIX_PATH ${CMAKE_CURRENT_SOURCE_DIR}/CMakeModules) include(sanitizers) include(warning_settings) add_sane_warning_flags() check_compiling_with_clang(COMPILING_WITH_CLANG) if(COMPILING_WITH_CLANG) set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wno-documentation-unknown-command -Wno-documentation -Wno-shadow-field-in-constructor") set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -Wno-documentation-unknown-command -Wno-documentation -Wno-shadow-field-in-constructor") endif(COMPILING_WITH_CLANG) set(VERSION_MAJOR 1 CACHE STRING "Project major version number.") set(VERSION_MINOR 0 CACHE STRING "Project minor version number.") set(VERSION_PATCH 0 CACHE STRING "Project patch version number.") mark_as_advanced(VERSION_MAJOR VERSION_MINOR VERSION_PATCH) find_package(Doxygen) if(DOXYGEN_FOUND) configure_file(${CMAKE_CURRENT_SOURCE_DIR}/Doxyfile.in ${CMAKE_CURRENT_BINARY_DIR}/Doxyfile @ONLY) add_custom_target(doc ${DOXYGEN_EXECUTABLE} ${CMAKE_CURRENT_BINARY_DIR}/Doxyfile WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR} COMMENT "Generating API documentation with Doxygen" VERBATIM ) endif(DOXYGEN_FOUND) option(USE_iwyu "Use include-what-you-use to trace unneeded #includes" OFF) if(USE_iwyu) find_program(iwyu NAMES include-what-you-use iwyu) if(NOT iwyu) message(FATAL_ERROR "Could not find the program include-what-you-use") else(NOT iwyu) set(iwyu ${iwyu} -Xiwyu --mapping_file=${CMAKE_SOURCE_DIR}/cmix.imp) endif(NOT iwyu) endif(USE_iwyu) option(use_lto "Enable link time optimalisation" OFF) if(use_lto) set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -flto") set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -flto") set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -flto -fwhole-program") set(CMAKE_SHARED_LINKER_FLAGS "${CMAKE_SHARED_LINKER_FLAGS} -flto") endif(use_lto) add_subdirectory(libcmix-crypto) add_subdirectory(libcmix) add_subdirectory(liblog) add_subdirectory(libcmix-protobuf) add_subdirectory(libcmix-network) add_subdirectory(libcmix-common) add_subdirectory(node) add_subdirectory(client) add_subdirectory(statsd) add_subdirectory(scratchpad)