Mercurial > irccd
annotate cmake/IrccdSystem.cmake @ 773:8c44bbcbbab9
Misc: style, cleanup and update
author | David Demelier <markand@malikania.fr> |
---|---|
date | Fri, 26 Oct 2018 13:01:00 +0200 |
parents | 28f493661157 |
children | ca16ca53c347 |
rev | line source |
---|---|
0 | 1 # |
2 # Config.cmake -- CMake build system for irccd | |
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 | 5 # |
6 # Permission to use, copy, modify, and/or distribute this software for any | |
7 # purpose with or without fee is hereby granted, provided that the above | |
8 # copyright notice and this permission notice appear in all copies. | |
9 # | |
10 # THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES | |
11 # WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF | |
12 # MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR | |
13 # ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES | |
14 # WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN | |
15 # ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF | |
16 # OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. | |
17 # | |
18 | |
19 include(CheckFunctionExists) | |
20 include(CheckIncludeFile) | |
21 include(CheckStructHasMember) | |
22 include(CheckSymbolExists) | |
23 include(CheckTypeSize) | |
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 | 29 |
137
bc291b131f6a
Irccd: make compile on VS2015, #425
David Demelier <markand@malikania.fr>
parents:
101
diff
changeset
|
30 if (MINGW) |
773
8c44bbcbbab9
Misc: style, cleanup and update
David Demelier <markand@malikania.fr>
parents:
762
diff
changeset
|
31 set(CMAKE_CXX_FLAGS "-D_WIN32_WINNT=0x0600 ${CMAKE_CXX_FLAGS}") |
0 | 32 endif () |
33 | |
34 if (CMAKE_SIZEOF_VOID_P MATCHES "8") | |
773
8c44bbcbbab9
Misc: style, cleanup and update
David Demelier <markand@malikania.fr>
parents:
762
diff
changeset
|
35 set(IRCCD_64BITS TRUE) |
0 | 36 else () |
773
8c44bbcbbab9
Misc: style, cleanup and update
David Demelier <markand@malikania.fr>
parents:
762
diff
changeset
|
37 set(IRCCD_64BITS FALSE) |
0 | 38 endif () |
39 | |
374
e9adab218027
Misc: various code cleanup
David Demelier <markand@malikania.fr>
parents:
207
diff
changeset
|
40 # |
e9adab218027
Misc: various code cleanup
David Demelier <markand@malikania.fr>
parents:
207
diff
changeset
|
41 # Portability requirements. |
e9adab218027
Misc: various code cleanup
David Demelier <markand@malikania.fr>
parents:
207
diff
changeset
|
42 # ------------------------------------------------------------------- |
e9adab218027
Misc: various code cleanup
David Demelier <markand@malikania.fr>
parents:
207
diff
changeset
|
43 # |
0 | 44 |
762
28f493661157
Misc: prefix all macros with IRCCD_
David Demelier <markand@malikania.fr>
parents:
710
diff
changeset
|
45 check_type_size(int8_t IRCCD_HAVE_INT8) |
28f493661157
Misc: prefix all macros with IRCCD_
David Demelier <markand@malikania.fr>
parents:
710
diff
changeset
|
46 check_type_size(uint8_t IRCCD_HAVE_UINT8) |
28f493661157
Misc: prefix all macros with IRCCD_
David Demelier <markand@malikania.fr>
parents:
710
diff
changeset
|
47 check_type_size(int16_t IRCCD_HAVE_INT16) |
28f493661157
Misc: prefix all macros with IRCCD_
David Demelier <markand@malikania.fr>
parents:
710
diff
changeset
|
48 check_type_size(uint16_t IRCCD_HAVE_UINT16) |
28f493661157
Misc: prefix all macros with IRCCD_
David Demelier <markand@malikania.fr>
parents:
710
diff
changeset
|
49 check_type_size(int32_t IRCCD_HAVE_INT32) |
28f493661157
Misc: prefix all macros with IRCCD_
David Demelier <markand@malikania.fr>
parents:
710
diff
changeset
|
50 check_type_size(uint32_t IRCCD_HAVE_UINT32) |
28f493661157
Misc: prefix all macros with IRCCD_
David Demelier <markand@malikania.fr>
parents:
710
diff
changeset
|
51 check_type_size(int64_t IRCCD_HAVE_INT64) |
28f493661157
Misc: prefix all macros with IRCCD_
David Demelier <markand@malikania.fr>
parents:
710
diff
changeset
|
52 check_type_size(uint64_t IRCCD_HAVE_UINT64) |
0 | 53 |
54 # | |
84
c67e734c9241
CMake: rename irccd-config.h to irccd/sysconfig.h, #452
David Demelier <markand@malikania.fr>
parents:
0
diff
changeset
|
55 # Where any of these function / feature is required, include the <irccd/sysconfig.h> file. |
0 | 56 # |
84
c67e734c9241
CMake: rename irccd-config.h to irccd/sysconfig.h, #452
David Demelier <markand@malikania.fr>
parents:
0
diff
changeset
|
57 # The following variables are defined in irccd/sysconfig.h |
0 | 58 # |
762
28f493661157
Misc: prefix all macros with IRCCD_
David Demelier <markand@malikania.fr>
parents:
710
diff
changeset
|
59 # IRCCD_HAVE_GETLOGIN True if getlogin(3) function (and unistd.h) |
28f493661157
Misc: prefix all macros with IRCCD_
David Demelier <markand@malikania.fr>
parents:
710
diff
changeset
|
60 # IRCCD_HAVE_POPEN True if has popen(3) function (in stdio.h) |
28f493661157
Misc: prefix all macros with IRCCD_
David Demelier <markand@malikania.fr>
parents:
710
diff
changeset
|
61 # IRCCD_HAVE_SETPROGNAME True if setprogname(3) is available from C library, |
28f493661157
Misc: prefix all macros with IRCCD_
David Demelier <markand@malikania.fr>
parents:
710
diff
changeset
|
62 # IRCCD_HAVE_STAT True if has stat(2) function (and sys/types.h and sys/stat.h), |
28f493661157
Misc: prefix all macros with IRCCD_
David Demelier <markand@malikania.fr>
parents:
710
diff
changeset
|
63 # IRCCD_HAVE_STAT_ST_DEV The struct stat has st_dev field, |
28f493661157
Misc: prefix all macros with IRCCD_
David Demelier <markand@malikania.fr>
parents:
710
diff
changeset
|
64 # IRCCD_HAVE_STAT_ST_INO The struct stat has st_ino field, |
28f493661157
Misc: prefix all macros with IRCCD_
David Demelier <markand@malikania.fr>
parents:
710
diff
changeset
|
65 # IRCCD_HAVE_STAT_ST_NLINK The struct stat has st_nlink field, |
28f493661157
Misc: prefix all macros with IRCCD_
David Demelier <markand@malikania.fr>
parents:
710
diff
changeset
|
66 # IRCCD_HAVE_STAT_ST_UID The struct stat has st_uid field, |
28f493661157
Misc: prefix all macros with IRCCD_
David Demelier <markand@malikania.fr>
parents:
710
diff
changeset
|
67 # IRCCD_HAVE_STAT_ST_GID The struct stat has st_gid field, |
28f493661157
Misc: prefix all macros with IRCCD_
David Demelier <markand@malikania.fr>
parents:
710
diff
changeset
|
68 # IRCCD_HAVE_STAT_ST_ATIME The struct stat has st_atime field, |
28f493661157
Misc: prefix all macros with IRCCD_
David Demelier <markand@malikania.fr>
parents:
710
diff
changeset
|
69 # IRCCD_HAVE_STAT_ST_MTIME The struct stat has st_mtime field, |
28f493661157
Misc: prefix all macros with IRCCD_
David Demelier <markand@malikania.fr>
parents:
710
diff
changeset
|
70 # IRCCD_HAVE_STAT_ST_CTIME The struct stat has st_ctime field, |
28f493661157
Misc: prefix all macros with IRCCD_
David Demelier <markand@malikania.fr>
parents:
710
diff
changeset
|
71 # IRCCD_HAVE_STAT_ST_SIZE The struct stat has st_size field, |
28f493661157
Misc: prefix all macros with IRCCD_
David Demelier <markand@malikania.fr>
parents:
710
diff
changeset
|
72 # IRCCD_HAVE_STAT_ST_BLKSIZE The struct stat has st_blksize field, |
28f493661157
Misc: prefix all macros with IRCCD_
David Demelier <markand@malikania.fr>
parents:
710
diff
changeset
|
73 # IRCCD_HAVE_STAT_ST_BLOCKS The struct stat has st_blocks field, |
28f493661157
Misc: prefix all macros with IRCCD_
David Demelier <markand@malikania.fr>
parents:
710
diff
changeset
|
74 # IRCCD_HAVE_SYSLOG True if syslog functions are available (and syslog.h), |
0 | 75 # |
76 | |
77 # Check for unistd.h | |
762
28f493661157
Misc: prefix all macros with IRCCD_
David Demelier <markand@malikania.fr>
parents:
710
diff
changeset
|
78 check_include_file(unistd.h IRCCD_HAVE_UNISTD_H) |
0 | 79 |
80 # Check for sys/types.h | |
762
28f493661157
Misc: prefix all macros with IRCCD_
David Demelier <markand@malikania.fr>
parents:
710
diff
changeset
|
81 check_include_file(sys/types.h IRCCD_HAVE_SYS_TYPES_H) |
0 | 82 |
83 # Check of setprogname(3) function, include: | |
84 # | |
85 # #include <cstdlib> | |
762
28f493661157
Misc: prefix all macros with IRCCD_
David Demelier <markand@malikania.fr>
parents:
710
diff
changeset
|
86 check_function_exists(setprogname IRCCD_HAVE_SETPROGNAME) |
0 | 87 |
507
65e80d258b34
Irccd: use system username, closes #562
David Demelier <markand@malikania.fr>
parents:
486
diff
changeset
|
88 # getlogin() function |
65e80d258b34
Irccd: use system username, closes #562
David Demelier <markand@malikania.fr>
parents:
486
diff
changeset
|
89 # |
762
28f493661157
Misc: prefix all macros with IRCCD_
David Demelier <markand@malikania.fr>
parents:
710
diff
changeset
|
90 # If IRCCD_HAVE_GETLOGIN is defined, include: |
507
65e80d258b34
Irccd: use system username, closes #562
David Demelier <markand@malikania.fr>
parents:
486
diff
changeset
|
91 # |
65e80d258b34
Irccd: use system username, closes #562
David Demelier <markand@malikania.fr>
parents:
486
diff
changeset
|
92 # #include <unistd.h> |
762
28f493661157
Misc: prefix all macros with IRCCD_
David Demelier <markand@malikania.fr>
parents:
710
diff
changeset
|
93 check_function_exists(getlogin IRCCD_HAVE_GETLOGIN) |
507
65e80d258b34
Irccd: use system username, closes #562
David Demelier <markand@malikania.fr>
parents:
486
diff
changeset
|
94 |
762
28f493661157
Misc: prefix all macros with IRCCD_
David Demelier <markand@malikania.fr>
parents:
710
diff
changeset
|
95 if (NOT IRCCD_HAVE_UNISTD_H) |
773
8c44bbcbbab9
Misc: style, cleanup and update
David Demelier <markand@malikania.fr>
parents:
762
diff
changeset
|
96 set(IRCCD_HAVE_GETLOGIN FALSE) |
507
65e80d258b34
Irccd: use system username, closes #562
David Demelier <markand@malikania.fr>
parents:
486
diff
changeset
|
97 endif () |
65e80d258b34
Irccd: use system username, closes #562
David Demelier <markand@malikania.fr>
parents:
486
diff
changeset
|
98 |
0 | 99 # popen() function |
100 # | |
762
28f493661157
Misc: prefix all macros with IRCCD_
David Demelier <markand@malikania.fr>
parents:
710
diff
changeset
|
101 # If IRCCD_HAVE_POPEN is defined, include; |
0 | 102 # |
103 # #include <cstdio> | |
762
28f493661157
Misc: prefix all macros with IRCCD_
David Demelier <markand@malikania.fr>
parents:
710
diff
changeset
|
104 check_function_exists(popen IRCCD_HAVE_POPEN) |
0 | 105 |
106 # stat(2) function | |
107 # | |
762
28f493661157
Misc: prefix all macros with IRCCD_
David Demelier <markand@malikania.fr>
parents:
710
diff
changeset
|
108 # If IRCCD_HAVE_STAT is defined, include: |
0 | 109 # |
110 # #include <sys/types.h> | |
111 # #include <sys/stat.h> | |
762
28f493661157
Misc: prefix all macros with IRCCD_
David Demelier <markand@malikania.fr>
parents:
710
diff
changeset
|
112 check_include_file(sys/stat.h IRCCD_HAVE_SYS_STAT_H) |
28f493661157
Misc: prefix all macros with IRCCD_
David Demelier <markand@malikania.fr>
parents:
710
diff
changeset
|
113 check_function_exists(stat IRCCD_HAVE_STAT) |
0 | 114 |
115 # If the sys/stat.h is not found, we disable stat(2) | |
762
28f493661157
Misc: prefix all macros with IRCCD_
David Demelier <markand@malikania.fr>
parents:
710
diff
changeset
|
116 if (NOT IRCCD_HAVE_SYS_STAT_H OR NOT IRCCD_HAVE_SYS_TYPES_H) |
773
8c44bbcbbab9
Misc: style, cleanup and update
David Demelier <markand@malikania.fr>
parents:
762
diff
changeset
|
117 set(IRCCD_HAVE_STAT FALSE) |
0 | 118 endif () |
119 | |
120 # syslog functions | |
121 # | |
762
28f493661157
Misc: prefix all macros with IRCCD_
David Demelier <markand@malikania.fr>
parents:
710
diff
changeset
|
122 # If IRCCD_HAVE_SYSLOG is defined, include: |
0 | 123 # |
124 # #include <syslog.h> | |
762
28f493661157
Misc: prefix all macros with IRCCD_
David Demelier <markand@malikania.fr>
parents:
710
diff
changeset
|
125 check_include_file(syslog.h IRCCD_HAVE_SYSLOG_H) |
28f493661157
Misc: prefix all macros with IRCCD_
David Demelier <markand@malikania.fr>
parents:
710
diff
changeset
|
126 check_function_exists(openlog IRCCD_HAVE_OPENLOG) |
28f493661157
Misc: prefix all macros with IRCCD_
David Demelier <markand@malikania.fr>
parents:
710
diff
changeset
|
127 check_function_exists(syslog IRCCD_HAVE_SYSLOG) |
28f493661157
Misc: prefix all macros with IRCCD_
David Demelier <markand@malikania.fr>
parents:
710
diff
changeset
|
128 check_function_exists(closelog IRCCD_HAVE_CLOSELOG) |
0 | 129 |
762
28f493661157
Misc: prefix all macros with IRCCD_
David Demelier <markand@malikania.fr>
parents:
710
diff
changeset
|
130 if (NOT IRCCD_HAVE_SYSLOG_H OR NOT IRCCD_HAVE_OPENLOG OR NOT IRCCD_HAVE_CLOSELOG) |
773
8c44bbcbbab9
Misc: style, cleanup and update
David Demelier <markand@malikania.fr>
parents:
762
diff
changeset
|
131 set(IRCCD_HAVE_SYSLOG FALSE) |
0 | 132 endif () |
133 | |
134 # Check for struct stat fields. | |
762
28f493661157
Misc: prefix all macros with IRCCD_
David Demelier <markand@malikania.fr>
parents:
710
diff
changeset
|
135 check_struct_has_member("struct stat" st_atime sys/stat.h IRCCD_HAVE_STAT_ST_ATIME) |
28f493661157
Misc: prefix all macros with IRCCD_
David Demelier <markand@malikania.fr>
parents:
710
diff
changeset
|
136 check_struct_has_member("struct stat" st_blksize sys/stat.h IRCCD_HAVE_STAT_ST_BLKSIZE) |
28f493661157
Misc: prefix all macros with IRCCD_
David Demelier <markand@malikania.fr>
parents:
710
diff
changeset
|
137 check_struct_has_member("struct stat" st_blocks sys/stat.h IRCCD_HAVE_STAT_ST_BLOCKS) |
28f493661157
Misc: prefix all macros with IRCCD_
David Demelier <markand@malikania.fr>
parents:
710
diff
changeset
|
138 check_struct_has_member("struct stat" st_ctime sys/stat.h IRCCD_HAVE_STAT_ST_CTIME) |
28f493661157
Misc: prefix all macros with IRCCD_
David Demelier <markand@malikania.fr>
parents:
710
diff
changeset
|
139 check_struct_has_member("struct stat" st_dev sys/stat.h IRCCD_HAVE_STAT_ST_DEV) |
28f493661157
Misc: prefix all macros with IRCCD_
David Demelier <markand@malikania.fr>
parents:
710
diff
changeset
|
140 check_struct_has_member("struct stat" st_gid sys/stat.h IRCCD_HAVE_STAT_ST_GID) |
28f493661157
Misc: prefix all macros with IRCCD_
David Demelier <markand@malikania.fr>
parents:
710
diff
changeset
|
141 check_struct_has_member("struct stat" st_ino sys/stat.h IRCCD_HAVE_STAT_ST_INO) |
28f493661157
Misc: prefix all macros with IRCCD_
David Demelier <markand@malikania.fr>
parents:
710
diff
changeset
|
142 check_struct_has_member("struct stat" st_mode sys/stat.h IRCCD_HAVE_STAT_ST_MODE) |
28f493661157
Misc: prefix all macros with IRCCD_
David Demelier <markand@malikania.fr>
parents:
710
diff
changeset
|
143 check_struct_has_member("struct stat" st_mtime sys/stat.h IRCCD_HAVE_STAT_ST_MTIME) |
28f493661157
Misc: prefix all macros with IRCCD_
David Demelier <markand@malikania.fr>
parents:
710
diff
changeset
|
144 check_struct_has_member("struct stat" st_nlink sys/stat.h IRCCD_HAVE_STAT_ST_NLINK) |
28f493661157
Misc: prefix all macros with IRCCD_
David Demelier <markand@malikania.fr>
parents:
710
diff
changeset
|
145 check_struct_has_member("struct stat" st_rdev sys/stat.h IRCCD_HAVE_STAT_ST_RDEV) |
28f493661157
Misc: prefix all macros with IRCCD_
David Demelier <markand@malikania.fr>
parents:
710
diff
changeset
|
146 check_struct_has_member("struct stat" st_size sys/stat.h IRCCD_HAVE_STAT_ST_SIZE) |
28f493661157
Misc: prefix all macros with IRCCD_
David Demelier <markand@malikania.fr>
parents:
710
diff
changeset
|
147 check_struct_has_member("struct stat" st_uid sys/stat.h IRCCD_HAVE_STAT_ST_UID) |
0 | 148 |
84
c67e734c9241
CMake: rename irccd-config.h to irccd/sysconfig.h, #452
David Demelier <markand@malikania.fr>
parents:
0
diff
changeset
|
149 # Configuration file. |
485
daf3aa8b2ddb
CMake: get rid of fakeroot mechanism, closes #674
David Demelier <markand@malikania.fr>
parents:
394
diff
changeset
|
150 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
|
151 |
0 | 152 configure_file( |
773
8c44bbcbbab9
Misc: style, cleanup and update
David Demelier <markand@malikania.fr>
parents:
762
diff
changeset
|
153 ${CMAKE_CURRENT_LIST_DIR}/internal/sysconfig.hpp.in |
8c44bbcbbab9
Misc: style, cleanup and update
David Demelier <markand@malikania.fr>
parents:
762
diff
changeset
|
154 ${CMAKE_BINARY_DIR}/irccd/sysconfig.hpp |
0 | 155 ) |
485
daf3aa8b2ddb
CMake: get rid of fakeroot mechanism, closes #674
David Demelier <markand@malikania.fr>
parents:
394
diff
changeset
|
156 |
486
0b156b82b8c1
Irccd: rework of paths, closes #611
David Demelier <markand@malikania.fr>
parents:
485
diff
changeset
|
157 include_directories( |
773
8c44bbcbbab9
Misc: style, cleanup and update
David Demelier <markand@malikania.fr>
parents:
762
diff
changeset
|
158 ${CMAKE_BINARY_DIR} |
8c44bbcbbab9
Misc: style, cleanup and update
David Demelier <markand@malikania.fr>
parents:
762
diff
changeset
|
159 ${CMAKE_BINARY_DIR}/irccd |
486
0b156b82b8c1
Irccd: rework of paths, closes #611
David Demelier <markand@malikania.fr>
parents:
485
diff
changeset
|
160 ) |
710
a17de53db29b
Misc: export libraries
David Demelier <markand@malikania.fr>
parents:
708
diff
changeset
|
161 |
a17de53db29b
Misc: export libraries
David Demelier <markand@malikania.fr>
parents:
708
diff
changeset
|
162 install( |
773
8c44bbcbbab9
Misc: style, cleanup and update
David Demelier <markand@malikania.fr>
parents:
762
diff
changeset
|
163 FILES ${CMAKE_BINARY_DIR}/irccd/sysconfig.hpp |
8c44bbcbbab9
Misc: style, cleanup and update
David Demelier <markand@malikania.fr>
parents:
762
diff
changeset
|
164 DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}/irccd |
710
a17de53db29b
Misc: export libraries
David Demelier <markand@malikania.fr>
parents:
708
diff
changeset
|
165 ) |