121 lines
3.3 KiB
CMake
121 lines
3.3 KiB
CMake
# 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()
|