Module::Build::Tiny(3) User Contributed Perl Documentation Module::Build::Tiny(3)

# [SYNOPSIS](#SYNOPSIS)

```
 use Module::Build::Tiny;
 Build_PL();
```

# [DESCRIPTION](#DESCRIPTION)

Many Perl distributions use a Build.PL file instead of a Makefile.PL file to drive distribution configuration, build, test and installation. Traditionally, Build.PL uses Module::Build as the underlying build system. This module provides a simple, lightweight, drop-in replacement.

Whereas Module::Build has over 6,700 lines of code; this module has less than 200, yet supports the features needed by most distributions.

## [Supported](#Supported)

- Pure Perl distributions
- Building XS or C
- Recursive test files
- MYMETA
- Man page generation
- Generated code from PL files
- Module sharedirs
- Dynamic prerequisites

## [Not Supported](#Not_Supported)

- HTML documentation generation
- Extending Module::Build::Tiny

## [Directory structure](#Directory_structure)

Your .pm, .xs and .pod files must be in *lib/*. Any executables must be in *script/*. Test files must be in *t/*. Dist sharedirs must be in *share/*, module sharedirs are under *module-share* (e.g. *module-share/Foo-Bar* for module "Foo::Bar").

".c" files in the *src/* are compiled together with the .xs file matching the distribution name.

# [USAGE](#USAGE)

These all work pretty much like their Module::Build equivalents.

## [perl Build.PL](#perl_Build.PL)

## [Build \[ build \]](#Build___build__)

## [Build test](#Build_test)

## [Build install](#Build_install)

This supports the following options:

- verbose
- install\_base
- installdirs
- prefix
- install\_path
- destdir
- uninst
- config
- pure-perl
- create\_packlist

# [AUTHORING](#AUTHORING)

This module doesn't support authoring. To develop modules using Module::Build::Tiny, usage of Dist::Zilla::Plugin::ModuleBuildTiny or App::ModuleBuildTiny is recommended.

# [CONFIG FILE AND ENVIRONMENT](#CONFIG_FILE_AND_ENVIRONMENT)

Options can be provided in the "PERL\_MB\_OPT" environment variable the same way they can with Module::Build. This should be done during the configuration stage.

## [Incompatibilities](#Incompatibilities)

- Argument parsing
  
  Module::Build has an extremely permissive way of argument handling, Module::Build::Tiny only supports a (sane) subset of that. In particular, "./Build destdir=/foo" does not work, you will need to pass it as "./Build --destdir=/foo".
- .modulebuildrc
  
  Module::Build::Tiny does not support .modulebuildrc files. In particular, this means that versions of local::lib older than 1.006008 may break with "ERROR: Can't create /usr/local/somepath". If the output of "perl -Mlocal::lib" contains "MODULEBUILDRC" but not "PERL\_MB\_OPT ", you will need to upgrade it to resolve this issue.

# [SEE ALSO](#SEE_ALSO)

Module::Build

2026-10-25 perl v5.44.0

---

Document: Module::Build::Tiny(3pm) from perl-module-build-tiny 0.053-r4 (Chainguard OS)
Source: https://github.com/Perl-Toolchain-Gang/module-build-tiny
