Merge pull request #1611 from horgh/horgh/muon-meson-fmt-workflow

Add muon-meson fmt GitHub Actions workflow
This commit is contained in:
ailin-nemui 2026-01-27 08:02:34 +00:00 committed by GitHub
commit 43f1727ef9
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
34 changed files with 722 additions and 346 deletions

32
.github/workflows/muon-fmt.yml vendored Normal file
View file

@ -0,0 +1,32 @@
name: Format meson files
on:
push:
pull_request:
permissions: {}
jobs:
muon-meson-fmt:
name: Format
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@main
with:
persist-credentials: false
# Build from source because Ubuntu 24.04 apt only has muon 0.2.0.
# Newer muons seem to format differently.
- name: Build muon from source
run: |
git clone --depth 1 --branch 0.5.0 https://github.com/muon-build/muon /tmp/muon
cd /tmp/muon
./bootstrap.sh build
build/muon-bootstrap setup build
build/muon-bootstrap -C build samu
sudo build/muon -C build install
- name: Run muon fmt
run: |
find . -name meson.build -print0 | xargs -0 muon fmt -c .muon_fmt.ini -i
git diff --exit-code

14
.muon_fmt.ini Normal file
View file

@ -0,0 +1,14 @@
# Irssi configuration for muon fmt
max_line_len = 108
indent_style = space
indent_size = 2
#indent_by = ' '
space_array = true
kwargs_force_multiline = true
wide_colon = true
no_single_comma_function = true
insert_final_newline = true
sort_files = false
group_arg_value = true
sticky_parens = true
continuation_indent = true

View file

@ -116,6 +116,7 @@ install_data(
'whowas',
'window',
),
install_dir : helpdir)
install_dir : helpdir,
)
# subdir('in')

View file

@ -13,6 +13,7 @@ install_data(
'startup-HOWTO.html',
'startup-HOWTO.txt',
),
install_dir : docdir)
install_dir : docdir,
)
subdir('help')

View file

@ -1,7 +1,10 @@
project('irssi', 'c',
project(
'irssi',
'c',
version : '1.5-head',
meson_version : '>=0.53',
default_options : ['warning_level=1'])
default_options : [ 'warning_level=1' ],
)
############################
############################
@ -70,10 +73,29 @@ UNSET_ARR = [UNSET]
chat_modules = [ 'irc' ]
run_command('mkdir', meson.current_build_dir() / incdir, check : false)
run_command('ln', '-s', meson.current_source_dir() / 'src', meson.current_build_dir() / incdir, check : false)
run_command('ln', '-s', meson.current_build_dir() / 'irssi-config.h', meson.current_build_dir() / incdir, check : false)
run_command('ln', '-s', meson.current_build_dir() / 'irssi-version.h', meson.current_build_dir() / incdir, check : false)
run_command(
'mkdir',
meson.current_build_dir() / incdir,
check : false,
)
run_command(
'ln',
'-s', meson.current_source_dir() / 'src',
meson.current_build_dir() / incdir,
check : false,
)
run_command(
'ln',
'-s', meson.current_build_dir() / 'irssi-config.h',
meson.current_build_dir() / incdir,
check : false,
)
run_command(
'ln',
'-s', meson.current_build_dir() / 'irssi-version.h',
meson.current_build_dir() / incdir,
check : false,
)
def_moduledir = '-D' + 'MODULEDIR' + '="' + (get_option('prefix') / moduledir) + '"'
def_sysconfdir = '-D' + 'SYSCONFDIR' + '="' + (get_option('prefix') / get_option('sysconfdir')) + '"'
@ -83,7 +105,6 @@ def_scriptdir = '-D' + 'SCRIPTDIR' + '="' + (get_option('prefix') / scriptdir)
def_suppress_printf_fallback = '-D' + 'SUPPRESS_PRINTF_FALLBACK'
module_suffix = [ ]
perl_module_suffix = [ ]
# Meson uses the wrong module extensions on Mac.
@ -97,13 +118,20 @@ endif
# Help files #
##############
build_perl = find_program('perl', native : true)
build_perl = find_program(
'perl',
native : true,
)
if meson.is_cross_build()
cross_perl = find_program('perl')
else
cross_perl = build_perl
endif
run_command(build_perl, files('utils/syntax.pl'), check : true)
run_command(
build_perl,
files('utils/syntax.pl'),
check : true,
)
###################
# irssi-version.h #
@ -111,12 +139,12 @@ run_command(build_perl, files('utils/syntax.pl'), check : true)
env = find_program('env')
irssi_version_sh = find_program('utils/irssi-version.sh')
irssi_version_h = custom_target('irssi-version.h',
irssi_version_h = custom_target(
'irssi-version.h',
build_by_default : true,
build_always_stale : true,
capture : true,
command : [env, 'VERSION=' + meson.project_version(),
irssi_version_sh, meson.current_source_dir()],
command : [ env, 'VERSION=' + meson.project_version(), irssi_version_sh, meson.current_source_dir() ],
output : 'irssi-version.h',
install : true,
install_dir : includedir / incdir,
@ -127,7 +155,8 @@ irssi_version_h = custom_target('irssi-version.h',
####################
file2header = find_program('utils/file2header.sh')
default_config_h = custom_target('default-config.h',
default_config_h = custom_target(
'default-config.h',
input : files('irssi.conf'),
output : 'default-config.h',
capture : true,
@ -138,7 +167,8 @@ default_config_h = custom_target('default-config.h',
# default-theme.h #
###################
default_theme_h = custom_target('default-theme.h',
default_theme_h = custom_target(
'default-theme.h',
input : files('themes/default.theme'),
output : 'default-theme.h',
capture : true,
@ -154,9 +184,15 @@ inet_addr_found = false
foreach inet_addr_provider : [ '', 'nsl' ]
prov_lib = [ ]
if inet_addr_provider != ''
prov_lib += cc.find_library(inet_addr_provider, required : false)
prov_lib += cc.find_library(
inet_addr_provider,
required : false,
)
endif
if (prov_lib.length() == 0 or prov_lib[0].found()) and cc.has_function('inet_addr', dependencies : prov_lib)
if (prov_lib.length() == 0 or prov_lib[0].found()) and cc.has_function(
'inet_addr',
dependencies : prov_lib,
)
dep += prov_lib
inet_addr_found = true
break
@ -171,9 +207,15 @@ socket_found = false
foreach socket_provider : [ '', 'socket', 'network' ]
prov_lib = [ ]
if socket_provider != ''
prov_lib += cc.find_library(socket_provider, required : false)
prov_lib += cc.find_library(
socket_provider,
required : false,
)
endif
if (prov_lib.length() == 0 or prov_lib[0].found()) and cc.has_function('socket', dependencies : prov_lib)
if (prov_lib.length() == 0 or prov_lib[0].found()) and cc.has_function(
'socket',
dependencies : prov_lib,
)
dep += prov_lib
socket_found = true
break
@ -191,16 +233,26 @@ message('*** Or alternatively install your distribution\'s package')
message('*** On Debian: sudo apt-get install libglib2.0-dev')
message('*** On Redhat: dnf install glib2-devel')
if not require_glib_internal
glib_dep = dependency('glib-2.0', version : '>=2.32', required : not want_glib_internal, static : want_static_dependency, include_type : 'system')
glib_dep = dependency(
'glib-2.0',
version : '>=2.32',
required : not want_glib_internal,
static : want_static_dependency,
include_type : 'system',
)
else
glib_dep = dependency('', required : false)
glib_dep = dependency(
'',
required : false,
)
endif
if not glib_dep.found()
glib_internal = true
meson_cmd = find_program('meson')
ninja = find_program('ninja')
glib_internal_download_t = custom_target('glib-internal-download',
glib_internal_download_t = custom_target(
'glib-internal-download',
command : [ meson_cmd, 'subprojects', 'download', 'glib', '--sourcedir', meson.current_source_dir() ],
console : true,
output : [ 'glib-internal-download' ],
@ -213,18 +265,30 @@ if not glib_dep.found()
glib_internal_usr_local = false
if not cc.has_function('iconv_open')
prov_lib = cc.find_library('iconv', required : false)
prov_lib = cc.find_library(
'iconv',
required : false,
)
if not prov_lib.found()
prov_lib = cc.find_library('iconv', dirs : '/usr/local/lib')
prov_lib = cc.find_library(
'iconv',
dirs : '/usr/local/lib',
)
glib_internal_usr_local = true
endif
glib_internal_dependencies += prov_lib
endif
if not cc.has_function('ngettext')
prov_lib = cc.find_library('intl', required : false)
prov_lib = cc.find_library(
'intl',
required : false,
)
if not prov_lib.found()
prov_lib = cc.find_library('intl', dirs : '/usr/local/lib')
prov_lib = cc.find_library(
'intl',
dirs : '/usr/local/lib',
)
glib_internal_usr_local = true
endif
glib_internal_dependencies += prov_lib
@ -236,9 +300,15 @@ if not glib_dep.found()
if not cc.has_function('getxattr') or not cc.has_header('sys/xattr.h')
if cc.has_header_symbol('attr/xattr.h', 'getxattr')
prov_lib = cc.find_library('xattr', required : false)
prov_lib = cc.find_library(
'xattr',
required : false,
)
else
prov_lib = dependency('', required : false)
prov_lib = dependency(
'',
required : false,
)
endif
if prov_lib.found()
glib_internal_dependencies += prov_lib
@ -247,18 +317,30 @@ if not glib_dep.found()
endif
endif
glib_internal_configure_t = custom_target('glib-internal-configure',
command : [ meson_cmd, 'setup', '--prefix=/irssi-glib-internal',
glib_internal_configure_t = custom_target(
'glib-internal-configure',
command : [
meson_cmd,
'setup',
'--prefix=/irssi-glib-internal',
'--buildtype=' + get_option('buildtype'),
'-Dlibmount=disabled', '-Dselinux=disabled', '-Ddefault_library=static', '-Dforce_fallback_for=pcre2,libffi',
'-Dlibmount=disabled',
'-Dselinux=disabled',
'-Ddefault_library=static',
'-Dforce_fallback_for=pcre2,libffi',
glib_internal_configure_args,
(meson.current_build_dir() / 'build-subprojects' / 'glib'),
(meson.current_source_dir() / 'subprojects' / glib_internal_version) ],
(meson.current_source_dir() / 'subprojects' / glib_internal_version),
],
console : true,
output : [ 'glib-internal-configure' ],
depends : glib_internal_download_t,)
glib_internal_build_t = custom_target('glib-internal-build',
command : [ ninja, '-C', meson.current_build_dir() / 'build-subprojects' / 'glib',
depends : glib_internal_download_t,
)
glib_internal_build_t = custom_target(
'glib-internal-build',
command : [
ninja,
'-C', meson.current_build_dir() / 'build-subprojects' / 'glib',
'subprojects' / glib_libffi_internal_version / 'src' / 'libffi.a',
'subprojects' / glib_pcre2_internal_version / 'libpcre2-8.a',
'glib' / 'libglib-2.0.a',
@ -268,7 +350,8 @@ if not glib_dep.found()
],
console : true,
output : [ 'glib-internal-build' ],
depends : glib_internal_configure_t,)
depends : glib_internal_configure_t,
)
glib_dep = declare_dependency(
dependencies : glib_internal_dependencies,
sources : glib_internal_build_t,
@ -284,27 +367,36 @@ if not glib_dep.found()
)
built_src += glib_internal_build_t
libdl_dep = [ ]
prov_lib = cc.find_library('dl', required : false)
if prov_lib.found() and cc.has_function('dlopen', dependencies : prov_lib)
prov_lib = cc.find_library(
'dl',
required : false,
)
if prov_lib.found() and cc.has_function(
'dlopen',
dependencies : prov_lib,
)
libdl_dep += prov_lib
endif
gmodule_dep = declare_dependency(sources : glib_internal_build_t,
gmodule_dep = declare_dependency(
sources : glib_internal_build_t,
dependencies : libdl_dep,
compile_args : [
'-isystem' + (meson.current_source_dir() / 'subprojects' / glib_internal_version / 'gmodule'),
],
link_args : [ meson.current_build_dir() / 'build-subprojects' / 'glib' / 'gmodule' / 'libgmodule-2.0.a' ],
)
gobject_dep = declare_dependency(sources : glib_internal_build_t,
gobject_dep = declare_dependency(
sources : glib_internal_build_t,
compile_args : [
'-isystem' + (meson.current_build_dir() / 'build-subprojects' / 'glib'),
],
link_args : [
meson.current_build_dir() / 'build-subprojects' / 'glib' / 'subprojects' / glib_libffi_internal_version / 'src' / 'libffi.a',
meson.current_build_dir() / 'build-subprojects' / 'glib' / 'gobject' / 'libgobject-2.0.a'
meson.current_build_dir() / 'build-subprojects' / 'glib' / 'gobject' / 'libgobject-2.0.a',
],
)
gio_dep = declare_dependency(sources : glib_internal_build_t,
gio_dep = declare_dependency(
sources : glib_internal_build_t,
dependencies : cc.find_library('z'),
compile_args : [
'-isystem' + (meson.current_source_dir() / 'subprojects' / glib_internal_version / 'gio'),
@ -313,9 +405,21 @@ if not glib_dep.found()
link_args : [ meson.current_build_dir() / 'build-subprojects' / 'glib' / 'gio' / 'libgio-2.0.a' ],
)
else
gmodule_dep = dependency('gmodule-2.0', static : want_static_dependency, include_type : 'system')
gobject_dep = dependency('gobject-2.0', static : want_static_dependency, include_type : 'system')
gio_dep = dependency('gio-2.0', static : want_static_dependency, include_type : 'system')
gmodule_dep = dependency(
'gmodule-2.0',
static : want_static_dependency,
include_type : 'system',
)
gobject_dep = dependency(
'gobject-2.0',
static : want_static_dependency,
include_type : 'system',
)
gio_dep = dependency(
'gio-2.0',
static : want_static_dependency,
include_type : 'system',
)
endif
dep += glib_dep
dep += gmodule_dep
@ -323,10 +427,17 @@ dep += gobject_dep
dep += gio_dep
if glib_internal and want_static_dependency and want_fuzzer
openssl_proj = subproject('openssl', default_options : ['default_library=static', 'asm=disabled'])
openssl_proj = subproject(
'openssl',
default_options : [ 'default_library=static', 'asm=disabled' ],
)
openssl_dep = openssl_proj.get_variable('openssl_dep')
else
openssl_dep = dependency('openssl', static : want_static_dependency, include_type : 'system')
openssl_dep = dependency(
'openssl',
static : want_static_dependency,
include_type : 'system',
)
endif
dep += openssl_dep
@ -337,8 +448,14 @@ dep += openssl_dep
have_libutf8proc = false
libutf8proc = [ ]
if want_libutf8proc
libutf8proc = cc.find_library('utf8proc', required : require_libutf8proc)
have_libutf8proc = cc.has_function('utf8proc_version', dependencies : libutf8proc)
libutf8proc = cc.find_library(
'utf8proc',
required : require_libutf8proc,
)
have_libutf8proc = cc.has_function(
'utf8proc_version',
dependencies : libutf8proc,
)
if have_libutf8proc
dep += libutf8proc
endif
@ -354,8 +471,14 @@ endif
if want_textui
setupterm_found = false
foreach setupterm_provider : [ 'tinfo', 'ncursesw', 'ncurses', 'terminfo' ]
prov_lib = cc.find_library(setupterm_provider, required : false)
if prov_lib.found() and cc.has_function('setupterm', dependencies : prov_lib)
prov_lib = cc.find_library(
setupterm_provider,
required : false,
)
if prov_lib.found() and cc.has_function(
'setupterm',
dependencies : prov_lib,
)
textui_dep += prov_lib
setupterm_found = true
break
@ -380,7 +503,12 @@ if want_perl
#### ccopts ####
perl_ccopts = meson.get_cross_property('perl_ccopts', UNSET_ARR)
if perl_ccopts == UNSET_ARR
res = run_command(cross_perl, '-MExtUtils::Embed', '-e', 'ccopts', check : true)
res = run_command(
cross_perl,
'-MExtUtils::Embed',
'-e', 'ccopts',
check : true,
)
perl_ccopts = res.stdout().strip().split()
endif
foreach fl : perl_ccopts
@ -397,7 +525,12 @@ if want_perl
#### ldopts ####
perl_ldopts = meson.get_cross_property('perl_ldopts', UNSET_ARR)
if perl_ldopts == UNSET_ARR
res = run_command(cross_perl, '-MExtUtils::Embed', '-e', 'ldopts', check : true)
res = run_command(
cross_perl,
'-MExtUtils::Embed',
'-e', 'ldopts',
check : true,
)
perl_ldopts = res.stdout().strip().split()
endif
skip_libs = [ '-ldb', '-ldbm', '-lndbm', '-lgdbm', '-lc', '-lposix', '-rdynamic' ]
@ -414,18 +547,26 @@ if want_perl
perl_version = meson.get_cross_property('perl_version', UNSET)
if perl_version == UNSET
perl_version = run_command(cross_perl, '-V::version:', check : true).stdout().split('\'')[1]
perl_version = run_command(
cross_perl,
'-V::version:',
check : true,
).stdout().split('\'')[1]
endif
# disable clang warning
if perl_version.version_compare('<5.35.2')
perl_cflags += cc.get_supported_arguments('-Wno-compound-token-split-by-macro')
endif
perl_dep = declare_dependency(compile_args : perl_cflags, link_args : perl_ldflags,
version : perl_version)
perl_dep = declare_dependency(
compile_args : perl_cflags,
link_args : perl_ldflags,
version : perl_version,
)
####
if not cc.links('''
if not cc.links(
'''
#include <EXTERN.h>
#include <perl.h>
int main()
@ -433,8 +574,10 @@ int main()
perl_alloc();
return 0;
}
''', args : perl_cflags + perl_ldflags + perl_rpath_flags,
name : 'working Perl support')
''',
args : perl_cflags + perl_ldflags + perl_rpath_flags,
name : 'working Perl support',
)
if require_perl
error('error linking with perl libraries')
else
@ -443,9 +586,15 @@ int main()
else
xsubpp_file_c = meson.get_cross_property('perl_xsubpp', UNSET)
if xsubpp_file_c == UNSET
xsubpp_file_c = run_command(build_perl, '-MExtUtils::ParseXS', '-e($r = $INC{"ExtUtils/ParseXS.pm"}) =~ s{ParseXS\\.pm$}{xsubpp}; print $r', check : true).stdout()
xsubpp_file_c = run_command(
build_perl,
'-MExtUtils::ParseXS',
'-e($r = $INC{"ExtUtils/ParseXS.pm"}) =~ s{ParseXS\\.pm$}{xsubpp}; print $r',
check : true,
).stdout()
endif
xsubpp = generator(build_perl,
xsubpp = generator(
build_perl,
output : '@BASENAME@.c',
capture : true,
arguments : [ xsubpp_file_c, '@EXTRA_ARGS@', '@INPUT@' ],
@ -453,7 +602,12 @@ int main()
xsubpp_file = files(xsubpp_file_c)
if with_perl_lib == 'module'
perl_install_base = run_command(build_perl, '-MText::ParseWords=shellwords', '-e', 'grep { s/^INSTALL_BASE=// && print && exit } shellwords $ENV{PERL_MM_OPT}', check : true).stdout()
perl_install_base = run_command(
build_perl,
'-MText::ParseWords=shellwords',
'-e', 'grep { s/^INSTALL_BASE=// && print && exit } shellwords $ENV{PERL_MM_OPT}',
check : true,
).stdout()
if perl_install_base == ''
with_perl_lib = ''
endif
@ -472,12 +626,20 @@ int main()
if with_perl_lib in [ 'site', 'vendor' ]
perlmoddir = meson.get_cross_property('perl_install' + with_perl_lib + 'arch', UNSET)
if perlmoddir == UNSET
perlmoddir = run_command(cross_perl, '-V::install' + with_perl_lib + 'arch:', check : true).stdout().split('\'')[1]
perlmoddir = run_command(
cross_perl,
'-V::install' + with_perl_lib + 'arch:',
check : true,
).stdout().split('\'')[1]
endif
elif with_perl_lib == 'module'
perl_archname = meson.get_cross_property('perl_archname', UNSET)
if perl_archname == UNSET
perl_archname = run_command(cross_perl, '-V::archname:', check : true).stdout().split('\'')[1]
perl_archname = run_command(
cross_perl,
'-V::archname:',
check : true,
).stdout().split('\'')[1]
endif
perlmoddir = perl_install_base / 'lib' / 'perl5' / perl_archname
endif
@ -498,7 +660,12 @@ int main()
if set_perl_use_lib
perl_inc = meson.get_cross_property('perl_inc', UNSET_ARR)
if perl_inc == UNSET_ARR
set_perl_use_lib = run_command(cross_perl, '-e', 'exit ! grep $_ eq $ARGV[0], grep /^\\//, @INC', perl_use_lib, check : false).returncode() != 0
set_perl_use_lib = run_command(
cross_perl,
'-e', 'exit ! grep $_ eq $ARGV[0], grep /^\\//, @INC',
perl_use_lib,
check : false,
).returncode() != 0
else
set_perl_use_lib = not perl_inc.contains(perl_use_lib)
endif
@ -524,8 +691,20 @@ endif
have_otr = false
if want_otr
libgcrypt = dependency('libgcrypt', version : '>=1.2.0', required : require_otr, static : want_static_dependency, include_type : 'system')
libotr = dependency('libotr', version : '>=4.1.0', required : require_otr, static : want_static_dependency, include_type : 'system')
libgcrypt = dependency(
'libgcrypt',
version : '>=1.2.0',
required : require_otr,
static : want_static_dependency,
include_type : 'system',
)
libotr = dependency(
'libotr',
version : '>=4.1.0',
required : require_otr,
static : want_static_dependency,
include_type : 'system',
)
if libgcrypt.found() and libotr.found()
dep += libgcrypt
dep += libotr
@ -539,9 +718,19 @@ endif
have_capsicum = false
if want_capsicum
if cc.has_function('cap_enter', dependencies : cc.find_library('c'))
libnv = cc.find_library('nv', required : require_capsicum)
nvlist_create_found = libnv.found() and cc.has_function('nvlist_create', dependencies : libnv, prefix : '#include <sys/nv.h>')
if cc.has_function(
'cap_enter',
dependencies : cc.find_library('c'),
)
libnv = cc.find_library(
'nv',
required : require_capsicum,
)
nvlist_create_found = libnv.found() and cc.has_function(
'nvlist_create',
dependencies : libnv,
prefix : '#include <sys/nv.h>',
)
if nvlist_create_found
dep += libnv
have_capsicum = true
@ -560,7 +749,10 @@ endif
# dependency helper sets
dep_cflagsonly = [ ]
foreach d : dep
dep_cflagsonly += d.partial_dependency(includes : true, compile_args : true)
dep_cflagsonly += d.partial_dependency(
includes : true,
compile_args : true,
)
endforeach
dl_cross_dep = [ ]
if need_dl_cross_link
@ -573,11 +765,19 @@ endif
conf = configuration_data()
conf.set('HAVE_CAPSICUM', have_capsicum, description : 'Build with Capsicum support')
conf.set(
'HAVE_CAPSICUM',
have_capsicum,
description : 'Build with Capsicum support',
)
conf.set('HAVE_GMODULE', true)
conf.set('TERM_TRUECOLOR', true)
conf.set('USE_GREGEX', true)
conf.set10('_DARWIN_USE_64_BIT_INODE', true, description : 'Enable large inode numbers on Mac OS X 10.5.')
conf.set10(
'_DARWIN_USE_64_BIT_INODE',
true,
description : 'Enable large inode numbers on Mac OS X 10.5.',
)
conf.set_quoted('FHS_PREFIX', get_option('fhs-prefix'))
headers = [
@ -591,31 +791,50 @@ headers = [
]
foreach h : headers
if cc.has_header(h)
conf.set('HAVE_' + h.underscorify().to_upper(), 1, description : 'Define to 1 if you have the <' + h + '> header file.')
conf.set(
'HAVE_' + h.underscorify().to_upper(),
1,
description : 'Define to 1 if you have the <' + h + '> header file.',
)
endif
endforeach
if want_textui and conf.get('HAVE_TERM_H', 0) == 1
if cc.links('''
if cc.links(
'''
#include <stdio.h>
#include <term.h>
int main (void) {
return tputs("x", 1, putchar);
}
''', args : '-pedantic-errors', dependencies : textui_dep, name : 'Curses working')
''',
args : '-pedantic-errors',
dependencies : textui_dep,
name : 'Curses working',
)
# ok
else
has_curses_h = cc.has_header('curses.h')
if has_curses_h and cc.links('''
if has_curses_h and cc.links(
'''
#include <curses.h>
#include <term.h>
int main (void) {
return tputs("x", 1, putchar);
}
''', args : '-pedantic-errors', dependencies : textui_dep, name : 'Curses working with curses.h')
conf.set('NEED_CURSES_H', 1, description : 'tputs needs curses.h')
''',
args : '-pedantic-errors',
dependencies : textui_dep,
name : 'Curses working with curses.h',
)
conf.set(
'NEED_CURSES_H',
1,
description : 'tputs needs curses.h',
)
else
if has_curses_h and cc.links('''
if has_curses_h and cc.links(
'''
#include <curses.h>
#include <term.h>
int char_putchar (char c) {
@ -624,9 +843,21 @@ int char_putchar (char c) {
int main (void) {
return tputs("x", 1, char_putchar);
}
''', args : '-pedantic-errors', dependencies : textui_dep, name : 'Curses with tputs third argument arg char')
conf.set('NEED_CURSES_H', 1, description : 'tputs needs curses.h')
conf.set('TPUTS_SVR4', 1, description : 'third argument of tputs has the type int (*)(char)')
''',
args : '-pedantic-errors',
dependencies : textui_dep,
name : 'Curses with tputs third argument arg char',
)
conf.set(
'NEED_CURSES_H',
1,
description : 'tputs needs curses.h',
)
conf.set(
'TPUTS_SVR4',
1,
description : 'third argument of tputs has the type int (*)(char)',
)
else
error('could not link terminfo')
endif
@ -638,21 +869,32 @@ conf.set('HAVE_LIBUTF8PROC', have_libutf8proc)
conf.set_quoted('PACKAGE_VERSION', package_version)
conf.set_quoted('PACKAGE_TARNAME', meson.project_name())
configure_file(output : 'irssi-config.h',
configure_file(
output : 'irssi-config.h',
configuration : conf,
install_dir : includedir / incdir)
install_dir : includedir / incdir,
)
##########
# CFLAGS #
##########
#### warnings ####
add_project_arguments(cc.get_supported_arguments('-Werror=declaration-after-statement'), language : 'c')
add_project_arguments(
cc.get_supported_arguments('-Werror=declaration-after-statement'),
language : 'c',
)
#### personality ####
add_project_arguments(cc.get_supported_arguments('-fno-strict-aliasing'), language : 'c')
add_project_arguments(
cc.get_supported_arguments('-fno-strict-aliasing'),
language : 'c',
)
if get_option('buildtype').contains('debug')
add_project_arguments(cc.get_supported_arguments('-fno-omit-frame-pointer'), language : 'c')
add_project_arguments(
cc.get_supported_arguments('-fno-omit-frame-pointer'),
language : 'c',
)
endif
if want_fuzzer
@ -660,7 +902,10 @@ if want_fuzzer
if not cc.has_argument('-fsanitize=fuzzer-no-link')
error('compiler does not support -fsanitize=fuzzer-no-link, try clang?')
endif
add_project_arguments('-fsanitize=fuzzer-no-link', language : 'c')
add_project_arguments(
'-fsanitize=fuzzer-no-link',
language : 'c',
)
endif
if fuzzer_link_language != 'c'
add_languages(fuzzer_link_language)
@ -687,15 +932,14 @@ if signalsfile.startswith('/')
else
signalsfile = '${prefix}' / signalsfile
endif
pc.generate(filebase : 'irssi-1',
pc.generate(
filebase : 'irssi-1',
name : 'Irssi',
description : 'Irssi chat client',
version : package_version,
requires : pc_requires,
variables : [
'irssimoduledir=${libdir}' / incdir / 'modules',
'signalsfile=' + signalsfile
])
variables : [ 'irssimoduledir=${libdir}' / incdir / 'modules', 'signalsfile=' + signalsfile ],
)
###########
# irssi.1 #

View file

@ -11,4 +11,5 @@ install_data(
'scriptassist.pl',
'usercount.pl',
),
install_dir : scriptdir)
install_dir : scriptdir,
)

View file

@ -6,7 +6,8 @@ else
core_capsicum_source = [ ]
endif
libcore_a = static_library('core',
libcore_a = static_library(
'core',
files(
'args.c',
'channels-setup.c',
@ -63,7 +64,8 @@ libcore_a = static_library('core',
def_moduledir,
def_sysconfdir,
],
dependencies : dep)
dependencies : dep,
)
install_headers(
files(
@ -122,4 +124,5 @@ install_headers(
'window-item-def.h',
'write-buffer.h',
),
subdir : incdir / 'src' / 'core')
subdir : incdir / 'src' / 'core',
)

View file

@ -43,10 +43,11 @@ fe_common_core_sources = [
+ [
default_theme_h,
irssi_version_h,
]
],
]
libfe_common_core_a = static_library('fe_common_core',
libfe_common_core_a = static_library(
'fe_common_core',
fe_common_core_sources,
include_directories : rootinc,
implicit_include_directories : false,
@ -54,10 +55,12 @@ libfe_common_core_a = static_library('fe_common_core',
def_helpdir,
def_themesdir,
],
dependencies : dep)
dependencies : dep,
)
if want_fuzzer
libfuzzer_fe_common_core_a = static_library('fuzzer_fe_common_core',
libfuzzer_fe_common_core_a = static_library(
'fuzzer_fe_common_core',
fe_common_core_sources,
include_directories : rootinc,
implicit_include_directories : false,
@ -66,7 +69,8 @@ if want_fuzzer
def_themesdir,
def_suppress_printf_fallback,
],
dependencies : dep)
dependencies : dep,
)
endif
install_headers(
@ -96,4 +100,5 @@ install_headers(
'window-items.h',
'windows-layout.h',
),
subdir : incdir / 'src' / 'fe-common' / 'core')
subdir : incdir / 'src' / 'fe-common' / 'core',
)

View file

@ -1,6 +1,7 @@
# this file is part of irssi
libfe_irc_dcc_a = static_library('fe_irc_dcc',
libfe_irc_dcc_a = static_library(
'fe_irc_dcc',
files(
'fe-dcc-chat-messages.c',
'fe-dcc-chat.c',
@ -16,14 +17,17 @@ libfe_irc_dcc_a = static_library('fe_irc_dcc',
def_helpdir,
def_sysconfdir,
],
dependencies : dep)
shared_library('fe_irc_dcc',
dependencies : dep,
)
shared_library(
'fe_irc_dcc',
name_suffix : module_suffix,
install : true,
install_dir : moduledir,
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'])
override_options : [ 'b_lundef=false' ],
)
install_headers(
files(
@ -31,4 +35,5 @@ install_headers(
'module-formats.h',
'module.h',
),
subdir : incdir / 'src' / 'fe-common' / 'irc' / 'dcc')
subdir : incdir / 'src' / 'fe-common' / 'irc' / 'dcc',
)

View file

@ -1,6 +1,7 @@
# this file is part of irssi
libfe_common_irc_a = static_library('fe_common_irc',
libfe_common_irc_a = static_library(
'fe_common_irc',
files(
'fe-cap.c',
'fe-common-irc.c',
@ -27,14 +28,17 @@ libfe_common_irc_a = static_library('fe_common_irc',
def_helpdir,
def_themesdir,
],
dependencies : dep)
shared_library('fe_common_irc',
dependencies : dep,
)
shared_library(
'fe_common_irc',
name_suffix : module_suffix,
install : true,
install_dir : moduledir,
link_with : dl_cross_irc_core + dl_cross_irssi_main,
link_whole : libfe_common_irc_a,
override_options : ['b_lundef=false'])
override_options : [ 'b_lundef=false' ],
)
install_headers(
files(
@ -43,7 +47,8 @@ install_headers(
'module-formats.h',
'module.h',
),
subdir : incdir / 'src' / 'fe-common' / 'irc')
subdir : incdir / 'src' / 'fe-common' / 'irc',
)
subdir('dcc')
subdir('notifylist')

View file

@ -1,6 +1,7 @@
# this file is part of irssi
libfe_irc_notifylist_a = static_library('fe_irc_notifylist',
libfe_irc_notifylist_a = static_library(
'fe_irc_notifylist',
files(
'fe-notifylist.c',
'module-formats.c',
@ -11,18 +12,22 @@ libfe_irc_notifylist_a = static_library('fe_irc_notifylist',
def_helpdir,
def_sysconfdir,
],
dependencies : dep)
shared_library('fe_irc_notifylist',
dependencies : dep,
)
shared_library(
'fe_irc_notifylist',
name_suffix : module_suffix,
install : true,
install_dir : moduledir,
link_with : dl_cross_irc_notifylist + dl_cross_irssi_main,
link_whole : libfe_irc_notifylist_a,
override_options : ['b_lundef=false'])
override_options : [ 'b_lundef=false' ],
)
install_headers(
files(
'module-formats.h',
'module.h',
),
subdir : incdir / 'src' / 'fe-common' / 'irc' / 'notifylist')
subdir : incdir / 'src' / 'fe-common' / 'irc' / 'notifylist',
)

View file

@ -1,5 +1,6 @@
# this file is part of irssi
executable('theme-load-fuzz',
executable(
'theme-load-fuzz',
files(
'../../null-logger.c',
'theme-load.c',
@ -15,7 +16,7 @@ executable('theme-load-fuzz',
include_directories : rootinc,
implicit_include_directories : false,
install : true,
dependencies : dep
dependencies : dep,
)
# noinst_headers = files(

View file

@ -1,6 +1,7 @@
# this file is part of irssi
executable('event-get-params-fuzz',
executable(
'event-get-params-fuzz',
files(
'../../null-logger.c',
'event-get-params.c',
@ -17,7 +18,7 @@ executable('event-get-params-fuzz',
include_directories : rootinc,
implicit_include_directories : false,
install : true,
dependencies : dep
dependencies : dep,
)
# noinst_headers = files(

View file

@ -3,7 +3,8 @@
subdir('irc')
subdir('fe-common')
executable('irssi-fuzz',
executable(
'irssi-fuzz',
files(
'null-logger.c',
'irssi.c',
@ -19,10 +20,11 @@ executable('irssi-fuzz',
include_directories : rootinc,
implicit_include_directories : false,
install : true,
dependencies : dep
dependencies : dep,
)
executable('server-fuzz',
executable(
'server-fuzz',
files(
'null-logger.c',
'server.c',
@ -42,7 +44,7 @@ executable('server-fuzz',
include_directories : rootinc,
implicit_include_directories : false,
install : true,
dependencies : dep
dependencies : dep,
)
# noinst_headers = files(

View file

@ -1,6 +1,7 @@
# this file is part of irssi
fe_none_irssi = executable('botti',
fe_none_irssi = executable(
'botti',
files(
'irssi.c',
),
@ -13,7 +14,7 @@ fe_none_irssi = executable('botti',
libcore_a,
],
install : true,
dependencies : dep
dependencies : dep,
)
if need_dl_cross_link_main
dl_cross_irssi_main = [ fe_none_irssi ]

View file

@ -1,6 +1,7 @@
# this file is part of irssi
fe_text_irssi = executable('irssi',
fe_text_irssi = executable(
'irssi',
files(
#### terminfo_sources ####
'term-terminfo.c',
@ -42,8 +43,7 @@ fe_text_irssi = executable('irssi',
libfe_common_core_a,
],
install : true,
dependencies : dep
+ textui_dep
dependencies : dep + textui_dep,
)
if need_dl_cross_link_main
dl_cross_irssi_main = [ fe_text_irssi ]
@ -61,7 +61,8 @@ install_headers(
'textbuffer-view.h',
'textbuffer.h',
),
subdir : incdir / 'src' / 'fe-text')
subdir : incdir / 'src' / 'fe-text',
)
# noinst_headers = files(
# 'gui-entry.h',

View file

@ -1,6 +1,7 @@
# this file is part of irssi
libirc_core_a = static_library('irc_core',
libirc_core_a = static_library(
'irc_core',
files(
'bans.c',
'channel-events.c',
@ -38,14 +39,17 @@ libirc_core_a = static_library('irc_core',
def_moduledir,
def_sysconfdir,
],
dependencies : dep)
libirc_core_sm = shared_library('irc_core',
dependencies : dep,
)
libirc_core_sm = shared_library(
'irc_core',
name_suffix : module_suffix,
install : true,
install_dir : moduledir,
link_whole : libirc_core_a,
link_with : dl_cross_irssi_main,
override_options : ['b_lundef=false'])
override_options : [ 'b_lundef=false' ],
)
dl_cross_irc_core = [ ]
if need_dl_cross_link
@ -77,4 +81,5 @@ install_headers(
'servers-idle.h',
'servers-redirect.h',
),
subdir : incdir / 'src' / 'irc' / 'core')
subdir : incdir / 'src' / 'irc' / 'core',
)

View file

@ -1,6 +1,7 @@
# this file is part of irssi
libirc_dcc_sm = shared_library('irc_dcc',
libirc_dcc_sm = shared_library(
'irc_dcc',
files(
'dcc-autoget.c',
'dcc-chat.c',
@ -18,7 +19,8 @@ libirc_dcc_sm = shared_library('irc_dcc',
install_dir : moduledir,
link_with : dl_cross_irc_core + dl_cross_irssi_main,
dependencies : dep,
override_options : ['b_lundef=false'])
override_options : [ 'b_lundef=false' ],
)
dl_cross_irc_dcc = [ ]
if need_dl_cross_link
@ -38,4 +40,5 @@ install_headers(
'dcc.h',
'module.h',
),
subdir : incdir / 'src' / 'irc' / 'dcc')
subdir : incdir / 'src' / 'irc' / 'dcc',
)

View file

@ -1,21 +1,26 @@
# this file is part of irssi
libirc_flood_a = static_library('irc_flood',
libirc_flood_a = static_library(
'irc_flood',
files(
'autoignore.c',
'flood.c',
),
include_directories : rootinc,
implicit_include_directories : false,
dependencies : dep)
shared_library('irc_flood',
dependencies : dep,
)
shared_library(
'irc_flood',
name_suffix : module_suffix,
install : true,
install_dir : moduledir,
link_with : dl_cross_irc_core + dl_cross_irssi_main,
link_whole : libirc_flood_a,
override_options : ['b_lundef=false'])
override_options : [ 'b_lundef=false' ],
)
install_headers(
files('module.h'),
subdir : incdir / 'src' / 'irc' / 'flood')
subdir : incdir / 'src' / 'irc' / 'flood',
)

View file

@ -1,6 +1,7 @@
# this file is part of irssi
libirc_notifylist_sm = shared_library('irc_notifylist',
libirc_notifylist_sm = shared_library(
'irc_notifylist',
files(
'notify-commands.c',
'notify-ison.c',
@ -15,7 +16,8 @@ libirc_notifylist_sm = shared_library('irc_notifylist',
install_dir : moduledir,
link_with : dl_cross_irc_core + dl_cross_irssi_main,
dependencies : dep,
override_options : ['b_lundef=false'])
override_options : [ 'b_lundef=false' ],
)
dl_cross_irc_notifylist = [ ]
if need_dl_cross_link
@ -28,4 +30,5 @@ install_headers(
'notify-setup.h',
'notifylist.h',
),
subdir : incdir / 'src' / 'irc' / 'notifylist')
subdir : incdir / 'src' / 'irc' / 'notifylist',
)

View file

@ -1,6 +1,7 @@
# this file is part of irssi
shared_library('irc_proxy',
shared_library(
'irc_proxy',
files(
'dump.c',
'listen.c',

View file

@ -1,6 +1,7 @@
# this file is part of irssi
libconfig_a = static_library('irssi_config',
libconfig_a = static_library(
'irssi_config',
files(
'get.c',
'parse.c',
@ -9,11 +10,13 @@ libconfig_a = static_library('irssi_config',
),
include_directories : rootinc,
implicit_include_directories : false,
dependencies : dep)
dependencies : dep,
)
install_headers(
files(
'iconfig.h',
'module.h',
),
subdir : incdir / 'src' / 'lib-config')
subdir : incdir / 'src' / 'lib-config',
)

View file

@ -24,7 +24,6 @@ if want_fuzzer
endif
install_headers(
files(
'common.h'
),
subdir : incdir / 'src')
files('common.h'),
subdir : incdir / 'src',
)

View file

@ -1,6 +1,7 @@
# this file is part of irssi
shared_library('otr_core',
shared_library(
'otr_core',
files(
'key.c',
'otr-fe.c',

View file

@ -1,6 +1,7 @@
shared_library('Irssi',
[ xsubpp.process(
shared_library(
'Irssi',
[
xsubpp.process(
files(
'Channel.xs',
'Core.xs',
@ -14,7 +15,8 @@ shared_library('Irssi',
'Server.xs',
'Settings.xs',
)
) ]
),
]
+ files(
'module.h',
)

View file

@ -1,5 +1,7 @@
shared_library('Irc',
[ xsubpp.process(
shared_library(
'Irc',
[
xsubpp.process(
files(
'Channel.xs',
'Client.xs',
@ -12,10 +14,10 @@ shared_library('Irc',
'Server.xs',
),
extra_args : [
'-typemap',
'../common/typemap',
'-typemap', '../common/typemap',
],
) ]
),
]
+ files(
'module.h',
),
@ -37,16 +39,18 @@ install_headers(
install_dir : perlmoddir / 'Irssi',
)
shared_library('Dcc',
[ xsubpp.process(
shared_library(
'Dcc',
[
xsubpp.process(
files(
'Dcc.xs',
),
extra_args : [
'-typemap',
'../common/typemap',
'-typemap', '../common/typemap',
],
) ]
),
]
+ files(
'module.h',
),

View file

@ -1,5 +1,5 @@
perl_signals_list_h = custom_target('perl-signals-list.h',
perl_signals_list_h = custom_target(
'perl-signals-list.h',
input : files('../../docs/signals.txt'),
output : 'perl-signals-list.h',
capture : true,
@ -7,7 +7,8 @@ perl_signals_list_h = custom_target('perl-signals-list.h',
command : [ build_perl, files('get-signals.pl'), '@INPUT@' ],
)
irssi_core_pl_h = custom_target('irssi-core.pl.h',
irssi_core_pl_h = custom_target(
'irssi-core.pl.h',
input : files('irssi-core.pl'),
output : 'irssi-core.pl.h',
capture : true,
@ -17,16 +18,19 @@ 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_library('perl_core',
libperl_core_sm = shared_library(
'perl_core',
files(
'perl-common.c',
'perl-core.c',
'perl-signals.c',
'perl-sources.c',
) + [
)
+ [
irssi_core_pl_h,
perl_signals_list_h,
] + built_src,
]
+ built_src,
c_args : [
def_scriptdir,
def_perl_use_lib,
@ -48,7 +52,8 @@ if need_dl_cross_link
dl_cross_perl_core += libperl_core_sm
endif
shared_library('fe_perl',
shared_library(
'fe_perl',
files(
'module-formats.c',
'perl-fe.c',

View file

@ -1,5 +1,7 @@
shared_library('TextUI',
[ xsubpp.process(
shared_library(
'TextUI',
[
xsubpp.process(
files(
'Statusbar.xs',
'TextBufferView.xs',
@ -7,12 +9,11 @@ shared_library('TextUI',
'TextUI.xs',
),
extra_args : [
'-typemap',
'../common/typemap',
'-typemap',
'../ui/typemap',
'-typemap', '../common/typemap',
'-typemap', '../ui/typemap',
],
) ]
),
]
+ files(
'module.h',
),

View file

@ -1,5 +1,7 @@
shared_library('UI',
[ xsubpp.process(
shared_library(
'UI',
[
xsubpp.process(
files(
'Formats.xs',
'Themes.xs',
@ -7,10 +9,10 @@ shared_library('UI',
'Window.xs',
),
extra_args : [
'-typemap',
'../common/typemap',
'-typemap', '../common/typemap',
],
) ]
),
]
+ files(
'module.h',
),

View file

@ -1,4 +1,5 @@
test_test_formats = executable('test-formats',
test_test_formats = executable(
'test-formats',
files(
'test-formats.c',
),
@ -12,8 +13,11 @@ test_test_formats = executable('test-formats',
],
include_directories : rootinc,
implicit_include_directories : false,
dependencies : dep
dependencies : dep,
)
test('test-formats test', test_test_formats,
test(
'test-formats test',
test_test_formats,
args : [ '--tap' ],
protocol : 'tap')
protocol : 'tap',
)

View file

@ -1,4 +1,5 @@
test_test_paste_join_multiline = executable('test-paste-join-multiline',
test_test_paste_join_multiline = executable(
'test-paste-join-multiline',
files(
'../../src/fe-text/gui-entry.c',
'../../src/fe-text/gui-printtext.c',
@ -25,7 +26,9 @@ test_test_paste_join_multiline = executable('test-paste-join-multiline',
implicit_include_directories : false,
dependencies : dep + textui_dep,
)
test('test-paste-join-multiline test', test_test_paste_join_multiline,
test(
'test-paste-join-multiline test',
test_test_paste_join_multiline,
args : [ '--tap' ],
protocol : 'tap')
protocol : 'tap',
)

View file

@ -1,4 +1,5 @@
test_test_irc = executable('test-irc',
test_test_irc = executable(
'test-irc',
files(
'test-irc.c',
),
@ -13,15 +14,19 @@ test_test_irc = executable('test-irc',
],
include_directories : rootinc,
implicit_include_directories : false,
dependencies : dep
dependencies : dep,
)
test('test-irc test', test_test_irc,
test(
'test-irc test',
test_test_irc,
args : [
'--tap',
],
protocol : 'tap')
protocol : 'tap',
)
test_test_channel_events = executable('test-channel-events',
test_test_channel_events = executable(
'test-channel-events',
files(
'test-channel-events.c',
),
@ -36,10 +41,13 @@ test_test_channel_events = executable('test-channel-events',
],
include_directories : rootinc,
implicit_include_directories : false,
dependencies : dep
dependencies : dep,
)
test('test-channel-events test', test_test_channel_events,
test(
'test-channel-events test',
test_test_channel_events,
args : [
'--tap',
],
protocol : 'tap')
protocol : 'tap',
)

View file

@ -1,4 +1,5 @@
test_test_796 = executable('test-796',
test_test_796 = executable(
'test-796',
files(
'test-796.c',
),
@ -17,10 +18,13 @@ test_test_796 = executable('test-796',
],
include_directories : rootinc,
implicit_include_directories : false,
dependencies : dep
dependencies : dep,
)
test('test-796 test', test_test_796,
test(
'test-796 test',
test_test_796,
args : [
'--tap',
],
protocol : 'tap')
protocol : 'tap',
)

View file

@ -3,4 +3,5 @@ install_data(
'default.theme',
'colorless.theme',
),
install_dir : themedir)
install_dir : themedir,
)