annotate cmake/IrccdSystem.cmake @ 505:e304b35d9b5b

CMake: embed Mercurial version, closes #696
author David Demelier <markand@malikania.fr>
date Thu, 12 Oct 2017 21:46:18 +0200
parents 0b156b82b8c1
children 65e80d258b34
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 #
394
c6fbb6e0e06d Happy new year!
David Demelier <markand@malikania.fr>
parents: 374
diff changeset
4 # Copyright (c) 2013-2017 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 # System identification.
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 if (WIN32)
207
6635b9187d71 Irccd: switch to 4 spaces indent, #518
David Demelier <markand@malikania.fr>
parents: 160
diff changeset
81 set(IRCCD_SYSTEM_WINDOWS TRUE)
0
1158cffe5a5e Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
82 elseif (APPLE)
207
6635b9187d71 Irccd: switch to 4 spaces indent, #518
David Demelier <markand@malikania.fr>
parents: 160
diff changeset
83 set(IRCCD_SYSTEM_MAC TRUE)
0
1158cffe5a5e Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
84 elseif (CMAKE_SYSTEM_NAME MATCHES "FreeBSD")
207
6635b9187d71 Irccd: switch to 4 spaces indent, #518
David Demelier <markand@malikania.fr>
parents: 160
diff changeset
85 set(IRCCD_SYSTEM_FREEBSD TRUE)
486
0b156b82b8c1 Irccd: rework of paths, closes #611
David Demelier <markand@malikania.fr>
parents: 485
diff changeset
86 elseif (CMAKE_SYSTEM_NAME MATCHES "DragonFly")
0b156b82b8c1 Irccd: rework of paths, closes #611
David Demelier <markand@malikania.fr>
parents: 485
diff changeset
87 set(IRCCD_SYSTEM_DRAGONFLYBSD TRUE)
0
1158cffe5a5e Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
88 elseif (CMAKE_SYSTEM_NAME MATCHES "NetBSD")
207
6635b9187d71 Irccd: switch to 4 spaces indent, #518
David Demelier <markand@malikania.fr>
parents: 160
diff changeset
89 set(IRCCD_SYSTEM_NETBSD TRUE)
0
1158cffe5a5e Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
90 elseif (CMAKE_SYSTEM_NAME MATCHES "OpenBSD")
207
6635b9187d71 Irccd: switch to 4 spaces indent, #518
David Demelier <markand@malikania.fr>
parents: 160
diff changeset
91 set(IRCCD_SYSTEM_OPENBSD TRUE)
0
1158cffe5a5e Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
92 elseif (CMAKE_SYSTEM_NAME MATCHES "Linux")
207
6635b9187d71 Irccd: switch to 4 spaces indent, #518
David Demelier <markand@malikania.fr>
parents: 160
diff changeset
93 set(IRCCD_SYSTEM_LINUX TRUE)
0
1158cffe5a5e Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
94 endif ()
1158cffe5a5e Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
95
374
e9adab218027 Misc: various code cleanup
David Demelier <markand@malikania.fr>
parents: 207
diff changeset
96 #
e9adab218027 Misc: various code cleanup
David Demelier <markand@malikania.fr>
parents: 207
diff changeset
97 # Portability requirements.
e9adab218027 Misc: various code cleanup
David Demelier <markand@malikania.fr>
parents: 207
diff changeset
98 # -------------------------------------------------------------------
e9adab218027 Misc: various code cleanup
David Demelier <markand@malikania.fr>
parents: 207
diff changeset
99 #
0
1158cffe5a5e Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
100
1158cffe5a5e Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
101 check_type_size(int8_t HAVE_INT8)
1158cffe5a5e Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
102 check_type_size(uint8_t HAVE_UINT8)
1158cffe5a5e Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
103 check_type_size(int16_t HAVE_INT16)
1158cffe5a5e Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
104 check_type_size(uint16_t HAVE_UINT16)
1158cffe5a5e Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
105 check_type_size(int32_t HAVE_INT32)
1158cffe5a5e Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
106 check_type_size(uint32_t HAVE_UINT32)
1158cffe5a5e Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
107 check_type_size(int64_t HAVE_INT64)
1158cffe5a5e Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
108 check_type_size(uint64_t HAVE_UINT64)
1158cffe5a5e Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
109
1158cffe5a5e Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
110 if (NOT HAVE_STDINT_H)
207
6635b9187d71 Irccd: switch to 4 spaces indent, #518
David Demelier <markand@malikania.fr>
parents: 160
diff changeset
111 message("irccd requires stdint.h or cstdint header")
0
1158cffe5a5e Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
112 endif ()
1158cffe5a5e Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
113
1158cffe5a5e Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
114 #
84
c67e734c9241 CMake: rename irccd-config.h to irccd/sysconfig.h, #452
David Demelier <markand@malikania.fr>
parents: 0
diff changeset
115 # 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
116 #
84
c67e734c9241 CMake: rename irccd-config.h to irccd/sysconfig.h, #452
David Demelier <markand@malikania.fr>
parents: 0
diff changeset
117 # The following variables are defined in irccd/sysconfig.h
0
1158cffe5a5e Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
118 #
207
6635b9187d71 Irccd: switch to 4 spaces indent, #518
David Demelier <markand@malikania.fr>
parents: 160
diff changeset
119 # HAVE_ACCESS True if has access(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
120 # HAVE_DAEMON True if daemon(3),
6635b9187d71 Irccd: switch to 4 spaces indent, #518
David Demelier <markand@malikania.fr>
parents: 160
diff changeset
121 # HAVE_GETPID True if has getpid(2) function (and sys/types.h and unistd.h and grp.h),
6635b9187d71 Irccd: switch to 4 spaces indent, #518
David Demelier <markand@malikania.fr>
parents: 160
diff changeset
122 # 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
123 # HAVE_SETGID True if has setgid(2) function and getgrnam(3) (and sys/types.h and unistd.h and pwd.h),
6635b9187d71 Irccd: switch to 4 spaces indent, #518
David Demelier <markand@malikania.fr>
parents: 160
diff changeset
124 # 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
125 # HAVE_SETUID True if has setuid(2) function and getpwnam(3) (and sys/types.h and unistd.h and pwd.h),
6635b9187d71 Irccd: switch to 4 spaces indent, #518
David Demelier <markand@malikania.fr>
parents: 160
diff changeset
126 # 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
127 # 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
128 # 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
129 # 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
130 # 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
131 # 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
132 # 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
133 # 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
134 # 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
135 # 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
136 # 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
137 # 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
138 # HAVE_SYSLOG True if syslog functions are available (and syslog.h),
0
1158cffe5a5e Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
139 #
1158cffe5a5e Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
140
1158cffe5a5e Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
141 # Check for unistd.h
1158cffe5a5e Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
142 check_include_file(unistd.h HAVE_UNISTD_H)
1158cffe5a5e Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
143
1158cffe5a5e Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
144 # Check for sys/types.h
1158cffe5a5e Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
145 check_include_file(sys/types.h HAVE_SYS_TYPES_H)
1158cffe5a5e Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
146
1158cffe5a5e Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
147 # Check for daemon(3) function, 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 <cstdlib>
1158cffe5a5e Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
150 check_function_exists(daemon HAVE_DAEMON)
1158cffe5a5e Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
151
1158cffe5a5e Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
152 # Check of setprogname(3) function, include:
1158cffe5a5e Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
153 #
1158cffe5a5e Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
154 # #include <cstdlib>
1158cffe5a5e Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
155 check_function_exists(setprogname HAVE_SETPROGNAME)
1158cffe5a5e Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
156
1158cffe5a5e Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
157 # access() POSIX function
1158cffe5a5e Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
158 #
1158cffe5a5e Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
159 # If HAVE_ACCESS is defined, include:
1158cffe5a5e Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
160 #
1158cffe5a5e Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
161 # #include <unistd.h>
1158cffe5a5e Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
162 check_function_exists(access HAVE_ACCESS)
1158cffe5a5e Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
163
1158cffe5a5e Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
164 if (NOT HAVE_UNISTD_H)
207
6635b9187d71 Irccd: switch to 4 spaces indent, #518
David Demelier <markand@malikania.fr>
parents: 160
diff changeset
165 set(HAVE_ACCESS FALSE)
0
1158cffe5a5e Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
166 endif ()
1158cffe5a5e Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
167
1158cffe5a5e Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
168 # getpid() function
1158cffe5a5e Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
169 #
1158cffe5a5e Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
170 # If HAVE_GETPID is defined, include:
1158cffe5a5e Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
171 #
1158cffe5a5e Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
172 # #include <sys/types.h>
1158cffe5a5e Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
173 # #include <unistd.h>
1158cffe5a5e Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
174 check_function_exists(getpid HAVE_GETPID)
1158cffe5a5e Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
175
1158cffe5a5e Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
176 if (NOT HAVE_UNISTD_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
177 set(HAVE_GETPID FALSE)
0
1158cffe5a5e Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
178 endif ()
1158cffe5a5e Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
179
1158cffe5a5e Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
180 # setgid() function (and getgrnam)
1158cffe5a5e Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
181 #
1158cffe5a5e Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
182 # If HAVE_SETGID is defined, include:
1158cffe5a5e Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
183 #
1158cffe5a5e Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
184 # #include <sys/types.h>
1158cffe5a5e Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
185 # #include <unistd.h>
207
6635b9187d71 Irccd: switch to 4 spaces indent, #518
David Demelier <markand@malikania.fr>
parents: 160
diff changeset
186 # #include <grp.h> // only for getgrnam
0
1158cffe5a5e Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
187 check_include_file(grp.h HAVE_GRP_H)
1158cffe5a5e Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
188 check_function_exists(getgrnam HAVE_GETGRNAM)
1158cffe5a5e Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
189 check_function_exists(setgid HAVE_SETGID)
1158cffe5a5e Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
190
1158cffe5a5e Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
191 if (NOT HAVE_UNISTD_H OR NOT HAVE_SYS_TYPES_H OR NOT HAVE_GETGRNAM OR NOT HAVE_GRP_H)
207
6635b9187d71 Irccd: switch to 4 spaces indent, #518
David Demelier <markand@malikania.fr>
parents: 160
diff changeset
192 set(HAVE_SETGID FALSE)
0
1158cffe5a5e Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
193 endif ()
1158cffe5a5e Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
194
1158cffe5a5e Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
195 # popen() function
1158cffe5a5e Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
196 #
1158cffe5a5e Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
197 # If HAVE_POPEN is defined, include;
1158cffe5a5e Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
198 #
1158cffe5a5e Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
199 # #include <cstdio>
1158cffe5a5e Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
200 check_function_exists(popen HAVE_POPEN)
1158cffe5a5e Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
201
1158cffe5a5e Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
202 # setuid() function (and getpwnam)
1158cffe5a5e Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
203 #
1158cffe5a5e Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
204 # If HAVE_SETUID is defined, include:
1158cffe5a5e Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
205 #
1158cffe5a5e Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
206 # #include <sys/types.h>
1158cffe5a5e Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
207 # #include <unistd.h>
207
6635b9187d71 Irccd: switch to 4 spaces indent, #518
David Demelier <markand@malikania.fr>
parents: 160
diff changeset
208 # #include <pwd.h> // only for getpwnam
0
1158cffe5a5e Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
209 check_include_file(pwd.h HAVE_PWD_H)
1158cffe5a5e Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
210 check_function_exists(getpwnam HAVE_GETPWNAM)
1158cffe5a5e Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
211 check_function_exists(setuid HAVE_SETUID)
1158cffe5a5e Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
212
1158cffe5a5e Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
213 if (NOT HAVE_UNISTD_H OR NOT HAVE_SYS_TYPES_H OR NOT HAVE_GETPWNAM OR NOT HAVE_PWD_H)
207
6635b9187d71 Irccd: switch to 4 spaces indent, #518
David Demelier <markand@malikania.fr>
parents: 160
diff changeset
214 set(HAVE_SETUID FALSE)
0
1158cffe5a5e Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
215 endif ()
1158cffe5a5e Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
216
1158cffe5a5e Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
217 # stat(2) function
1158cffe5a5e Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
218 #
1158cffe5a5e Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
219 # If HAVE_STAT is defined, include:
1158cffe5a5e Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
220 #
1158cffe5a5e Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
221 # #include <sys/types.h>
1158cffe5a5e Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
222 # #include <sys/stat.h>
1158cffe5a5e Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
223 check_include_file(sys/stat.h HAVE_SYS_STAT_H)
1158cffe5a5e Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
224 check_function_exists(stat HAVE_STAT)
1158cffe5a5e Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
225
1158cffe5a5e Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
226 # If the sys/stat.h is not found, we disable stat(2)
1158cffe5a5e Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
227 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
228 set(HAVE_STAT FALSE)
0
1158cffe5a5e Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
229 endif ()
1158cffe5a5e Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
230
1158cffe5a5e Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
231 # syslog functions
1158cffe5a5e Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
232 #
1158cffe5a5e Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
233 # If HAVE_SYSLOG is defined, include:
1158cffe5a5e Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
234 #
1158cffe5a5e Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
235 # #include <syslog.h>
1158cffe5a5e Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
236 check_include_file(syslog.h HAVE_SYSLOG_H)
1158cffe5a5e Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
237 check_function_exists(openlog HAVE_OPENLOG)
1158cffe5a5e Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
238 check_function_exists(syslog HAVE_SYSLOG)
1158cffe5a5e Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
239 check_function_exists(closelog HAVE_CLOSELOG)
1158cffe5a5e Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
240
1158cffe5a5e Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
241 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
242 set(HAVE_SYSLOG FALSE)
0
1158cffe5a5e Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
243 endif ()
1158cffe5a5e Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
244
1158cffe5a5e Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
245 # Check for struct stat fields.
1158cffe5a5e Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
246 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
247 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
248 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
249 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
250 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
251 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
252 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
253 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
254 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
255 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
256 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
257 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
258 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
259
84
c67e734c9241 CMake: rename irccd-config.h to irccd/sysconfig.h, #452
David Demelier <markand@malikania.fr>
parents: 0
diff changeset
260 # Configuration file.
485
daf3aa8b2ddb CMake: get rid of fakeroot mechanism, closes #674
David Demelier <markand@malikania.fr>
parents: 394
diff changeset
261 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
262
0
1158cffe5a5e Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
263 configure_file(
207
6635b9187d71 Irccd: switch to 4 spaces indent, #518
David Demelier <markand@malikania.fr>
parents: 160
diff changeset
264 ${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
265 ${CMAKE_BINARY_DIR}/irccd/sysconfig.hpp
0
1158cffe5a5e Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
266 )
485
daf3aa8b2ddb CMake: get rid of fakeroot mechanism, closes #674
David Demelier <markand@malikania.fr>
parents: 394
diff changeset
267
486
0b156b82b8c1 Irccd: rework of paths, closes #611
David Demelier <markand@malikania.fr>
parents: 485
diff changeset
268 include_directories(
0b156b82b8c1 Irccd: rework of paths, closes #611
David Demelier <markand@malikania.fr>
parents: 485
diff changeset
269 ${CMAKE_BINARY_DIR}
0b156b82b8c1 Irccd: rework of paths, closes #611
David Demelier <markand@malikania.fr>
parents: 485
diff changeset
270 ${CMAKE_BINARY_DIR}/irccd
0b156b82b8c1 Irccd: rework of paths, closes #611
David Demelier <markand@malikania.fr>
parents: 485
diff changeset
271 )