Mercurial > irccd
annotate cmake/IrccdDefinePlugin.cmake @ 1004:3ea3361f0fc7
irccd: now track modes
author | David Demelier <markand@malikania.fr> |
---|---|
date | Tue, 16 Feb 2021 18:37:22 +0100 |
parents | 462e12e434fb |
children |
rev | line source |
---|---|
986
583d9f83e9f5
irccd: bring back Javascript plugins
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
1 # |
583d9f83e9f5
irccd: bring back Javascript plugins
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
2 # CMakeLists.txt -- CMake build for irccd |
583d9f83e9f5
irccd: bring back Javascript plugins
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
3 # |
583d9f83e9f5
irccd: bring back Javascript plugins
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
4 # Copyright (c) 2013-2021 David Demelier <markand@malikania.fr> |
583d9f83e9f5
irccd: bring back Javascript plugins
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
5 # |
583d9f83e9f5
irccd: bring back Javascript plugins
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
6 # Permission to use, copy, modify, and/or distribute this software for any |
583d9f83e9f5
irccd: bring back Javascript plugins
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
7 # purpose with or without fee is hereby granted, provided that the above |
583d9f83e9f5
irccd: bring back Javascript plugins
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
8 # copyright notice and this permission notice appear in all copies. |
583d9f83e9f5
irccd: bring back Javascript plugins
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
9 # |
583d9f83e9f5
irccd: bring back Javascript plugins
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
10 # THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES |
583d9f83e9f5
irccd: bring back Javascript plugins
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
11 # WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF |
583d9f83e9f5
irccd: bring back Javascript plugins
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
12 # MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR |
583d9f83e9f5
irccd: bring back Javascript plugins
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
13 # ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES |
583d9f83e9f5
irccd: bring back Javascript plugins
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
14 # WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN |
583d9f83e9f5
irccd: bring back Javascript plugins
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
15 # ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF |
583d9f83e9f5
irccd: bring back Javascript plugins
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
16 # OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. |
583d9f83e9f5
irccd: bring back Javascript plugins
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
17 # |
583d9f83e9f5
irccd: bring back Javascript plugins
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
18 |
992
462e12e434fb
cmake: add CMake configuration
David Demelier <markand@malikania.fr>
parents:
989
diff
changeset
|
19 include(GNUInstallDirs) |
462e12e434fb
cmake: add CMake configuration
David Demelier <markand@malikania.fr>
parents:
989
diff
changeset
|
20 |
989
73fdae7aa902
cmake: improve IDE support for plugins
David Demelier <markand@malikania.fr>
parents:
987
diff
changeset
|
21 function(_idp_install_man file) |
73fdae7aa902
cmake: improve IDE support for plugins
David Demelier <markand@malikania.fr>
parents:
987
diff
changeset
|
22 get_filename_component(basename ${file} NAME) |
73fdae7aa902
cmake: improve IDE support for plugins
David Demelier <markand@malikania.fr>
parents:
987
diff
changeset
|
23 configure_file(${file} ${CMAKE_CURRENT_BINARY_DIR}/${basename}) |
73fdae7aa902
cmake: improve IDE support for plugins
David Demelier <markand@malikania.fr>
parents:
987
diff
changeset
|
24 |
73fdae7aa902
cmake: improve IDE support for plugins
David Demelier <markand@malikania.fr>
parents:
987
diff
changeset
|
25 install( |
73fdae7aa902
cmake: improve IDE support for plugins
David Demelier <markand@malikania.fr>
parents:
987
diff
changeset
|
26 FILES ${CMAKE_CURRENT_BINARY_DIR}/${basename} |
73fdae7aa902
cmake: improve IDE support for plugins
David Demelier <markand@malikania.fr>
parents:
987
diff
changeset
|
27 DESTINATION ${CMAKE_INSTALL_MANDIR}/man7 |
73fdae7aa902
cmake: improve IDE support for plugins
David Demelier <markand@malikania.fr>
parents:
987
diff
changeset
|
28 RENAME irccd-plugin-${basename} |
73fdae7aa902
cmake: improve IDE support for plugins
David Demelier <markand@malikania.fr>
parents:
987
diff
changeset
|
29 ) |
73fdae7aa902
cmake: improve IDE support for plugins
David Demelier <markand@malikania.fr>
parents:
987
diff
changeset
|
30 endfunction () |
73fdae7aa902
cmake: improve IDE support for plugins
David Demelier <markand@malikania.fr>
parents:
987
diff
changeset
|
31 |
986
583d9f83e9f5
irccd: bring back Javascript plugins
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
32 function(irccd_define_js_plugin) |
583d9f83e9f5
irccd: bring back Javascript plugins
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
33 set(options "") |
987
685b85367c8e
plugin logger: resurrect
David Demelier <markand@malikania.fr>
parents:
986
diff
changeset
|
34 set(oneValueArgs MAN NAME SCRIPT) |
685b85367c8e
plugin logger: resurrect
David Demelier <markand@malikania.fr>
parents:
986
diff
changeset
|
35 set(multiValueArgs "") |
986
583d9f83e9f5
irccd: bring back Javascript plugins
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
36 |
583d9f83e9f5
irccd: bring back Javascript plugins
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
37 cmake_parse_arguments(PLG "${options}" "${oneValueArgs}" "${multiValueArgs}" ${ARGN}) |
583d9f83e9f5
irccd: bring back Javascript plugins
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
38 |
583d9f83e9f5
irccd: bring back Javascript plugins
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
39 if (NOT PLG_NAME) |
583d9f83e9f5
irccd: bring back Javascript plugins
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
40 message(FATAL_ERROR "Missing NAME argument") |
583d9f83e9f5
irccd: bring back Javascript plugins
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
41 elseif (NOT PLG_SCRIPT) |
583d9f83e9f5
irccd: bring back Javascript plugins
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
42 message(FATAL_ERROR "Missing SCRIPT argument") |
583d9f83e9f5
irccd: bring back Javascript plugins
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
43 endif () |
583d9f83e9f5
irccd: bring back Javascript plugins
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
44 |
989
73fdae7aa902
cmake: improve IDE support for plugins
David Demelier <markand@malikania.fr>
parents:
987
diff
changeset
|
45 # Create a dummy custom target just to get it through the IDE. |
73fdae7aa902
cmake: improve IDE support for plugins
David Demelier <markand@malikania.fr>
parents:
987
diff
changeset
|
46 add_custom_target( |
73fdae7aa902
cmake: improve IDE support for plugins
David Demelier <markand@malikania.fr>
parents:
987
diff
changeset
|
47 irccd-plugin-${PLG_NAME} |
73fdae7aa902
cmake: improve IDE support for plugins
David Demelier <markand@malikania.fr>
parents:
987
diff
changeset
|
48 SOURCES ${PLG_SCRIPT} ${PLG_MAN} |
73fdae7aa902
cmake: improve IDE support for plugins
David Demelier <markand@malikania.fr>
parents:
987
diff
changeset
|
49 ) |
73fdae7aa902
cmake: improve IDE support for plugins
David Demelier <markand@malikania.fr>
parents:
987
diff
changeset
|
50 set_target_properties(irccd-plugin-${PLG_NAME} PROPERTIES FOLDER "plugins") |
73fdae7aa902
cmake: improve IDE support for plugins
David Demelier <markand@malikania.fr>
parents:
987
diff
changeset
|
51 |
986
583d9f83e9f5
irccd: bring back Javascript plugins
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
52 # Install script. |
583d9f83e9f5
irccd: bring back Javascript plugins
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
53 get_filename_component(basename ${PLG_SCRIPT} NAME) |
583d9f83e9f5
irccd: bring back Javascript plugins
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
54 configure_file(${PLG_SCRIPT} ${CMAKE_CURRENT_BINARY_DIR}/${basename}) |
583d9f83e9f5
irccd: bring back Javascript plugins
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
55 |
583d9f83e9f5
irccd: bring back Javascript plugins
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
56 install( |
583d9f83e9f5
irccd: bring back Javascript plugins
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
57 FILES ${CMAKE_CURRENT_BINARY_DIR}/${basename} |
583d9f83e9f5
irccd: bring back Javascript plugins
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
58 DESTINATION ${CMAKE_INSTALL_LIBDIR}/irccd |
583d9f83e9f5
irccd: bring back Javascript plugins
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
59 ) |
583d9f83e9f5
irccd: bring back Javascript plugins
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
60 |
583d9f83e9f5
irccd: bring back Javascript plugins
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
61 if (PLG_MAN) |
989
73fdae7aa902
cmake: improve IDE support for plugins
David Demelier <markand@malikania.fr>
parents:
987
diff
changeset
|
62 _idp_install_man(${PLG_MAN}) |
986
583d9f83e9f5
irccd: bring back Javascript plugins
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
63 endif () |
583d9f83e9f5
irccd: bring back Javascript plugins
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
64 endfunction() |
987
685b85367c8e
plugin logger: resurrect
David Demelier <markand@malikania.fr>
parents:
986
diff
changeset
|
65 |
685b85367c8e
plugin logger: resurrect
David Demelier <markand@malikania.fr>
parents:
986
diff
changeset
|
66 function(irccd_define_c_plugin) |
685b85367c8e
plugin logger: resurrect
David Demelier <markand@malikania.fr>
parents:
986
diff
changeset
|
67 set(options "") |
685b85367c8e
plugin logger: resurrect
David Demelier <markand@malikania.fr>
parents:
986
diff
changeset
|
68 set(oneValueArgs NAME MAN) |
989
73fdae7aa902
cmake: improve IDE support for plugins
David Demelier <markand@malikania.fr>
parents:
987
diff
changeset
|
69 set(multiValueArgs INCLUDES LIBRARIES SOURCES) |
987
685b85367c8e
plugin logger: resurrect
David Demelier <markand@malikania.fr>
parents:
986
diff
changeset
|
70 |
685b85367c8e
plugin logger: resurrect
David Demelier <markand@malikania.fr>
parents:
986
diff
changeset
|
71 cmake_parse_arguments(PLG "${options}" "${oneValueArgs}" "${multiValueArgs}" ${ARGN}) |
685b85367c8e
plugin logger: resurrect
David Demelier <markand@malikania.fr>
parents:
986
diff
changeset
|
72 |
685b85367c8e
plugin logger: resurrect
David Demelier <markand@malikania.fr>
parents:
986
diff
changeset
|
73 if (NOT PLG_NAME) |
685b85367c8e
plugin logger: resurrect
David Demelier <markand@malikania.fr>
parents:
986
diff
changeset
|
74 message(FATAL_ERROR "Missing NAME argument") |
685b85367c8e
plugin logger: resurrect
David Demelier <markand@malikania.fr>
parents:
986
diff
changeset
|
75 elseif (NOT PLG_SOURCES) |
685b85367c8e
plugin logger: resurrect
David Demelier <markand@malikania.fr>
parents:
986
diff
changeset
|
76 message(FATAL_ERROR "Missing SOURCES argument") |
685b85367c8e
plugin logger: resurrect
David Demelier <markand@malikania.fr>
parents:
986
diff
changeset
|
77 endif () |
685b85367c8e
plugin logger: resurrect
David Demelier <markand@malikania.fr>
parents:
986
diff
changeset
|
78 |
989
73fdae7aa902
cmake: improve IDE support for plugins
David Demelier <markand@malikania.fr>
parents:
987
diff
changeset
|
79 add_library(irccd-plugin-${PLG_NAME} MODULE ${PLG_SOURCES} ${PLG_MAN}) |
992
462e12e434fb
cmake: add CMake configuration
David Demelier <markand@malikania.fr>
parents:
989
diff
changeset
|
80 target_link_libraries(irccd-plugin-${PLG_NAME} irccd::libirccd ${PLG_LIBRARIES}) |
989
73fdae7aa902
cmake: improve IDE support for plugins
David Demelier <markand@malikania.fr>
parents:
987
diff
changeset
|
81 set_target_properties(irccd-plugin-${PLG_NAME} |
73fdae7aa902
cmake: improve IDE support for plugins
David Demelier <markand@malikania.fr>
parents:
987
diff
changeset
|
82 PROPERTIES |
73fdae7aa902
cmake: improve IDE support for plugins
David Demelier <markand@malikania.fr>
parents:
987
diff
changeset
|
83 PREFIX "" |
73fdae7aa902
cmake: improve IDE support for plugins
David Demelier <markand@malikania.fr>
parents:
987
diff
changeset
|
84 PROJECT_LABEL "irccd" |
73fdae7aa902
cmake: improve IDE support for plugins
David Demelier <markand@malikania.fr>
parents:
987
diff
changeset
|
85 FOLDER "plugins" |
73fdae7aa902
cmake: improve IDE support for plugins
David Demelier <markand@malikania.fr>
parents:
987
diff
changeset
|
86 OUTPUT_NAME ${PLG_NAME} |
73fdae7aa902
cmake: improve IDE support for plugins
David Demelier <markand@malikania.fr>
parents:
987
diff
changeset
|
87 RUNTIME_OUTPUT_NAME_${c} ${PLG_NAME} |
73fdae7aa902
cmake: improve IDE support for plugins
David Demelier <markand@malikania.fr>
parents:
987
diff
changeset
|
88 ) |
73fdae7aa902
cmake: improve IDE support for plugins
David Demelier <markand@malikania.fr>
parents:
987
diff
changeset
|
89 install(TARGETS irccd-plugin-${PLG_NAME} DESTINATION ${CMAKE_INSTALL_LIBDIR}/irccd) |
73fdae7aa902
cmake: improve IDE support for plugins
David Demelier <markand@malikania.fr>
parents:
987
diff
changeset
|
90 |
73fdae7aa902
cmake: improve IDE support for plugins
David Demelier <markand@malikania.fr>
parents:
987
diff
changeset
|
91 foreach (c ${CMAKE_CONFIGURATION_TYPES}) |
73fdae7aa902
cmake: improve IDE support for plugins
David Demelier <markand@malikania.fr>
parents:
987
diff
changeset
|
92 string(TOUPPER ${c} c) |
73fdae7aa902
cmake: improve IDE support for plugins
David Demelier <markand@malikania.fr>
parents:
987
diff
changeset
|
93 set_target_properties(irccd-plugin-${PLG_NAME} |
73fdae7aa902
cmake: improve IDE support for plugins
David Demelier <markand@malikania.fr>
parents:
987
diff
changeset
|
94 PROPERTIES |
73fdae7aa902
cmake: improve IDE support for plugins
David Demelier <markand@malikania.fr>
parents:
987
diff
changeset
|
95 OUTPUT_NAME_${c} ${PLG_NAME} |
73fdae7aa902
cmake: improve IDE support for plugins
David Demelier <markand@malikania.fr>
parents:
987
diff
changeset
|
96 RUNTIME_OUTPUT_NAME_${c} ${PLG_NAME} |
73fdae7aa902
cmake: improve IDE support for plugins
David Demelier <markand@malikania.fr>
parents:
987
diff
changeset
|
97 ) |
73fdae7aa902
cmake: improve IDE support for plugins
David Demelier <markand@malikania.fr>
parents:
987
diff
changeset
|
98 endforeach () |
987
685b85367c8e
plugin logger: resurrect
David Demelier <markand@malikania.fr>
parents:
986
diff
changeset
|
99 |
685b85367c8e
plugin logger: resurrect
David Demelier <markand@malikania.fr>
parents:
986
diff
changeset
|
100 # |
685b85367c8e
plugin logger: resurrect
David Demelier <markand@malikania.fr>
parents:
986
diff
changeset
|
101 # This is required but not enabled by default, otherwise we get |
685b85367c8e
plugin logger: resurrect
David Demelier <markand@malikania.fr>
parents:
986
diff
changeset
|
102 # undefined errors from any libirccd functions. |
685b85367c8e
plugin logger: resurrect
David Demelier <markand@malikania.fr>
parents:
986
diff
changeset
|
103 # |
685b85367c8e
plugin logger: resurrect
David Demelier <markand@malikania.fr>
parents:
986
diff
changeset
|
104 if (APPLE) |
989
73fdae7aa902
cmake: improve IDE support for plugins
David Demelier <markand@malikania.fr>
parents:
987
diff
changeset
|
105 set_target_properties(irccd-plugin-${PLG_NAME} PROPERTIES LINK_FLAGS "-undefined dynamic_lookup") |
987
685b85367c8e
plugin logger: resurrect
David Demelier <markand@malikania.fr>
parents:
986
diff
changeset
|
106 endif () |
685b85367c8e
plugin logger: resurrect
David Demelier <markand@malikania.fr>
parents:
986
diff
changeset
|
107 |
685b85367c8e
plugin logger: resurrect
David Demelier <markand@malikania.fr>
parents:
986
diff
changeset
|
108 if (PLG_MAN) |
989
73fdae7aa902
cmake: improve IDE support for plugins
David Demelier <markand@malikania.fr>
parents:
987
diff
changeset
|
109 _idp_install_man(${PLG_MAN}) |
987
685b85367c8e
plugin logger: resurrect
David Demelier <markand@malikania.fr>
parents:
986
diff
changeset
|
110 endif () |
685b85367c8e
plugin logger: resurrect
David Demelier <markand@malikania.fr>
parents:
986
diff
changeset
|
111 endfunction() |