use ExtUtils::MakeMaker;

WriteMakefile( ATTRIBUTE => VALUE, ... );



# which internally is really more like...

%att = (ATTRIBUTE => VALUE, ...);

MM->new(\%att)->flush;

*****

use ExtUtils::MakeMaker;

WriteMakefile(

    NAME         => 'POSIX',

    LIBS         => ["-lm -lposix -lcposix"],

    MAN3PODS     => ' ',    # Pods will be built by installman.

    XSPROTOARG   => '-noprototypes',       # XXX remove later?

    VERSION_FROM => 'POSIX.pm', 

);

*****

$self->{LIBS} = ['-ldbm -lucb -lc'];

*****

perl Makefile.PL PREFIX=/tmp/myperl5

*****

perl Makefile.PL verbose

*****

perl Makefile.PL PREFIX=~

*****

perl Makefile.PL INSTALLSITELIB=/afs/here/today

    INSTALLBIN=/afs/there/now INSTALLMAN3DIR=/afs/for/manpages

make

*****

make perl

*****

make inst_perl

*****

perl Makefile.PL MAP_TARGET=myperl

make myperl

make inst_perl

*****

perl Makefile.PL

make myperl MAP_TARGET=myperl

make inst_perl MAP_TARGET=myperl

*****

perl Makefile.PL LINKTYPE=static

*****

CONFIG => [qw(archname manext)],

*****

ar            dlext        ldflags     ranlib

cc            dlsrc        libc        sitelibexp

cccdlflags    ld           lib_ext     sitearchexp

ccdlflags     lddlflags    obj_ext     so

*****

DIR => ['sdbm'],

*****

perl -MExtUtils::MakeMaker -e 'WriteMakefile()'

*****

"$(PKG)" => ["boot_$(PKG)"]

*****

DL_FUNCS => {

    RPC          => [qw(boot_rpcb rpcb_gettime getnetconfigent)],

    NetconfigPtr => ['DESTROY'],

},

*****

DL_VARS => [ qw( Foo_version Foo_numstreams Foo_tree ) ],

*****

INC => "-I/usr/5include -I/path/to/inc",

*****

LIBS => ["-lgdbm", "-ldbm -lfoo", "-L/path -ldbm.nfs"],

*****

LIBS => ["-ltcl", "-ltk", "-lX11"],

*****

LIBS => "-ltcl -ltk -lX11",

*****

NORECURS => 1,

*****

OBJECT => "tkpBind.o tkpButton.o tkpCanvas.o",

*****

PL_FILES => {'whatever.PL' => 'whatever'},

*****

all :: whatever



whatever :: whatever.PL

        $(PERL) -I$(INST_ARCHLIB) -I$(INST_LIB) \

                -I$(PERL_ARCHLIB) -I$(PERL_LIB) whatever.PL

*****

PM => {'name_of_file.pm' => '$(INST_LIBDIR)/install_as.pm'},

*****

PMLIBDIRS => [ 'lib', $(BASEEXT) ],

*****

SKIP => [qw(name1 name2)],

*****

/(\$[\w:]*\bVERSION)\b.*=/

*****

$VERSION = '1.00';

( $VERSION ) = '$Revision: 3.0 $ ' =~ /\$Revision:\s+([^\s]+)/;

$FOO::VERSION = '1.10';

*****

my $VERSION = '1.01';

local $VERSION = '1.02';

local $FOO::VERSION = '1.30';

*****

XS => {'name_of_file.xs' => 'name_of_file.c'},

*****

clean => {FILES => "*.xyz foo"},

*****

depend => {ANY_TARGET => ANY_DEPENDENCY, ...},

*****

dist => {

    TARFLAGS => 'cvfF',

    COMPRESS => 'gzip',

    SUFFIX => 'gz',

    SHAR => 'shar -m',

    DIST_CP => 'ln',

},

*****

dynamic_lib => {

    ARMAYBE => 'ar',

    OTHERLDFLAGS => '...',

    INST_DYNAMIC_DEP => '...',

},

*****

{SPLITLIB => '$(INST_LIB)' (default) or '$(INST_ARCHLIB)'}

*****

linkext => {LINKTYPE => 'static', 'dynamic', or ''},

*****

linkext => {LINKTYPE => ''},

*****

macro => {ANY_MACRO => ANY_VALUE, ...},

*****

{FILES => '$(INST_ARCHAUTODIR)/*.xyz'}

*****

sub MY::c_o { "new literal text" }

*****

sub MY::c_o {

    my $self = shift;

    local *c_o;

    $_=$self->MM::c_o;

    s/old text/new text/;

    $_;

}

*****

WriteMakefile( 'dist' => { COMPRESS=>"gzip", SUFFIX=>"gz" })

