NAME

FFI::Build::File::VMod - Class to track V source in FFI::Build

VERSION

version 0.01

SYNOPSIS

Makefile.PL:

use strict;
use warnings;
use ExtUtils::MakeMaker;
use FFI::Build::MM;

my $fbmm = FFI::Build::MM->new;

WriteMakefile($fbmm->mm_args(
    ABSTRACT => 'Perl/V Extension',
    DISTNAME => 'V-FFI',
    NAME => "V::FFI",
    VERSION => '1.00',
));

sub MY::postamble {
  $fbmm->mm_postamble;
}

ffi/v.mod:

Module {
    name: 'foo'
    ...
}

ffi/foo.v:

module foo

pub fn add(a, b i32) i32 {
    return a + b
}

lib/Foo.pm:

use warnings;
use 5.020;
use experimental qw( signatures );

package Add {
    use FFI::Platypus 2.00;
    use Exporter qw( import );

    our @EXPORT = qw( add );

    my $ffi = FFI::Platypus->new( api => 2, lang => 'V' );
    $ffi->bundle;
    $ffi->mangler(sub ($sym) { return "libfoo__$sym" });

    $ffi->attach(add => ['i32','i32'] => 'i32');
}

DESCRIPTION

METHODS

AUTHOR

Graham Ollis <plicease@cpan.org>

COPYRIGHT AND LICENSE

This software is copyright (c) 2024 by Graham Ollis.

This is free software; you can redistribute it and/or modify it under the same terms as the Perl 5 programming language system itself.