Module::Build with XS

September 30, 2008

This is mainly for my own future benefit. It has just taken me ages to discover how to build Perl modules using Module::Build when parts of the module are done with XS.

The Build.PL needs to contain:

    extra_compiler_flags => ['-Wall'],
    extra_linker_flags => ['-lfoo'],
    include_dirs  => ['.'],

where foo is whatever library you need to link against. The include_dirs specifies where to find the ppport.h file. Also, the build-requires must be like:

    build_requires => {
        'ExtUtils::CBuilder' => 0,
   },

Finally, unlike the old MakeMaker, XS modules should go in the right place in the lib/ tree, e.g. Foo::Bar should be lib/Foo/Bar.xs, there will probably also be a lib/Foo/Bar.pm already in that directory.