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
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
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()