diff options
author | Patrick Griffis <tingping@tingping.se> | 2016-12-13 16:12:03 -0500 |
---|---|---|
committer | Patrick Griffis <tingping@tingping.se> | 2017-06-13 23:54:51 -0400 |
commit | 628100c19f5d82747170acdf2917cba8c119ccbf (patch) | |
tree | 351a7e9714a1a58390ba349808df5703cef25c3e /plugins/perl/meson.build | |
parent | 2edf50d4ddc61ce6f73bf02263c9bdd09632c66b (diff) |
build: Replace Autotools with Meson
Quick rundown of benefits: - Much faster: - Autotools (with autogen): 22 seconds - Meson: 7 seconds - Meson (with ccache): 2 seconds - Simpler: - ~1000 lines smaller - Single simple language - Potentially better Windows (Visual Studio) support What is not done: - Complete Windows support - OSX support (easy) Closes #2013 Closes #1937 Closes #1803
Diffstat (limited to 'plugins/perl/meson.build')
-rw-r--r-- | plugins/perl/meson.build | 73 |
1 files changed, 73 insertions, 0 deletions
diff --git a/plugins/perl/meson.build b/plugins/perl/meson.build new file mode 100644 index 00000000..49011884 --- /dev/null +++ b/plugins/perl/meson.build @@ -0,0 +1,73 @@ +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@'] +) + +irc_perl_module = custom_target('irc-perl-header', + input: 'lib/IRC.pm', + output: 'irc.pm.h', + command: [generate_perl_header, '@OUTPUT@', '@INPUT@'] +) + +perl = find_program('perl') + +ret = run_command([perl, '-MExtUtils::Embed', '-e', 'ccopts']) +if ret.returncode() != 0 + error('perl: Failed to get cflags') +endif +perl_cflags = [] +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 = [] +foreach flag : ret.stdout().strip().split(' ') + if flag.startswith('-L') or flag.startswith('-l') + 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, + name_prefix: '', +) |