annotate CMakeLists.txt @ 104:be4b9ed19a17

Irccd: import cppformat, #483
author David Demelier <markand@malikania.fr>
date Tue, 26 Apr 2016 22:09:02 +0200
parents 113d909fdfe1
children 9b9b09543d2a
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 #
1158cffe5a5e Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
25 # cmake/IrccdOptions.cmake - User definable options.
1158cffe5a5e Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
26 # cmake/IrccdPackage.cmake - Package creation.
1158cffe5a5e Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
27 # cmake/IrccdSystem.cmake - Contains some platforms checks and compile flags.
1158cffe5a5e Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
28 # cmake/IrccdVersion.cmake - Defines the Irccd version and its plugins.
1158cffe5a5e Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
29 # cmake/check - Platform checks in separate files.
1158cffe5a5e Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
30 # cmake/function - Custom functions.
1158cffe5a5e Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
31 # cmake/installer - Some files for the QtIFW installer.
84
c67e734c9241 CMake: rename irccd-config.h to irccd/sysconfig.h, #452
David Demelier <markand@malikania.fr>
parents: 73
diff changeset
32 # cmake/internal - Some internal files (e.g. the sysconfig.h)
0
1158cffe5a5e Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
33 # cmake/packages - Additional find_package modules.
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 #
1158cffe5a5e Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
37 # contrib - User contributions not maintained by irccd authors.
1158cffe5a5e Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
38 # doc - The documentation process.
1158cffe5a5e Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
39 # extern - External libraries.
72
98ac3c79009f Irccd: start making a library, #429
David Demelier <markand@malikania.fr>
parents: 18
diff changeset
40 # lib - The irccd library
98ac3c79009f Irccd: start making a library, #429
David Demelier <markand@malikania.fr>
parents: 18
diff changeset
41 # irccd - The irccd executable.
0
1158cffe5a5e Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
42 # irccdctl - The irccdctl utility.
1158cffe5a5e Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
43 # plugins - Official irccd plugins.
1158cffe5a5e Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
44 # tests - The unit tests.
1158cffe5a5e Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
45 # win32 - Additional files for Windows platform.
1158cffe5a5e Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
46 #
1158cffe5a5e Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
47
1158cffe5a5e Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
48 cmake_minimum_required(VERSION 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
1158cffe5a5e Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
54 include(CMakeParseArguments)
1158cffe5a5e Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
55
1158cffe5a5e Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
56 include(cmake/function/IrccdDefineExecutable.cmake)
1158cffe5a5e Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
57 include(cmake/function/IrccdDefineHtml.cmake)
1158cffe5a5e Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
58 include(cmake/function/IrccdDefineLibrary.cmake)
1158cffe5a5e Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
59 include(cmake/function/IrccdDefineMan.cmake)
1158cffe5a5e Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
60 include(cmake/function/IrccdDefinePlugin.cmake)
1158cffe5a5e Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
61 include(cmake/function/IrccdDefineTest.cmake)
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/check/PutTime.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/IrccdVersion.cmake)
1158cffe5a5e Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
66 include(cmake/IrccdOptions.cmake)
1158cffe5a5e Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
67 include(cmake/IrccdSystem.cmake)
1158cffe5a5e Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
68
104
be4b9ed19a17 Irccd: import cppformat, #483
David Demelier <markand@malikania.fr>
parents: 101
diff changeset
69 add_subdirectory(extern/cppformat)
0
1158cffe5a5e Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
70 add_subdirectory(extern/libircclient)
1158cffe5a5e Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
71 add_subdirectory(extern/jansson)
1158cffe5a5e Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
72 add_subdirectory(doc)
72
98ac3c79009f Irccd: start making a library, #429
David Demelier <markand@malikania.fr>
parents: 18
diff changeset
73 add_subdirectory(lib)
0
1158cffe5a5e Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
74 add_subdirectory(irccd)
1158cffe5a5e Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
75 add_subdirectory(irccdctl)
1158cffe5a5e Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
76 add_subdirectory(contrib)
18
f113796cfbf9 Irccd: fix compilation with WITH_JS=Off, #415
David Demelier <markand@malikania.fr>
parents: 0
diff changeset
77
f113796cfbf9 Irccd: fix compilation with WITH_JS=Off, #415
David Demelier <markand@malikania.fr>
parents: 0
diff changeset
78 if (WITH_JS)
f113796cfbf9 Irccd: fix compilation with WITH_JS=Off, #415
David Demelier <markand@malikania.fr>
parents: 0
diff changeset
79 add_subdirectory(plugins)
f113796cfbf9 Irccd: fix compilation with WITH_JS=Off, #415
David Demelier <markand@malikania.fr>
parents: 0
diff changeset
80 endif ()
0
1158cffe5a5e Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
81
1158cffe5a5e Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
82 # Platform specific.
1158cffe5a5e Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
83 if (WIN32)
1158cffe5a5e Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
84 add_subdirectory(win32)
1158cffe5a5e Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
85 endif ()
1158cffe5a5e Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
86
1158cffe5a5e Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
87 # Tests.
1158cffe5a5e Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
88 include(CTest)
1158cffe5a5e Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
89 add_subdirectory(tests)
1158cffe5a5e Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
90
1158cffe5a5e Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
91 message("Compiling with the following flags:")
1158cffe5a5e Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
92 message(" General flags: ${CMAKE_CXX_FLAGS}")
1158cffe5a5e Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
93 message(" Debug flags: ${CMAKE_CXX_FLAGS_DEBUG}")
1158cffe5a5e Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
94 message(" Release flags: ${CMAKE_CXX_FLAGS_RELEASE}")
1158cffe5a5e Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
95 message("")
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 irccd with following options:")
1158cffe5a5e Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
98 message(" OpenSSL: ${WITH_SSL_MSG}")
1158cffe5a5e Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
99 message(" JS: ${WITH_JS_MSG}")
1158cffe5a5e Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
100 message(" Tests: ${WITH_TESTS_MSG}")
1158cffe5a5e Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
101 message(" User docs: ${WITH_HTML_MSG}")
1158cffe5a5e Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
102 message(" Doxygen: ${WITH_DOXYGEN_MSG}")
1158cffe5a5e Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
103 message(" Package: ${IRCCD_PACKAGE_MSG}")
1158cffe5a5e Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
104 message("")
1158cffe5a5e Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
105
1158cffe5a5e Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
106 message("Installing plugins:")
1158cffe5a5e Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
107 foreach (plugin ${IRCCD_PLUGINS})
1158cffe5a5e Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
108 string(TOUPPER ${plugin} name)
1158cffe5a5e Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
109 string(LENGTH ${plugin} length)
1158cffe5a5e Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
110 set(str " ${plugin}:")
1158cffe5a5e Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
111
1158cffe5a5e Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
112 #
1158cffe5a5e Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
113 # Build a string to indent the output correctly because tabs do not work well in all windows
1158cffe5a5e Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
114 # (e.g. CMake's GUI, QtCreator...)
1158cffe5a5e Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
115 #
1158cffe5a5e Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
116 while (${length} LESS 17)
1158cffe5a5e Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
117 math(EXPR length "${length} + 1")
1158cffe5a5e Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
118 set(str "${str} ")
1158cffe5a5e Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
119 endwhile ()
1158cffe5a5e Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
120
1158cffe5a5e Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
121 message("${str}${WITH_PLUGIN_${name}_MSG}")
1158cffe5a5e Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
122 endforeach ()
1158cffe5a5e Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
123
1158cffe5a5e Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
124 message("")
1158cffe5a5e Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
125
1158cffe5a5e Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
126 # 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
127 #include(cmake/IrccdPackage.cmake)
98ac3c79009f Irccd: start making a library, #429
David Demelier <markand@malikania.fr>
parents: 18
diff changeset
128 #include(CPack)
0
1158cffe5a5e Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
129
1158cffe5a5e Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
130 # Meta release target.
72
98ac3c79009f Irccd: start making a library, #429
David Demelier <markand@malikania.fr>
parents: 18
diff changeset
131 #if (IRCCD_PACKAGE)
98ac3c79009f Irccd: start making a library, #429
David Demelier <markand@malikania.fr>
parents: 18
diff changeset
132 # add_custom_target(
98ac3c79009f Irccd: start making a library, #429
David Demelier <markand@malikania.fr>
parents: 18
diff changeset
133 # release
98ac3c79009f Irccd: start making a library, #429
David Demelier <markand@malikania.fr>
parents: 18
diff changeset
134 # COMMENT "Releasing irccd ${IRCCD_VERSION}"
98ac3c79009f Irccd: start making a library, #429
David Demelier <markand@malikania.fr>
parents: 18
diff changeset
135 # COMMAND
98ac3c79009f Irccd: start making a library, #429
David Demelier <markand@malikania.fr>
parents: 18
diff changeset
136 # ${CMAKE_MAKE_PROGRAM} package_source
98ac3c79009f Irccd: start making a library, #429
David Demelier <markand@malikania.fr>
parents: 18
diff changeset
137 # )
98ac3c79009f Irccd: start making a library, #429
David Demelier <markand@malikania.fr>
parents: 18
diff changeset
138 #
98ac3c79009f Irccd: start making a library, #429
David Demelier <markand@malikania.fr>
parents: 18
diff changeset
139 # add_dependencies(release package_ifw)
98ac3c79009f Irccd: start making a library, #429
David Demelier <markand@malikania.fr>
parents: 18
diff changeset
140 #endif ()