c++: [[no_unique_address]] and cv-qualified type
[official-gcc.git] / libcody / CMakeLists.txt
blob72e59f955ea0e20d2b7110388b97c823fcf815d3
1 # Top Level CMake file for libcody.
3 cmake_minimum_required(VERSION 3.4.3)
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)
12 set(cmake_3_2_USES_TERMINAL USES_TERMINAL)
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()
18 # message(STATUS "SRC ${CMAKE_SOURCE_DIR} CSRC : ${CMAKE_CURRENT_SOURCE_DIR} ")
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")
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)
30   project(libcody CXX)
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")
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()
68 # We are using C++11
69 set (CMAKE_CXX_STANDARD 11)
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)
76 if (LIBCODY_STANDALONE)
77   include(CTest)
78 endif()
80 include(libcody-config-ix)
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()
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)
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()
114 if (LIBCODY_STANDALONE)
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()