project(libucore C) cmake_minimum_required(VERSION 3.0.0) execute_process(COMMAND git -C ${CMAKE_SOURCE_DIR} describe --abbrev=5 --dirty --always OUTPUT_VARIABLE version_revision WORKING_DIRECTORY ${PROJECT_SOURCE_DIR} OUTPUT_STRIP_TRAILING_WHITESPACE) execute_process(COMMAND hostname OUTPUT_VARIABLE build_host OUTPUT_STRIP_TRAILING_WHITESPACE) set(libucore_VERSION_MAJOR 1) set(libucore_VERSION_MINOR 0) set(libucore_VERSION_PATCH 0) set(libucore_VERSION ${libucore_VERSION_MAJOR}.${libucore_VERSION_MINOR}.${libucore_VERSION_PATCH}.${version_revision}) set(CMAKE_VERBOSE_MAKEFILE ON) set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -Wall -Wextra -Wundef -Wcast-qual -Wshadow -Wcast-align -pipe -Wno-unused-parameter -Werror=implicit-function-declaration -Winit-self -pthread") add_definitions(-D_FILE_OFFSET_BITS=64) set(CMAKE_SHARED_LINKER_FLAGS "${CMAKE_SHARED_LINKER_FLAGS} -O2 -pthread") option(CODE_COVERAGE "build with code coverage intrumentation" OFF) if (CODE_COVERAGE) set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} --coverage") add_definitions(-DCOVERAGE) endif() option(BUILD_DEBUG "build debug binaries" ON) if (BUILD_DEBUG) set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -O0") add_definitions(-DDEBUG) else() set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -O2") add_definitions(-DNDEBUG) endif() option(BUILD_SANITIZE "build with address sanitizer" OFF) if (BUILD_SANITIZE) set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -fsanitize=address") endif() include_directories(include) add_subdirectory(src) add_subdirectory(test) add_subdirectory(include)