diff options
author | Qyriad <qyriad@qyriad.me> | 2024-04-01 14:06:44 -0600 |
---|---|---|
committer | Qyriad <qyriad@qyriad.me> | 2024-04-02 11:22:42 -0600 |
commit | 4f5e532b8bf6196c19e1ca37c450c3635882269a (patch) | |
tree | 25def138acef1cc44a074ca855fc251ba102a37d /perl/meson.build | |
parent | d2aca15f31f39ab1548ae8410932293504d0eb36 (diff) |
meson: implement perl bindings
Change-Id: Ie1bfb0aa784e6136a82d518a652d0ae60c4b047a
Diffstat (limited to 'perl/meson.build')
-rw-r--r-- | perl/meson.build | 69 |
1 files changed, 69 insertions, 0 deletions
diff --git a/perl/meson.build b/perl/meson.build new file mode 100644 index 000000000..75c7c2c79 --- /dev/null +++ b/perl/meson.build @@ -0,0 +1,69 @@ +project('lix-perl', 'cpp', + version : run_command('bash', '-c', 'echo -n $(cat ../.version)$VERSION_SUFFIX', check : true).stdout().strip(), + default_options : [ + 'cpp_std=c++2a', + # TODO(Qyriad): increase the warning level + 'debug=true', + # FIXME(Qyriad): should this be -O2? The main nix build was switched to -O2 in 3c5234430 + 'optimization=3', + ], +) + +fs = import('fs') + +prefix = get_option('prefix') +libdir = get_option('libdir') +if not fs.is_absolute(libdir) + libdir = prefix / libdir +endif + +cxx = meson.get_compiler('cpp') + +# Really version 5.8.0, but Perl's version string is of the form +# "This is perl 5, version 38, subversion 2", for 5.38.2, so as far +# as Meson is concerned, the version of Perl we need is 8 or greater. +perl = find_program('perl', version : '>=8') + +# "compiler to convert Perl XS code into C code" +xsubpp = find_program('xsubpp') + +perl_version = run_command( + perl, + '-e', + 'use Config; print $Config{version};', + capture : true, + check : true, +).stdout() +perl_arch_name = run_command( + perl, + '-e', + 'use Config; print $Config{archname};', + capture : true, + check : true, +).stdout() + +perl_libdir = f'@libdir@/perl5/site_perl/@perl_version@/@perl_arch_name@' + +perl_incdir = run_command( + perl, + '-e', + 'use Config; print $Config{archlibexp};', + capture : true, + check : true, +).stdout() + '/CORE' + +perl_include = declare_dependency( + # This must have is_system : true, or #include "config.h" will get perl's config.h + # instead of Nix's. + include_directories : include_directories(perl_incdir, is_system : true), +) + +sodium = dependency('libsodium', 'sodium', required : true) + +if cxx.get_linker_id() in ['ld.bfd', 'ld.gold'] + add_project_link_arguments('-Wl,--no-copy-dt-needed-entries', language : 'cpp') +endif + +libstore = dependency('nixstore', 'nix-store', required : true) + +subdir('lib/Nix') |