v5.17 January 21, 1996 by Andreas Koenig and Charles Bailey

Included a big patch by Charles Bailey for mksymlists(). This patch intruduces a Mksymlists.pm file.

Included a patch by Roderick Schertler for Liblist.pm for DGUX.

Added PREFIX to PASTHRU (requested by Ilya).

Added a ->depend method in the MM_Unix package that acts just like the macro method and lets the user add any dependency needed. (Suggestion by Dean Roehrich and Tim Bunce).

Renamed the MM_Unix package to ExtUtils::MM_Unix to keep the namespace clean. Changed MM_VMS accordingly. (Suggestion by Charles)

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" }

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.

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.

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.

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)

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 -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 -noprototype argument to xsubpp.

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.

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.

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.

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)

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

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

v5.03 November 4, 1995 by Andreas Koenig

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

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.

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.

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.

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

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

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.

v4.22 October 16, 1995 by Andreas Koenig

Ilya's big OS2 patch integrated. All tests successful

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.

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

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

v4.18 August 1995, by Andreas Kö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 (-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 -I$(PERL_ARCHLIB) in some places before a -I$(PERL_LIB).

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 => ...}, 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.

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.

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

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

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.

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 :)

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

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 distribution support).

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

Moved the whole documentation below __END__ for easier maintanance.

linkext => { LINKTYPE => '' } 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" => { FOO => 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.

v4.094 April 12 1994 by Andy Dougherty

Include Andreas' improvement of $(CC) detection.

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'}.

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'}.

v4.091 April 3 1995 by Andy Dougherty

Another attempt to fix writedoc() from Dean Roehrich.

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.

*.PL files will be processed by $(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.

v4.086 March 9 1995 by Andy Dougherty

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

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 $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 perl for a new binary.

Both make perl and 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 make test TEST_VERBOSE=1

v4.061 February 12th 1995 By Andreas Koenig

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

v4.06 February 10th 1995 By Andreas Koenig

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

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)

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.

v4.03 January 30th 1995 By Andreas Koenig

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

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.

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.

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.

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.

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.

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.

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 -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)

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

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

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.

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

Introduced ARCH_LIB and required other perl files to be patched.

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 new_extliblist(). Improved pod-structure. Relative paths in -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 -L or -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 : as default for $postop). Added some verbosity.

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.

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.

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.

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.

v1, August 1994; by Andreas Koenig.

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