93f926bf12
This was accidentally left behind, expose it beind an option as with the old build system but default to false now. Enough time has passed and only distros that care about it can enable it.
89 lines
2.1 KiB
Meson
89 lines
2.1 KiB
Meson
generate_perl_header = find_program('generate_header.py')
|
|
|
|
hexchat_perl_module = custom_target('hexchat-perl-header',
|
|
input: [
|
|
'lib/HexChat.pm',
|
|
'lib/Xchat.pm',
|
|
'lib/HexChat/Embed.pm',
|
|
'lib/HexChat/List/Network.pm',
|
|
'lib/HexChat/List/Network/Entry.pm',
|
|
'lib/HexChat/List/Network/AutoJoin.pm',
|
|
],
|
|
output: 'hexchat.pm.h',
|
|
command: [generate_perl_header, '@OUTPUT@', '@INPUT@']
|
|
)
|
|
|
|
perl_cflags = []
|
|
irc_perl_module = []
|
|
|
|
if get_option('with-perl-legacy-api')
|
|
irc_perl_module = custom_target('irc-perl-header',
|
|
input: 'lib/IRC.pm',
|
|
output: 'irc.pm.h',
|
|
command: [generate_perl_header, '@OUTPUT@', '@INPUT@']
|
|
)
|
|
perl_cflags += '-DOLD_PERL'
|
|
endif
|
|
|
|
perl = find_program('perl')
|
|
|
|
ret = run_command([perl, '-MExtUtils::Embed', '-e', 'ccopts'])
|
|
if ret.returncode() != 0
|
|
error('perl: Failed to get cflags')
|
|
endif
|
|
foreach flag : ret.stdout().strip().split(' ')
|
|
if flag.startswith('-I') or flag.startswith('-D')
|
|
perl_cflags += flag
|
|
endif
|
|
endforeach
|
|
|
|
ret = run_command([perl, '-MExtUtils::Embed', '-e', 'ldopts'])
|
|
if ret.returncode() != 0
|
|
error('perl: Failed to get ldflags')
|
|
endif
|
|
perl_ldflags = []
|
|
perl_rpath = ''
|
|
foreach flag : ret.stdout().strip().split(' ')
|
|
if flag.startswith('-L') or flag.startswith('-l')
|
|
perl_ldflags += flag
|
|
endif
|
|
if flag.startswith('-Wl,-rpath,')
|
|
# Install rpath
|
|
split = flag.split(',')
|
|
perl_rpath = split[split.length() - 1]
|
|
|
|
# For in tree
|
|
perl_ldflags += flag
|
|
endif
|
|
endforeach
|
|
|
|
perl_cflags += [
|
|
# Perl has its own 'config.h' that we must override
|
|
# TODO: Just rename ours to something more unique.
|
|
'-include', meson.build_root() + '/config.h'
|
|
]
|
|
|
|
if not cc.links('''
|
|
#define PERL_NO_INLINE_FUNCTIONS
|
|
#include <EXTERN.h>
|
|
#include <perl.h>
|
|
|
|
int main(void) {
|
|
PerlInterpreter *my_perl = perl_alloc();
|
|
return 0;
|
|
}
|
|
''', args: perl_cflags + perl_ldflags)
|
|
error('found perl not suitable for plugin')
|
|
endif
|
|
|
|
shared_module('perl',
|
|
sources: ['perl.c', hexchat_perl_module, irc_perl_module],
|
|
dependencies: [libgio_dep, hexchat_plugin_dep],
|
|
c_args: perl_cflags,
|
|
link_args: perl_ldflags,
|
|
install: true,
|
|
install_dir: plugindir,
|
|
install_rpath: perl_rpath,
|
|
name_prefix: '',
|
|
)
|