From df8aa427789050c3036d66bf6cce761d2968fdae Mon Sep 17 00:00:00 2001 From: Ailin Nemui Date: Fri, 25 Jul 2025 16:15:05 +0100 Subject: [PATCH] make compilation work on cygwin --- meson.build | 5 +++++ src/core/modules-load.c | 2 +- src/fe-common/irc/dcc/meson.build | 2 +- src/fe-common/irc/meson.build | 2 +- src/fe-common/irc/notifylist/meson.build | 2 +- src/fe-common/meson.build | 6 ++---- src/fe-none/meson.build | 6 +++++- src/fe-text/meson.build | 6 +++++- src/irc/core/meson.build | 3 ++- src/irc/dcc/meson.build | 2 +- src/irc/flood/meson.build | 2 +- src/irc/notifylist/meson.build | 2 +- src/meson.build | 21 +++++++++++---------- src/perl/common/meson.build | 2 +- src/perl/irc/meson.build | 2 +- src/perl/meson.build | 3 ++- src/perl/textui/meson.build | 2 +- src/perl/ui/meson.build | 2 +- 18 files changed, 43 insertions(+), 29 deletions(-) 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..f380fb10 100644 --- a/src/fe-common/irc/dcc/meson.build +++ b/src/fe-common/irc/dcc/meson.build @@ -21,7 +21,7 @@ shared_module('fe_irc_dcc', name_suffix : module_suffix, install : true, install_dir : moduledir, - link_with : dl_cross_irc_dcc, + link_with : dl_cross_irc_dcc + dl_cross_irc_core + dl_cross_irssi_main, link_whole : libfe_irc_dcc_a) install_headers( diff --git a/src/fe-common/irc/meson.build b/src/fe-common/irc/meson.build index 9b198e24..decce520 100644 --- a/src/fe-common/irc/meson.build +++ b/src/fe-common/irc/meson.build @@ -32,7 +32,7 @@ shared_module('fe_common_irc', name_suffix : module_suffix, install : true, install_dir : moduledir, - link_with : dl_cross_irc_core, + link_with : dl_cross_irc_core + dl_cross_irssi_main, link_whole : libfe_common_irc_a) install_headers( diff --git a/src/fe-common/irc/notifylist/meson.build b/src/fe-common/irc/notifylist/meson.build index 0f9c4d68..fd28306b 100644 --- a/src/fe-common/irc/notifylist/meson.build +++ b/src/fe-common/irc/notifylist/meson.build @@ -16,7 +16,7 @@ shared_module('fe_irc_notifylist', name_suffix : module_suffix, install : true, install_dir : moduledir, - link_with : dl_cross_irc_notifylist, + link_with : dl_cross_irc_notifylist + dl_cross_irssi_main, link_whole : libfe_irc_notifylist_a) install_headers( 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..40ef1cdd 100644 --- a/src/irc/core/meson.build +++ b/src/irc/core/meson.build @@ -43,7 +43,8 @@ libirc_core_sm = shared_module('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) 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..cf5b1365 100644 --- a/src/irc/dcc/meson.build +++ b/src/irc/dcc/meson.build @@ -16,7 +16,7 @@ libirc_dcc_sm = shared_module('irc_dcc', name_suffix : module_suffix, install : true, install_dir : moduledir, - link_with : dl_cross_irc_core, + link_with : dl_cross_irc_core + dl_cross_irssi_main, dependencies : dep) dl_cross_irc_dcc = [] diff --git a/src/irc/flood/meson.build b/src/irc/flood/meson.build index 0ba94282..02ad222b 100644 --- a/src/irc/flood/meson.build +++ b/src/irc/flood/meson.build @@ -12,7 +12,7 @@ shared_module('irc_flood', name_suffix : module_suffix, install : true, install_dir : moduledir, - link_with : dl_cross_irc_core, + link_with : dl_cross_irc_core + dl_cross_irssi_main, link_whole : libirc_flood_a) install_headers( diff --git a/src/irc/notifylist/meson.build b/src/irc/notifylist/meson.build index 212d68e5..1bf9dd98 100644 --- a/src/irc/notifylist/meson.build +++ b/src/irc/notifylist/meson.build @@ -13,7 +13,7 @@ libirc_notifylist_sm = shared_module('irc_notifylist', name_suffix : module_suffix, install : true, install_dir : moduledir, - link_with : dl_cross_irc_core, + link_with : dl_cross_irc_core + dl_cross_irssi_main, dependencies : dep) dl_cross_irc_notifylist = [] 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/perl/common/meson.build b/src/perl/common/meson.build index 5b174399..ae408a7e 100644 --- a/src/perl/common/meson.build +++ b/src/perl/common/meson.build @@ -26,7 +26,7 @@ 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, ) install_headers( diff --git a/src/perl/irc/meson.build b/src/perl/irc/meson.build index a95fd778..7b366aa8 100644 --- a/src/perl/irc/meson.build +++ b/src/perl/irc/meson.build @@ -27,7 +27,7 @@ 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, ) install_headers( diff --git a/src/perl/meson.build b/src/perl/meson.build index f859c7c4..09d4f8a6 100644 --- a/src/perl/meson.build +++ b/src/perl/meson.build @@ -40,6 +40,7 @@ libperl_core_sm = shared_module('perl_core', build_rpath : perl_rpath, dependencies : dep_cflagsonly + [ perl_dep ] + dl_cross_dep, override_options : ['b_asneeded=false'], + link_with : dl_cross_irssi_main, ) dl_cross_perl_core = [] @@ -61,7 +62,7 @@ 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, ) subdir('common') diff --git a/src/perl/textui/meson.build b/src/perl/textui/meson.build index 23c8d458..5b2ed136 100644 --- a/src/perl/textui/meson.build +++ b/src/perl/textui/meson.build @@ -23,7 +23,7 @@ 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, ) install_headers( diff --git a/src/perl/ui/meson.build b/src/perl/ui/meson.build index 1577dcf6..e74d0898 100644 --- a/src/perl/ui/meson.build +++ b/src/perl/ui/meson.build @@ -21,7 +21,7 @@ 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, ) install_headers(