diff --git a/meson.build b/meson.build index f2550641..9499a126 100644 --- a/meson.build +++ b/meson.build @@ -13,10 +13,15 @@ rootinc = include_directories('.') dep = [] textui_dep = [] need_dl_cross_link = false +need_dl_cross_link_main = false +dl_cross_irssi_main = [] # The Android environment requires that all modules are linked to each other. # See https://github.com/android/ndk/issues/201 if host_machine.system() == 'android' need_dl_cross_link = true +elif host_machine.system() == 'cygwin' + need_dl_cross_link = true + need_dl_cross_link_main = true endif includedir = get_option('includedir') diff --git a/src/core/modules-load.c b/src/core/modules-load.c index 11c4dd6b..f4278897 100644 --- a/src/core/modules-load.c +++ b/src/core/modules-load.c @@ -42,7 +42,7 @@ static char *module_get_name(const char *path, int *start, int *end) if (name == NULL) name = path; - if (strncmp(name, "lib", 3) == 0) + if (strncmp(name, "lib", 3) == 0 || strncmp(name, "cyg", 3) == 0) name += 3; module_name = g_strdup(name); diff --git a/src/fe-common/irc/dcc/meson.build b/src/fe-common/irc/dcc/meson.build index 487d1aea..5edf2477 100644 --- a/src/fe-common/irc/dcc/meson.build +++ b/src/fe-common/irc/dcc/meson.build @@ -17,12 +17,13 @@ libfe_irc_dcc_a = static_library('fe_irc_dcc', def_sysconfdir, ], dependencies : dep) -shared_module('fe_irc_dcc', +shared_library('fe_irc_dcc', name_suffix : module_suffix, install : true, install_dir : moduledir, - link_with : dl_cross_irc_dcc, - link_whole : libfe_irc_dcc_a) + link_with : dl_cross_irc_dcc + dl_cross_irc_core + dl_cross_irssi_main, + link_whole : libfe_irc_dcc_a, + override_options : ['b_lundef=false']) install_headers( files( diff --git a/src/fe-common/irc/meson.build b/src/fe-common/irc/meson.build index 9b198e24..518dfbfa 100644 --- a/src/fe-common/irc/meson.build +++ b/src/fe-common/irc/meson.build @@ -28,12 +28,13 @@ libfe_common_irc_a = static_library('fe_common_irc', def_themesdir, ], dependencies : dep) -shared_module('fe_common_irc', +shared_library('fe_common_irc', name_suffix : module_suffix, install : true, install_dir : moduledir, - link_with : dl_cross_irc_core, - link_whole : libfe_common_irc_a) + link_with : dl_cross_irc_core + dl_cross_irssi_main, + link_whole : libfe_common_irc_a, + override_options : ['b_lundef=false']) install_headers( files( diff --git a/src/fe-common/irc/notifylist/meson.build b/src/fe-common/irc/notifylist/meson.build index 0f9c4d68..cdb5168b 100644 --- a/src/fe-common/irc/notifylist/meson.build +++ b/src/fe-common/irc/notifylist/meson.build @@ -12,12 +12,13 @@ libfe_irc_notifylist_a = static_library('fe_irc_notifylist', def_sysconfdir, ], dependencies : dep) -shared_module('fe_irc_notifylist', +shared_library('fe_irc_notifylist', name_suffix : module_suffix, install : true, install_dir : moduledir, - link_with : dl_cross_irc_notifylist, - link_whole : libfe_irc_notifylist_a) + link_with : dl_cross_irc_notifylist + dl_cross_irssi_main, + link_whole : libfe_irc_notifylist_a, + override_options : ['b_lundef=false']) install_headers( files( diff --git a/src/fe-common/meson.build b/src/fe-common/meson.build index 05ab38a1..91a46324 100644 --- a/src/fe-common/meson.build +++ b/src/fe-common/meson.build @@ -1,6 +1,4 @@ # this file is part of irssi -subdir('core') -foreach s : chat_modules - subdir(s) -endforeach +# intentionally empty + diff --git a/src/fe-none/meson.build b/src/fe-none/meson.build index 8f6b797d..49cfe517 100644 --- a/src/fe-none/meson.build +++ b/src/fe-none/meson.build @@ -1,12 +1,13 @@ # this file is part of irssi -executable('botti', +fe_none_irssi = executable('botti', files( 'irssi.c', ), include_directories : rootinc, implicit_include_directories : false, export_dynamic : true, + implib : true, link_with : [ libconfig_a, libcore_a, @@ -14,6 +15,9 @@ executable('botti', install : true, dependencies : dep ) +if need_dl_cross_link_main + dl_cross_irssi_main = [ fe_none_irssi ] +endif # noinst_headers = files( # 'module.h', diff --git a/src/fe-text/meson.build b/src/fe-text/meson.build index 94990c82..1c885b89 100644 --- a/src/fe-text/meson.build +++ b/src/fe-text/meson.build @@ -1,6 +1,6 @@ # this file is part of irssi -executable('irssi', +fe_text_irssi = executable('irssi', files( #### terminfo_sources #### 'term-terminfo.c', @@ -35,6 +35,7 @@ executable('irssi', include_directories : rootinc, implicit_include_directories : false, export_dynamic : true, + implib : true, link_with : [ libconfig_a, libcore_a, @@ -44,6 +45,9 @@ executable('irssi', dependencies : dep + textui_dep ) +if need_dl_cross_link_main + dl_cross_irssi_main = [ fe_text_irssi ] +endif install_headers( files( diff --git a/src/irc/core/meson.build b/src/irc/core/meson.build index a63ff214..94ed20a2 100644 --- a/src/irc/core/meson.build +++ b/src/irc/core/meson.build @@ -39,11 +39,13 @@ libirc_core_a = static_library('irc_core', def_sysconfdir, ], dependencies : dep) -libirc_core_sm = shared_module('irc_core', +libirc_core_sm = shared_library('irc_core', name_suffix : module_suffix, install : true, install_dir : moduledir, - link_whole : libirc_core_a) + link_whole : libirc_core_a, + link_with : dl_cross_irssi_main, + override_options : ['b_lundef=false']) dl_cross_irc_core = [] if need_dl_cross_link diff --git a/src/irc/dcc/meson.build b/src/irc/dcc/meson.build index e5e2b0c6..3ab1bace 100644 --- a/src/irc/dcc/meson.build +++ b/src/irc/dcc/meson.build @@ -1,6 +1,6 @@ # this file is part of irssi -libirc_dcc_sm = shared_module('irc_dcc', +libirc_dcc_sm = shared_library('irc_dcc', files( 'dcc-autoget.c', 'dcc-chat.c', @@ -16,8 +16,9 @@ libirc_dcc_sm = shared_module('irc_dcc', name_suffix : module_suffix, install : true, install_dir : moduledir, - link_with : dl_cross_irc_core, - dependencies : dep) + link_with : dl_cross_irc_core + dl_cross_irssi_main, + dependencies : dep, + override_options : ['b_lundef=false']) dl_cross_irc_dcc = [] if need_dl_cross_link diff --git a/src/irc/flood/meson.build b/src/irc/flood/meson.build index 0ba94282..257e5c11 100644 --- a/src/irc/flood/meson.build +++ b/src/irc/flood/meson.build @@ -8,12 +8,13 @@ libirc_flood_a = static_library('irc_flood', include_directories : rootinc, implicit_include_directories : false, dependencies : dep) -shared_module('irc_flood', +shared_library('irc_flood', name_suffix : module_suffix, install : true, install_dir : moduledir, - link_with : dl_cross_irc_core, - link_whole : libirc_flood_a) + link_with : dl_cross_irc_core + dl_cross_irssi_main, + link_whole : libirc_flood_a, + override_options : ['b_lundef=false']) install_headers( files('module.h'), diff --git a/src/irc/notifylist/meson.build b/src/irc/notifylist/meson.build index 212d68e5..34517b34 100644 --- a/src/irc/notifylist/meson.build +++ b/src/irc/notifylist/meson.build @@ -1,6 +1,6 @@ # this file is part of irssi -libirc_notifylist_sm = shared_module('irc_notifylist', +libirc_notifylist_sm = shared_library('irc_notifylist', files( 'notify-commands.c', 'notify-ison.c', @@ -13,8 +13,9 @@ libirc_notifylist_sm = shared_module('irc_notifylist', name_suffix : module_suffix, install : true, install_dir : moduledir, - link_with : dl_cross_irc_core, - dependencies : dep) + link_with : dl_cross_irc_core + dl_cross_irssi_main, + dependencies : dep, + override_options : ['b_lundef=false']) dl_cross_irc_notifylist = [] if need_dl_cross_link diff --git a/src/irc/proxy/meson.build b/src/irc/proxy/meson.build index 30ac90a4..4cc2b658 100644 --- a/src/irc/proxy/meson.build +++ b/src/irc/proxy/meson.build @@ -1,6 +1,6 @@ # this file is part of irssi -shared_module('irc_proxy', +shared_library('irc_proxy', files( 'dump.c', 'listen.c', @@ -13,6 +13,7 @@ shared_module('irc_proxy', install : true, install_dir : moduledir, dependencies : dep, + override_options : ['b_lundef=false'], ) # noinst_headers = files( diff --git a/src/meson.build b/src/meson.build index dee8dc3c..cc30da1b 100644 --- a/src/meson.build +++ b/src/meson.build @@ -2,22 +2,23 @@ subdir('lib-config') subdir('core') -foreach s : chat_modules - subdir(s) -endforeach -subdir('fe-common') -if have_perl - subdir('perl') -endif -if have_otr - subdir('otr') -endif +subdir('fe-common' / 'core') if want_bot subdir('fe-none') endif if want_textui subdir('fe-text') endif +foreach s : chat_modules + subdir(s) + subdir('fe-common' / s) +endforeach +if have_perl + subdir('perl') +endif +if have_otr + subdir('otr') +endif if want_fuzzer subdir('fe-fuzz') endif diff --git a/src/otr/meson.build b/src/otr/meson.build index 5b7d256f..13b564ea 100644 --- a/src/otr/meson.build +++ b/src/otr/meson.build @@ -1,6 +1,6 @@ # this file is part of irssi -shared_module('otr_core', +shared_library('otr_core', files( 'key.c', 'otr-fe.c', @@ -15,6 +15,7 @@ shared_module('otr_core', install : true, install_dir : moduledir, dependencies : dep, + override_options : ['b_lundef=false'], ) # noinst_headers = files( diff --git a/src/perl/common/meson.build b/src/perl/common/meson.build index 5b174399..0f3f3bb5 100644 --- a/src/perl/common/meson.build +++ b/src/perl/common/meson.build @@ -1,5 +1,5 @@ -shared_module('Irssi', +shared_library('Irssi', [ xsubpp.process( files( 'Channel.xs', @@ -26,7 +26,8 @@ shared_module('Irssi', include_directories : rootinc, implicit_include_directories : true, dependencies : dep + [ perl_dep ], - link_with : dl_cross_perl_core, + link_with : dl_cross_perl_core + dl_cross_irssi_main, + override_options : ['b_lundef=false'], ) install_headers( diff --git a/src/perl/irc/meson.build b/src/perl/irc/meson.build index a95fd778..e033c260 100644 --- a/src/perl/irc/meson.build +++ b/src/perl/irc/meson.build @@ -1,4 +1,4 @@ -shared_module('Irc', +shared_library('Irc', [ xsubpp.process( files( 'Channel.xs', @@ -27,7 +27,8 @@ shared_module('Irc', include_directories : rootinc, implicit_include_directories : true, dependencies : dep + [ perl_dep ], - link_with : dl_cross_perl_core + dl_cross_irc_dcc + dl_cross_irc_notifylist, + link_with : dl_cross_perl_core + dl_cross_irc_dcc + dl_cross_irc_notifylist + dl_cross_irc_core + dl_cross_irssi_main, + override_options : ['b_lundef=false'], ) install_headers( diff --git a/src/perl/meson.build b/src/perl/meson.build index f859c7c4..1c6e2fbc 100644 --- a/src/perl/meson.build +++ b/src/perl/meson.build @@ -17,7 +17,7 @@ irssi_core_pl_h = custom_target('irssi-core.pl.h', # required as of Meson 0.58.0 generated_files_inc = include_directories('.') -libperl_core_sm = shared_module('perl_core', +libperl_core_sm = shared_library('perl_core', files( 'perl-common.c', 'perl-core.c', @@ -39,7 +39,8 @@ libperl_core_sm = shared_module('perl_core', install_rpath : perl_rpath, build_rpath : perl_rpath, dependencies : dep_cflagsonly + [ perl_dep ] + dl_cross_dep, - override_options : ['b_asneeded=false'], + override_options : ['b_asneeded=false', 'b_lundef=false'], + link_with : dl_cross_irssi_main, ) dl_cross_perl_core = [] @@ -47,7 +48,7 @@ if need_dl_cross_link dl_cross_perl_core += libperl_core_sm endif -shared_module('fe_perl', +shared_library('fe_perl', files( 'module-formats.c', 'perl-fe.c', @@ -61,7 +62,8 @@ shared_module('fe_perl', install : true, install_dir : moduledir, dependencies : dep, - link_with : dl_cross_perl_core, + link_with : dl_cross_perl_core + dl_cross_irssi_main, + override_options : ['b_lundef=false'], ) subdir('common') diff --git a/src/perl/textui/meson.build b/src/perl/textui/meson.build index 23c8d458..b7d769c5 100644 --- a/src/perl/textui/meson.build +++ b/src/perl/textui/meson.build @@ -1,4 +1,4 @@ -shared_module('TextUI', +shared_library('TextUI', [ xsubpp.process( files( 'Statusbar.xs', @@ -23,7 +23,8 @@ shared_module('TextUI', include_directories : rootinc, implicit_include_directories : true, dependencies : dep + [ perl_dep ], - link_with : dl_cross_perl_core, + link_with : dl_cross_perl_core + dl_cross_irssi_main, + override_options : ['b_lundef=false'], ) install_headers( diff --git a/src/perl/ui/meson.build b/src/perl/ui/meson.build index 1577dcf6..a6e5c93c 100644 --- a/src/perl/ui/meson.build +++ b/src/perl/ui/meson.build @@ -1,4 +1,4 @@ -shared_module('UI', +shared_library('UI', [ xsubpp.process( files( 'Formats.xs', @@ -21,7 +21,8 @@ shared_module('UI', include_directories : rootinc, implicit_include_directories : true, dependencies : dep + [ perl_dep ], - link_with : dl_cross_perl_core, + link_with : dl_cross_perl_core + dl_cross_irssi_main, + override_options : ['b_lundef=false'], ) install_headers(