MAPI IV. This iteration leverages the C++11 standardized RTTI.
* Simplifies the export declarations for module developers. While
MAPI III utilized a flexible key-value vector to eliminate positional
arguments in a header initializer, now the developer simply makes
a list of pointers to what they want to export for injection into
IRCd. Example:
mapi::header IRCD_MODULE
{
"mymod",
"My module adds a command, a hook, and a CLICAP",
&my_cmdtab,
&some_hook,
&clicaptab
};
* Distributes the handlers for items passed to the above vector.
Anyone can add a type-handler to the module system from anywhere in IRCd
(and other modules?) When your type is encountered a handler is called
providing the symbol name to read out of the module. Example in parser.cc:
mods::add_loader<Message>([]
(mod &loading, const std::string &symbol)
{
auto &msg(get<Message>(loading, symbol));
add_command(msg.name, msg);
});
2016-08-29 21:09:59 +02:00
|
|
|
moduledir=@moduledir@
|
2016-01-06 04:20:25 +01:00
|
|
|
|
2016-07-20 20:55:46 +02:00
|
|
|
AM_CPPFLAGS = \
|
|
|
|
-I$(top_srcdir)/include \
|
2016-08-15 04:44:16 +02:00
|
|
|
@BOOST_CPPFLAGS@ \
|
MAPI IV. This iteration leverages the C++11 standardized RTTI.
* Simplifies the export declarations for module developers. While
MAPI III utilized a flexible key-value vector to eliminate positional
arguments in a header initializer, now the developer simply makes
a list of pointers to what they want to export for injection into
IRCd. Example:
mapi::header IRCD_MODULE
{
"mymod",
"My module adds a command, a hook, and a CLICAP",
&my_cmdtab,
&some_hook,
&clicaptab
};
* Distributes the handlers for items passed to the above vector.
Anyone can add a type-handler to the module system from anywhere in IRCd
(and other modules?) When your type is encountered a handler is called
providing the symbol name to read out of the module. Example in parser.cc:
mods::add_loader<Message>([]
(mod &loading, const std::string &symbol)
{
auto &msg(get<Message>(loading, symbol));
add_command(msg.name, msg);
});
2016-08-29 21:09:59 +02:00
|
|
|
-include $(top_srcdir)/include/ircd/ircd.h \
|
|
|
|
-include $(top_srcdir)/include/ircd/mapi.h
|
2016-07-25 08:50:26 +02:00
|
|
|
|
2016-07-20 20:55:46 +02:00
|
|
|
AM_LDFLAGS = \
|
|
|
|
-L$(top_srcdir)/ircd \
|
|
|
|
-L$(top_srcdir)/rb \
|
|
|
|
@BOOST_LDFLAGS@
|
|
|
|
|
|
|
|
AM_LDFLAGS += \
|
|
|
|
-module \
|
2016-08-23 07:28:59 +02:00
|
|
|
-shared \
|
2016-07-20 20:55:46 +02:00
|
|
|
-export-dynamic \
|
|
|
|
-avoid-version \
|
|
|
|
-no-undefined \
|
MAPI IV. This iteration leverages the C++11 standardized RTTI.
* Simplifies the export declarations for module developers. While
MAPI III utilized a flexible key-value vector to eliminate positional
arguments in a header initializer, now the developer simply makes
a list of pointers to what they want to export for injection into
IRCd. Example:
mapi::header IRCD_MODULE
{
"mymod",
"My module adds a command, a hook, and a CLICAP",
&my_cmdtab,
&some_hook,
&clicaptab
};
* Distributes the handlers for items passed to the above vector.
Anyone can add a type-handler to the module system from anywhere in IRCd
(and other modules?) When your type is encountered a handler is called
providing the symbol name to read out of the module. Example in parser.cc:
mods::add_loader<Message>([]
(mod &loading, const std::string &symbol)
{
auto &msg(get<Message>(loading, symbol));
add_command(msg.name, msg);
});
2016-08-29 21:09:59 +02:00
|
|
|
--no-allow-shlib-undefined
|
|
|
|
# -export-symbols-regex IRCD_MODULE*
|
|
|
|
# -export-symbols-regex *
|
2016-07-20 20:55:46 +02:00
|
|
|
|
|
|
|
AM_LDFLAGS += \
|
|
|
|
-lircd \
|
|
|
|
-lrb \
|
|
|
|
@BOOST_LIBS@
|
2016-01-06 04:20:25 +01:00
|
|
|
|
MAPI IV. This iteration leverages the C++11 standardized RTTI.
* Simplifies the export declarations for module developers. While
MAPI III utilized a flexible key-value vector to eliminate positional
arguments in a header initializer, now the developer simply makes
a list of pointers to what they want to export for injection into
IRCd. Example:
mapi::header IRCD_MODULE
{
"mymod",
"My module adds a command, a hook, and a CLICAP",
&my_cmdtab,
&some_hook,
&clicaptab
};
* Distributes the handlers for items passed to the above vector.
Anyone can add a type-handler to the module system from anywhere in IRCd
(and other modules?) When your type is encountered a handler is called
providing the symbol name to read out of the module. Example in parser.cc:
mods::add_loader<Message>([]
(mod &loading, const std::string &symbol)
{
auto &msg(get<Message>(loading, symbol));
add_command(msg.name, msg);
});
2016-08-29 21:09:59 +02:00
|
|
|
#m_ban_la_SOURCES = m_ban.cc
|
|
|
|
#m_die_la_SOURCES = m_die.cc
|
|
|
|
#m_error_la_SOURCES = m_error.cc
|
|
|
|
#m_join_la_SOURCES = m_join.cc
|
|
|
|
#m_kick_la_SOURCES = m_kick.cc
|
|
|
|
#m_kill_la_SOURCES = m_kill.cc
|
|
|
|
#m_message_la_SOURCES = m_message.cc
|
|
|
|
#m_mode_la_SOURCES = m_mode.cc
|
|
|
|
m_modules_la_SOURCES = m_modules.cc
|
|
|
|
#m_nick_la_SOURCES = m_nick.cc
|
|
|
|
#m_part_la_SOURCES = m_part.cc
|
|
|
|
#m_quit_la_SOURCES = m_quit.cc
|
|
|
|
#m_server_la_SOURCES = m_server.cc
|
|
|
|
#m_squit_la_SOURCES = m_squit.cc
|
|
|
|
#cap_account_tag_la_SOURCES = cap_account_tag.cc
|
|
|
|
#cap_server_time_la_SOURCES = cap_server_time.cc
|
|
|
|
#chm_nocolour_la_SOURCES = chm_nocolour.cc
|
|
|
|
#chm_noctcp_la_SOURCES = chm_noctcp.cc
|
|
|
|
#m_accept_la_SOURCES = m_accept.cc
|
|
|
|
#m_admin_la_SOURCES = m_admin.cc
|
|
|
|
#m_alias_la_SOURCES = m_alias.cc
|
|
|
|
#m_away_la_SOURCES = m_away.cc
|
|
|
|
#m_cap_la_SOURCES = m_cap.cc
|
|
|
|
#m_capab_la_SOURCES = m_capab.cc
|
|
|
|
#m_certfp_la_SOURCES = m_certfp.cc
|
|
|
|
#m_challenge_la_SOURCES = m_challenge.cc
|
|
|
|
#m_chghost_la_SOURCES = m_chghost.cc
|
|
|
|
#m_close_la_SOURCES = m_close.cc
|
|
|
|
#m_connect_la_SOURCES = m_connect.cc
|
|
|
|
#m_dline_la_SOURCES = m_dline.cc
|
|
|
|
#m_encap_la_SOURCES = m_encap.cc
|
|
|
|
#m_etrace_la_SOURCES = m_etrace.cc
|
|
|
|
#m_grant_la_SOURCES = m_grant.cc
|
|
|
|
#m_help_la_SOURCES = m_help.cc
|
|
|
|
#m_info_la_SOURCES = m_info.cc
|
|
|
|
#m_invite_la_SOURCES = m_invite.cc
|
|
|
|
#m_ison_la_SOURCES = m_ison.cc
|
|
|
|
#m_kline_la_SOURCES = m_kline.cc
|
|
|
|
#m_knock_la_SOURCES = m_knock.cc
|
|
|
|
#m_links_la_SOURCES = m_links.cc
|
|
|
|
#m_list_la_SOURCES = m_list.cc
|
|
|
|
#m_lusers_la_SOURCES = m_lusers.cc
|
|
|
|
#m_map_la_SOURCES = m_map.cc
|
|
|
|
#m_monitor_la_SOURCES = m_monitor.cc
|
|
|
|
#m_motd_la_SOURCES = m_motd.cc
|
|
|
|
#m_names_la_SOURCES = m_names.cc
|
|
|
|
#m_oper_la_SOURCES = m_oper.cc
|
|
|
|
#m_operspy_la_SOURCES = m_operspy.cc
|
|
|
|
#m_pass_la_SOURCES = m_pass.cc
|
|
|
|
#m_ping_la_SOURCES = m_ping.cc
|
|
|
|
#m_pong_la_SOURCES = m_pong.cc
|
|
|
|
#m_post_la_SOURCES = m_post.cc
|
|
|
|
#m_privs_la_SOURCES = m_privs.cc
|
|
|
|
#m_rehash_la_SOURCES = m_rehash.cc
|
|
|
|
#m_restart_la_SOURCES = m_restart.cc
|
|
|
|
#m_resv_la_SOURCES = m_resv.cc
|
|
|
|
#m_sasl_la_SOURCES = m_sasl.cc
|
|
|
|
#m_scan_la_SOURCES = m_scan.cc
|
|
|
|
#m_services_la_SOURCES = m_services.cc
|
|
|
|
#m_set_la_SOURCES = m_set.cc
|
|
|
|
#m_signon_la_SOURCES = m_signon.cc
|
|
|
|
#m_snote_la_SOURCES = m_snote.cc
|
|
|
|
#m_starttls_la_SOURCES = m_starttls.cc
|
|
|
|
#m_stats_la_SOURCES = m_stats.cc
|
|
|
|
#m_svinfo_la_SOURCES = m_svinfo.cc
|
|
|
|
#m_tb_la_SOURCES = m_tb.cc
|
|
|
|
#m_testline_la_SOURCES = m_testline.cc
|
|
|
|
#m_testmask_la_SOURCES = m_testmask.cc
|
|
|
|
#m_tginfo_la_SOURCES = m_tginfo.cc
|
|
|
|
#m_time_la_SOURCES = m_time.cc
|
|
|
|
#m_topic_la_SOURCES = m_topic.cc
|
|
|
|
#m_trace_la_SOURCES = m_trace.cc
|
|
|
|
#m_unreject_la_SOURCES = m_unreject.cc
|
|
|
|
#m_user_la_SOURCES = m_user.cc
|
|
|
|
#m_userhost_la_SOURCES = m_userhost.cc
|
|
|
|
#m_users_la_SOURCES = m_users.cc
|
|
|
|
#m_version_la_SOURCES = m_version.cc
|
|
|
|
#m_wallops_la_SOURCES = m_wallops.cc
|
|
|
|
#m_who_la_SOURCES = m_who.cc
|
|
|
|
#m_whois_la_SOURCES = m_whois.cc
|
|
|
|
#m_whowas_la_SOURCES = m_whowas.cc
|
|
|
|
#m_xline_la_SOURCES = m_xline.cc
|
|
|
|
#sno_routing_la_SOURCES = sno_routing.cc
|
2016-07-13 07:17:21 +02:00
|
|
|
|
2016-01-06 04:20:25 +01:00
|
|
|
module_LTLIBRARIES = \
|
MAPI IV. This iteration leverages the C++11 standardized RTTI.
* Simplifies the export declarations for module developers. While
MAPI III utilized a flexible key-value vector to eliminate positional
arguments in a header initializer, now the developer simply makes
a list of pointers to what they want to export for injection into
IRCd. Example:
mapi::header IRCD_MODULE
{
"mymod",
"My module adds a command, a hook, and a CLICAP",
&my_cmdtab,
&some_hook,
&clicaptab
};
* Distributes the handlers for items passed to the above vector.
Anyone can add a type-handler to the module system from anywhere in IRCd
(and other modules?) When your type is encountered a handler is called
providing the symbol name to read out of the module. Example in parser.cc:
mods::add_loader<Message>([]
(mod &loading, const std::string &symbol)
{
auto &msg(get<Message>(loading, symbol));
add_command(msg.name, msg);
});
2016-08-29 21:09:59 +02:00
|
|
|
m_modules.la
|
|
|
|
# m_ban.la \
|
|
|
|
# m_die.la \
|
|
|
|
# m_error.la \
|
|
|
|
# m_join.la \
|
|
|
|
# m_kick.la \
|
|
|
|
# m_kill.la \
|
|
|
|
# m_message.la \
|
|
|
|
# m_mode.la \
|
|
|
|
# m_nick.la \
|
|
|
|
# m_part.la \
|
|
|
|
# m_quit.la \
|
|
|
|
# m_server.la \
|
|
|
|
# m_squit.la \
|
|
|
|
# cap_account_tag.la \
|
|
|
|
# cap_server_time.la \
|
|
|
|
# chm_nocolour.la \
|
|
|
|
# chm_noctcp.la \
|
|
|
|
# m_accept.la \
|
|
|
|
# m_admin.la \
|
|
|
|
# m_alias.la \
|
|
|
|
# m_away.la \
|
|
|
|
# m_cap.la \
|
|
|
|
# m_capab.la \
|
|
|
|
# m_certfp.la \
|
|
|
|
# m_challenge.la \
|
|
|
|
# m_chghost.la \
|
|
|
|
# m_close.la \
|
|
|
|
# m_connect.la \
|
|
|
|
# m_dline.la \
|
|
|
|
# m_encap.la \
|
|
|
|
# m_etrace.la \
|
|
|
|
# m_grant.la \
|
|
|
|
# m_help.la \
|
|
|
|
# m_info.la \
|
|
|
|
# m_invite.la \
|
|
|
|
# m_ison.la \
|
|
|
|
# m_kline.la \
|
|
|
|
# m_knock.la \
|
|
|
|
# m_links.la \
|
|
|
|
# m_list.la \
|
|
|
|
# m_lusers.la \
|
|
|
|
# m_map.la \
|
|
|
|
# m_monitor.la \
|
|
|
|
# m_motd.la \
|
|
|
|
# m_names.la \
|
|
|
|
# m_oper.la \
|
|
|
|
# m_operspy.la \
|
|
|
|
# m_pass.la \
|
|
|
|
# m_ping.la \
|
|
|
|
# m_pong.la \
|
|
|
|
# m_post.la \
|
|
|
|
# m_privs.la \
|
|
|
|
# m_rehash.la \
|
|
|
|
# m_restart.la \
|
|
|
|
# m_resv.la \
|
|
|
|
# m_sasl.la \
|
|
|
|
# m_scan.la \
|
|
|
|
# m_services.la \
|
|
|
|
# m_set.la \
|
|
|
|
# m_signon.la \
|
|
|
|
# m_snote.la \
|
|
|
|
# m_starttls.la \
|
|
|
|
# m_stats.la \
|
|
|
|
# m_svinfo.la \
|
|
|
|
# m_tb.la \
|
|
|
|
# m_testline.la \
|
|
|
|
# m_testmask.la \
|
|
|
|
# m_tginfo.la \
|
|
|
|
# m_time.la \
|
|
|
|
# m_topic.la \
|
|
|
|
# m_trace.la \
|
|
|
|
# m_unreject.la \
|
|
|
|
# m_user.la \
|
|
|
|
# m_userhost.la \
|
|
|
|
# m_users.la \
|
|
|
|
# m_version.la \
|
|
|
|
# m_wallops.la \
|
|
|
|
# m_who.la \
|
|
|
|
# m_whois.la \
|
|
|
|
# m_whowas.la \
|
|
|
|
# m_xline.la \
|
|
|
|
# sno_routing.la
|