This is a live mirror of the Perl 5 development currently hosted at https://github.com/perl/perl5
Remove -DUSE_C_BACKTRACE part: from e849841dca2a8b1111999
[metaconfig.git] / U / README
index 9931bc2..c8033f4 100644 (file)
--- a/U/README
+++ b/U/README
@@ -2,92 +2,93 @@
                     Perl5 Metaconfig Units
 
             Copyright (c) 1996-1998, Andy Dougherty
+            Copyright (c) 1999-2011, H.Merijn Brand
                        All rights reserved.
 
-These units are the ones used to build Configure and config_h.SH
+These units are the ones 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>.
+metaconfig will first look in its standard locations (specified when you 
+installed dist).  It will then recurse through the 'U' subdirectory
+and find any additional "private" units.  Private units override
+standard ones supplied with metaconfig.
 
-Instructions:
+Files in this directory:
 
-1.  Unpack the full perl5 sources.  Execute the following command
+README
+    This file.
 
-       chmod +w Configure config_h.SH Porting/Glossary Porting/config*
+Glossary.patch
+    The standard dist units contain some strings that make pod2man
+    complain.  This patch silences those warnings.  As new units are
+    added and Configure is regenerated, this patch may need more and more
+    'fuzz' to be applied.  It should be freshly regenerated every once
+    in a while. See also mkgloss.pl
 
-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.
+ln-all.pl
+    Re-generate the all/ folder
 
-3.  Apply any patches to perl in the U/perl_patches directory.
-    (This may well be empty.)
+mkglossary
+    A script to regenerate Porting/Glossary.  You have to manually
+    edit the top of the script to point the location of your metaconfig 
+    units.  It is called automatically by 'mksample'. See also mkgloss.pl
 
-4a. Obtain dist-3.0pl70.
+mkgloss.pl
+    A perl script that calls U/mkglossary from the perl source tree, sorts
+    the list of symbols, and applies the patch mentioned in Glossary.patch.
+    When called on its own, redirect the output to a temporary file,  and
+    compare that file to Porting/Glossary before applying.
 
-4b. Apply any patches to dist under the U/dist_patches subdirectory.
+mksample
+    A script to regenerate Porting/config.sh and Porting/config.H.
+    It also calls mkglossary, if necessary.
 
-4c. Install dist.
-
-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
-
-       metaconfig -m
-
-7.  Edit U/mkglossary to point to your dist-3.0pl70 location
-    (See comments at the top.)
-
-8.  Run the U/mksample script to update the contents of the Porting/
-    subdirectory.
-
-9.  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.
-
-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:
+Subdirectories:
 
 The units and other related files have been broken up into the following
-directories:
+directories.
+
+a_dvisory/
+    These are units that have to go first in the generated config_h.SH.
+    A word of explanation:  Configure and config_h.SH are generated from 'Units'
+    (the *.U files).  Files indicate dependencies (using make(1)), and 
+    Configure is built to follow those dependencies.  However, config_h.SH
+    is simply built by putting all the units in alphabetical order and
+    extracting the relevant lines.  (This could be fixed, I suppose, but
+    it wasn't trivial the one time I looked.)
+    The a_dvisory/ directory, then, is a place to put units that need
+    to be early in config_h.SH.  (Most units are self-contained
+    and ought to be able to go anywhere.  However, some things, like 
+    byteorder, need to have the #defines from multiarch available.)
 
 acl/
     This is an old patch to begin to detect and use ACL (access
     control list) file protection schemes.
 
+all/
+    A folder that conveniently holds symbolic links to all the modules
+    that are used to build the current Configure and config_h.SH.
+
 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.)
+    to have a more uniform compile command line, usually using the
+    new Compile.U unit.  (The ccflags.U unit is 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.
+    regular dist distribution.  They have already been applied
+    to the ../dist-3.0at70b directory. 
+
+ebcdic/
+    These are units that had to be specially modified to work under
+    either EBCDIC or ASCII.
+
+installdirs/
+    These are units to handle perl's installation directories and
+    related issues.
 
 modified/
     These are modified versions of the standard units.  Also included in
@@ -95,6 +96,12 @@ modified/
     units.  I have submitted these for inclusion in the regular dist
     distribution.
 
+nullified/
+    These are null units that replace units in the standard
+    distribution.  Typically they are there because some part of the
+    perl source accidentally uses a symbol that metaconfig thinks means we
+    want the corresponding unit.
+
 perl/
     These are specific to perl.  Some are heavily derived from
     original dist units, and are marked as such.  Others are original.
@@ -107,23 +114,22 @@ perl_patches/
 
 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.
+    units to check for prototypes.
 
-target/
-    This is the very, very beginning of cross-compiler support.
-    It doesn't work yet, and many standard units will need
-    modification.
+threads/
+    These are specific to threading perl.
 
 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.
+    for exists.)
 
-threads/
-    These are specific to threading perl.
+Where appropriate, I submitted these units for inclusion into the
+regular dist distribution.  However, since dist is no longer actively
+maintained, and the alternative is for *me* to actively maintain it,
+the units just sit here.
 
 Copyright Information: