---
name: "Dist::Build"
section: "3pm"
platform: "linux"
package: "libdist-build-perl"
version: "0.020-1"
release: "Debian 13 (Trixie)"
platforms: ["linux"]
url: "https://new.carta.tech/Dist::Build"
---

# Dist::Build(3pm)

A modern module builder, author tools not included!

## NAME

Dist::Build - A modern module builder, author tools not included!

## VERSION

version 0.020

## DESCRIPTION

`"Dist::Build"` is a Build.PL implementation. Unlike Module::Build::Tiny it is extensible, unlike Module::Build it uses a build graph internally which makes it easy to combine different customizations. It's typically extended by adding a `".pl"` script in `"planner/"`. E.g.

```
 load_extension("Dist::Build::ShareDir");
 dist_sharedir('share', 'Foo-Bar');

 load_extension("Dist::Build::XS");
 load_extension("Dist::Build::XS::Alien");
 add_xs(
   alien         => 'foo',
   extra_sources => [ glob 'src/*.c' ],
 );
```

## PLUGINS

- •

  Dist::Build::XS

  This plugin enables one to compile XS modules. It has a range of options, and a series of extensions that add to its capabilities.

  - •

    Dist::Build::XS::Alien

    This is used to link to an Alien library.

  - •

    Dist::Build::XS::Conf

    This wraps ExtUtils::Builder::Conf to detect headers, libraries and features.

  - •

    Dist::Build::XS::Import

    This can be used to import headers and flags as exported by Dist::Build::XS::Export.

  - •

    Dist::Build::XS::PkgConfig

    This adds flags for a given library as configured in its pkgconfig file.

  - •

    Dist::Build::XS::WriteConstants

    This integrates ExtUtils::Constant into the `"add_xs"` command.

- •

  Dist::Build::ShareDir

  This allows one to install sharedirs

- •

  Dist::Build::XS::Export

  This allows one to export headers and flags, to be imported by Dist::Build::XS::Import

- •

  Dist::Build::DynamicPrereqs

  This allows one to dynamically evaluate dependencies.

- •

  Dist::Build::Core

  This module contains all commands used for the base actions of the module.

## DELEGATES

By default, the following delegates are defined on your planner:

- •

  meta

  A CPAN::Meta object representing the `"META.json"` file.

- •

  distribution

  The name of the distribution

- •

  version

  The version of the distribution

- •

  main\_module

  The main module of the distribution.

- •

  release\_status

  The release status of the distribution (e.g. `'stable'`).

- •

  perl\_path

  The path to the perl executable.

- •

  config

  The ExtUtils::Config object for this build

- •

  install\_paths

  The ExtUtils::InstallPaths object for this build.

- •

  is\_os(@os\_names)

  This returns true if the current operating system matches any of the listed ones.

- •

  is\_os\_type($os\_type)

  This returns true if the type of the OS matches `$os_type`. Legal values are `"Unix"`, `"Windows"` and `"VMS"`.

- •

  verbose

  The value of the `"verbose"` command line argument.

- •

  uninst

  The value of the `"uninst"` command line argument.

- •

  jobs

  The value of the `"jobs"` command line argument.

- •

  pureperl\_only

  The value of the `"pureperl_only"` command line argument.

## 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.
