Reordering config_h.SH after metaconfig now semi automated
H.Merijn Brand [Wed, 25 May 2005 18:41:52 +0000 (18:41 +0000)]
This will save me *a lot* of manual work

p4raw-id: //depot/perl@24576

Configure
Porting/config_h.pl [new file with mode: 0755]
config_h.SH

index 3e62682..0fac9e9 100755 (executable)
--- a/Configure
+++ b/Configure
@@ -20,7 +20,7 @@
 
 # $Id: Head.U,v 3.0.1.9 1997/02/28 15:02:09 ram Exp $
 #
-# Generated on Sun Apr 24 14:17:04 CEST 2005 [metaconfig 3.0 PL70]
+# Generated on Wed May 25 21:03:27 CEST 2005 [metaconfig 3.0 PL70]
 # (with additional metaconfig patches by perlbug@perl.org)
 
 cat >c1$$ <<EOF
diff --git a/Porting/config_h.pl b/Porting/config_h.pl
new file mode 100755 (executable)
index 0000000..2543b34
--- /dev/null
@@ -0,0 +1,56 @@
+#!/usr/bin/perl
+
+# This script reorders config_h.SH after metaconfig
+# Changing metaconfig is too complicated
+#
+# Copyright (C) 2005-2005 by H.Merijn Brand (m)'05 [25-05-2005]
+#
+# You may distribute under the terms of either the GNU General Public
+# License or the Artistic License, as specified in the README file.
+
+use strict;
+use warnings;
+
+my ($cSH, $ch, @ch, %ch) = ("config_h.SH");
+open $ch, "<$cSH" or die "Cannot open $cSH: $!\n";
+{   local $/ = "\n\n";
+    @ch = <$ch>;
+    close  $ch;
+    }
+
+sub ch_index ()
+{
+    %ch = ();
+    foreach my $ch (0 .. $#ch) {
+       while ($ch[$ch] =~ m{^/\* ([A-Z]\w+)}gm) {
+           $ch{$1} = $ch;
+           }
+       }
+    } # ch_index
+
+my %dep = (
+    # This symbol must be defined BEFORE ...
+    LONGSIZE           => [ qw( BYTEORDER                      ) ],
+    MULTIARCH          => [ qw( BYTEORDER MEM_ALIGNBYTES       ) ],
+    HAS_QUAD           => [ qw( I64TYPE                        ) ],
+    );
+
+my $changed;
+do {
+    $changed = 0;
+    foreach my $sym (keys %dep) {
+       ch_index;
+       foreach my $dep (@{$dep{$sym}}) {
+           print STDERR "Check if $sym\t($ch{$sym}) precedes $dep\t($ch{$dep})\n";
+           $ch{$sym} < $ch{$dep} and next;
+           my $ch = splice @ch, $ch{$sym}, 1;
+           splice @ch, $ch{$dep}, 0, $ch;
+           $changed++;
+           ch_index;
+           }
+       }
+    } while ($changed);
+
+open  $ch, "> $cSH" or die "Cannot write $cSH: $!\n";
+print $ch @ch;
+close $ch;
index 78f262d..0811510 100644 (file)
@@ -728,12 +728,6 @@ sed <<!GROK!THIS! >$CONFIG_H -e 's!^#undef\(.*/\)\*!/\*#define\1 \*!' -e 's!^#un
  */
 #$i_math I_MATH                /**/
 
-/* LIBM_LIB_VERSION:
- *    This symbol, if defined, indicates that libm exports _LIB_VERSION
- *    and that math.h defines the enum to manipulate it.
- */
-#$d_libm_lib_version LIBM_LIB_VERSION         /**/
-
 /* I_MEMORY:
  *     This symbol, if defined, indicates to the C program that it should
  *     include <memory.h>.
@@ -899,47 +893,6 @@ sed <<!GROK!THIS! >$CONFIG_H -e 's!^#undef\(.*/\)\*!/\*#define\1 \*!' -e 's!^#un
  */
 #$i_vfork I_VFORK      /**/
 
-/* INTSIZE:
- *     This symbol contains the value of sizeof(int) so that the C
- *     preprocessor can make decisions based on it.
- */
-/* LONGSIZE:
- *     This symbol contains the value of sizeof(long) so that the C
- *     preprocessor can make decisions based on it.
- */
-/* SHORTSIZE:
- *     This symbol contains the value of sizeof(short) so that the C
- *     preprocessor can make decisions based on it.
- */
-#define INTSIZE $intsize               /**/
-#define LONGSIZE $longsize             /**/
-#define SHORTSIZE $shortsize           /**/
-
-/* MULTIARCH:
- *     This symbol, if defined, signifies that the build
- *     process will produce some binary files that are going to be
- *     used in a cross-platform environment.  This is the case for
- *     example with the NeXT "fat" binaries that contain executables
- *     for several CPUs.
- */
-#$multiarch MULTIARCH          /**/
-
-/* HAS_QUAD:
- *     This symbol, if defined, tells that there's a 64-bit integer type,
- *     Quad_t, and its unsigned counterpar, Uquad_t. QUADKIND will be one
- *     of QUAD_IS_INT, QUAD_IS_LONG, QUAD_IS_LONG_LONG, or QUAD_IS_INT64_T.
- */
-#$d_quad HAS_QUAD      /**/
-#ifdef HAS_QUAD
-#   define Quad_t $quadtype    /**/
-#   define Uquad_t $uquadtype  /**/
-#   define QUADKIND $quadkind  /**/
-#   define QUAD_IS_INT 1
-#   define QUAD_IS_LONG        2
-#   define QUAD_IS_LONG_LONG   3
-#   define QUAD_IS_INT64_T     4
-#endif
-
 /* HAS_ACCESSX:
  *     This symbol, if defined, indicates that the accessx routine is
  *     available to do extended access checks.
@@ -977,6 +930,15 @@ sed <<!GROK!THIS! >$CONFIG_H -e 's!^#undef\(.*/\)\*!/\*#define\1 \*!' -e 's!^#un
 #define OSNAME "$osname"               /**/
 #define OSVERS "$osvers"               /**/
 
+/* MULTIARCH:
+ *     This symbol, if defined, signifies that the build
+ *     process will produce some binary files that are going to be
+ *     used in a cross-platform environment.  This is the case for
+ *     example with the NeXT "fat" binaries that contain executables
+ *     for several CPUs.
+ */
+#$multiarch MULTIARCH          /**/
+
 /* MEM_ALIGNBYTES:
  *     This symbol contains the number of bytes required to align a
  *     double, or a long double when applicable. Usual values are 2,
@@ -988,12 +950,6 @@ sed <<!GROK!THIS! >$CONFIG_H -e 's!^#undef\(.*/\)\*!/\*#define\1 \*!' -e 's!^#un
 #define MEM_ALIGNBYTES $alignbytes
 #endif
 
-/* PERL_RELOCATABLE_INC:
- *     This symbol, if defined, indicates that we'd like to relocate entries
- *     in @INC at run time based on the location of the perl binary.
- */
-#$userelocatableinc PERL_RELOCATABLE_INC               /**/
-
 /* ARCHLIB:
  *     This variable, if defined, holds the name of the directory in
  *     which the user wants to put architecture-dependent public
@@ -1041,6 +997,22 @@ sed <<!GROK!THIS! >$CONFIG_H -e 's!^#undef\(.*/\)\*!/\*#define\1 \*!' -e 's!^#un
 #define BIN "$bin"     /**/
 #define BIN_EXP "$binexp"      /**/
 
+/* INTSIZE:
+ *     This symbol contains the value of sizeof(int) so that the C
+ *     preprocessor can make decisions based on it.
+ */
+/* LONGSIZE:
+ *     This symbol contains the value of sizeof(long) so that the C
+ *     preprocessor can make decisions based on it.
+ */
+/* SHORTSIZE:
+ *     This symbol contains the value of sizeof(short) so that the C
+ *     preprocessor can make decisions based on it.
+ */
+#define INTSIZE $intsize               /**/
+#define LONGSIZE $longsize             /**/
+#define SHORTSIZE $shortsize           /**/
+
 /* BYTEORDER:
  *     This symbol holds the hexadecimal constant defined in byteorder,
  *     in a UV, i.e. 0x1234 or 0x4321 or 0x12345678, etc...
@@ -1910,6 +1882,12 @@ sed <<!GROK!THIS! >$CONFIG_H -e 's!^#undef\(.*/\)\*!/\*#define\1 \*!' -e 's!^#un
  */
 #$d_ldbl_dig HAS_LDBL_DIG      /* */
 
+/* LIBM_LIB_VERSION:
+ *     This symbol, if defined, indicates that libm exports _LIB_VERSION
+ *     and that math.h defines the enum to manipulate it.
+ */
+#$d_libm_lib_version LIBM_LIB_VERSION          /**/
+
 /* HAS_LOCALTIME_R:
  *     This symbol, if defined, indicates that the localtime_r routine
  *     is available to localtime re-entrantly.
@@ -2531,18 +2509,6 @@ sed <<!GROK!THIS! >$CONFIG_H -e 's!^#undef\(.*/\)\*!/\*#define\1 \*!' -e 's!^#un
 #$d_strerror_r HAS_STRERROR_R     /**/
 #define STRERROR_R_PROTO $strerror_r_proto        /**/
 
-/* HAS_STRLCAT:
- *     This symbol, if defined, indicates that the strlcat () routine is
- *     available to do string concatenation.
- */
-#$d_strlcat HAS_STRLCAT                /**/
-
-/* HAS_STRLCPY:
- *     This symbol, if defined, indicates that the strlcpy () routine is
- *     available to do string copying.
- */
-#$d_strlcpy HAS_STRLCPY                /**/
-
 /* HAS_STRTOLD:
  *     This symbol, if defined, indicates that the strtold routine is
  *     available to convert strings to long doubles.
@@ -3167,6 +3133,22 @@ sed <<!GROK!THIS! >$CONFIG_H -e 's!^#undef\(.*/\)\*!/\*#define\1 \*!' -e 's!^#un
  */
 #$d_perl_otherlibdirs PERL_OTHERLIBDIRS "$otherlibdirs"                /**/
 
+/* HAS_QUAD:
+ *     This symbol, if defined, tells that there's a 64-bit integer type,
+ *     Quad_t, and its unsigned counterpar, Uquad_t. QUADKIND will be one
+ *     of QUAD_IS_INT, QUAD_IS_LONG, QUAD_IS_LONG_LONG, or QUAD_IS_INT64_T.
+ */
+#$d_quad HAS_QUAD      /**/
+#ifdef HAS_QUAD
+#   define Quad_t $quadtype    /**/
+#   define Uquad_t $uquadtype  /**/
+#   define QUADKIND $quadkind  /**/
+#   define QUAD_IS_INT 1
+#   define QUAD_IS_LONG        2
+#   define QUAD_IS_LONG_LONG   3
+#   define QUAD_IS_INT64_T     4
+#endif
+
 /* IVTYPE:
  *     This symbol defines the C type used for Perl's IV.
  */
@@ -3331,18 +3313,6 @@ sed <<!GROK!THIS! >$CONFIG_H -e 's!^#undef\(.*/\)\*!/\*#define\1 \*!' -e 's!^#un
  */
 #define Pid_t $pidtype         /* PID type */
 
-/* INSTALL_PREFIX:
- *     This symbol contains the "root" of installation tree for this package.
- *     The program should be prepared to do ~ expansion.
- */
-/* INSTALL_PREFIX_EXP:
- *     This symbol contains the "root" of installation tree for this package
- *     to be used in programs that are not prepared to deal with ~ expansion
- *     at run-time.
- */
-#define INSTALL_PREFIX "$installprefix"                /**/
-#define INSTALL_PREFIX_EXP "$installprefixexp" /**/
-
 /* PRIVLIB:
  *     This symbol contains the name of the private library for this package.
  *     The library is private in the sense that it needn't be in anyone's
@@ -3488,14 +3458,6 @@ sed <<!GROK!THIS! >$CONFIG_H -e 's!^#undef\(.*/\)\*!/\*#define\1 \*!' -e 's!^#un
 #define SITELIB_EXP "$sitelibexp"              /**/
 #define SITELIB_STEM "$sitelib_stem"           /**/
 
-/* USE_SITECUSTOMIZE:
- *    This symbol, if defined, indicates that sitecustomize should
- *    be used.
- */
-#ifndef USE_SITECUSTOMIZE
-#$usesitecustomize     USE_SITECUSTOMIZE               /**/
-#endif
-
 /* Size_t_size:
  *     This symbol holds the size of a Size_t in bytes.
  */
@@ -3639,6 +3601,12 @@ sed <<!GROK!THIS! >$CONFIG_H -e 's!^#undef\(.*/\)\*!/\*#define\1 \*!' -e 's!^#un
 #$useperlio    USE_PERLIO              /**/
 #endif
 
+/* PERL_RELOCATABLE_INC:
+ *     This symbol, if defined, indicates that we'd like to relocate entries
+ *     in @INC at run time based on the location of the perl binary.
+ */
+#define PERL_RELOCATABLE_INC "$userelocatableinc"              /**/
+
 /* USE_SOCKS:
  *     This symbol, if defined, indicates that Perl should
  *     be built to use socks.
@@ -3730,36 +3698,30 @@ sed <<!GROK!THIS! >$CONFIG_H -e 's!^#undef\(.*/\)\*!/\*#define\1 \*!' -e 's!^#un
 /* HASATTRIBUTE_FORMAT:
  *     Can we handle GCC attribute for checking printf-style formats
  */
-#$d_attribute_format HASATTRIBUTE_FORMAT       /**/
-
 /* HASATTRIBUTE_MALLOC:
  *     Can we handle GCC attribute for malloc-style functions.
  */
-#$d_attribute_malloc HASATTRIBUTE_MALLOC       /**/
-
 /* HASATTRIBUTE_NONNULL:
  *     Can we handle GCC attribute for nonnull function parms.
  */
-#$d_attribute_nonnull HASATTRIBUTE_NONNULL     /**/
-
 /* HASATTRIBUTE_NORETURN:
  *     Can we handle GCC attribute for functions that do not return
  */
-#$d_attribute_noreturn HASATTRIBUTE_NORETURN   /**/
-
 /* HASATTRIBUTE_PURE:
  *     Can we handle GCC attribute for pure functions
  */
-#$d_attribute_pure HASATTRIBUTE_PURE   /**/
-
 /* HASATTRIBUTE_UNUSED:
  *     Can we handle GCC attribute for unused variables and arguments
  */
-#$d_attribute_unused HASATTRIBUTE_UNUSED       /**/
-
 /* HASATTRIBUTE_WARN_UNUSED_RESULT:
  *     Can we handle GCC attribute for warning on unused results
  */
+#$d_attribute_format HASATTRIBUTE_FORMAT       /**/
+#$d_attribute_noreturn HASATTRIBUTE_NORETURN   /**/
+#$d_attribute_malloc HASATTRIBUTE_MALLOC       /**/
+#$d_attribute_nonnull HASATTRIBUTE_NONNULL     /**/
+#$d_attribute_pure HASATTRIBUTE_PURE   /**/
+#$d_attribute_unused HASATTRIBUTE_UNUSED       /**/
 #$d_attribute_warn_unused_result HASATTRIBUTE_WARN_UNUSED_RESULT       /**/
 
 /* HAS_CRYPT:
@@ -3963,6 +3925,12 @@ sed <<!GROK!THIS! >$CONFIG_H -e 's!^#undef\(.*/\)\*!/\*#define\1 \*!' -e 's!^#un
  */
 #$d_sigprocmask HAS_SIGPROCMASK                /**/
 
+/* USE_SITECUSTOMIZE:
+ *     This symbol, if defined, indicates that sitecustomize should
+ *     be used.
+ */
+#$usesitecustomize     USE_SITECUSTOMIZE               /**/
+
 /* HAS_SOCKATMARK:
  *     This symbol, if defined, indicates that the sockatmark routine is
  *     available to test whether a socket is at the out-of-band mark.
@@ -3999,6 +3967,18 @@ sed <<!GROK!THIS! >$CONFIG_H -e 's!^#undef\(.*/\)\*!/\*#define\1 \*!' -e 's!^#un
  */
 #$d_strftime HAS_STRFTIME              /**/
 
+/* HAS_STRLCAT:
+ *     This symbol, if defined, indicates that the strlcat () routine is
+ *     available to do string concatenation.
+ */
+#$d_strlcat HAS_STRLCAT                /**/
+
+/* HAS_STRLCPY:
+ *     This symbol, if defined, indicates that the strlcpy () routine is
+ *     available to do string copying.
+ */
+#$d_strlcpy HAS_STRLCPY                /**/
+
 /* HAS_SYSCALL_PROTO:
  *     This symbol, if defined, indicates that the system provides
  *     a prototype for the syscall() function.  Otherwise, it is up