annotate CMakeLists.txt @ 0:1158cffe5a5e

Initial import
author David Demelier <markand@malikania.fr>
date Mon, 08 Feb 2016 16:43:14 +0100
parents
children f113796cfbf9
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.
1158cffe5a5e Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
32 # cmake/internal - Some internal files (e.g. the irccd-config.h)
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 # common - Static common library between irccd and irccdctl.
1158cffe5a5e Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
38 # contrib - User contributions not maintained by irccd authors.
1158cffe5a5e Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
39 # doc - The documentation process.
1158cffe5a5e Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
40 # extern - External libraries.
1158cffe5a5e Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
41 # irccd - The main irccd executable.
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)
1158cffe5a5e Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
52
1158cffe5a5e Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
53 include(CMakeParseArguments)
1158cffe5a5e Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
54
1158cffe5a5e Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
55 include(cmake/function/IrccdDefineExecutable.cmake)
1158cffe5a5e Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
56 include(cmake/function/IrccdDefineHtml.cmake)
1158cffe5a5e Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
57 include(cmake/function/IrccdDefineLibrary.cmake)
1158cffe5a5e Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
58 include(cmake/function/IrccdDefineMan.cmake)
1158cffe5a5e Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
59 include(cmake/function/IrccdDefinePlugin.cmake)
1158cffe5a5e Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
60 include(cmake/function/IrccdDefineTest.cmake)
1158cffe5a5e Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
61
1158cffe5a5e Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
62 include(cmake/check/PutTime.cmake)
1158cffe5a5e Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
63
1158cffe5a5e Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
64 include(cmake/IrccdVersion.cmake)
1158cffe5a5e Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
65 include(cmake/IrccdOptions.cmake)
1158cffe5a5e Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
66 include(cmake/IrccdSystem.cmake)
1158cffe5a5e Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
67
1158cffe5a5e Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
68 add_subdirectory(extern/libircclient)
1158cffe5a5e Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
69 add_subdirectory(extern/jansson)
1158cffe5a5e Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
70 add_subdirectory(common)
1158cffe5a5e Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
71 add_subdirectory(doc)
1158cffe5a5e Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
72 add_subdirectory(irccd)
1158cffe5a5e Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
73 add_subdirectory(irccdctl)
1158cffe5a5e Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
74 add_subdirectory(contrib)
1158cffe5a5e Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
75 add_subdirectory(plugins)
1158cffe5a5e Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
76
1158cffe5a5e Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
77 # Platform specific.
1158cffe5a5e Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
78 if (WIN32)
1158cffe5a5e Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
79 add_subdirectory(win32)
1158cffe5a5e Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
80 endif ()
1158cffe5a5e Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
81
1158cffe5a5e Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
82 # Tests.
1158cffe5a5e Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
83 include(CTest)
1158cffe5a5e Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
84 add_subdirectory(tests)
1158cffe5a5e Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
85
1158cffe5a5e Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
86 message("Compiling with the following flags:")
1158cffe5a5e Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
87 message(" General flags: ${CMAKE_CXX_FLAGS}")
1158cffe5a5e Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
88 message(" Debug flags: ${CMAKE_CXX_FLAGS_DEBUG}")
1158cffe5a5e Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
89 message(" Release flags: ${CMAKE_CXX_FLAGS_RELEASE}")
1158cffe5a5e Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
90 message("")
1158cffe5a5e Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
91
1158cffe5a5e Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
92 message("Compiling irccd with following options:")
1158cffe5a5e Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
93 message(" OpenSSL: ${WITH_SSL_MSG}")
1158cffe5a5e Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
94 message(" JS: ${WITH_JS_MSG}")
1158cffe5a5e Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
95 message(" Tests: ${WITH_TESTS_MSG}")
1158cffe5a5e Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
96 message(" User docs: ${WITH_HTML_MSG}")
1158cffe5a5e Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
97 message(" Doxygen: ${WITH_DOXYGEN_MSG}")
1158cffe5a5e Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
98 message(" Package: ${IRCCD_PACKAGE_MSG}")
1158cffe5a5e Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
99 message("")
1158cffe5a5e Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
100
1158cffe5a5e Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
101 message("Installing plugins:")
1158cffe5a5e Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
102 foreach (plugin ${IRCCD_PLUGINS})
1158cffe5a5e Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
103 string(TOUPPER ${plugin} name)
1158cffe5a5e Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
104 string(LENGTH ${plugin} length)
1158cffe5a5e Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
105 set(str " ${plugin}:")
1158cffe5a5e Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
106
1158cffe5a5e Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
107 #
1158cffe5a5e Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
108 # 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
109 # (e.g. CMake's GUI, QtCreator...)
1158cffe5a5e Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
110 #
1158cffe5a5e Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
111 while (${length} LESS 17)
1158cffe5a5e Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
112 math(EXPR length "${length} + 1")
1158cffe5a5e Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
113 set(str "${str} ")
1158cffe5a5e Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
114 endwhile ()
1158cffe5a5e Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
115
1158cffe5a5e Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
116 message("${str}${WITH_PLUGIN_${name}_MSG}")
1158cffe5a5e Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
117 endforeach ()
1158cffe5a5e Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
118
1158cffe5a5e Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
119 message("")
1158cffe5a5e Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
120
1158cffe5a5e Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
121 # CPack (only for package_source, package_ifw is home made).
1158cffe5a5e Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
122 include(cmake/IrccdPackage.cmake)
1158cffe5a5e Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
123 include(CPack)
1158cffe5a5e Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
124
1158cffe5a5e Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
125 # Meta release target.
1158cffe5a5e Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
126 if (IRCCD_PACKAGE)
1158cffe5a5e Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
127 add_custom_target(
1158cffe5a5e Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
128 release
1158cffe5a5e Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
129 COMMENT "Releasing irccd ${IRCCD_VERSION}"
1158cffe5a5e Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
130 COMMAND
1158cffe5a5e Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
131 ${CMAKE_MAKE_PROGRAM} package_source
1158cffe5a5e Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
132 )
1158cffe5a5e Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
133
1158cffe5a5e Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
134 add_dependencies(release package_ifw)
1158cffe5a5e Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
135 endif ()
1158cffe5a5e Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
136
1158cffe5a5e Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
137 # Show warnings about non-relocatable irccd.
1158cffe5a5e Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
138 if (NOT IRCCD_RELOCATABLE)
1158cffe5a5e Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
139 message("Note: irccd is not relocatable, the following paths are absolute:")
1158cffe5a5e Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
140 message("")
1158cffe5a5e Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
141
1158cffe5a5e Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
142 foreach (path ${IRCCD_ABSOLUTE_PATHS})
1158cffe5a5e Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
143 message(" ${path} is set to ${${path}}")
1158cffe5a5e Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
144 endforeach ()
1158cffe5a5e Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
145
1158cffe5a5e Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
146 message("")
1158cffe5a5e Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
147 message("You can still use irccd, but you won't be able to move the application to a")
1158cffe5a5e Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
148 message("different directory.")
1158cffe5a5e Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
149 message("")
1158cffe5a5e Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
150 message("This may be an issue with some packages manager which allows relocating")
1158cffe5a5e Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
151 message("application in different directories.")
1158cffe5a5e Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
152 message("")
1158cffe5a5e Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
153 message("Set to relative paths if this is a concern.")
1158cffe5a5e Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
154 message("")
1158cffe5a5e Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
155 endif ()