NAME

Dist::Build::XS - An XS implementation for Dist::Build

VERSION

version 0.010

SYNOPSIS

# planner/xs.pl

load_module('Dist::Build::XS');
add_xs(
  module_name   => 'Foo::Bar',
  extra_sources => [ glob 'src/*.c' ],
  libraries     => [ 'foo' ],
);

DESCRIPTION

This module implements support for XS for Dist::Build.

METHODS

add_xs

This method takes the following named arguments, all optional:

  • module_name

    The name of the module to be compiled. This defaults to $dist_name =~ s/-/::/gr unless file is given, in which case the name is derived from the path.

  • module_version

    The version of the module, defaulting to the dist version.

  • file

    The name of the XS file. By default it's derived from the $module_name, e.g. lib/Foo/Bar.xs for Foo::Bar.

  • defines

    This hash contains defines for the C files. E.g. { DEBUG => 1 }.

  • include_dirs

    A list of directories to add to the include path. For the xs file the directory it is in is automatically added to this list.

  • extra_sources

    A list of C files to compile with this module. Instead of just a name, entries can also be a hash with the following entries:

    • source

      The name of the input file. Mandatory.

    • object

      The name of the object that will be compiled. Will be derive from the source name by default.

    • include_dirs

      An array containing additional include directories for this objects

    • defines

      A hash containing additional defines for this object.

    • flags

      An array containing additional flags for this compilation.

  • extra_objects

    A list of object files to link with the module.

  • extra_compiler_flags

    Additional flags to feed to the compiler. This can either be an array or a (shell-quoted) string.

  • extra_sources

    Extra C files to compile with this module.

  • library_dirs

    Extra libraries to find libraries in.

  • libraries

    Libraries to link to.

  • extra_linker_flags

    Additional flags to feed to the compiler. This can either be an array or a (shell-quoted) string.

AUTHOR

Leon Timmermans <fawaka@gmail.com>

COPYRIGHT AND LICENSE

This software is copyright (c) 2024 by Leon Timmermans.

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