xref: /netbsd-src/external/gpl3/gcc/dist/libcody/CMakeLists.txt (revision b1e838363e3c6fc78a55519254d99869742dd33c)
1# Top Level CMake file for libcody.
2
3cmake_minimum_required(VERSION 3.4.3)
4
5if(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)
9endif()
10string(TOUPPER "${CMAKE_BUILD_TYPE}" uppercase_CMAKE_BUILD_TYPE)
11
12set(cmake_3_2_USES_TERMINAL USES_TERMINAL)
13
14if( CMAKE_SOURCE_DIR STREQUAL CMAKE_BINARY_DIR AND NOT MSVC_IDE)
15  message(FATAL_ERROR "In-source builds are not allowed. ")
16endif()
17
18# message(STATUS "SRC ${CMAKE_SOURCE_DIR} CSRC : ${CMAKE_CURRENT_SOURCE_DIR} ")
19
20# Add path for custom modules
21set(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.
27if(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)
64else()
65  set(LIBCODY_STANDALONE NO)
66endif()
67
68# We are using C++11
69set (CMAKE_CXX_STANDARD 11)
70
71message(STATUS "git revision ${CODY_REVISION} ")
72option(CODY_CHECKING "Enable checking" ON)
73# Address github issue #10
74option(CODY_WITHEXCEPTIONS "Enable exceptions" OFF)
75
76if (LIBCODY_STANDALONE)
77  include(CTest)
78endif()
79
80include(libcody-config-ix)
81
82add_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 )
91if (CODY_CHECKING)
92  add_definitions(-DNMS_CHECKING=1)
93else()
94  add_definitions(-DNMS_CHECKING=0)
95endif()
96
97set(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
107if(LIBCODY_STANDALONE)
108  add_library(cody STATIC ${LIBCODY_SOURCES})
109else()
110  message(STATUS "Configured for in-tree build of libcody as LLVMcody")
111  add_llvm_component_library(LLVMcody ${LIBCODY_SOURCES})
112endif()
113
114if (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  )
121endif()
122