annotate CMakeLists.txt @ 18:f113796cfbf9

Irccd: fix compilation with WITH_JS=Off, #415
author David Demelier <markand@malikania.fr>
date Fri, 12 Feb 2016 13:15:14 +0100
parents 1158cffe5a5e
children 98ac3c79009f
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)
18
f113796cfbf9 Irccd: fix compilation with WITH_JS=Off, #415
David Demelier <markand@malikania.fr>
parents: 0
diff changeset
75
f113796cfbf9 Irccd: fix compilation with WITH_JS=Off, #415
David Demelier <markand@malikania.fr>
parents: 0
diff changeset
76 if (WITH_JS)
f113796cfbf9 Irccd: fix compilation with WITH_JS=Off, #415
David Demelier <markand@malikania.fr>
parents: 0
diff changeset
77 add_subdirectory(plugins)
f113796cfbf9 Irccd: fix compilation with WITH_JS=Off, #415
David Demelier <markand@malikania.fr>
parents: 0
diff changeset
78 endif ()
0
1158cffe5a5e Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
79
1158cffe5a5e Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
80 # Platform specific.
1158cffe5a5e Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
81 if (WIN32)
1158cffe5a5e Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
82 add_subdirectory(win32)
1158cffe5a5e Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
83 endif ()
1158cffe5a5e Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
84
1158cffe5a5e Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
85 # Tests.
1158cffe5a5e Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
86 include(CTest)
1158cffe5a5e Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
87 add_subdirectory(tests)
1158cffe5a5e Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
88
1158cffe5a5e Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
89 message("Compiling with the following flags:")
1158cffe5a5e Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
90 message(" General flags: ${CMAKE_CXX_FLAGS}")
1158cffe5a5e Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
91 message(" Debug flags: ${CMAKE_CXX_FLAGS_DEBUG}")
1158cffe5a5e Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
92 message(" Release flags: ${CMAKE_CXX_FLAGS_RELEASE}")
1158cffe5a5e Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
93 message("")
1158cffe5a5e Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
94
1158cffe5a5e Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
95 message("Compiling irccd with following options:")
1158cffe5a5e Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
96 message(" OpenSSL: ${WITH_SSL_MSG}")
1158cffe5a5e Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
97 message(" JS: ${WITH_JS_MSG}")
1158cffe5a5e Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
98 message(" Tests: ${WITH_TESTS_MSG}")
1158cffe5a5e Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
99 message(" User docs: ${WITH_HTML_MSG}")
1158cffe5a5e Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
100 message(" Doxygen: ${WITH_DOXYGEN_MSG}")
1158cffe5a5e Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
101 message(" Package: ${IRCCD_PACKAGE_MSG}")
1158cffe5a5e Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
102 message("")
1158cffe5a5e Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
103
1158cffe5a5e Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
104 message("Installing plugins:")
1158cffe5a5e Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
105 foreach (plugin ${IRCCD_PLUGINS})
1158cffe5a5e Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
106 string(TOUPPER ${plugin} name)
1158cffe5a5e Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
107 string(LENGTH ${plugin} length)
1158cffe5a5e Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
108 set(str " ${plugin}:")
1158cffe5a5e Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
109
1158cffe5a5e Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
110 #
1158cffe5a5e Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
111 # 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
112 # (e.g. CMake's GUI, QtCreator...)
1158cffe5a5e Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
113 #
1158cffe5a5e Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
114 while (${length} LESS 17)
1158cffe5a5e Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
115 math(EXPR length "${length} + 1")
1158cffe5a5e Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
116 set(str "${str} ")
1158cffe5a5e Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
117 endwhile ()
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("${str}${WITH_PLUGIN_${name}_MSG}")
1158cffe5a5e Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
120 endforeach ()
1158cffe5a5e Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
121
1158cffe5a5e Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
122 message("")
1158cffe5a5e Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
123
1158cffe5a5e Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
124 # CPack (only for package_source, package_ifw is home made).
1158cffe5a5e Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
125 include(cmake/IrccdPackage.cmake)
1158cffe5a5e Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
126 include(CPack)
1158cffe5a5e Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
127
1158cffe5a5e Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
128 # Meta release target.
1158cffe5a5e Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
129 if (IRCCD_PACKAGE)
1158cffe5a5e Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
130 add_custom_target(
1158cffe5a5e Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
131 release
1158cffe5a5e Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
132 COMMENT "Releasing irccd ${IRCCD_VERSION}"
1158cffe5a5e Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
133 COMMAND
1158cffe5a5e Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
134 ${CMAKE_MAKE_PROGRAM} package_source
1158cffe5a5e Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
135 )
1158cffe5a5e Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
136
1158cffe5a5e Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
137 add_dependencies(release package_ifw)
1158cffe5a5e Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
138 endif ()
1158cffe5a5e Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
139
1158cffe5a5e Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
140 # Show warnings about non-relocatable irccd.
1158cffe5a5e Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
141 if (NOT IRCCD_RELOCATABLE)
1158cffe5a5e Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
142 message("Note: irccd is not relocatable, the following paths are absolute:")
1158cffe5a5e Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
143 message("")
1158cffe5a5e Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
144
1158cffe5a5e Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
145 foreach (path ${IRCCD_ABSOLUTE_PATHS})
1158cffe5a5e Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
146 message(" ${path} is set to ${${path}}")
1158cffe5a5e Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
147 endforeach ()
1158cffe5a5e Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
148
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("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
151 message("different directory.")
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("This may be an issue with some packages manager which allows relocating")
1158cffe5a5e Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
154 message("application in different directories.")
1158cffe5a5e Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
155 message("")
1158cffe5a5e Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
156 message("Set to relative paths if this is a concern.")
1158cffe5a5e Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
157 message("")
1158cffe5a5e Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
158 endif ()