FFI::Build::MM - FFI::Build installer code for ExtUtils::MakeMaker
Contents
Constructor
new
my $fbmm = FFI::Build::MM->new;
Create a new instance of FFI::Build::MM.
Copyright And License
This software is copyright (c) 2015-2022 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.
perl v5.40.0 2025-01-11 FFI::Build::MM(3pm)
Description
This module provides a thin layer between FFI::Build and ExtUtils::MakeMaker. Its interface is
influenced by the design of Alien::Build::MM. The idea is that for your distribution you throw some C,
C++ or Fortran source files into a directory called "ffi" and these files will be compiled and linked
into a library that can be used by your module. There is a control file "ffi/*.fbx" which can be used to
control the compiler and linker options. (options passed directly into FFI::Build). The interface for
this file is still under development.
Methods
mm_args
my %new_args = $fbmm->mm_args(%old_args);
This method does two things:
reads the arguments to determine sensible defaults (library name, install location, etc).
adjusts the arguments as necessary and returns an updated set of arguments.
mm_postamble
my $postamble = $fbmm->mm_postamble;
This returns the Makefile postamble used by ExtUtils::MakeMaker. The synopsis above for how to invoke it
properly. It adds the following Make targets:
fbx_build / ffi
build the main runtime library in "./ffi".
fbx_test / ffi-test
Build the test library in "./t/ffi".
fbx_clean / ffi-clean
Clean any runtime or test libraries already built.
Normally you do not need to build these targets manually, they will be built automatically at the
appropriate stage.
Name
FFI::Build::MM - FFI::Build installer code for ExtUtils::MakeMaker
Synopsis
In your Makefile.PL:
use ExtUtils::MakeMaker;
use FFI::Build::MM;
my $fbmm = FFI::Build::MM->new;
WriteMakefile($fbmm->mm_args(
ABSTRACT => 'My FFI extension',
DISTNAME => 'Foo-Bar-Baz-FFI',
NAME => 'Foo::Bar::Baz::FFI',
VERSION_FROM => 'lib/Foo/Bar/Baz/FFI.pm',
...
));
sub MY::postamble {
$fbmm->mm_postamble;
}
Then put the C, C++ or Fortran files in "./ffi" for your runtime library and "./t/ffi" for your test time
library.
Version
version 2.10
