annotate CMakeLists.txt @ 249:c2c40fc0beb1

Irccd: rename some functions
author David Demelier <markand@malikania.fr>
date Wed, 17 Aug 2016 23:00:59 +0200
parents 5ff2bac1c7d8
children f04acabfbbe5
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 # CMakeLists.txt -- CMake build system for irccd
1158cffe5a5e Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
3 #
1158cffe5a5e Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
4 # Copyright (c) 2013-2016 David Demelier <markand@malikania.fr>
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 #
1158cffe5a5e Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
20 # Where to start
1158cffe5a5e Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
21 # ---------------------------------------------------------
1158cffe5a5e Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
22 #
1158cffe5a5e Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
23 # If you plan to modify the build system there are several places to look to do what you want.
1158cffe5a5e Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
24 #
207
6635b9187d71 Irccd: switch to 4 spaces indent, #518
David Demelier <markand@malikania.fr>
parents: 138
diff changeset
25 # cmake/IrccdOptions.cmake - User definable options.
6635b9187d71 Irccd: switch to 4 spaces indent, #518
David Demelier <markand@malikania.fr>
parents: 138
diff changeset
26 # cmake/IrccdPackage.cmake - Package creation.
6635b9187d71 Irccd: switch to 4 spaces indent, #518
David Demelier <markand@malikania.fr>
parents: 138
diff changeset
27 # cmake/IrccdSystem.cmake - Contains some platforms checks and compile flags.
6635b9187d71 Irccd: switch to 4 spaces indent, #518
David Demelier <markand@malikania.fr>
parents: 138
diff changeset
28 # cmake/IrccdVersion.cmake - Defines the Irccd version and its plugins.
6635b9187d71 Irccd: switch to 4 spaces indent, #518
David Demelier <markand@malikania.fr>
parents: 138
diff changeset
29 # cmake/check - Platform checks in separate files.
6635b9187d71 Irccd: switch to 4 spaces indent, #518
David Demelier <markand@malikania.fr>
parents: 138
diff changeset
30 # cmake/function - Custom functions.
6635b9187d71 Irccd: switch to 4 spaces indent, #518
David Demelier <markand@malikania.fr>
parents: 138
diff changeset
31 # cmake/installer - Some files for the QtIFW installer.
6635b9187d71 Irccd: switch to 4 spaces indent, #518
David Demelier <markand@malikania.fr>
parents: 138
diff changeset
32 # cmake/internal - Some internal files (e.g. the sysconfig.h)
6635b9187d71 Irccd: switch to 4 spaces indent, #518
David Demelier <markand@malikania.fr>
parents: 138
diff changeset
33 # cmake/packages - Additional find_package modules.
0
1158cffe5a5e Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
34 #
1158cffe5a5e Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
35 # Build system is then processed in different directories:
1158cffe5a5e Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
36 #
207
6635b9187d71 Irccd: switch to 4 spaces indent, #518
David Demelier <markand@malikania.fr>
parents: 138
diff changeset
37 # contrib - User contributions not maintained by irccd authors.
6635b9187d71 Irccd: switch to 4 spaces indent, #518
David Demelier <markand@malikania.fr>
parents: 138
diff changeset
38 # doc - The documentation process.
6635b9187d71 Irccd: switch to 4 spaces indent, #518
David Demelier <markand@malikania.fr>
parents: 138
diff changeset
39 # extern - External libraries.
6635b9187d71 Irccd: switch to 4 spaces indent, #518
David Demelier <markand@malikania.fr>
parents: 138
diff changeset
40 # lib - The irccd library
6635b9187d71 Irccd: switch to 4 spaces indent, #518
David Demelier <markand@malikania.fr>
parents: 138
diff changeset
41 # irccd - The irccd executable.
6635b9187d71 Irccd: switch to 4 spaces indent, #518
David Demelier <markand@malikania.fr>
parents: 138
diff changeset
42 # irccdctl - The irccdctl utility.
6635b9187d71 Irccd: switch to 4 spaces indent, #518
David Demelier <markand@malikania.fr>
parents: 138
diff changeset
43 # plugins - Official irccd plugins.
6635b9187d71 Irccd: switch to 4 spaces indent, #518
David Demelier <markand@malikania.fr>
parents: 138
diff changeset
44 # tests - The unit tests.
6635b9187d71 Irccd: switch to 4 spaces indent, #518
David Demelier <markand@malikania.fr>
parents: 138
diff changeset
45 # win32 - Additional files for Windows platform.
0
1158cffe5a5e Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
46 #
1158cffe5a5e Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
47
117
9b9b09543d2a CMake: increase required version because of a false-positive warning in Ninja
David Demelier <markand@malikania.fr>
parents: 104
diff changeset
48 cmake_minimum_required(VERSION 3.3)
0
1158cffe5a5e Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
49 project(irccd)
1158cffe5a5e Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
50
1158cffe5a5e Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
51 set(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} ${irccd_SOURCE_DIR}/cmake/packages)
73
8ee1178f1219 Irccd: port as a library almost complete, #429
David Demelier <markand@malikania.fr>
parents: 72
diff changeset
52 set(CMAKE_POSITION_INDEPENDENT_CODE TRUE)
0
1158cffe5a5e Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
53
138
ff26bd33a45d CMake: improve VS2015 support, #425
David Demelier <markand@malikania.fr>
parents: 117
diff changeset
54 set_property(GLOBAL PROPERTY USE_FOLDERS ON)
ff26bd33a45d CMake: improve VS2015 support, #425
David Demelier <markand@malikania.fr>
parents: 117
diff changeset
55
0
1158cffe5a5e Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
56 include(CMakeParseArguments)
1158cffe5a5e Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
57
1158cffe5a5e Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
58 include(cmake/function/IrccdDefineExecutable.cmake)
1158cffe5a5e Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
59 include(cmake/function/IrccdDefineHtml.cmake)
1158cffe5a5e Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
60 include(cmake/function/IrccdDefineLibrary.cmake)
1158cffe5a5e Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
61 include(cmake/function/IrccdDefineMan.cmake)
1158cffe5a5e Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
62 include(cmake/function/IrccdDefinePlugin.cmake)
1158cffe5a5e Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
63 include(cmake/function/IrccdDefineTest.cmake)
1158cffe5a5e Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
64
1158cffe5a5e Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
65 include(cmake/check/PutTime.cmake)
1158cffe5a5e Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
66
1158cffe5a5e Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
67 include(cmake/IrccdVersion.cmake)
1158cffe5a5e Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
68 include(cmake/IrccdOptions.cmake)
1158cffe5a5e Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
69 include(cmake/IrccdSystem.cmake)
1158cffe5a5e Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
70
104
be4b9ed19a17 Irccd: import cppformat, #483
David Demelier <markand@malikania.fr>
parents: 101
diff changeset
71 add_subdirectory(extern/cppformat)
0
1158cffe5a5e Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
72 add_subdirectory(extern/libircclient)
221
5ff2bac1c7d8 Irccd: switch to nlohmann json, #515
David Demelier <markand@malikania.fr>
parents: 207
diff changeset
73 add_subdirectory(extern/json)
0
1158cffe5a5e Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
74 add_subdirectory(doc)
72
98ac3c79009f Irccd: start making a library, #429
David Demelier <markand@malikania.fr>
parents: 18
diff changeset
75 add_subdirectory(lib)
0
1158cffe5a5e Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
76 add_subdirectory(irccd)
1158cffe5a5e Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
77 add_subdirectory(irccdctl)
1158cffe5a5e Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
78 add_subdirectory(contrib)
18
f113796cfbf9 Irccd: fix compilation with WITH_JS=Off, #415
David Demelier <markand@malikania.fr>
parents: 0
diff changeset
79
f113796cfbf9 Irccd: fix compilation with WITH_JS=Off, #415
David Demelier <markand@malikania.fr>
parents: 0
diff changeset
80 if (WITH_JS)
207
6635b9187d71 Irccd: switch to 4 spaces indent, #518
David Demelier <markand@malikania.fr>
parents: 138
diff changeset
81 add_subdirectory(plugins)
18
f113796cfbf9 Irccd: fix compilation with WITH_JS=Off, #415
David Demelier <markand@malikania.fr>
parents: 0
diff changeset
82 endif ()
0
1158cffe5a5e Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
83
1158cffe5a5e Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
84 # Platform specific.
1158cffe5a5e Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
85 if (WIN32)
207
6635b9187d71 Irccd: switch to 4 spaces indent, #518
David Demelier <markand@malikania.fr>
parents: 138
diff changeset
86 add_subdirectory(win32)
0
1158cffe5a5e Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
87 endif ()
1158cffe5a5e Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
88
1158cffe5a5e Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
89 # Tests.
1158cffe5a5e Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
90 include(CTest)
1158cffe5a5e Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
91 add_subdirectory(tests)
1158cffe5a5e Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
92
1158cffe5a5e Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
93 message("Compiling with the following flags:")
1158cffe5a5e Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
94 message(" General flags: ${CMAKE_CXX_FLAGS}")
1158cffe5a5e Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
95 message(" Debug flags: ${CMAKE_CXX_FLAGS_DEBUG}")
1158cffe5a5e Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
96 message(" Release flags: ${CMAKE_CXX_FLAGS_RELEASE}")
1158cffe5a5e Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
97 message("")
1158cffe5a5e Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
98
1158cffe5a5e Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
99 message("Compiling irccd with following options:")
1158cffe5a5e Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
100 message(" OpenSSL: ${WITH_SSL_MSG}")
1158cffe5a5e Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
101 message(" JS: ${WITH_JS_MSG}")
1158cffe5a5e Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
102 message(" Tests: ${WITH_TESTS_MSG}")
1158cffe5a5e Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
103 message(" User docs: ${WITH_HTML_MSG}")
1158cffe5a5e Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
104 message(" Doxygen: ${WITH_DOXYGEN_MSG}")
1158cffe5a5e Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
105 message(" Package: ${IRCCD_PACKAGE_MSG}")
1158cffe5a5e Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
106 message("")
1158cffe5a5e Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
107
1158cffe5a5e Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
108 message("Installing plugins:")
1158cffe5a5e Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
109 foreach (plugin ${IRCCD_PLUGINS})
207
6635b9187d71 Irccd: switch to 4 spaces indent, #518
David Demelier <markand@malikania.fr>
parents: 138
diff changeset
110 string(TOUPPER ${plugin} name)
6635b9187d71 Irccd: switch to 4 spaces indent, #518
David Demelier <markand@malikania.fr>
parents: 138
diff changeset
111 string(LENGTH ${plugin} length)
6635b9187d71 Irccd: switch to 4 spaces indent, #518
David Demelier <markand@malikania.fr>
parents: 138
diff changeset
112 set(str " ${plugin}:")
0
1158cffe5a5e Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
113
207
6635b9187d71 Irccd: switch to 4 spaces indent, #518
David Demelier <markand@malikania.fr>
parents: 138
diff changeset
114 #
6635b9187d71 Irccd: switch to 4 spaces indent, #518
David Demelier <markand@malikania.fr>
parents: 138
diff changeset
115 # Build a string to indent the output correctly because tabs do not work well in all windows
6635b9187d71 Irccd: switch to 4 spaces indent, #518
David Demelier <markand@malikania.fr>
parents: 138
diff changeset
116 # (e.g. CMake's GUI, QtCreator...)
6635b9187d71 Irccd: switch to 4 spaces indent, #518
David Demelier <markand@malikania.fr>
parents: 138
diff changeset
117 #
6635b9187d71 Irccd: switch to 4 spaces indent, #518
David Demelier <markand@malikania.fr>
parents: 138
diff changeset
118 while (${length} LESS 17)
6635b9187d71 Irccd: switch to 4 spaces indent, #518
David Demelier <markand@malikania.fr>
parents: 138
diff changeset
119 math(EXPR length "${length} + 1")
6635b9187d71 Irccd: switch to 4 spaces indent, #518
David Demelier <markand@malikania.fr>
parents: 138
diff changeset
120 set(str "${str} ")
6635b9187d71 Irccd: switch to 4 spaces indent, #518
David Demelier <markand@malikania.fr>
parents: 138
diff changeset
121 endwhile ()
0
1158cffe5a5e Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
122
207
6635b9187d71 Irccd: switch to 4 spaces indent, #518
David Demelier <markand@malikania.fr>
parents: 138
diff changeset
123 message("${str}${WITH_PLUGIN_${name}_MSG}")
0
1158cffe5a5e Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
124 endforeach ()
1158cffe5a5e Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
125
1158cffe5a5e Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
126 message("")
1158cffe5a5e Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
127
1158cffe5a5e Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
128 # CPack (only for package_source, package_ifw is home made).
72
98ac3c79009f Irccd: start making a library, #429
David Demelier <markand@malikania.fr>
parents: 18
diff changeset
129 #include(cmake/IrccdPackage.cmake)
98ac3c79009f Irccd: start making a library, #429
David Demelier <markand@malikania.fr>
parents: 18
diff changeset
130 #include(CPack)
0
1158cffe5a5e Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
131
1158cffe5a5e Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
132 # Meta release target.
72
98ac3c79009f Irccd: start making a library, #429
David Demelier <markand@malikania.fr>
parents: 18
diff changeset
133 #if (IRCCD_PACKAGE)
207
6635b9187d71 Irccd: switch to 4 spaces indent, #518
David Demelier <markand@malikania.fr>
parents: 138
diff changeset
134 # add_custom_target(
6635b9187d71 Irccd: switch to 4 spaces indent, #518
David Demelier <markand@malikania.fr>
parents: 138
diff changeset
135 # release
6635b9187d71 Irccd: switch to 4 spaces indent, #518
David Demelier <markand@malikania.fr>
parents: 138
diff changeset
136 # COMMENT "Releasing irccd ${IRCCD_VERSION}"
6635b9187d71 Irccd: switch to 4 spaces indent, #518
David Demelier <markand@malikania.fr>
parents: 138
diff changeset
137 # COMMAND
6635b9187d71 Irccd: switch to 4 spaces indent, #518
David Demelier <markand@malikania.fr>
parents: 138
diff changeset
138 # ${CMAKE_MAKE_PROGRAM} package_source
6635b9187d71 Irccd: switch to 4 spaces indent, #518
David Demelier <markand@malikania.fr>
parents: 138
diff changeset
139 # )
72
98ac3c79009f Irccd: start making a library, #429
David Demelier <markand@malikania.fr>
parents: 18
diff changeset
140 #
207
6635b9187d71 Irccd: switch to 4 spaces indent, #518
David Demelier <markand@malikania.fr>
parents: 138
diff changeset
141 # add_dependencies(release package_ifw)
72
98ac3c79009f Irccd: start making a library, #429
David Demelier <markand@malikania.fr>
parents: 18
diff changeset
142 #endif ()