
		     Perl5 Metaconfig Units

	     Copyright (c) 1996-1998, Andy Dougherty
	     Copyright (c) 1999-2006, H.Merijn Brand
			All rights reserved.

These units are the ones I used to build Configure and config_h.SH
in the Perl5 distribution.

The Configure script and config_h.SH file in the Perl distribution are
generated by a program called metaconfig.  To run metaconfig, you will
need the full dist 3.0 distribution, maintained by Raphael Manfredi.
As of this writing, the current version is dist3.0, patchlevel 70.
Dist version dist-3.0@70.tar.gz is available on CPAN (the Comprehensive
Perl Archive Network) as
<http://www.perl.com/perl/CPAN/authors/id/RAM/dist-3.0@70.tar.gz>.

Instructions:

1.  Unpack the full perl5 sources.  Execute the following command

	chmod +w Configure config_h.SH Porting/Glossary Porting/config*

2.  Unpack the archive containing this file in the perl5 source
    directory.  This will create a directory 'U' under the perl5
    sources.  That directory will contain the metaconfig units for perl5.
    This will also create two files in the perl5 source tree:
    MANIFEST.new and .package.

3.  Apply any patches to perl in the perl_patches/ directory.
    (This may well be empty.)

4.  Obtain and install dist-3.0pl70.

4.  Apply any patches to dist under the dist_patches subdirectory.

5.  From your main perl5 source directory, run packinit to
    regenerate the .package file.  IMPORTANT:  Change the name and
    address of the maintainer to your own name and address.  I don't
    want bug reports intended for you coming to me.

6.  From your main perl5 source directory, run

	metalint

    and repair every failure it reports.

7.  From your main perl5 source directory, run

	metaconfig -m

8.  Edit U/mkglossary and/or U/mkgloss.pl to point to your dist-3.0pl70
    location.  (See comments at the top.)

9.  Run the U/mksample script to update the contents of the Porting/
    subdirectory, or run all parts by hand. (see README)

10. Let me know about any changes, corrections, or enhancements.

Things to watch out for:

1.  The Configure in 5.005 is a hand-patched version of that supplied
    with perl5.004_74 or so.  Most of the patches had to do with
    supporting MPE/iX and EBCDIC systems.  I have re-integrated most
    of the changes back into metaconfig, but I don't really undertand
    why MPE/iX needed some of the patches, so I may have missed
    something important.  I did try to flag questionable changes in
    the individual units.
    The Configure as generated in the 5.9.x branch leading towards
    5.10, is also used exactly as is without changes in the 5.8.x
    and 5.6.x branches, so do not remove support for features that
    are availabvle in those branches, but are removed from devel (e.g.
    perl5005threads).

2.  Future support of better random number generators should probably
    start with the randfunc.U unit included here.  It's currently
    broken, but well commented and probably a good place to start.

Descriptions:

The units and other related files have been broken up into the following
directories:

acl/
    This is an old patch to begin to detect and use ACL (access
    control list) file protection schemes.

compline/
    These are similar to the standard units, but I have modified them
    to have a more uniform compile command line, usually using the new
    Compile.U unit.  I have submitted these for inclusion into the
    regular dist distribution.  (The ccflags.U unit is actually
    perl-specific since it mentions -DDEBUGGING and -DPOSIX_SOURCE,
    but that's the only place it is perl-specific.)

dist_patches/
    These are patches to dist that must be applied before it is built
    and installed.  I have submitted these for inclusion in the
    regular dist distribution.

modified/
    These are modified versions of the standard units.  Also included in
    this directory are new units that are clearly derived from existing
    units.  I have submitted these for inclusion in the regular dist
    distribution.

perl/
    These are specific to perl.  Some are heavily derived from
    original dist units, and are marked as such.  Others are original.

perl_patches/
    These are patches to the perl source.  This directory
    should ordinarily be empty, but there may have been drift between
    the standard version of perl and the one associated with these
    units.

protos/
    These are units modified to use the new Hasproto.U or Protochk.U
    units to check for prototypes.  I have submitted these for inclusion
    into the regular dist distribution.

target/
    This is the very, very beginning of cross-compiler support.
    It doesn't work yet, and many standard units will need
    modification.

typedefs/
    These are standard units modified to use the modified Typedef.U
    unit to check for typedefs.  (The modified Typdef.U includes a
    function to avoid unnecessary prompts if the typdef being searched
    for exists.)  I have submitted these for inclusion into the
    regular dist distribution.

threads/
    These are specific to threading perl.

Copyright Information:

Unless otherwise indicated, the files contained in this
distribution are:

    Copyright (c) 1996-1998, Andy Dougherty

The following licensing terms apply to all files contained in
this distribution:

You may distribute the files contained in this distribution
under the terms of either

    a) the "Artistic License" which comes with Perl, or

    b) the "Artistic License" which comes with dist, or

    c) the GNU General Public License as published by the Free
    Software Foundation; either version 1, or (at your option) any
    later version (see the file "Copying" that comes with the
    Perl distribution).

Which one to use is your choice.

The units in the "modified" directory have been derived from units
associated with the metaconfig program of Raphael Manfredi's "dist"
distribution.  These units list Raphael Manfredi as the Copyright holder.
dist is distributed under a modified version of the Perl Artistic License.
Clause 7 of this modified license as contained in dist-3.0-pl60 provides:

    7. You may reuse parts of this Package in your own programs, provided
    that you explicitly state where you got them from, in the source code
    (and, left to your courtesy, in the documentation), duplicating
    all the associated copyright notices and disclaimers. Besides
    your changes, if any, must be clearly marked as such. Parts reused
    that way will no longer fall under this license if, and only if,
    the name of your program(s) have no immediate connection with the
    name of the Package itself or its associated programs.  You may then
    apply whatever restrictions you wish on the reused parts or choose
    to place them in the Public Domain--this will apply only within the
    context of your package.

In accordance with this clause, the versions of these units
contained here are made available under the same terms as the
rest of the units.

If you have any questions about the use of these units or about
the differences between these units and the standard versions, please
feel free to ask.

    Andy Dougherty			doughera@lafayette.edu
    Dept. of Physics
    Lafayette College
    Easton, PA  18042-1782
