annotate cmake/IrccdSystem.cmake @ 732:e53b013c8938

Irccd: server style and cleanup
author David Demelier <markand@malikania.fr>
date Thu, 19 Jul 2018 12:54:00 +0200
parents a17de53db29b
children 28f493661157
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
0
1158cffe5a5e Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
1 #
1158cffe5a5e Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
2 # Config.cmake -- CMake build system for irccd
1158cffe5a5e Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
3 #
628
27587ff92a64 Misc: update copyrights
David Demelier <markand@malikania.fr>
parents: 507
diff changeset
4 # Copyright (c) 2013-2018 David Demelier <markand@malikania.fr>
0
1158cffe5a5e Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
5 #
1158cffe5a5e Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
6 # Permission to use, copy, modify, and/or distribute this software for any
1158cffe5a5e Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
7 # purpose with or without fee is hereby granted, provided that the above
1158cffe5a5e Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
8 # copyright notice and this permission notice appear in all copies.
1158cffe5a5e Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
9 #
1158cffe5a5e Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
10 # THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
1158cffe5a5e Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
11 # WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
1158cffe5a5e Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
12 # MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
1158cffe5a5e Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
13 # ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
1158cffe5a5e Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
14 # WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
1158cffe5a5e Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
15 # ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
1158cffe5a5e Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
16 # OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
1158cffe5a5e Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
17 #
1158cffe5a5e Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
18
1158cffe5a5e Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
19 include(CheckFunctionExists)
1158cffe5a5e Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
20 include(CheckIncludeFile)
1158cffe5a5e Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
21 include(CheckStructHasMember)
1158cffe5a5e Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
22 include(CheckSymbolExists)
1158cffe5a5e Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
23 include(CheckTypeSize)
1158cffe5a5e Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
24
374
e9adab218027 Misc: various code cleanup
David Demelier <markand@malikania.fr>
parents: 207
diff changeset
25 #
e9adab218027 Misc: various code cleanup
David Demelier <markand@malikania.fr>
parents: 207
diff changeset
26 # Global compile flags.
e9adab218027 Misc: various code cleanup
David Demelier <markand@malikania.fr>
parents: 207
diff changeset
27 # -------------------------------------------------------------------
e9adab218027 Misc: various code cleanup
David Demelier <markand@malikania.fr>
parents: 207
diff changeset
28 #
0
1158cffe5a5e Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
29
1158cffe5a5e Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
30 #
1158cffe5a5e Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
31 # Recent versions of CMake has nice C++ feature detection for modern
1158cffe5a5e Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
32 # C++ but they are still a bit buggy so we use this
1158cffe5a5e Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
33 # instead.
1158cffe5a5e Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
34 #
1158cffe5a5e Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
35 if (CMAKE_CXX_COMPILER_ID MATCHES "GNU")
207
6635b9187d71 Irccd: switch to 4 spaces indent, #518
David Demelier <markand@malikania.fr>
parents: 160
diff changeset
36 #
6635b9187d71 Irccd: switch to 4 spaces indent, #518
David Demelier <markand@malikania.fr>
parents: 160
diff changeset
37 # For GCC, we require at least GCC 5.1
6635b9187d71 Irccd: switch to 4 spaces indent, #518
David Demelier <markand@malikania.fr>
parents: 160
diff changeset
38 #
6635b9187d71 Irccd: switch to 4 spaces indent, #518
David Demelier <markand@malikania.fr>
parents: 160
diff changeset
39 if (CMAKE_CXX_COMPILER_VERSION VERSION_LESS "5.1")
6635b9187d71 Irccd: switch to 4 spaces indent, #518
David Demelier <markand@malikania.fr>
parents: 160
diff changeset
40 message(FATAL_ERROR "You need at least GCC 5.1")
6635b9187d71 Irccd: switch to 4 spaces indent, #518
David Demelier <markand@malikania.fr>
parents: 160
diff changeset
41 endif ()
0
1158cffe5a5e Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
42
207
6635b9187d71 Irccd: switch to 4 spaces indent, #518
David Demelier <markand@malikania.fr>
parents: 160
diff changeset
43 set(CMAKE_CXX_FLAGS "-Wall -Wextra -std=c++14 ${CMAKE_CXX_FLAGS}")
0
1158cffe5a5e Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
44 elseif (CMAKE_CXX_COMPILER_ID MATCHES "Clang")
207
6635b9187d71 Irccd: switch to 4 spaces indent, #518
David Demelier <markand@malikania.fr>
parents: 160
diff changeset
45 #
6635b9187d71 Irccd: switch to 4 spaces indent, #518
David Demelier <markand@malikania.fr>
parents: 160
diff changeset
46 # LLVM/clang implemented C++14 starting from version 3.4 but the
6635b9187d71 Irccd: switch to 4 spaces indent, #518
David Demelier <markand@malikania.fr>
parents: 160
diff changeset
47 # switch -std=c++14 was not available.
6635b9187d71 Irccd: switch to 4 spaces indent, #518
David Demelier <markand@malikania.fr>
parents: 160
diff changeset
48 #
6635b9187d71 Irccd: switch to 4 spaces indent, #518
David Demelier <markand@malikania.fr>
parents: 160
diff changeset
49 if (CMAKE_CXX_COMPILER_VERSION VERSION_LESS "3.4")
6635b9187d71 Irccd: switch to 4 spaces indent, #518
David Demelier <markand@malikania.fr>
parents: 160
diff changeset
50 message(FATAL_ERROR "You need at least Clang 3.4")
6635b9187d71 Irccd: switch to 4 spaces indent, #518
David Demelier <markand@malikania.fr>
parents: 160
diff changeset
51 endif ()
0
1158cffe5a5e Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
52
207
6635b9187d71 Irccd: switch to 4 spaces indent, #518
David Demelier <markand@malikania.fr>
parents: 160
diff changeset
53 if (CMAKE_CXX_COMPILER_VERSION VERSION_LESS "3.5")
6635b9187d71 Irccd: switch to 4 spaces indent, #518
David Demelier <markand@malikania.fr>
parents: 160
diff changeset
54 set(CMAKE_CXX_FLAGS "-Wall -Wextra -std=c++1y ${CMAKE_CXX_FLAGS}")
6635b9187d71 Irccd: switch to 4 spaces indent, #518
David Demelier <markand@malikania.fr>
parents: 160
diff changeset
55 else ()
6635b9187d71 Irccd: switch to 4 spaces indent, #518
David Demelier <markand@malikania.fr>
parents: 160
diff changeset
56 set(CMAKE_CXX_FLAGS "-Wall -Wextra -std=c++14 ${CMAKE_CXX_FLAGS}")
6635b9187d71 Irccd: switch to 4 spaces indent, #518
David Demelier <markand@malikania.fr>
parents: 160
diff changeset
57 endif ()
138
ff26bd33a45d CMake: improve VS2015 support, #425
David Demelier <markand@malikania.fr>
parents: 137
diff changeset
58 elseif (MSVC14)
207
6635b9187d71 Irccd: switch to 4 spaces indent, #518
David Demelier <markand@malikania.fr>
parents: 160
diff changeset
59 set(CMAKE_C_FLAGS "/DWIN32_LEAN_AND_MEAN /DNOMINMAX /wd4267 /wd4800 /D_CRT_SECURE_NO_WARNINGS ${CMAKE_C_FLAGS}")
6635b9187d71 Irccd: switch to 4 spaces indent, #518
David Demelier <markand@malikania.fr>
parents: 160
diff changeset
60 set(CMAKE_CXX_FLAGS "/DWIN32_LEAN_AND_MEAN /DNOMINMAX /wd4267 /wd4800 /D_CRT_SECURE_NO_WARNINGS /EHsc ${CMAKE_CXX_FLAGS}")
0
1158cffe5a5e Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
61 else ()
207
6635b9187d71 Irccd: switch to 4 spaces indent, #518
David Demelier <markand@malikania.fr>
parents: 160
diff changeset
62 message(WARNING "Unsupported ${CMAKE_CXX_COMPILER_ID}, may not build correctly.")
0
1158cffe5a5e Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
63 endif ()
1158cffe5a5e Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
64
137
bc291b131f6a Irccd: make compile on VS2015, #425
David Demelier <markand@malikania.fr>
parents: 101
diff changeset
65 if (MINGW)
207
6635b9187d71 Irccd: switch to 4 spaces indent, #518
David Demelier <markand@malikania.fr>
parents: 160
diff changeset
66 set(CMAKE_CXX_FLAGS "-D_WIN32_WINNT=0x0600 ${CMAKE_CXX_FLAGS}")
0
1158cffe5a5e Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
67 endif ()
1158cffe5a5e Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
68
1158cffe5a5e Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
69 if (CMAKE_SIZEOF_VOID_P MATCHES "8")
207
6635b9187d71 Irccd: switch to 4 spaces indent, #518
David Demelier <markand@malikania.fr>
parents: 160
diff changeset
70 set(IRCCD_64BITS TRUE)
0
1158cffe5a5e Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
71 else ()
207
6635b9187d71 Irccd: switch to 4 spaces indent, #518
David Demelier <markand@malikania.fr>
parents: 160
diff changeset
72 set(IRCCD_64BITS FALSE)
0
1158cffe5a5e Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
73 endif ()
1158cffe5a5e Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
74
374
e9adab218027 Misc: various code cleanup
David Demelier <markand@malikania.fr>
parents: 207
diff changeset
75 #
e9adab218027 Misc: various code cleanup
David Demelier <markand@malikania.fr>
parents: 207
diff changeset
76 # Portability requirements.
e9adab218027 Misc: various code cleanup
David Demelier <markand@malikania.fr>
parents: 207
diff changeset
77 # -------------------------------------------------------------------
e9adab218027 Misc: various code cleanup
David Demelier <markand@malikania.fr>
parents: 207
diff changeset
78 #
0
1158cffe5a5e Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
79
1158cffe5a5e Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
80 check_type_size(int8_t HAVE_INT8)
1158cffe5a5e Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
81 check_type_size(uint8_t HAVE_UINT8)
1158cffe5a5e Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
82 check_type_size(int16_t HAVE_INT16)
1158cffe5a5e Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
83 check_type_size(uint16_t HAVE_UINT16)
1158cffe5a5e Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
84 check_type_size(int32_t HAVE_INT32)
1158cffe5a5e Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
85 check_type_size(uint32_t HAVE_UINT32)
1158cffe5a5e Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
86 check_type_size(int64_t HAVE_INT64)
1158cffe5a5e Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
87 check_type_size(uint64_t HAVE_UINT64)
1158cffe5a5e Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
88
1158cffe5a5e Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
89 if (NOT HAVE_STDINT_H)
207
6635b9187d71 Irccd: switch to 4 spaces indent, #518
David Demelier <markand@malikania.fr>
parents: 160
diff changeset
90 message("irccd requires stdint.h or cstdint header")
0
1158cffe5a5e Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
91 endif ()
1158cffe5a5e Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
92
1158cffe5a5e Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
93 #
84
c67e734c9241 CMake: rename irccd-config.h to irccd/sysconfig.h, #452
David Demelier <markand@malikania.fr>
parents: 0
diff changeset
94 # Where any of these function / feature is required, include the <irccd/sysconfig.h> file.
0
1158cffe5a5e Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
95 #
84
c67e734c9241 CMake: rename irccd-config.h to irccd/sysconfig.h, #452
David Demelier <markand@malikania.fr>
parents: 0
diff changeset
96 # The following variables are defined in irccd/sysconfig.h
0
1158cffe5a5e Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
97 #
507
65e80d258b34 Irccd: use system username, closes #562
David Demelier <markand@malikania.fr>
parents: 486
diff changeset
98 # HAVE_GETLOGIN True if getlogin(3) function (and unistd.h)
207
6635b9187d71 Irccd: switch to 4 spaces indent, #518
David Demelier <markand@malikania.fr>
parents: 160
diff changeset
99 # HAVE_POPEN True if has popen(3) function (in stdio.h)
6635b9187d71 Irccd: switch to 4 spaces indent, #518
David Demelier <markand@malikania.fr>
parents: 160
diff changeset
100 # HAVE_SETPROGNAME True if setprogname(3) is available from C library,
6635b9187d71 Irccd: switch to 4 spaces indent, #518
David Demelier <markand@malikania.fr>
parents: 160
diff changeset
101 # HAVE_STAT True if has stat(2) function (and sys/types.h and sys/stat.h),
6635b9187d71 Irccd: switch to 4 spaces indent, #518
David Demelier <markand@malikania.fr>
parents: 160
diff changeset
102 # HAVE_STAT_ST_DEV The struct stat has st_dev field,
6635b9187d71 Irccd: switch to 4 spaces indent, #518
David Demelier <markand@malikania.fr>
parents: 160
diff changeset
103 # HAVE_STAT_ST_INO The struct stat has st_ino field,
6635b9187d71 Irccd: switch to 4 spaces indent, #518
David Demelier <markand@malikania.fr>
parents: 160
diff changeset
104 # HAVE_STAT_ST_NLINK The struct stat has st_nlink field,
6635b9187d71 Irccd: switch to 4 spaces indent, #518
David Demelier <markand@malikania.fr>
parents: 160
diff changeset
105 # HAVE_STAT_ST_UID The struct stat has st_uid field,
6635b9187d71 Irccd: switch to 4 spaces indent, #518
David Demelier <markand@malikania.fr>
parents: 160
diff changeset
106 # HAVE_STAT_ST_GID The struct stat has st_gid field,
6635b9187d71 Irccd: switch to 4 spaces indent, #518
David Demelier <markand@malikania.fr>
parents: 160
diff changeset
107 # HAVE_STAT_ST_ATIME The struct stat has st_atime field,
6635b9187d71 Irccd: switch to 4 spaces indent, #518
David Demelier <markand@malikania.fr>
parents: 160
diff changeset
108 # HAVE_STAT_ST_MTIME The struct stat has st_mtime field,
6635b9187d71 Irccd: switch to 4 spaces indent, #518
David Demelier <markand@malikania.fr>
parents: 160
diff changeset
109 # HAVE_STAT_ST_CTIME The struct stat has st_ctime field,
6635b9187d71 Irccd: switch to 4 spaces indent, #518
David Demelier <markand@malikania.fr>
parents: 160
diff changeset
110 # HAVE_STAT_ST_SIZE The struct stat has st_size field,
6635b9187d71 Irccd: switch to 4 spaces indent, #518
David Demelier <markand@malikania.fr>
parents: 160
diff changeset
111 # HAVE_STAT_ST_BLKSIZE The struct stat has st_blksize field,
6635b9187d71 Irccd: switch to 4 spaces indent, #518
David Demelier <markand@malikania.fr>
parents: 160
diff changeset
112 # HAVE_STAT_ST_BLOCKS The struct stat has st_blocks field,
6635b9187d71 Irccd: switch to 4 spaces indent, #518
David Demelier <markand@malikania.fr>
parents: 160
diff changeset
113 # HAVE_SYSLOG True if syslog functions are available (and syslog.h),
0
1158cffe5a5e Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
114 #
1158cffe5a5e Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
115
1158cffe5a5e Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
116 # Check for unistd.h
1158cffe5a5e Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
117 check_include_file(unistd.h HAVE_UNISTD_H)
1158cffe5a5e Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
118
1158cffe5a5e Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
119 # Check for sys/types.h
1158cffe5a5e Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
120 check_include_file(sys/types.h HAVE_SYS_TYPES_H)
1158cffe5a5e Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
121
1158cffe5a5e Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
122 # Check of setprogname(3) function, include:
1158cffe5a5e Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
123 #
1158cffe5a5e Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
124 # #include <cstdlib>
1158cffe5a5e Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
125 check_function_exists(setprogname HAVE_SETPROGNAME)
1158cffe5a5e Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
126
507
65e80d258b34 Irccd: use system username, closes #562
David Demelier <markand@malikania.fr>
parents: 486
diff changeset
127 # getlogin() function
65e80d258b34 Irccd: use system username, closes #562
David Demelier <markand@malikania.fr>
parents: 486
diff changeset
128 #
65e80d258b34 Irccd: use system username, closes #562
David Demelier <markand@malikania.fr>
parents: 486
diff changeset
129 # If HAVE_GETLOGIN is defined, include:
65e80d258b34 Irccd: use system username, closes #562
David Demelier <markand@malikania.fr>
parents: 486
diff changeset
130 #
65e80d258b34 Irccd: use system username, closes #562
David Demelier <markand@malikania.fr>
parents: 486
diff changeset
131 # #include <unistd.h>
700
91bc29e87399 Irccd: use Boost.Predef, closes #805 @1h
David Demelier <markand@malikania.fr>
parents: 659
diff changeset
132 check_function_exists(getlogin HAVE_GETLOGIN)
507
65e80d258b34 Irccd: use system username, closes #562
David Demelier <markand@malikania.fr>
parents: 486
diff changeset
133
700
91bc29e87399 Irccd: use Boost.Predef, closes #805 @1h
David Demelier <markand@malikania.fr>
parents: 659
diff changeset
134 if (NOT HAVE_UNISTD_H)
91bc29e87399 Irccd: use Boost.Predef, closes #805 @1h
David Demelier <markand@malikania.fr>
parents: 659
diff changeset
135 set(HAVE_GETLOGIN FALSE)
507
65e80d258b34 Irccd: use system username, closes #562
David Demelier <markand@malikania.fr>
parents: 486
diff changeset
136 endif ()
65e80d258b34 Irccd: use system username, closes #562
David Demelier <markand@malikania.fr>
parents: 486
diff changeset
137
0
1158cffe5a5e Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
138 # popen() function
1158cffe5a5e Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
139 #
1158cffe5a5e Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
140 # If HAVE_POPEN is defined, include;
1158cffe5a5e Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
141 #
1158cffe5a5e Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
142 # #include <cstdio>
1158cffe5a5e Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
143 check_function_exists(popen HAVE_POPEN)
1158cffe5a5e Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
144
1158cffe5a5e Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
145 # stat(2) function
1158cffe5a5e Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
146 #
1158cffe5a5e Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
147 # If HAVE_STAT is defined, include:
1158cffe5a5e Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
148 #
1158cffe5a5e Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
149 # #include <sys/types.h>
1158cffe5a5e Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
150 # #include <sys/stat.h>
1158cffe5a5e Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
151 check_include_file(sys/stat.h HAVE_SYS_STAT_H)
1158cffe5a5e Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
152 check_function_exists(stat HAVE_STAT)
1158cffe5a5e Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
153
1158cffe5a5e Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
154 # If the sys/stat.h is not found, we disable stat(2)
1158cffe5a5e Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
155 if (NOT HAVE_SYS_STAT_H OR NOT HAVE_SYS_TYPES_H)
207
6635b9187d71 Irccd: switch to 4 spaces indent, #518
David Demelier <markand@malikania.fr>
parents: 160
diff changeset
156 set(HAVE_STAT FALSE)
0
1158cffe5a5e Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
157 endif ()
1158cffe5a5e Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
158
1158cffe5a5e Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
159 # syslog functions
1158cffe5a5e Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
160 #
1158cffe5a5e Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
161 # If HAVE_SYSLOG is defined, include:
1158cffe5a5e Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
162 #
1158cffe5a5e Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
163 # #include <syslog.h>
1158cffe5a5e Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
164 check_include_file(syslog.h HAVE_SYSLOG_H)
1158cffe5a5e Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
165 check_function_exists(openlog HAVE_OPENLOG)
1158cffe5a5e Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
166 check_function_exists(syslog HAVE_SYSLOG)
1158cffe5a5e Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
167 check_function_exists(closelog HAVE_CLOSELOG)
1158cffe5a5e Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
168
1158cffe5a5e Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
169 if (NOT HAVE_SYSLOG_H OR NOT HAVE_OPENLOG OR NOT HAVE_CLOSELOG)
207
6635b9187d71 Irccd: switch to 4 spaces indent, #518
David Demelier <markand@malikania.fr>
parents: 160
diff changeset
170 set(HAVE_SYSLOG FALSE)
0
1158cffe5a5e Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
171 endif ()
1158cffe5a5e Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
172
1158cffe5a5e Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
173 # Check for struct stat fields.
1158cffe5a5e Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
174 check_struct_has_member("struct stat" st_atime sys/stat.h HAVE_STAT_ST_ATIME)
1158cffe5a5e Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
175 check_struct_has_member("struct stat" st_blksize sys/stat.h HAVE_STAT_ST_BLKSIZE)
1158cffe5a5e Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
176 check_struct_has_member("struct stat" st_blocks sys/stat.h HAVE_STAT_ST_BLOCKS)
1158cffe5a5e Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
177 check_struct_has_member("struct stat" st_ctime sys/stat.h HAVE_STAT_ST_CTIME)
1158cffe5a5e Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
178 check_struct_has_member("struct stat" st_dev sys/stat.h HAVE_STAT_ST_DEV)
1158cffe5a5e Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
179 check_struct_has_member("struct stat" st_gid sys/stat.h HAVE_STAT_ST_GID)
1158cffe5a5e Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
180 check_struct_has_member("struct stat" st_ino sys/stat.h HAVE_STAT_ST_INO)
1158cffe5a5e Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
181 check_struct_has_member("struct stat" st_mode sys/stat.h HAVE_STAT_ST_MODE)
1158cffe5a5e Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
182 check_struct_has_member("struct stat" st_mtime sys/stat.h HAVE_STAT_ST_MTIME)
1158cffe5a5e Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
183 check_struct_has_member("struct stat" st_nlink sys/stat.h HAVE_STAT_ST_NLINK)
1158cffe5a5e Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
184 check_struct_has_member("struct stat" st_rdev sys/stat.h HAVE_STAT_ST_RDEV)
1158cffe5a5e Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
185 check_struct_has_member("struct stat" st_size sys/stat.h HAVE_STAT_ST_SIZE)
1158cffe5a5e Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
186 check_struct_has_member("struct stat" st_uid sys/stat.h HAVE_STAT_ST_UID)
1158cffe5a5e Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
187
84
c67e734c9241 CMake: rename irccd-config.h to irccd/sysconfig.h, #452
David Demelier <markand@malikania.fr>
parents: 0
diff changeset
188 # Configuration file.
485
daf3aa8b2ddb CMake: get rid of fakeroot mechanism, closes #674
David Demelier <markand@malikania.fr>
parents: 394
diff changeset
189 file(MAKE_DIRECTORY ${CMAKE_BINARY_DIR}/irccd)
daf3aa8b2ddb CMake: get rid of fakeroot mechanism, closes #674
David Demelier <markand@malikania.fr>
parents: 394
diff changeset
190
0
1158cffe5a5e Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
191 configure_file(
207
6635b9187d71 Irccd: switch to 4 spaces indent, #518
David Demelier <markand@malikania.fr>
parents: 160
diff changeset
192 ${CMAKE_CURRENT_LIST_DIR}/internal/sysconfig.hpp.in
485
daf3aa8b2ddb CMake: get rid of fakeroot mechanism, closes #674
David Demelier <markand@malikania.fr>
parents: 394
diff changeset
193 ${CMAKE_BINARY_DIR}/irccd/sysconfig.hpp
0
1158cffe5a5e Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
194 )
485
daf3aa8b2ddb CMake: get rid of fakeroot mechanism, closes #674
David Demelier <markand@malikania.fr>
parents: 394
diff changeset
195
486
0b156b82b8c1 Irccd: rework of paths, closes #611
David Demelier <markand@malikania.fr>
parents: 485
diff changeset
196 include_directories(
0b156b82b8c1 Irccd: rework of paths, closes #611
David Demelier <markand@malikania.fr>
parents: 485
diff changeset
197 ${CMAKE_BINARY_DIR}
0b156b82b8c1 Irccd: rework of paths, closes #611
David Demelier <markand@malikania.fr>
parents: 485
diff changeset
198 ${CMAKE_BINARY_DIR}/irccd
0b156b82b8c1 Irccd: rework of paths, closes #611
David Demelier <markand@malikania.fr>
parents: 485
diff changeset
199 )
710
a17de53db29b Misc: export libraries
David Demelier <markand@malikania.fr>
parents: 708
diff changeset
200
a17de53db29b Misc: export libraries
David Demelier <markand@malikania.fr>
parents: 708
diff changeset
201 install(
a17de53db29b Misc: export libraries
David Demelier <markand@malikania.fr>
parents: 708
diff changeset
202 FILES ${CMAKE_BINARY_DIR}/irccd/sysconfig.hpp
a17de53db29b Misc: export libraries
David Demelier <markand@malikania.fr>
parents: 708
diff changeset
203 DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}/irccd
a17de53db29b Misc: export libraries
David Demelier <markand@malikania.fr>
parents: 708
diff changeset
204 )