annotate CMakeLists.txt @ 833:9516b33a8af5

doc: update to marker %{}
author David Demelier <markand@malikania.fr>
date Mon, 11 Mar 2019 13:00:22 +0100
parents 2ecff01d4277
children 00a4720c4874
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 #
824
06cc2f95f479 misc: happy new year!
David Demelier <markand@malikania.fr>
parents: 823
diff changeset
4 # Copyright (c) 2013-2019 David Demelier <markand@malikania.fr>
0
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 #
374
e9adab218027 Misc: various code cleanup
David Demelier <markand@malikania.fr>
parents: 364
diff changeset
20 # Where to start.
e9adab218027 Misc: various code cleanup
David Demelier <markand@malikania.fr>
parents: 364
diff changeset
21 # -------------------------------------------------------------------
0
1158cffe5a5e Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
22 #
374
e9adab218027 Misc: various code cleanup
David Demelier <markand@malikania.fr>
parents: 364
diff changeset
23 # If you plan to modify the build system there are several places to look to do
e9adab218027 Misc: various code cleanup
David Demelier <markand@malikania.fr>
parents: 364
diff changeset
24 # what you want.
0
1158cffe5a5e Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
25 #
266
85a53bc2116c CMake: improve readability
David Demelier <markand@malikania.fr>
parents: 260
diff changeset
26 # cmake/IrccdOptions.cmake - User definable options.
85a53bc2116c CMake: improve readability
David Demelier <markand@malikania.fr>
parents: 260
diff changeset
27 # cmake/IrccdPackage.cmake - Package creation.
85a53bc2116c CMake: improve readability
David Demelier <markand@malikania.fr>
parents: 260
diff changeset
28 # cmake/IrccdSystem.cmake - Contains some platforms checks and compile flags.
85a53bc2116c CMake: improve readability
David Demelier <markand@malikania.fr>
parents: 260
diff changeset
29 # cmake/IrccdVersion.cmake - Defines the Irccd version and its plugins.
85a53bc2116c CMake: improve readability
David Demelier <markand@malikania.fr>
parents: 260
diff changeset
30 # cmake/check - Platform checks in separate files.
711
fc66cc9706a7 CMake: export pkg-config files, closes #874 @1h
David Demelier <markand@malikania.fr>
parents: 710
diff changeset
31 # cmake/export - CMake and pkg-config exports.
374
e9adab218027 Misc: various code cleanup
David Demelier <markand@malikania.fr>
parents: 364
diff changeset
32 # cmake/function - Custom CMake functions.
266
85a53bc2116c CMake: improve readability
David Demelier <markand@malikania.fr>
parents: 260
diff changeset
33 # cmake/internal - Some internal files (e.g. the sysconfig.h)
85a53bc2116c CMake: improve readability
David Demelier <markand@malikania.fr>
parents: 260
diff changeset
34 # cmake/packages - Additional find_package modules.
0
1158cffe5a5e Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
35 #
1158cffe5a5e Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
36 # Build system is then processed in different directories:
1158cffe5a5e Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
37 #
266
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.
809
8460b4a34191 misc: reorganize namespaces, closes #952 @4h
David Demelier <markand@malikania.fr>
parents: 801
diff changeset
40 # libirccd - Common code.
711
fc66cc9706a7 CMake: export pkg-config files, closes #874 @1h
David Demelier <markand@malikania.fr>
parents: 710
diff changeset
41 # libirccd-ctl - The irccdctl library.
683
d30793525261 CMake: global cleanup, remove useless definitions and libraries
David Demelier <markand@malikania.fr>
parents: 669
diff changeset
42 # libirccd-js - Javascript bindings library.
d30793525261 CMake: global cleanup, remove useless definitions and libraries
David Demelier <markand@malikania.fr>
parents: 669
diff changeset
43 # libirccd-test - Helpers for unit tests.
809
8460b4a34191 misc: reorganize namespaces, closes #952 @4h
David Demelier <markand@malikania.fr>
parents: 801
diff changeset
44 # libirccd-daemon - The irccd bot library.
266
85a53bc2116c CMake: improve readability
David Demelier <markand@malikania.fr>
parents: 260
diff changeset
45 # irccd - The irccd executable.
85a53bc2116c CMake: improve readability
David Demelier <markand@malikania.fr>
parents: 260
diff changeset
46 # irccdctl - The irccdctl utility.
85a53bc2116c CMake: improve readability
David Demelier <markand@malikania.fr>
parents: 260
diff changeset
47 # plugins - Official irccd plugins.
658
e0714513ed1d CMake: move contrib to systemd, closes #786 @5m
David Demelier <markand@malikania.fr>
parents: 629
diff changeset
48 # systemd - Unit file for systemd.
266
85a53bc2116c CMake: improve readability
David Demelier <markand@malikania.fr>
parents: 260
diff changeset
49 # tests - The unit tests.
0
1158cffe5a5e Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
50 #
1158cffe5a5e Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
51
710
a17de53db29b Misc: export libraries
David Demelier <markand@malikania.fr>
parents: 709
diff changeset
52 cmake_minimum_required(VERSION 3.10)
753
6d09b5fc82e8 CMake: disable CXX only for platform tests
David Demelier <markand@malikania.fr>
parents: 711
diff changeset
53 project(irccd)
0
1158cffe5a5e Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
54
818
49fa22f0b4b9 windows: support for VS2017
David Demelier <markand@malikania.fr>
parents: 809
diff changeset
55 include(GNUInstallDirs)
823
d76699e13156 cmake: use GetPrerequisites, closes #988 @1h
David Demelier <markand@malikania.fr>
parents: 818
diff changeset
56 include(InstallRequiredSystemLibraries)
818
49fa22f0b4b9 windows: support for VS2017
David Demelier <markand@malikania.fr>
parents: 809
diff changeset
57
256
f04acabfbbe5 CMake: switch to NSIS with various fixes, closes #533
David Demelier <markand@malikania.fr>
parents: 221
diff changeset
58 # 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
59 function(setg var value)
773
8c44bbcbbab9 Misc: style, cleanup and update
David Demelier <markand@malikania.fr>
parents: 753
diff changeset
60 set("${var}" "${value}" CACHE INTERNAL "")
256
f04acabfbbe5 CMake: switch to NSIS with various fixes, closes #533
David Demelier <markand@malikania.fr>
parents: 221
diff changeset
61 endfunction ()
f04acabfbbe5 CMake: switch to NSIS with various fixes, closes #533
David Demelier <markand@malikania.fr>
parents: 221
diff changeset
62
818
49fa22f0b4b9 windows: support for VS2017
David Demelier <markand@malikania.fr>
parents: 809
diff changeset
63 set_property(GLOBAL PROPERTY USE_FOLDERS On)
49fa22f0b4b9 windows: support for VS2017
David Demelier <markand@malikania.fr>
parents: 809
diff changeset
64
705
4b5dba257d81 Plugin links: brand new plugin, closes #872 @4h
David Demelier <markand@malikania.fr>
parents: 701
diff changeset
65 set(CMAKE_CXX_STANDARD 17)
699
808171f7bfa2 Misc: replace IRCCD_EXPORT with CMake functionality
David Demelier <markand@malikania.fr>
parents: 683
diff changeset
66 set(CMAKE_CXX_STANDARD_REQUIRED On)
818
49fa22f0b4b9 windows: support for VS2017
David Demelier <markand@malikania.fr>
parents: 809
diff changeset
67 set(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} ${irccd_SOURCE_DIR}/cmake/packages)
49fa22f0b4b9 windows: support for VS2017
David Demelier <markand@malikania.fr>
parents: 809
diff changeset
68 set(CMAKE_POSITION_INDEPENDENT_CODE On)
699
808171f7bfa2 Misc: replace IRCCD_EXPORT with CMake functionality
David Demelier <markand@malikania.fr>
parents: 683
diff changeset
69 set(CMAKE_WINDOWS_EXPORT_ALL_SYMBOLS On)
818
49fa22f0b4b9 windows: support for VS2017
David Demelier <markand@malikania.fr>
parents: 809
diff changeset
70 set(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/bin)
138
ff26bd33a45d CMake: improve VS2015 support, #425
David Demelier <markand@malikania.fr>
parents: 117
diff changeset
71
818
49fa22f0b4b9 windows: support for VS2017
David Demelier <markand@malikania.fr>
parents: 809
diff changeset
72 foreach (cfg ${CMAKE_CONFIGURATION_TYPES})
49fa22f0b4b9 windows: support for VS2017
David Demelier <markand@malikania.fr>
parents: 809
diff changeset
73 string(TOUPPER CFG ${cfg})
49fa22f0b4b9 windows: support for VS2017
David Demelier <markand@malikania.fr>
parents: 809
diff changeset
74 set(CMAKE_RUNTIME_OUTPUT_DIRECTORY_${CFG} ${CMAKE_BINARY_DIR}/bin/${cfg})
49fa22f0b4b9 windows: support for VS2017
David Demelier <markand@malikania.fr>
parents: 809
diff changeset
75 endforeach ()
0
1158cffe5a5e Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
76
275
c143682678b9 CMake: improve documentation related to plugins
David Demelier <markand@malikania.fr>
parents: 270
diff changeset
77 include(cmake/function/IrccdBuildHtml.cmake)
0
1158cffe5a5e Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
78 include(cmake/function/IrccdDefineExecutable.cmake)
1158cffe5a5e Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
79 include(cmake/function/IrccdDefineLibrary.cmake)
1158cffe5a5e Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
80 include(cmake/function/IrccdDefineMan.cmake)
1158cffe5a5e Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
81 include(cmake/function/IrccdDefinePlugin.cmake)
1158cffe5a5e Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
82 include(cmake/function/IrccdDefineTest.cmake)
270
90909cf677b1 CMake: make installation of DLLs more generic
David Demelier <markand@malikania.fr>
parents: 266
diff changeset
83 include(cmake/function/IrccdIndentMessage.cmake)
0
1158cffe5a5e Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
84
1158cffe5a5e Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
85 include(cmake/check/PutTime.cmake)
1158cffe5a5e Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
86
1158cffe5a5e Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
87 include(cmake/IrccdVersion.cmake)
1158cffe5a5e Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
88 include(cmake/IrccdOptions.cmake)
1158cffe5a5e Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
89 include(cmake/IrccdSystem.cmake)
1158cffe5a5e Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
90
601
48c6a1167245 CMake: give FindThreads a try
David Demelier <markand@malikania.fr>
parents: 590
diff changeset
91 find_package(Threads REQUIRED)
48c6a1167245 CMake: give FindThreads a try
David Demelier <markand@malikania.fr>
parents: 590
diff changeset
92
221
5ff2bac1c7d8 Irccd: switch to nlohmann json, #515
David Demelier <markand@malikania.fr>
parents: 207
diff changeset
93 add_subdirectory(extern/json)
0
1158cffe5a5e Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
94 add_subdirectory(doc)
291
b490853404d9 Irccd: split lib into libirccd, #564
David Demelier <markand@malikania.fr>
parents: 290
diff changeset
95 add_subdirectory(libirccd)
809
8460b4a34191 misc: reorganize namespaces, closes #952 @4h
David Demelier <markand@malikania.fr>
parents: 801
diff changeset
96 add_subdirectory(libirccd-daemon)
711
fc66cc9706a7 CMake: export pkg-config files, closes #874 @1h
David Demelier <markand@malikania.fr>
parents: 710
diff changeset
97 add_subdirectory(libirccd-ctl)
629
e44fc24e0787 CMake: always build libirccd-test for irccd-test executable
David Demelier <markand@malikania.fr>
parents: 628
diff changeset
98 add_subdirectory(libirccd-test)
292
671612cbc721 Irccd: split lib into libirccd-js, #564
David Demelier <markand@malikania.fr>
parents: 291
diff changeset
99
701
2007a37d7e1a CMake: prefix options with IRCCD_, #closes 800 @2h
David Demelier <markand@malikania.fr>
parents: 699
diff changeset
100 if (IRCCD_HAVE_JS)
773
8c44bbcbbab9 Misc: style, cleanup and update
David Demelier <markand@malikania.fr>
parents: 753
diff changeset
101 add_subdirectory(libirccd-js)
292
671612cbc721 Irccd: split lib into libirccd-js, #564
David Demelier <markand@malikania.fr>
parents: 291
diff changeset
102 endif ()
671612cbc721 Irccd: split lib into libirccd-js, #564
David Demelier <markand@malikania.fr>
parents: 291
diff changeset
103
319
04e83ea7147b Irccd: bring back irccd and contrib
David Demelier <markand@malikania.fr>
parents: 295
diff changeset
104 add_subdirectory(irccd)
340
0f14931a76c1 Irccdctl: reenable
David Demelier <markand@malikania.fr>
parents: 319
diff changeset
105 add_subdirectory(irccdctl)
620
c79ae2987955 Irccd: create a brand new irccd-test executable, closes #569 @3h
David Demelier <markand@malikania.fr>
parents: 601
diff changeset
106 add_subdirectory(irccd-test)
658
e0714513ed1d CMake: move contrib to systemd, closes #786 @5m
David Demelier <markand@malikania.fr>
parents: 629
diff changeset
107 add_subdirectory(systemd)
818
49fa22f0b4b9 windows: support for VS2017
David Demelier <markand@malikania.fr>
parents: 809
diff changeset
108 add_subdirectory(plugins)
18
f113796cfbf9 Irccd: fix compilation with WITH_JS=Off, #415
David Demelier <markand@malikania.fr>
parents: 0
diff changeset
109
701
2007a37d7e1a CMake: prefix options with IRCCD_, #closes 800 @2h
David Demelier <markand@malikania.fr>
parents: 699
diff changeset
110 if (IRCCD_WITH_TESTS)
773
8c44bbcbbab9 Misc: style, cleanup and update
David Demelier <markand@malikania.fr>
parents: 753
diff changeset
111 include(CTest)
8c44bbcbbab9 Misc: style, cleanup and update
David Demelier <markand@malikania.fr>
parents: 753
diff changeset
112 add_subdirectory(tests)
295
6bf457b71e0c Irccd: add new libirccd-test for unit tests
David Demelier <markand@malikania.fr>
parents: 293
diff changeset
113 endif ()
0
1158cffe5a5e Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
114
710
a17de53db29b Misc: export libraries
David Demelier <markand@malikania.fr>
parents: 709
diff changeset
115 add_subdirectory(cmake/export)
a17de53db29b Misc: export libraries
David Demelier <markand@malikania.fr>
parents: 709
diff changeset
116
0
1158cffe5a5e Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
117 message("Compiling with the following flags:")
773
8c44bbcbbab9 Misc: style, cleanup and update
David Demelier <markand@malikania.fr>
parents: 753
diff changeset
118 message(" General flags: ${CMAKE_CXX_FLAGS}")
8c44bbcbbab9 Misc: style, cleanup and update
David Demelier <markand@malikania.fr>
parents: 753
diff changeset
119 message(" Debug flags: ${CMAKE_CXX_FLAGS_DEBUG}")
8c44bbcbbab9 Misc: style, cleanup and update
David Demelier <markand@malikania.fr>
parents: 753
diff changeset
120 message(" Release flags: ${CMAKE_CXX_FLAGS_RELEASE}")
0
1158cffe5a5e Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
121 message("")
1158cffe5a5e Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
122
1158cffe5a5e Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
123 message("Compiling irccd with following options:")
773
8c44bbcbbab9 Misc: style, cleanup and update
David Demelier <markand@malikania.fr>
parents: 753
diff changeset
124 message(" Libedit: ${IRCCD_WITH_LIBEDIT_MSG}")
8c44bbcbbab9 Misc: style, cleanup and update
David Demelier <markand@malikania.fr>
parents: 753
diff changeset
125 message(" OpenSSL: ${IRCCD_WITH_SSL_MSG}")
8c44bbcbbab9 Misc: style, cleanup and update
David Demelier <markand@malikania.fr>
parents: 753
diff changeset
126 message(" Javascript: ${IRCCD_WITH_JS_MSG}")
8c44bbcbbab9 Misc: style, cleanup and update
David Demelier <markand@malikania.fr>
parents: 753
diff changeset
127 message(" Tests: ${IRCCD_WITH_TESTS_MSG}")
8c44bbcbbab9 Misc: style, cleanup and update
David Demelier <markand@malikania.fr>
parents: 753
diff changeset
128 message(" User docs: ${IRCCD_WITH_HTML_MSG}")
8c44bbcbbab9 Misc: style, cleanup and update
David Demelier <markand@malikania.fr>
parents: 753
diff changeset
129 message(" Doxygen: ${IRCCD_WITH_DOXYGEN_MSG}")
8c44bbcbbab9 Misc: style, cleanup and update
David Demelier <markand@malikania.fr>
parents: 753
diff changeset
130 message(" Package: ${IRCCD_PACKAGE_MSG}")
827
2ecff01d4277 cmake: start moving options from IrccdOptions.cmake
David Demelier <markand@malikania.fr>
parents: 824
diff changeset
131 message(" Systemd: ${IRCCD_WITH_SYSTEMD_MSG}")
0
1158cffe5a5e Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
132 message("")
1158cffe5a5e Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
133
1158cffe5a5e Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
134 message("Installing plugins:")
1158cffe5a5e Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
135 foreach (plugin ${IRCCD_PLUGINS})
773
8c44bbcbbab9 Misc: style, cleanup and update
David Demelier <markand@malikania.fr>
parents: 753
diff changeset
136 string(TOUPPER ${plugin} name)
8c44bbcbbab9 Misc: style, cleanup and update
David Demelier <markand@malikania.fr>
parents: 753
diff changeset
137 irccd_indent_message(" ${plugin}: " "${IRCCD_WITH_PLUGIN_${name}_MSG}" 22)
270
90909cf677b1 CMake: make installation of DLLs more generic
David Demelier <markand@malikania.fr>
parents: 266
diff changeset
138 endforeach ()
90909cf677b1 CMake: make installation of DLLs more generic
David Demelier <markand@malikania.fr>
parents: 266
diff changeset
139 message("")
0
1158cffe5a5e Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
140
256
f04acabfbbe5 CMake: switch to NSIS with various fixes, closes #533
David Demelier <markand@malikania.fr>
parents: 221
diff changeset
141 include(cmake/IrccdPackage.cmake)
f04acabfbbe5 CMake: switch to NSIS with various fixes, closes #533
David Demelier <markand@malikania.fr>
parents: 221
diff changeset
142 include(CPack)