Scroll to navigation

FFI::Build::MM(3pm) User Contributed Perl Documentation FFI::Build::MM(3pm)


FFI::Build::MM - FFI::Build installer code for ExtUtils::MakeMaker


version 0.98


In your Makefile.PL:

 use ExtUtils::MakeMaker;
 use FFI::Build::MM;
 my $fbmm = Alien::Build::MM->new;
   ABSTRACT     => 'My FFI extension',
   DISTNAME     => 'Foo-Bar-Baz-FFI',
   NAME         => 'Foo::Bar::Baz::FFI',
   VERSION_FROM => 'lib/Foo/Bar/Baz/',
 sub MY::postamble {

Then put the C, C++ or Fortran files in "./ffi" for your runtime library and "./t/ffi" for your test time library.


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.



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

Create a new instance of FFI::Build::MM.



 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.


 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.


Author: Graham Ollis <>


Bakkiaraj Murugesan (bakkiaraj)

Dylan Cali (calid)


Zaki Mughal (zmughal)

Fitz Elliott (felliott)

Vickenty Fesunov (vyf)

Gregor Herrmann (gregoa)

Shlomi Fish (shlomif)

Damyan Ivanov

Ilya Pavlov (Ilya33)

Petr Pisar (ppisar)

Mohammad S Anwar (MANWAR)

Håkon Hægland (hakonhagland, HAKONH)

Meredith (merrilymeredith, MHOWARD)


This software is copyright (c) 2015,2016,2017,2018,2019 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.

2019-10-15 perl v5.30.0