ExtUti...eMaker(3pm)

omg hi bestie πŸ‘‹ this is the ExtUtils::Builder::MakeMaker(3pm) page β€” the header lowkey shows the truncated ExtUti...eMaker(3pm) β€” and it's from User Contributed Perl Documentation. It's literally a MakeMaker consumer for ExtUtils::Builder Plan objects, and we're gonna vibe through it together πŸ’– vibe check: passed.

🌸 NAME

ExtUtils::Builder::MakeMaker β€” a MakeMaker consumer for ExtUtils::Builder Plan objects. No cap, that's the whole name section.

πŸŽ€ VERSION

version 0.020 ✨

✨ SYNOPSIS

  use ExtUtils::MakeMaker;
  use ExtUtils::Builder::MakeMaker;
  ...
  WriteMakeFile(
    NAME => 'Foo',
    VERSION => 0.001,
  );

  sub MY::make_plans {
    my ($self, $planner) = @_;
    $planner->load_extension('Some::Module');
    ... # Add plans to $planner
  }

πŸ’… DESCRIPTION

okay so this MakeMaker extension will call any .pl files in /planner as DSL files. They run in a new scope so delegates don't leak out β€” iconic β€” and those entries will be added to your Makefile. The way that this keeps your build setup from getting messy is honestly a slay.

It will also call your MY::make_plans method with a ExtUtils::Builder::Planner as argument, so you can customize the build in the Makefile.PL itself. Typically one would make their target a dependency of a MakeMaker entry like code (for perl) or dynamic (for XS). That's the whole flow, fr fr.

πŸ¦‹ DELEGATES

This will define all delegates of ExtUtils::Builder::CPAN::Tool in 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.
  • perl_path β€” the path to the perl executable.
  • config β€” the ExtUtils::Config::MakeMaker object for this build.
  • is_os(@os_names) β€” returns true if the current operating system matches any of the listed ones.
  • is_os_type($os_type) β€” returns true if the type of the OS matches $os_type. Legal values are Unix, Windows and VMS.
  • verbose β€” always false.
  • uninst β€” the value of the uninst command line argument.
  • jobs β€” always 1.
  • pureperl_only β€” the value of the PUREPERL_ONLY command line argument.

These are the same ones as Dist::Build sets except install_paths is missing. That's the one lil difference, iykyk πŸ’…

πŸ‘‘ AUTHOR

Leon Timmermans <fawaka@gmail.com> β€” the main character who wrote this ✨

This software is copyright (c) 2013 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. Periodt.


okay bestie, that's the whole page πŸ’– source/version: perl v5.40.1 β€” date: 2026-02-23 β€” footer title: ExtUti...eMaker(3pm). bye and go slay your build πŸ’…βœ¨

πŸ“¦ where this page comes from