annotate CMakeLists.txt @ 266:85a53bc2116c

CMake: improve readability
author David Demelier <markand@malikania.fr>
date Fri, 16 Sep 2016 12:38:21 +0200
parents 904ee87bc808
children 90909cf677b1
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 #
266
85a53bc2116c CMake: improve readability
David Demelier <markand@malikania.fr>
parents: 260
diff changeset
25 # cmake/IrccdOptions.cmake - User definable options.
85a53bc2116c CMake: improve readability
David Demelier <markand@malikania.fr>
parents: 260
diff changeset
26 # cmake/IrccdPackage.cmake - Package creation.
85a53bc2116c CMake: improve readability
David Demelier <markand@malikania.fr>
parents: 260
diff changeset
27 # cmake/IrccdSystem.cmake - Contains some platforms checks and compile flags.
85a53bc2116c CMake: improve readability
David Demelier <markand@malikania.fr>
parents: 260
diff changeset
28 # cmake/IrccdVersion.cmake - Defines the Irccd version and its plugins.
85a53bc2116c CMake: improve readability
David Demelier <markand@malikania.fr>
parents: 260
diff changeset
29 # cmake/check - Platform checks in separate files.
85a53bc2116c CMake: improve readability
David Demelier <markand@malikania.fr>
parents: 260
diff changeset
30 # cmake/function - Custom functions.
85a53bc2116c CMake: improve readability
David Demelier <markand@malikania.fr>
parents: 260
diff changeset
31 # cmake/installer - Some files for the QtIFW installer.
85a53bc2116c CMake: improve readability
David Demelier <markand@malikania.fr>
parents: 260
diff changeset
32 # cmake/internal - Some internal files (e.g. the sysconfig.h)
85a53bc2116c CMake: improve readability
David Demelier <markand@malikania.fr>
parents: 260
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 #
266
85a53bc2116c CMake: improve readability
David Demelier <markand@malikania.fr>
parents: 260
diff changeset
37 # contrib - User contributions not maintained by irccd authors.
85a53bc2116c CMake: improve readability
David Demelier <markand@malikania.fr>
parents: 260
diff changeset
38 # doc - The documentation process.
85a53bc2116c CMake: improve readability
David Demelier <markand@malikania.fr>
parents: 260
diff changeset
39 # extern - External libraries.
85a53bc2116c CMake: improve readability
David Demelier <markand@malikania.fr>
parents: 260
diff changeset
40 # lib - The irccd library
85a53bc2116c CMake: improve readability
David Demelier <markand@malikania.fr>
parents: 260
diff changeset
41 # irccd - The irccd executable.
85a53bc2116c CMake: improve readability
David Demelier <markand@malikania.fr>
parents: 260
diff changeset
42 # irccdctl - The irccdctl utility.
85a53bc2116c CMake: improve readability
David Demelier <markand@malikania.fr>
parents: 260
diff changeset
43 # plugins - Official irccd plugins.
85a53bc2116c CMake: improve readability
David Demelier <markand@malikania.fr>
parents: 260
diff changeset
44 # tests - The unit tests.
85a53bc2116c CMake: improve readability
David Demelier <markand@malikania.fr>
parents: 260
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
256
f04acabfbbe5 CMake: switch to NSIS with various fixes, closes #533
David Demelier <markand@malikania.fr>
parents: 221
diff changeset
51 # Helper to set global internal variables.
f04acabfbbe5 CMake: switch to NSIS with various fixes, closes #533
David Demelier <markand@malikania.fr>
parents: 221
diff changeset
52 function(setg var value)
f04acabfbbe5 CMake: switch to NSIS with various fixes, closes #533
David Demelier <markand@malikania.fr>
parents: 221
diff changeset
53 set("${var}" "${value}" CACHE INTERNAL "")
f04acabfbbe5 CMake: switch to NSIS with various fixes, closes #533
David Demelier <markand@malikania.fr>
parents: 221
diff changeset
54 endfunction ()
f04acabfbbe5 CMake: switch to NSIS with various fixes, closes #533
David Demelier <markand@malikania.fr>
parents: 221
diff changeset
55
0
1158cffe5a5e Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
56 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
57 set(CMAKE_POSITION_INDEPENDENT_CODE TRUE)
0
1158cffe5a5e Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
58
138
ff26bd33a45d CMake: improve VS2015 support, #425
David Demelier <markand@malikania.fr>
parents: 117
diff changeset
59 set_property(GLOBAL PROPERTY USE_FOLDERS ON)
ff26bd33a45d CMake: improve VS2015 support, #425
David Demelier <markand@malikania.fr>
parents: 117
diff changeset
60
0
1158cffe5a5e Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
61 include(CMakeParseArguments)
1158cffe5a5e Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
62
1158cffe5a5e Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
63 include(cmake/function/IrccdDefineExecutable.cmake)
1158cffe5a5e Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
64 include(cmake/function/IrccdDefineLibrary.cmake)
1158cffe5a5e Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
65 include(cmake/function/IrccdDefineMan.cmake)
1158cffe5a5e Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
66 include(cmake/function/IrccdDefinePlugin.cmake)
1158cffe5a5e Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
67 include(cmake/function/IrccdDefineTest.cmake)
1158cffe5a5e Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
68
1158cffe5a5e Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
69 include(cmake/check/PutTime.cmake)
1158cffe5a5e Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
70
1158cffe5a5e Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
71 include(cmake/IrccdVersion.cmake)
1158cffe5a5e Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
72 include(cmake/IrccdOptions.cmake)
1158cffe5a5e Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
73 include(cmake/IrccdSystem.cmake)
1158cffe5a5e Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
74
104
be4b9ed19a17 Irccd: import cppformat, #483
David Demelier <markand@malikania.fr>
parents: 101
diff changeset
75 add_subdirectory(extern/cppformat)
0
1158cffe5a5e Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
76 add_subdirectory(extern/libircclient)
221
5ff2bac1c7d8 Irccd: switch to nlohmann json, #515
David Demelier <markand@malikania.fr>
parents: 207
diff changeset
77 add_subdirectory(extern/json)
0
1158cffe5a5e Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
78 add_subdirectory(doc)
72
98ac3c79009f Irccd: start making a library, #429
David Demelier <markand@malikania.fr>
parents: 18
diff changeset
79 add_subdirectory(lib)
0
1158cffe5a5e Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
80 add_subdirectory(irccd)
1158cffe5a5e Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
81 add_subdirectory(irccdctl)
1158cffe5a5e Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
82 add_subdirectory(contrib)
18
f113796cfbf9 Irccd: fix compilation with WITH_JS=Off, #415
David Demelier <markand@malikania.fr>
parents: 0
diff changeset
83
f113796cfbf9 Irccd: fix compilation with WITH_JS=Off, #415
David Demelier <markand@malikania.fr>
parents: 0
diff changeset
84 if (WITH_JS)
207
6635b9187d71 Irccd: switch to 4 spaces indent, #518
David Demelier <markand@malikania.fr>
parents: 138
diff changeset
85 add_subdirectory(plugins)
18
f113796cfbf9 Irccd: fix compilation with WITH_JS=Off, #415
David Demelier <markand@malikania.fr>
parents: 0
diff changeset
86 endif ()
0
1158cffe5a5e Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
87
1158cffe5a5e Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
88 # Platform specific.
1158cffe5a5e Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
89 if (WIN32)
207
6635b9187d71 Irccd: switch to 4 spaces indent, #518
David Demelier <markand@malikania.fr>
parents: 138
diff changeset
90 add_subdirectory(win32)
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 # Tests.
1158cffe5a5e Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
94 include(CTest)
1158cffe5a5e Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
95 add_subdirectory(tests)
1158cffe5a5e Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
96
1158cffe5a5e Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
97 message("Compiling with the following flags:")
1158cffe5a5e Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
98 message(" General flags: ${CMAKE_CXX_FLAGS}")
1158cffe5a5e Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
99 message(" Debug flags: ${CMAKE_CXX_FLAGS_DEBUG}")
1158cffe5a5e Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
100 message(" Release flags: ${CMAKE_CXX_FLAGS_RELEASE}")
1158cffe5a5e Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
101 message("")
1158cffe5a5e Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
102
1158cffe5a5e Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
103 message("Compiling irccd with following options:")
1158cffe5a5e Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
104 message(" OpenSSL: ${WITH_SSL_MSG}")
1158cffe5a5e Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
105 message(" JS: ${WITH_JS_MSG}")
1158cffe5a5e Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
106 message(" Tests: ${WITH_TESTS_MSG}")
1158cffe5a5e Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
107 message(" User docs: ${WITH_HTML_MSG}")
1158cffe5a5e Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
108 message(" Doxygen: ${WITH_DOXYGEN_MSG}")
1158cffe5a5e Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
109 message(" Package: ${IRCCD_PACKAGE_MSG}")
1158cffe5a5e Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
110 message("")
1158cffe5a5e Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
111
1158cffe5a5e Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
112 message("Installing plugins:")
1158cffe5a5e Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
113 foreach (plugin ${IRCCD_PLUGINS})
207
6635b9187d71 Irccd: switch to 4 spaces indent, #518
David Demelier <markand@malikania.fr>
parents: 138
diff changeset
114 string(TOUPPER ${plugin} name)
6635b9187d71 Irccd: switch to 4 spaces indent, #518
David Demelier <markand@malikania.fr>
parents: 138
diff changeset
115 string(LENGTH ${plugin} length)
6635b9187d71 Irccd: switch to 4 spaces indent, #518
David Demelier <markand@malikania.fr>
parents: 138
diff changeset
116 set(str " ${plugin}:")
0
1158cffe5a5e Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
117
207
6635b9187d71 Irccd: switch to 4 spaces indent, #518
David Demelier <markand@malikania.fr>
parents: 138
diff changeset
118 #
6635b9187d71 Irccd: switch to 4 spaces indent, #518
David Demelier <markand@malikania.fr>
parents: 138
diff changeset
119 # 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
120 # (e.g. CMake's GUI, QtCreator...)
6635b9187d71 Irccd: switch to 4 spaces indent, #518
David Demelier <markand@malikania.fr>
parents: 138
diff changeset
121 #
6635b9187d71 Irccd: switch to 4 spaces indent, #518
David Demelier <markand@malikania.fr>
parents: 138
diff changeset
122 while (${length} LESS 17)
6635b9187d71 Irccd: switch to 4 spaces indent, #518
David Demelier <markand@malikania.fr>
parents: 138
diff changeset
123 math(EXPR length "${length} + 1")
6635b9187d71 Irccd: switch to 4 spaces indent, #518
David Demelier <markand@malikania.fr>
parents: 138
diff changeset
124 set(str "${str} ")
6635b9187d71 Irccd: switch to 4 spaces indent, #518
David Demelier <markand@malikania.fr>
parents: 138
diff changeset
125 endwhile ()
0
1158cffe5a5e Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
126
207
6635b9187d71 Irccd: switch to 4 spaces indent, #518
David Demelier <markand@malikania.fr>
parents: 138
diff changeset
127 message("${str}${WITH_PLUGIN_${name}_MSG}")
0
1158cffe5a5e Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
128 endforeach ()
1158cffe5a5e Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
129
1158cffe5a5e Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
130 message("")
1158cffe5a5e Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
131
256
f04acabfbbe5 CMake: switch to NSIS with various fixes, closes #533
David Demelier <markand@malikania.fr>
parents: 221
diff changeset
132 include(cmake/IrccdPackage.cmake)
f04acabfbbe5 CMake: switch to NSIS with various fixes, closes #533
David Demelier <markand@malikania.fr>
parents: 221
diff changeset
133 include(CPack)