| # Top Level CMake file for libcody. |
| |
| cmake_minimum_required(VERSION 3.4.3) |
| |
| if(NOT CMAKE_BUILD_TYPE AND NOT CMAKE_CONFIGURATION_TYPES) |
| message(STATUS "No build type selected, default to MinSizeRel") |
| set(CMAKE_BUILD_TYPE MinSizeRel) |
| set(LIBCODY_ENABLE_ASSERTIONS 1) |
| endif() |
| string(TOUPPER "${CMAKE_BUILD_TYPE}" uppercase_CMAKE_BUILD_TYPE) |
| |
| set(cmake_3_2_USES_TERMINAL USES_TERMINAL) |
| |
| if( CMAKE_SOURCE_DIR STREQUAL CMAKE_BINARY_DIR AND NOT MSVC_IDE) |
| message(FATAL_ERROR "In-source builds are not allowed. ") |
| endif() |
| |
| # message(STATUS "SRC ${CMAKE_SOURCE_DIR} CSRC : ${CMAKE_CURRENT_SOURCE_DIR} ") |
| |
| # Add path for custom modules |
| set(CMAKE_MODULE_PATH |
| ${CMAKE_MODULE_PATH} |
| "${CMAKE_CURRENT_SOURCE_DIR}/cmake" |
| "${CMAKE_CURRENT_SOURCE_DIR}/cmake/modules") |
| |
| # If we are building stand-alone, set up the names and versions. |
| if(CMAKE_SOURCE_DIR STREQUAL CMAKE_CURRENT_SOURCE_DIR |
| OR LIBCODY_STANDALONE_BUILD) |
| |
| project(libcody CXX) |
| |
| set(PACKAGE_NAME codylib) |
| set(LIBCODY_VERSION_MAJOR 0) |
| set(LIBCODY_VERSION_MINOR 0) |
| set(LIBCODY_VERSION_PATCH 1) |
| set(LIBCODY_VERSION_SUFFIX git) |
| set(LIBCODY_VERSION "${LIBCODY_VERSION_MAJOR}.${LIBCODY_VERSION_MINOR}.${LIBCODY_VERSION_PATCH}") |
| set(PACKAGE_VERSION "${LIBCODY_VERSION}-${LIBCODY_VERSION_SUFFIX}") |
| set(PACKAGE_STRING "${PACKAGE_NAME} ${PACKAGE_VERSION}") |
| set(PACKAGE_URL "https://github.com/urnathan/libcody") |
| set(PACKAGE_BUGREPORT "https://github.com/urnathan/libcody/issues") |
| |
| set (GIT_REV "git" "-C" "${CMAKE_CURRENT_SOURCE_DIR}" "rev-parse" "--short=12" "HEAD") |
| execute_process( |
| COMMAND ${GIT_REV} |
| RESULT_VARIABLE HAD_ERROR |
| OUTPUT_VARIABLE CODY_REVISION |
| ) |
| if (NOT HAD_ERROR) |
| string(REGEX REPLACE "\n$" "" CODY_REVISION "${CODY_REVISION}") |
| set (GIT_CHANGES "git" "-C" "${CMAKE_CURRENT_SOURCE_DIR}" "diff-index" "--quiet" "HEAD" "--") |
| execute_process( |
| COMMAND ${GIT_CHANGES} |
| RESULT_VARIABLE MOD_ERROR |
| OUTPUT_VARIABLE MOD_OUTPUT |
| ) |
| if (MOD_ERROR) |
| set (CODY_REVISION "${CODY_REVISION}-modified") |
| endif () |
| else() |
| set(CODY_REVISION, "unknown") |
| endif () |
| set(LIBCODY_STANDALONE YES) |
| else() |
| set(LIBCODY_STANDALONE NO) |
| endif() |
| |
| # We are using C++11 |
| set (CMAKE_CXX_STANDARD 11) |
| |
| message(STATUS "git revision ${CODY_REVISION} ") |
| option(CODY_CHECKING "Enable checking" ON) |
| # Address github issue #10 |
| option(CODY_WITHEXCEPTIONS "Enable exceptions" OFF) |
| |
| if (LIBCODY_STANDALONE) |
| include(CTest) |
| endif() |
| |
| include(libcody-config-ix) |
| |
| add_definitions( |
| -DPACKAGE_URL="${PACKAGE_URL}" |
| -DBUGURL="${PACKAGE_BUGREPORT}" |
| -DSRCDIR="${CMAKE_CURRENT_SOURCE_DIR}" |
| -DPACKAGE_NAME="${PACKAGE_NAME}" |
| -DPACKAGE_STRING="${PACKAGE_STRING}" |
| -DPACKAGE_VERSION="${LIBCODY_VERSION}" |
| -DREVISION="${CODY_REVISION}" |
| ) |
| if (CODY_CHECKING) |
| add_definitions(-DNMS_CHECKING=1) |
| else() |
| add_definitions(-DNMS_CHECKING=0) |
| endif() |
| |
| set(LIBCODY_SOURCES |
| buffer.cc |
| client.cc |
| fatal.cc |
| netclient.cc |
| netserver.cc |
| resolver.cc |
| packet.cc |
| server.cc) |
| |
| if(LIBCODY_STANDALONE) |
| add_library(cody STATIC ${LIBCODY_SOURCES}) |
| else() |
| message(STATUS "Configured for in-tree build of libcody as LLVMcody") |
| add_llvm_component_library(LLVMcody ${LIBCODY_SOURCES}) |
| endif() |
| |
| if (LIBCODY_STANDALONE) |
| |
| set_target_properties(cody PROPERTIES PUBLIC_HEADER "cody.hh") |
| install(TARGETS cody |
| LIBRARY DESTINATION lib |
| PUBLIC_HEADER DESTINATION include |
| ) |
| endif() |