The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.
=head2 v5.16 January 5, 1996 by Andreas Koenig

VERSION_FROM can be a filename that is parsed to determine VERSION.

Packlist support enabled again: the rewriting of the packlist file
should now be AFS clean. (Read two of them, write one). Packlist is
now written with 'make' not only with 'make install'.

INSTALLARCHLIB was computed wrong since $(PREFIX) is now a Makefile
macro. A check within MakeMaker, if the directory
"$self->{INSTALLARCHLIB}" existed was always negativ, because the
string contained literally '$(PREFIX)'

MakeMaker now doesn't include files with [:#] in their names into the
Makefile at all. Previous versions warned about such files but
accepted them nonetheless. But all make(1) implementations croak on
such files, so we skip them now.

realclean didn't delete the Makefile.aperl.

As VMS needs a space after an '@' in a Makefile line and HP croaks
sometimes IF there is a space, introduced the attribute MAKE_NO_ECHO
which is set to '@' on UNIX and can be set to '@ ' on VMS.

Included a biggish patch by Charles into MM_VMS.

$(MAKE_APERL_FILE) replaces several occurrences of hardcoded
"Makefile.aperl".

A Chip Salzenberg patch against prepending "./" if not needed.

Another Chip Salzenberg patch to add the -I switches to the pod2man
call.

Added INST_DYNAMIC_DEP, a macro that may hold additional dependencies
to INST_DYNAMIC (was an ad-hoc need for Tk). It is used as

    dynamic_lib => { INST_DYNAMIC_DEP => "../pTk/libpTk.a" }

=head2 v5.15 December 22, 1995 by Andreas Koenig

Made PREFIX work also for INSTALLMAN1DIR, and applied Ilya's PREFIX
patch which makes PREFIX overrideable from the make command
line. Fixed the documantaion for that, too.

Reintroduced XS_VERSION.

Added SCCS as an exception in ->libscan();

Set CCCDLFLAGS to "" in the recursive makeaperl call.

=head2 v5.14 December 16, 1995 by Andreas Koenig

catdir() and catfile() didn't check for successive slashes in the
resulting path. AutoSplit croaked upon a path like
Tk//Button.pm. Could be qualified as an AutoSplit bug.

=head2 v5.13 December 15, 1995 by Andreas Koenig

If it is a pod is decided upon the existence of /^=head1\s+\w+/
instead of only /^=head/, as Tom has requested.

Found unresolved dependencies for .packlist, that was only relevant
on AIX's make(1).

Changed the $ISA_TTY variable to be a global instead of a
file-lexical.

dynamic_bs wrote code for BOOTSTRAP and INST_BOOT based on
needs_linking() instead of has_link_code. HPUX didn't like the empty
target. Same for INST_DYNAMIC and INST_STATIC.

mksymlist() didn't work for extension that were more than on level
deep. I didn't pass the NAME to the constructor. So it was guessed
instead.

Included a big VMS patch by Charles Bailey. MM_VMS is from now on part
of the MakeMaker distribution.

Deleted some spaces after @ in the Makefile. make(1) on HPUX doesn't
accept those spaces.

=head2 v5.12 December 10, 1995 by Andreas Koenig

Patch by Dean Roehrich prevents installbin to create a bogus entry
into the realclean target.

More subtleties by Ilya for OS2 support.

XS_VERSION commented out again as it seems this won't need MakeMaker
support.

Introduced a blank line after __END__ for pod conformance. Updated
some pods.

Manifest.pm now can handle manifest files with a different name than
"MANIFEST". (idea of Jarkko Hietaniemi)

=head2 v5.11 November 27, 1995 by Andreas Koenig (came with 5.002b1f)

Installation of files to INST_MAN1DIR was missing a $self->catdir and
a dot between the filename and the MAN1EXT.

There was a rare problem with the .packlist file: The .packlist
entries are appended to the .packlist file in INST_ARCHAUTOLIB. The
file is rewritten later to contain only unique entries. For the
rewriting of the file I used perl -i.bak. That's not ok for AFS and
dies if the .packlist file doesn't exist for any other reason.  THIS
PROBLEM IS NOT YET RESOLVED. I have dropped support for .packlist
until I have a nice fix for this.

Don Jackson saw this on his sun4-sunos box.
    >Argument "Running '/bin/perl /usr/local/lib/perl5/ExtUtils/x..." isn't numeric 
    >for right bitshift at /usr/local/lib/perl5/ExtUtils/MakeMaker.pm line 1708.
    >0 at /usr/local/lib/perl5/ExtUtils/MakeMaker.pm line 1708.
    >Argument "Running '/bin/perl /usr/local/lib/perl5/ExtUtils/x..." isn't numeric 
    >for right bitshift at /usr/local/lib/perl5/ExtUtils/MakeMaker.pm line 1734.
    >0 at /usr/local/lib/perl5/ExtUtils/MakeMaker.pm line 1734.
Was a precedence bug, solved.

Ilya sent a big patch for OS2. It was a bit complicated to fold it in,
so I included only the easy changes, and would like to reconsider the
thing, when there is a bit more time and less pressure. All the new
methods are included, but not yet used, so the next patch will be
easier to comprehend.

manifypods had no dependencies. Added them, although the correct
solution would be to have dependencies on the produced manpages. The
latter is not possible, because they contain colons.

Two occurrences of \Q in did not have a coresponding \E. Fixed.

Liblist choked on C<-lg++>, because the \Q was missing completely. Fixed.

Manifest.pm tried a link() even on systems without link()
available. Fix supplied by Ilya applied.

Introduced XS_VERSION to support a better matching control between the
VERSION of the *.pm and the *.xs part of the package.

Dropped the default C<-noprototype> argument to xsubpp.

=head2 v5.10 November 24, 1995 by Andreas Koenig (came with 5.002b1d)

Changed -prototype to -prototypes, likewise for the -no... variant.

Changed the sequence of some "units". The variables that are fetched
from %Config are now fetched very early in the game.

=head2 v5.09 November 22, 1995 by Andreas Koenig

Comparison of cflags' output to MakeMaker's output is not possible
anymore, because we introduced $(INC) as part of CCCMD. I think it can
be dropped safely. We have to take $new regardless of what $old says.

INSTALLMAN1DIR and INSTALLMAN3DIR being empty still caused the .exist
files to be written. Fixed.

Differentiate between MAN1PODS and MAN3PODS. Pods of EXE_FILES going
to 1 and of PM files and *.pod files going to 3.

check_hints was called without argument, so $self was not a known hash
ref in the hintsfile.

The POD2MAN wrapper now checks for the timestamps of both Makefile and
pod source (did only for the Makefile).

Added pods to ExtUtils::Liblist.

Ilya's one-line fix to Liblist for OS2 applied.

=head2 v5.08 November 21, 1995 by Andreas Koenig

Made the CONFIG variables overridable from Makefile.PL (following
Dean's request to override CC and LD). Added ar, lib_ext, and obj_ext
to the routine that goes through %Config. Improved documentation for
the CONFIG attribute.

Made the three init_ routines *un*overridable from the
Makefile.PL. This is one step towards minimizing the list of
overridable methods before the list is documented.

Completed the Changes file from my archive of old MakeMakers.

Changed the xsubpp threshold for '-noprototype' to 1.923.

=head2 v5.07 November 20, 1995 by Dean Roehrich and Andreas Koenig

Fix to PERLMAINCC, which did not do anything. Should now work as advertised.

Replaced "depreciated" by "deprecated";

Changed $SIG{__WARN__} so that it writes more warnings again (only
"Use of unitialized variable", "used only once", and "Subroutine
redefined" warnings are suppressed).

Lookup for .c and .h files now case-insensitive.

Added @ARGV to the MAKEAPERL call.

Fixed documentation wrt to INSTALLMAN1DIR.

Changed documentation for PREREQ to make clear, that it is not
available yet.

Added XSOPT attribute for additional arguments to xsubpp.

XSPROTOARG attribute allows independent setting of -prototype and
-noprototype to the xsubpp call. xsubpp version is checked with a
routine provided by Paul Marquess.

ExtUtils::Manifest::mkmanifest now adds MANIFEST itself to the
MANIFEST file. (Suggestion by Steffen Beyer)

Changed the warning when a library is not found from "non-fatal" to
"will try anyway" to give it a little more weight.

Gave he DL_* variables for AIX another fix (untested, as always,
because I have no access to AIX)

=head2 v5.05/06 (in perl5.002beta1) November 12, 1995 by Andreas Koenig

Changed lib_ext and obj_ext so that they both expect a dot as part of
the extension. 5.05 forgot to do that also for Liblist.pm. 5.06 did it
for Liblist.pm also

=head2 v5.04 November 11, 1995 by Andreas Koenig

A lot of testing what would happen, if the ext/ directory of the perl
source contained a dummy Makefile.PL lead to two small
changes. PERL and FULLPERL attributes will get a "../" prepended if
relativ. The compilation of perlmain.c will be done with
C<-I$(PERL_INC)>.

One bug report was, that with ($Config{installman3dir} eq '')
MakeMaker tried to install the manpages to the root directory. This
should be fixed now.

Renamed method is_exe to maybe_command. (Suggested by Tim)

Introduced a PERLMAINCC variable to allow different compilers for
extensions. (Suggested by Ilya)

DIR can now be an argument on the command line (a colon seperated
list). Necessary to tell the dummy Makefile.PL, which directories to
run dynamic, and which static.

perlmain.c is now written by PERL, not by FULLPERL (PERL might not yet
exist).

Documented the hintsfile support.

Changed lib_ext and obj_ext: they both now expect the dot will be part
of the variable.

=head2 v5.03 November 4, 1995 by Andreas Koenig

Found three typos one minute after 5.02 slipped through my fingers
into CPAN.

=head2 v5.02 November 4, 1995 by Andreas Koenig

With a lot of help from Nick ironed out the two known bugs in 5.01-buggy:

$(INC) came too late on the CC command line.

C<make perl> had a dependency on $(MAKE_APERL_FILE), so that a lot of
compiling was redone. Changed this dep to $(FIRST_MAKEFILE) resolves
these rebuilds.

C<make test> had more dependencies that necessary and tended to be
*slow*. The current reduced set of dependencies seems to do exactly
what's needed.

MAKE_APERL_FILE was rewritten any time 'make perl' was called. Now has
a dependency from FIRST_MAKEFILE, so won't get rebuilt unless Makefile
is newer than Makefile.aperl. If they want to force the building of a
new perl, they have to delete the Makefile.aperl. Documented that.

=head2 v5.01 October 27, 1995 by Andreas Koenig (released as 5.01-buggy)

Changed the prompt() code to check for STDIN and STDOUT being
connected to a terminal (C<-t>), so automated runs of Makefile.PLs won't
hang.

Fixed a buglet in Manifest, that included sub-sub-directories in the
MANIFEST file.

Documented an undocumented feature in Manifest: skipcheck which lists
all the files skipped due to the MANIFEST.SKIP file. Added target
skipcheck which invokes ExtUtils::Manifest::skipcheck().

Following a suggestion by Tim, DIST_CP is now set to 'best' as a
default. 'best' copies symbolic links and links the rest. This will
speed up building the distribution file while making sure, you do not
distribute symbolic links pointing out of the tree.

Made $VERSION and $Version readonly with Sarathy's glob trick.

Deleted the 'local *method' suggestion I print out in the warning when
MM->method is called.

Inserted a backslash, deleted a blank :)

Changed the order between C<-I$(PERL_INC)> and $(INC). $(INC) comes first now.

Attempt to fix mksymlists for AIX. I hope, I got it right.

Fixed LD_RUN_PATH: now computed within ExtUtils::Liblist::ext.

Let DIR be an argument on the command line: A colon seperated list
will be turned into an array.

The executable POD2MAN is now being looked for before writing the
POD2MAN macro.

Got rid of a $Is_OS2 by introducing sub is_exe.

=head2 v5.00 (included in perl5.001n) October 22, 1995 by Andreas Koenig

Had to create directory ... unexpectedly warning fixed which appeared
from time to time in MM4.23

Fixed a couple of this typo: MakerMaker (note the extra "r"). The
typos were so consistent, that 4.23 didn't show wrong behaviour with
them.

Manpage seperator for OS2 set to "." according to Ilya's suggestion.

Tim's method_mover from one into another package deployed. The object
associated with a Makefile.PL now gets blessed into a totally
different package than MY. The name of that package is not part of the
interface. Currently we have a magic symbol counter to find a unique
name.

Dropped runsubdirpl and $(SUBDIR_MAKEFILE_PL_ARGS). Makefiles in
subdirectories are now written during the run of the top level
Makefile.PL. Objects in the subdirectories have a pointer to the
parent object, this should be good enough. I kept, of course, the
runsubdirpl subroutine, so older Makefiles calling it will still build
the extension with the old Makefile.

I did not follow Tim's suggestion to have a PRE- and POST-CONFIG
subroutine. One CONFIGURE subroutine should be enough. The authors
have full access to $self during the run via MY:: subroutines, so they
do not need any further subroutines. The reason, why I have the
CONFIGURE subroutine is that I do not want the Makefile.PL to run
anything which is not controllable from MakeMaker. The reason why I
didn't change the name to PRE-CONFIG is, that Graham Barr already uses
the CONFIGURE attribute.

Moved two apearances of 'if $Is_VMS' to the MM_Unix section, so
Charles can override them in MM_VMS, and I can drop them later.

Deleted a few noisy comments.

Optimized away a lot of output to the Makefile for PM-only extensions.

$SIG{__WARN__} filters "Use of uninitialised variable", AND the
embarrassed piece of code that initialized any attribute to "", just
to avoid warnings, is gone. This pays in the needs_linking subroutine,
which may return 0 and 1 after the first call to it according to the
definedness of $self-E<gt>{NEEDS_LINKING}.

Eliminated $_ wherever possible. It IS A SERIOUS BUG: using $_ when
you also chdir, you run into problems with broken filehandles, and
other random variables. If you want a version of MakeMaker that proofs
this bug, let me know, I have it in my RCS.

NEEDS_LINKING is now an attribute that may be set by the author. If
not set, MM will definitely figure out the correct value for this
variable, even if the author says linkext=>{LINKTYPE=>''} as in the
Filter module. MM queries depth first all the subdirectory objects,
then sets this variable for later perusal. The speedup for setting the
variable is neglectable, I suppose.

Documentation updated.

Patched minimod.PL to disable duplicate bootstraps for single packages.

Introduced HAS_LINK_CODE which acts differently than
NEEDS_LINKING. The latter queries subdirectory object, the former just
checks the current object. Without this hook 'make perl' tried to
produce a `pwd`.so or `pwd`.a file.

=head2 v4.23 October 20, 1995 by Andreas Koenig

INST_ARCHLIB now defaulting to ./blib/<archname> to make cross-platform
development possible without symlinks.

manpages are installed exactly as Tom Christiansen wants them (I think).

Cleaned up code to be more uniform. grouped subroutines close to the
order they usually are run. Moved all code which is run during
'require' to the front of the packages.

$SIG{__WARN__} filters "Use of uninitialised variable", because XXX

The C compiler call gets an extra -DVERSION=... argument

local($\)="\n" dropped and replaced by explicit "\n"

Cross-platform building was also broken by ./extralibs.ld, which was a
concatenation of all extralibs.ld files for the current
architecture. Renamed this file to $(INST_ARCHAUTODIR)/extralibs.all.

Rechecked for long lines. Should all have reasonable length now.

=head2 v4.22 October 16, 1995 by Andreas Koenig

Ilya's big OS2 patch integrated. All tests successful

=head2 v4.21 October 16, 1995 by Andreas Koenig

WriteMakefile() now is a wrapper function that really contains

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

with flush() actually writing the Makefile, and new() creating a
Makefile object which is an array of strings. This MakeMaker should
make it possible to analyze existing modules *without* writing a
Makefile by redefining flush() to a null operation.

I haven't played with this new feature. Main interest was to provide
full backwards compatibility before extending the idea. I have
included a trivial script, run.multi, that compiles every module it
finds below the current directory. On my irix 5.3 system I could prove
full backwards compatibility for 27 currently available modules.

=head2 v4.20 October 1995, by Andreas Koenig

Replaced the system calls to 'cp' or 'ln' in ExtUtils::Manifest with
perl routines.

Integrated chmod code by Tye McQueen, so 'make dist' takes care of
permissions: if DIST_CP is 'cp', all permissions are handled like
'a+rX-w,go-w'. But if DIST_CP is set to 'ln', then we respect the
permissions for the user and chmod to 'a+r,go-w+X'.

=head2  v4.19 October 1995, by Dean Roehrich, Kenneth Albanowski, and Andreas Koenig

Introduced support for TYPEMAP files.

Finally the man pages get installed. Manpages are generated twice
just like everything else. Once when we run make (into
./blib/man/man3) and once when we call make install (into
INSTALLMAN3DIR). This is actually better for testing. Makefiles do
not have dependency declarations, because in most cases they contain
colons in their name, and make(1) will barf at those.

'make test' now prints 'no tests available'.

=head2 v4.18 August 1995, by Andreas KE<ouml>nig

ExtUtils::MMTools, a new module to hold utility functions that really
belong to some other packages. Currently only neatvalue() and lsdir()
are there, but find_perl, catdir, catfile, nicetext are candidates as
well.

Beautified the pod section of ExtUtils::Manifest.

CVS and RCS directories are pruned now, so they are not copied to ./blib

$VERSION and $Version now coexist for a while.

Two workarounds against dec-osf make bug that interpreted .PRECIOUS:
as a real target. (1) introduced a makemakerdflt: target and (2) added
the explicit argument "all" in the recursive call to make.

Outcommented .NO_PARALLEL: Please test heavily with parallel makes
(C<-j> option to GNU make).

Added a PERL_DL_NONLAZY=1 before all calls of test scripts.

Added PREFIX attribute. Works like prefix in Configure. (Does it?)

Two new files in the distribution, Changes and Todo, reduce the
manpage for the casual reader.

Improved the documentation for AFS users.

find_perl() now accepts absolute paths as arguments for perl binaries,
and $^X is now added to the names of potential perl binaries when we
call find_perl(). Yes, $^X is not portable, but the find_perl routine
is paranoid enough, and will not accept some $PATH/$^X program that is
not a perl binary.

Static links will not try anymore to link in an object file like
blib/auto/Filter/Filter.a when there are no XS or C files.

Static links for nontrivial modules are now evaluated in a lazy
mode. If MakeMaker detects the existence of subdirectories, the
MAP_TARGET is designed to run a makeaperl-like perl script that writes
a second makefile and runs make upon it.

Introduced the ancient writeMakefile(), nowadays a dummy routine that
dies with a (hopefully polite) message.

Installation directories now are created if they are not already there.

Removed the code that deleted old *.ix and *.al files in INSTALLARCHLIB.

Inserted a C<-I$(PERL_ARCHLIB)> in some places before a C<-I$(PERL_LIB)>.

=head2 v4.17 June 1995, by Andreas Koenig

Moved $Attrib_help to the pod section and added a function to extract
it from there. Reformatted it on this occasion. This is currently the
only way to have something in both the pod and the code, it might be a
performance hit, but it's certainly a documentation boost (is that
English?)

Following a recommendation from Ilya: the message "Now you must rerun
make" is more verbose AND ornamented now.

Also Ilya's idea: 'make disttest' target (see the pod section for details)

Included patches by Charles Bailey for MakeMaker.pm and Manifest.pm
to improve VMS support.

Peter van Heusden's patch for CHMOD on directories is also in.

Added an inst_pm target which is just a dummy for installing all
*.pm files.

Added the PREREQ attribute to enable the determination of a
sequence. But it's not yet used in the code. Please add dependencies
to your Makefile.PLs now. It will help us in the future.

Added a CONFIGURE attribute which points to a CODE
reference. Extension writers are requested to do all their
initializing within that subroutine. The subroutine should return a
hash reference. The hash may contain further attributes, e.g. {LIBS
=E<gt> ...}, that have to be determined by some evaluation method.

Fixed the determination of the hintsfile for this system. Should now
be Configure compatible.

Added 'all' to the recursive make(1) call in the install target to
(hopefully) work around the bug in dec_osf's make.

Dropped the CHMOD 644 on PM_FILES, instead set umask to 0 for the copy
operation to preserve the permissions.

Tuned down the warning message if libperl.a is not found.

=head2 v4.16 (included in perl5.001m) June 18, 1995, by Tim Bunce

Split test: target into test_static: and test_dynamic: with automatic
selection based on LINKTYPE. The test_static: target automatically
builds a local ./perl binary containing the extension and executes the
tests using that binary. This fixes problems that users were having
dealing with building and testing static extensions. It also simplifies
the process down to the standard: make + make test.

MakeMaker no longer incorrectly considers a perlmain.c file to be part
of an extensions source files. The map_clean target is now invoked by
clean not realclean and now deletes MAP_TARGET but does not delete
Makefile (since that's done properly elsewhere).

Since the staticmake section defines macros that the test target now
needs the test section is written into the makefile after the
staticmake section.  The postamble section has been made last again, as
it should be.

=head2 v4.15 (included in perl5.001L) June 6, 1995, by Andreas Koenig

Add C<-I$(PERL_ARCHLIB) -I$(PERL_LIB)> to calls to xsubpp.

=head2 v4.14 June 5, 1995, by Andreas Koenig

Reintroduces the LD_RUN_PATH macro. LD_RUN_PATH is passed as an
environment variable to the ld run. It is needed on Sun OS, and does
no harm on other systems. It is a colon seperated list of the
directories in LDLOADLIBS.

=head2 v4.12/4.13 by Andreas Koenig

"Please notify perl5-porters" message is now accompanied by
Config::myconfig().

(Manifest.pm) Change delimiter for the evaluation of the regexes from
MANIFEST.SKIP to from "!" to "/". I had overlooked the fact, that ! no
has a meaning in regular expressions.

Disabled the new logic that prevents non-standard extensions from
writing to PERL_SRC/lib to give Andy room for 5.001f.

Added a Version_check target that calls MakeMaker for a simple Version
control function on every invocation of 'make' in the future. Doesn't
have an effect currently.

Target dist is still defaulting to tardist, but the level of
indirection has changed. The Makefile macro DIST_DEFAULT takes it's
place. This allows me to make dist dependent from whatever I intend as
my standard distribution.

Made sure that INST_EXE is created for extensions that need it.

4.13 is just a cleanup/documentation patch. And it adds a MakeMaker FAQ :)

=head2 v4.11 May 19 1995 by Andreas Koenig

MANIFEST.SKIP now contains only regular expressions. RCS directories
are no longer skipped by default, as this may be configured in the
SKIP file.

The manifest target now does no realclean anymore.

I_PERL_LIBS depreciated (no longer used). (unless you speak up, of
course)

I could not justify that we rebuild the Makefile when MakeMaker has
changed (as Kenneth suggested). If this is really a strong desire,
please convince me. But a minor change of the MakeMaker should not
trigger a 60 minutes rebuild of Tk, IMO.

Broken out extliblist into the new module ExtUtils::Liblist. Should
help extension writers for their own Configure scripts. The breaking
into pieces should be done now, I suppose.

Added an (experimenta!!) uninstall target that works with a
packlist. AutoSplit files are not yet in the packlist. This needs a
patch to AutoSplit, doesn't it? The packlist file is installed in
INST_ARCHAUTODIR/.packlist. It doesn't have means to decide, if a file
is architecture dependent or not, we just collect as much as we can
get. C<make -n> recommended before actually executing. (I leave this
target undocumented in the pod section). Suggestions welcome!

Added basic chmod support. Nothing spectacular. *.so and *.a files get
permission 755, because I seem to recall, that some systems need
execute permissions in some weird constellations. The rest becomes
644. What else do we need to make this flexible?

Then I took Tim's word serious: no bloat. No turning all packages into
perl scripts. Leaving shar, tar, uu be what they are... Sorry,
Kenneth, we still have to convince Larry that a growing MakeMaker
makes sense :)

Added an extra check whenever they install below the perl source tree:
is this extension a standard extension? If it is, everything behaves
as we are used to. If it is not, the three INST_ macros are set to
./blib, and they get a warning that this extension has to be
installed manually with 'make install'.

Added a warning for targets that have a colon or a hashmark within
their names, because most make(1)s will not be able to process them.

Applied Hallvard's patch to ~user evaluation for cases where user does
not exist.

Added a ci target that checks in all files from the MANIFEST into rcs.

=head2 v4.100 May 10 1995 by Andreas Koenig

Broken out Mkbootstrap to make the file smaller and easier to manage,
and to speed up the build process.

Added ExtUtils::Manifest as an extra module that is used to streamline
distributions. (See pod section I<distribution support>).

Added a VERSION_SYM macro, that is derived from VERSION but all C<\W>
characters replaced by an underscore.

Moved the whole documentation below __END__ for easier maintanance.

linkext =E<gt> { LINKTYPE =E<gt> '' } should work now as expected.

Rechecked the use of INST_LIB, INST_ARCHLIB, and INST_EXE from the
perspective of an AFS user (thanks to Rudolph T Maceyko for the
hint). With full backward compatiblity it is now possible, to set
INSTALLPRIVLIB, INSTALLARCHLIB, and INSTALLBIN either with 'perl
Makefile.PL' or with 'make install'. A bare 'make' ignores these
settings.  The effect of this change is that it is no longer
recommended to set the INST_* attributes directly, although it doesn't
hurt, if they do so. The PASTHRU variables (now PASTHRU1 and PASTHRU2)
are fully aware of their duty: the INST_* attributes are only
propagated to runsubdirpl, not to 'cd subdir && make config' and 'cd
subdir && make all'.

Included Tim's "Unable to locate Perl library" patch.

Eliminated any excess of spaces in the $old/$new comparison in
const_cccmd().

Added a prompt function with usage $answer = prompt $message, $default.

Included Tim's patch that searches for perl5 and perl$] as well as
perl and miniperl.

Added .NO_PARALLEL for the time until I have a multiple cpu machine
myself :)

Introduced a macro() subroutine. WriteMakefile("macro" =E<gt> { FOO
=E<gt> BAR }) defines the macro FOO = BAR in the generated Makefile.

Rolled in Tim's patch for needs_linking.

writedoc now tries to be less clever. It was trying to determine, if a
perllocal.pod had to be created or appended to. As we have now the
possibility, that INSTALLARCHLIB is determined at make's runtime, we
cannot do this anymore. We append to that file in any case.

Added Kenneth's pod installation patch.

=head2 v4.094 April 12 1994 by Andy Dougherty

Include Andreas' improvement of $(CC) detection.

=head2 v4.093 April 12 1994 by Andy Dougherty

Rename distclean target to plain dist.  Insert a dummy distclean
target that's the same as realclean.  This is more consistent with the
main perl makefile.

Fix up extliblist() so even bizarre names like libfoo.so.10.0.1
are handled.

Include Tim's suggestions about $verbose and more careful substitution
of $(CC) for $Config{'cc'}.

=head2 v4.093 April 12 1994 by Andy Dougherty

Rename distclean target to plain dist.  Insert a dummy distclean
target that's the same as realclean.  This is more consistent with the
main perl makefile.

Fix up extliblist() so even bizarre names like libfoo.so.10.0.1
are handled.

Include Tim's suggestions about $verbose and more careful substitution
of $(CC) for $Config{'cc'}.

=head2 v4.091 April 3 1995 by Andy Dougherty

Another attempt to fix writedoc() from Dean Roehrich.

=head2 v4.09 March 31 1995 by Andreas Koenig

Patches from Tim (/usr/local/lib/perl5/hpux/CORE/libperl.a not found
message eliminated, and a small makeaperl patch).

blib now is a relative directory (./blib).

Documentation bug fixed.

Chdir in the Makefile always followed by "&&", not by ";".

The output of cflags is no longer directed to /dev/null, but the shell
version of cflags is now only called once.

The result of MakeMaker's cflags takes precedence over
shell-cflags.

Introduced a $(PASTHRU) variable, that doesn't have much effect yet,
but now it's easier to add variables that have to be passed to
recursive makes.

'make config' will now always reapply the original arguments to the
'perl Makefile.PL'.

MKPATH will be called only once for any directory (should speed up Tk
building and installation considerably).

"Subroutine mkbootstrap redefined" message eliminated. It was
necessary to move &mkbootstrap and &mksymlists from @EXPORT to
@EXPORT_OK.

C<*.PL> files will be processed by C<$(PERL)>.

Turned some globals into my() variables, where it was obvious to be an
oversight.

Changed some continuation lines so that they work on Solaris and Unicos.

=head2 v4.086 March 9 1995 by Andy Dougherty

Fixed some AIX buglets.  Fixed DLD support for Linux with gcc 2.6.2.

=head2 v4.08 - 4.085  February 14th-21st 1995 by Andreas Koenig

Introduces EXE_FILES and INST_EXE for installing executable scripts 
and fixes documentation to reflect the new variable.

Introduces the automated documentation of the installation history. Every
  make install
and
  make inst_perl
add some documentation to the file C<$installarchlib/perllocal.pod>.
This is done by the writedoc() routine in the MM_Unix class. The
documentation is rudimentary until we find an agreement, what 
information is supposed to go into the pod.

Added ability to specify the another name than C<perl> for a new binary.

Both C<make perl> and C<makeaperl> now prompt the user, how to install
the new binary after the build.

Reduced noise during the make.

Variable LIBPERL_A enables indirect setting of the switches -DEMBED,
-DDEBUGGING and -DMULTIPLICITY in the same way as done by cflags.

old_extliblist() code deleted, new_extliblist() renamed to extliblist().

Improved algorithm in extliblist, that returns ('','','') if no
library has been found, even if a -L directory has been found.

Fixed a bug that didn't allow lib/ directory work as documented.

Allowed C<make test TEST_VERBOSE=1>

=head2 v4.061 February 12th 1995 By Andreas Koenig

Fixes of some my() declarations and of @extra computing in makeaperl().

=head2 v4.06 February 10th 1995 By Andreas Koenig

Cleaning up the new interface. Suggestion to freeze now until 5.001.

=head2 v4.05 February 8th 1995 By Andreas Koenig

When searching for static extensions makeaperl() now ignores
inexistent directories. Updated documentation (check_hints() now uses
eval instead of running a shell script)

=head2 v4.04 Februeary 5th 1995 By Andreas Koenig

Another VMS patch by Charles Bailey added. Documentation restructured.
ext/util/make_ext minor change. 

All *.pm and *.pl files are now touched when MakeMaker finds
them. This inhibits that make omits their installation in
circumstances, where an older version has recently been built.

installperl: perl.exp now goes into $installarchlib/CORE

New files: lib/File/Path.pm, minimod.PL, perllink, and
vms/ext/MM_VMS.pm while writemain.SH is gone. minimod.PL writes a
trivial module, ExtUtils::Miniperl, which has the writemain function
in it to write perlmain.c files. perllink was not in the 4.01 patch
(which was 0i in fact), but it was introduced in 3.10. It is much
smaller now than it was -- most of its code has gone into minimod.PL
and MakeMaker.

MakeMaker now writes a second Makefile that can be perused to make a
new perl binary from some extensions and some libperl libraries. This
Makefile has most likely to be adjusted to needs by hand, but it's a
quite reasonable starting point. The routines related to the writing
of the Makefile are also exploited by a new makeaperl script, that is
not in the patch, but distributed seperately.

=head2 v4.03 January 30th 1995 By Andreas Koenig

check_hints() now also called within runsubdirpl(). More VMS code
included. Trivial cosmetics.

=head2 v4.02 January 29th 1995 By Andreas Koenig

Enabled the use of the XXX_cflags variable from Config.pm for nested
extensions: to change e.g. the $Config{"ccflags"} variable on the NeXT
for the nTk::pTk extension, say
    nTk__pTk_cflags='ccflags="-posix $ccflags"'
in the hints-file.

Hints may now be put in a hints/*.sh file within the the module's
directory tree. Any *.sh file in that directory acts as if it had been
parsed during the perl build process.

Added O_FILES, which is an array like C_FILES. Done so to add a
dependency O_FILES from H_FILES. This has the effect, that the
extension gets rebuilt after some headerfiles have changed.

Made life easier in some "I've just edited config.sh" situations and
reduce the risk of "MakeMaker is being pedantic" complaints by letting
the Makefile proceed with a warning if Config.pm is out of date (Tim's
suggestion).

$Verbose now passed to the findperl routine, to get debugging output
from there, too.

Make clean now also deletes the ./blib directory.

Added lots of ideas of Charles Bailey that enable VMS support.

=head2 v4.01 January 25th 1995 By Tim Bunce

Changes in the section that deals with PMLIBDIRS: some pm files were
put into INST_LIB instead of INST_LIBDIR.

=head2 v4.00 January 24th 1995 By Tim Bunce

Revised some of the documentation. Changed version number to 4.00 to
avoid problems caused by my earlier poor choice of 3.10!  Renamed PMDIR
to PMLIBDIRS and restructured find code to use inherited MY->libscan.
Added ability to say: "perl Makefile.PL help"  to get help.
Added ability to say: "perl Makefile.PL verbose"  to get debugging.
Added MakeMaker version number to generated Makefiles.

=head2 v3.11 January 24th 1995 By Andreas Koenig

DynaLoader.c was not deleted by clean target, now fixed.
Added PMDIR attribute that allows directories to be named that contain
only *.p[pl] files to be installed into INST_LIB. Added some documentation.

=head2 v3.10 January 23rd 1995 By Tim Bunce

miniperl now given preference when defining PERL. This improves the
reliability of ext/*/Makefile's recreating themselves if needed.
$(XS), $(C) and $(H) renamed to XS_FILES C_FILES and H_FILES.
INST_STATIC now INST_ARCHLIBDIR/BASEEXT.a (alongside INST_DYNAMIC).
Static lib no longer copied back to local directory.

=head2 v3.9 January 19th 1995 By Tim Bunce

Added ~ processing to parse_args to allow perl Makefile.PL X=~/path.
Added warning about LDTARGET to LDFROM attribute name change.
Fallback INST_ARCHLIB is INST_LIB, or INST_LIB/$archname if it exists.
Tightened up dependency checking of Makefile against config.sh etc.
INST_STATIC is now INST_ARCHLIBDIR/BASEEXT.a for later make-a-perl.
AUTOSPLITFILE tidied up (AutoSplit patch included in this version).
MKPATH now skips inner loop if directory already exists.
The dynamic_lib section was revised with explicit dec_osf support added.
Make clean now renames Makefile to Makefile.old (make_ext also patched).
The large initialize function has been split into smaller pieces.
Added I_PERL_LIBS to simplify -I paths for PERL_*LIB.

=head2 v3.8 January 9th By Andreas Koenig and Tim Bunce

- Introduces ./blib as the directory, where the ready-to-use module
will live for the time of the building process if PERL_SRC/lib is not
available. ./blib is turned into an absolute pathname and gets passed
to subdirectories when writing the Makefile.

- INST_ARCHLIB will now be set equal to INST_LIB if we cannot
determine it with the methods near line 620 (in the intialize
subroutine).

- Introduced the install subroutine, that calls another make
recursively with INST_LIB, and INST_ARCHLIB set according to the local
conventions.

- Since version 3.6 all *.al and *.ix files are installed into
$installprivlib. In perl5.000 they were installed into
$installarchlib. Version 3.8 takes precautions to delete old *.{al,ix}
files that are left over in $installarchlib. Installperl is also
patched to both delete old *.al and *.ix files, that were put into
$installarchlib, and to install them properly from now on.

- h2xs is patched by Dean Roehrich to reintroduce the C<-A> option and
reconsiders the use of the AutoLoader. Also podifies h2xs.

- Patches to {DB_File,Fcntl,GDBM_File,POSIX,Socket}.pm, eliminating
AutoLoader from @ISA (by Dean Roehrich).

- A patch to AutoSplit.pm makes sure, the target directory of the
split exists.

- installperl now installs all *.h files into $installarchlib/CORE.

- added a simple help function

- AutoSplit:

	Turned two constants into package variables.
	Modified the default for &autosplit to be $CheckModTime=1.
	Added warning and comment if auto dir does not exist.
	Enhanced AutoLoader check (POSIX.pm was not getting AutoSplit!)
	Improved logging if $Verbose>=2.

- MakeMaker:

	EXPORT_OK lsdir(), it's very handy.
	Deleted much of the early revision history.
	Changed LDTARGET (bad name) to LDFROM (better, but not great :)
	INST_ARCHLIB for ./blib found via mapping from INST_LIB ./blib
	  (this allows error message if INST_ARCHLIB still undefined)
	Added optional regex filter to &lsdir.
	Added cute auto handling of a ./$(BASEEXT)/*.pm directory as
	  per recent messages with Nick re ext/nTk/nTk/Text.pm
	Added NOOP, RM_F, RM_RF, TOUCH, CP to %att.
	NOOP is now "" on Unix, "<tab>" caused problems (see makefile section)
	RM_F etc now expanded when Makefile written.
	Old AUTOSPLITLIB definition deleted.
	See new dynamic_lib section for new ARMAYBE handling.
  	install section now uses $(INSTALLPRIVLIB) because on some
	  systems INSTALLPRIVLIB != PRIVLIB (ditto for archlib)

=head2 v3.7 December 30th By Tim Bunce

Most, if not all, the MakeMaker support for no perl source is now
included. Recent ld and mkbootstrap patches applied.  -lX11_s suffix
fix applied.

Also contained patches to Makefile.SH, ext/DynaLoader/DynaLoader.pm,
ext/util/make_ext, and h2xs

=head2 v3.6 December 15th 1994 by Tim Bunce.

Added C and H attributes and corresponding macros. These default to the
list of *.c and *.h files in the directory. C also includes *.c file
names corresponding to any *.xs files in the directory. ARMAYBE should
now be specified as an attribute of the dynamic_lib section. The installpm
section now accepts a SPLITLIB attribute. This defaults to '$(INST_LIB)'.
Improved automatic setting of INST_ARCHLIB. Newlines in OBJECT now translate
into <space><backslash><newline><tab> for better formatting. Improved
descriptive comments for EXTRALIBS, LDLOADLIBS and BSLOADLIBS. Bootstrap
files are now always installed - (after a small patch) the DynaLoader will
only read a non-empty bootstrap file. Subdirectory dependencies have
been improved. The .c files produced from .xs files now depend on
XSUBPPDEPS (the typemaps).

=head2 v3.5 December 15th 1994 By Tim Bunce

Based primarily on v3.3. Replaced ARCH_LIB with INST_ARCHLIB, which
defaults to INST_LIB, because the rest of perl assumes that ./lib
includes architecture dependent files. Ideally an ./archlib should
exist, that would be more consistent and simplify installperl.
Added linkext and $(INST_PM) dependencies to all: target. The linkext
target (and subroutine) exists solely to depend on $(LINKTYPE). Any
Makefile.PLs using LINKTYPE => '...' where '...' is not 'static' or
'dynamic' should be changed to use 'linkext' => { LINKTYPE => '...' }.

Automatic determination of PERL_* and INST_* has been revised.  The
INST_* macros have INST_ARCH* and INST_*DIR variants. The ARCH variants
point to the architecture specific directory and the *DIR variants
include the module specific subdirectory path.  So INST_AUTO is now
INST_AUTODIR and an INST_ARCHAUTODIR has also been defined.

An AUTOSPLITFILE tool macro has been defined which will AutoSplit any
named file into any named auto directory. This replaces AUTOSPLITLIB.
MKPATH now accepts multiple paths. The paths INST_LIBDIR,
INST_ARCHLIBDIR, INST_AUTODIR and INST_ARCHAUTODIR are made by the
config: target. A new ext.libs mechanism has been added. installpm has
been split and now calls installpm_x per file.  A section attribute
mechanism has been added and skip cross-checking has been moved into a
skipcheck function. MakeMaker now uses Cwd and File::Basename modules.

=head2 v3.4 December 7th 1994 By Andreas Koenig and Tim Bunce

Introduced ARCH_LIB and required other perl files to be patched.

=head2 v3.3 November 27th 1994 By Andreas Koenig

Bug fixes submitted by Michael Peppler and Wayne Scott. Changed the
order how @libpath is constructed in C<new_extliblist()>. Improved
pod-structure. Relative paths in C<-L> switches to LIBS are turned into
absolute ones now.  Included VMS support thanks to submissions by
Charles Bailey.  Added warnings for switches other than C<-L> or C<-l>
in new_extliblist() and if a library is not found at all. Changed
dependency distclean:clean to distclean:realclean. Added dependency
all->config. ext.libs is now written without duplicates and empty
lines.  As old_extliblist() and new_extliblist() do not produce the
same anymore, the default becomes new_extliblist(), though the warning
remains, whenever they differ. The use of cflags is accompanied by a
replacement: there will be a warning when the two routines lead to
different results, but still the output of cflags will be used.
Cosmetic changes (Capitalize globals, uncapitalize others, insert a
C<:> as default for $postop). Added some verbosity.

=head2 v3.2 November 18th 1994 By Tim Bunce

Fixed typos, added makefile section (split out of a flattened
perldepend section). Added subdirectories to test section. Added -lm
fix for NeXT in extliblist. Added clean of *~ files. Tidied up clean
and realclean sections to produce fewer lines. Major revision to the
const_loadlibs comments for EXTRALIBS, LDLOADLIBS and BSLOADLIBS.
Added LINKTYPE=\$(LINKTYPE) to subdirectory make invocations.
Write temporary Makefile as MakeMaker.tmp. Write temporary xsubpp
output files as xstmp.c instead of tmp. Now installs multiple PM files.
Improved parsing of NAME=VALUE args. $(BOOTSTRAP) is now a dependency
of $(INST_DYNAMIC). Improved init of PERL_LIB, INST_LIB and PERL_SRC.
Reinstated $(TOP) for transition period.  Removed CONFIG_SH attribute
(no longer used). Put INST_PM back and include .pm and .pl files in
current and lib directory.  Allow OBJECT to contain newlines. ROOTEXT
now has leading slash. Added INST_LIBDIR (containing ROOTEXT) and
renamed AUTOEXT to INST_AUTO.  Assorted other cosmetic changes.
All known problems fixed.

=head2 v3.1 November 11th 1994 by Tim Bunce

Fixed AIX dynamic loading problem for nested modules. Fixed perl
extliblist to give paths not names for libs so that cross-check works.
Converted the .xs to .c translation to a suffix rule. Added a .xs.o
rule for dumb makes.  Added very useful PM, XS and DIR attributes. Used
new attributes to make other sections smarter (especially clean and
realclean). Make clean no longer deletes Makefile so that a later make
realclean can still work. Fixed all known problems.  Write temporary
Makefile as Makefile.new and rename once complete.

=head2 v3.0, October/November 1994; by Tim Bunce.

Major reorganisation. Fixed perl binary locating code. Replaced single
$(TOP) with $(PERL_SRC), $(PERL_LIB) and $(INST_LIB).  Restructured
code.  Consolidated and/or eliminated several attributes and added
argument name checking. Added initial pod documentation. Made generated
Makefile easier to read. Added generic mechanism for passing parameters
to specific sections of the Makefile. Merged in Andreas's perl version
of Andy's extliblist.

=head2 v2, September 1994; by Tim Bunce.

Use inheritance to implement overriding.  Methods return text so
derived methods can edit it before it's output.  mkbootstrap() now
executes the *_BS file in the DynaLoader package and automatically adds
dl_findfile() if required. More support for nested modules.

=head2 v1, August 1994; by Andreas Koenig.

Initial version. Based on Andy Dougherty's Makefile.SH work.