]>
Commit | Line | Data |
---|---|---|
36230329 NS |
1 | # Top Level CMake file for libcody. |
2 | ||
3 | cmake_minimum_required(VERSION 3.4.3) | |
4 | ||
5 | if(NOT CMAKE_BUILD_TYPE AND NOT CMAKE_CONFIGURATION_TYPES) | |
6 | message(STATUS "No build type selected, default to MinSizeRel") | |
7 | set(CMAKE_BUILD_TYPE MinSizeRel) | |
8 | set(LIBCODY_ENABLE_ASSERTIONS 1) | |
9 | endif() | |
10 | string(TOUPPER "${CMAKE_BUILD_TYPE}" uppercase_CMAKE_BUILD_TYPE) | |
11 | ||
12 | set(cmake_3_2_USES_TERMINAL USES_TERMINAL) | |
13 | ||
14 | if( CMAKE_SOURCE_DIR STREQUAL CMAKE_BINARY_DIR AND NOT MSVC_IDE) | |
15 | message(FATAL_ERROR "In-source builds are not allowed. ") | |
16 | endif() | |
17 | ||
18 | # message(STATUS "SRC ${CMAKE_SOURCE_DIR} CSRC : ${CMAKE_CURRENT_SOURCE_DIR} ") | |
19 | ||
20 | # Add path for custom modules | |
21 | set(CMAKE_MODULE_PATH | |
22 | ${CMAKE_MODULE_PATH} | |
23 | "${CMAKE_CURRENT_SOURCE_DIR}/cmake" | |
24 | "${CMAKE_CURRENT_SOURCE_DIR}/cmake/modules") | |
25 | ||
26 | # If we are building stand-alone, set up the names and versions. | |
27 | if(CMAKE_SOURCE_DIR STREQUAL CMAKE_CURRENT_SOURCE_DIR | |
28 | OR LIBCODY_STANDALONE_BUILD) | |
29 | ||
30 | project(libcody CXX) | |
31 | ||
32 | set(PACKAGE_NAME codylib) | |
33 | set(LIBCODY_VERSION_MAJOR 0) | |
34 | set(LIBCODY_VERSION_MINOR 0) | |
35 | set(LIBCODY_VERSION_PATCH 1) | |
36 | set(LIBCODY_VERSION_SUFFIX git) | |
37 | set(LIBCODY_VERSION "${LIBCODY_VERSION_MAJOR}.${LIBCODY_VERSION_MINOR}.${LIBCODY_VERSION_PATCH}") | |
38 | set(PACKAGE_VERSION "${LIBCODY_VERSION}-${LIBCODY_VERSION_SUFFIX}") | |
39 | set(PACKAGE_STRING "${PACKAGE_NAME} ${PACKAGE_VERSION}") | |
40 | set(PACKAGE_URL "https://github.com/urnathan/libcody") | |
41 | set(PACKAGE_BUGREPORT "https://github.com/urnathan/libcody/issues") | |
42 | ||
43 | set (GIT_REV "git" "-C" "${CMAKE_CURRENT_SOURCE_DIR}" "rev-parse" "--short=12" "HEAD") | |
44 | execute_process( | |
45 | COMMAND ${GIT_REV} | |
46 | RESULT_VARIABLE HAD_ERROR | |
47 | OUTPUT_VARIABLE CODY_REVISION | |
48 | ) | |
49 | if (NOT HAD_ERROR) | |
50 | string(REGEX REPLACE "\n$" "" CODY_REVISION "${CODY_REVISION}") | |
51 | set (GIT_CHANGES "git" "-C" "${CMAKE_CURRENT_SOURCE_DIR}" "diff-index" "--quiet" "HEAD" "--") | |
52 | execute_process( | |
53 | COMMAND ${GIT_CHANGES} | |
54 | RESULT_VARIABLE MOD_ERROR | |
55 | OUTPUT_VARIABLE MOD_OUTPUT | |
56 | ) | |
57 | if (MOD_ERROR) | |
58 | set (CODY_REVISION "${CODY_REVISION}-modified") | |
59 | endif () | |
60 | else() | |
61 | set(CODY_REVISION, "unknown") | |
62 | endif () | |
63 | set(LIBCODY_STANDALONE YES) | |
64 | else() | |
65 | set(LIBCODY_STANDALONE NO) | |
66 | endif() | |
67 | ||
68 | # We are using C++11 | |
69 | set (CMAKE_CXX_STANDARD 11) | |
70 | ||
71 | message(STATUS "git revision ${CODY_REVISION} ") | |
72 | option(CODY_CHECKING "Enable checking" ON) | |
73 | # Address github issue #10 | |
74 | option(CODY_WITHEXCEPTIONS "Enable exceptions" OFF) | |
75 | ||
76 | if (LIBCODY_STANDALONE) | |
77 | include(CTest) | |
78 | endif() | |
79 | ||
80 | include(libcody-config-ix) | |
81 | ||
82 | add_definitions( | |
83 | -DPACKAGE_URL="${PACKAGE_URL}" | |
84 | -DBUGURL="${PACKAGE_BUGREPORT}" | |
85 | -DSRCDIR="${CMAKE_CURRENT_SOURCE_DIR}" | |
86 | -DPACKAGE_NAME="${PACKAGE_NAME}" | |
87 | -DPACKAGE_STRING="${PACKAGE_STRING}" | |
88 | -DPACKAGE_VERSION="${LIBCODY_VERSION}" | |
89 | -DREVISION="${CODY_REVISION}" | |
90 | ) | |
91 | if (CODY_CHECKING) | |
92 | add_definitions(-DNMS_CHECKING=1) | |
93 | else() | |
94 | add_definitions(-DNMS_CHECKING=0) | |
95 | endif() | |
96 | ||
97 | set(LIBCODY_SOURCES | |
98 | buffer.cc | |
99 | client.cc | |
100 | fatal.cc | |
101 | netclient.cc | |
102 | netserver.cc | |
103 | resolver.cc | |
104 | packet.cc | |
105 | server.cc) | |
106 | ||
107 | if(LIBCODY_STANDALONE) | |
108 | add_library(cody STATIC ${LIBCODY_SOURCES}) | |
109 | else() | |
110 | message(STATUS "Configured for in-tree build of libcody as LLVMcody") | |
111 | add_llvm_component_library(LLVMcody ${LIBCODY_SOURCES}) | |
112 | endif() | |
113 | ||
114 | if (LIBCODY_STANDALONE) | |
115 | ||
116 | set_target_properties(cody PROPERTIES PUBLIC_HEADER "cody.hh") | |
117 | install(TARGETS cody | |
118 | LIBRARY DESTINATION lib | |
119 | PUBLIC_HEADER DESTINATION include | |
120 | ) | |
121 | endif() |