Makefile.in (machname.h): Remove.
authorPaolo Bonzini <bonzini@gnu.org>
Mon, 30 Aug 2004 13:32:57 +0000 (13:32 +0000)
committerPaolo Bonzini <bonzini@gcc.gnu.org>
Mon, 30 Aug 2004 13:32:57 +0000 (13:32 +0000)
2004-08-30  Paolo Bonzini  <bonzini@gnu.org>

* fixinc/Makefile.in (machname.h): Remove.
(fixincl.x): Do not pass $@ to genfixes.
* fixinc/genfixes: Remove code to produce machname.h.
* fixinc/fixincl.sh: Move it here instead.
* fixinc/fixlib.c: Do not conditionalize on MN_NAME_PAT's presence,
instead check if pz_mn_name_pat is NULL.  Make mn_get_regexps
return a bool indicating whether pz_mn_name_pat is NULL.
* fixinc/fixlib.h: Do not conditionalize on MN_NAME_PAT's presence.
Declare extern C variables for the ENV_TABLE.
* fixinc/fixfixes.c: Do not conditionalize on MN_NAME_PAT's presence,
instead use the result of mn_get_regexps.
* fixinc/fixtests.c: Likewise.

From-SVN: r86771

gcc/ChangeLog
gcc/fixinc/Makefile.in
gcc/fixinc/fixfixes.c
gcc/fixinc/fixincl.sh
gcc/fixinc/fixlib.c
gcc/fixinc/fixlib.h
gcc/fixinc/fixtests.c
gcc/fixinc/genfixes

index ba3f8847f7c1f967c8bc8afaff1d1736b738f2d4..3bf8503f499bdb3866454a22be7a1aa9b82166c3 100644 (file)
@@ -3,6 +3,21 @@
        * tree.h (BINFO_PRIMARY_BASE_OF): Remove.
        (struct tree_binfo): Remove primary field.
 
+2004-08-30  Paolo Bonzini  <bonzini@gnu.org>
+
+       * fixinc/Makefile.in (machname.h): Remove.
+       (fixincl.x): Do not pass $@ to genfixes.
+       * fixinc/genfixes: Remove code to produce machname.h.
+       * fixinc/fixincl.sh: Move it here instead.
+       * fixinc/fixlib.c: Do not conditionalize on MN_NAME_PAT's presence,
+       instead check if pz_mn_name_pat is NULL.  Make mn_get_regexps
+       return a bool indicating whether pz_mn_name_pat is NULL.
+       * fixinc/fixlib.h: Do not conditionalize on MN_NAME_PAT's presence.
+       Declare extern C variables for the ENV_TABLE.
+       * fixinc/fixfixes.c: Do not conditionalize on MN_NAME_PAT's presence,
+       instead use the result of mn_get_regexps.
+       * fixinc/fixtests.c: Likewise.
+
 2004-08-30  Paolo Bonzini  <bonzini@gnu.org>
 
        * configure.ac: Do not run fixincludes after stage1 during
index ae410e14386697fc99773f0905cb99f00e8a2e3a..a148665c15ffdfa0a7ae8d0927ec66ecc078ca7b 100644 (file)
@@ -73,7 +73,7 @@ ALLOBJ = fixincl.o fixtests.o fixfixes.o server.o procopen.o \
 TESTOBJ = fixincl.o fixlib.o fixtests.o
 FIXOBJ  = fixfixes.o fixlib.o
 
-HDR = server.h fixlib.h machname.h
+HDR = server.h fixlib.h
 FI  = fixincl@build_exeext@
 AF  = applyfix@build_exeext@
 
@@ -102,17 +102,11 @@ server.o    : server.c
 procopen.o  : procopen.c
 fixlib.o    : fixlib.c
 
-#  'machname.h' is built in the build directory.
-#  'fixincl.x' in the source dir.
-#
-machname.h: ../specs
-       $(SHELL) $(srcdir)/genfixes $@
-
 $(srcdir)/fixincl.x: @MAINT@ fixincl.tpl inclhack.def
-       cd $(srcdir) ; $(SHELL) ./genfixes $@
+       cd $(srcdir) ; $(SHELL) ./genfixes
 
 clean:
-       rm -f *.o *-stamp $(AF) $(FI) machname.h *~
+       rm -f *.o *-stamp $(AF) $(FI) *~
 
 maintainer-clean : clean
        rm -f $(srcdir)/fixincl.x
@@ -129,8 +123,7 @@ install-bin : $(TARGETS)
 
 Makefile: Makefile.in ../config.status
        cd .. \
-         && CONFIG_FILES=$(subdir)/$@ CONFIG_HEADERS= \
-         $(SHELL) ./config.status
+         && $(SHELL) ./config.status $(subdir)/Makefile
 
 check : $(TARGETS)
        autogen -T $(srcdir)/check.tpl $(srcdir)/inclhack.def
index a8901ffdf0f865ab491d540d6c470d73fd9cb1d8..19fa27ed12109e8d8340d3e2576aef75b007c042 100644 (file)
@@ -488,9 +488,6 @@ FIX_PROC_HEAD( char_macro_def_fix )
 
 FIX_PROC_HEAD( machine_name_fix )
 {
-#ifndef MN_NAME_PAT
-  fputs( "The target machine has no needed machine name fixes\n", stderr );
-#else
   regmatch_t match[2];
   const char *line, *base, *limit, *p, *q;
   regex_t *label_re, *name_re;
@@ -499,7 +496,11 @@ FIX_PROC_HEAD( machine_name_fix )
   IGNORE_ARG(filname);
   IGNORE_ARG(p_fixd);
 
-  mn_get_regexps (&label_re, &name_re, "machine_name_fix");
+  if (!mn_get_regexps (&label_re, &name_re, "machine_name_fix"))
+    {
+      fputs( "The target machine has no needed machine name fixes\n", stderr );
+      goto done;
+    }
 
   scratch[0] = '_';
   scratch[1] = '_';
@@ -577,7 +578,6 @@ FIX_PROC_HEAD( machine_name_fix )
         }
     }
  done:
-#endif
   fputs (text, stdout);
 }
 
index 80a7797181859a78d0dd23de21387ab254ec7bca..85ec95abe564bf16210bd04f5304ae6a7d39c518 100755 (executable)
@@ -131,6 +131,36 @@ else
   LINKS=false
 fi
 
+# # # # # # # # # # # # # # # # # # # # #
+#
+#  Extract from the gcc -dM and from the specs file all the predefined
+#  macros that are not in the C89 reserved namespace (the reserved
+#  namespace is all  identifiers beginnning with two underscores or one
+#  underscore followed by a capital letter).  The specs file is in
+#  ${ORIGDIR}, as is cc1.  A regular expression to find any of those
+#  macros in a header file is written to MN_NAME_PAT.
+#
+#  Note dependency on ASCII. \012 = newline.
+#  tr ' ' '\n' is, alas, not portable.
+
+echo | ${ORIGDIR}/cc1 -quiet -dM -E - |
+  sed -n 's/^#define \([a-zA-Z][a-zA-Z0-9_]*\).*/\1/p' > mn.T
+tr -s '\040\011' '\012\012' < ${ORIGDIR}/specs |
+  sed -n 's/^.*-D\([a-zA-Z_][a-zA-Z0-9_]*\).*/\1/p' >> mn.T
+
+if sort -u mn.T | grep -v '^_[_A-Z]' > mn.U
+then
+  if test $VERBOSE -gt 0
+  then echo "Forbidden identifiers: `tr '\012' ' ' <mn.U`" ; fi
+  sed 's/^/\\\\</; s/$/\\\\>/; $!s/$/|/' < mn.U | tr -d '\012' > mn.V
+  MN_NAME_PAT="`cat mn.V`"
+  export MN_NAME_PAT
+else
+  if test $VERBOSE -gt 0
+  then echo "No forbidden identifiers defined by this target" ; fi
+fi
+rm -f mn.[TUV]
+
 # # # # # # # # # # # # # # # # # # # # #
 #
 #  Search each input directory for broken header files.
index 99d04cc5531e630198de2b986419176868c7a134..e0fa94a14badec5816168abba210bbfa96a28821 100644 (file)
@@ -204,32 +204,30 @@ compile_re( tCC* pat, regex_t* re, int match, tCC* e1, tCC* e2 )
 
 /* * * * * * * * * * * * *
 
-   Helper routine and data for the machine_name test and fix.
-   machname.h is created by black magic in the Makefile.  */
-
-#ifdef MN_NAME_PAT
+   Helper routine and data for the machine_name test and fix.  */
 
 tSCC mn_label_pat[] = "^[ \t]*#[ \t]*(if|ifdef|ifndef)[ \t]+";
 static regex_t mn_label_re;
-
-tSCC mn_name_pat[] = MN_NAME_PAT;
 static regex_t mn_name_re;
 
 static int mn_compiled = 0;
 
-void
+t_bool
 mn_get_regexps(regex_t** label_re, regex_t** name_re, tCC* who )
 {
+  if (! pz_mn_name_pat)
+    return BOOL_FALSE;
+
   if (! mn_compiled)
     {
       compile_re (mn_label_pat, &mn_label_re, 1, "label pattern", who);
-      compile_re (mn_name_pat, &mn_name_re, 1, "name pattern", who);
+      compile_re (pz_mn_name_pat, &mn_name_re, 1, "name pattern", who);
       mn_compiled++;
     }
   *label_re = &mn_label_re;
   *name_re = &mn_name_re;
+  return BOOL_TRUE;
 }
-#endif
 
 
 #ifdef SEPARATE_FIX_PROC
index 25e97d48ba13470e67759b7f9f3018ae69fd8a9f..1cce4a5b516d5e820a33decc515a3287a2b04b32 100644 (file)
@@ -33,7 +33,6 @@ Boston, MA 02111-1307, USA.  */
 #include <signal.h>
 
 #include "xregex.h"
-#include "machname.h"
 #include "libiberty.h"
 
 #ifndef STDIN_FILENO
@@ -117,12 +116,19 @@ typedef int apply_fix_p_t;  /* Apply Fix Predicate Type */
   _ENV_( pz_dest_dir,  BOOL_TRUE, "DESTDIR",         \
          "output directory" )                        \
                                                      \
+  _ENV_( pz_mn_name_pat, BOOL_FALSE, "MN_NAME_PAT",  \
+         "regex matching forbidden identifiers" )    \
+                                                     \
   _ENV_( pz_verbose,  BOOL_FALSE, "VERBOSE",         \
          "amount of user entertainment" )            \
                                                      \
   _ENV_( pz_find_base, BOOL_TRUE, "FIND_BASE",       \
          "leader to trim from file names" )
 
+#define _ENV_(v,m,n,t)   extern tCC* v;
+ENV_TABLE
+#undef _ENV_
+
 /*  Test Descriptor
 
     Each fix may have associated tests that determine
@@ -219,7 +225,5 @@ apply_fix_p_t
 char*  make_raw_shell_str ( char* pz_d, tCC* pz_s, size_t smax );
 #endif
 
-#ifdef MN_NAME_PAT
-void   mn_get_regexps ( regex_t** label_re, regex_t** name_re, tCC *who );
-#endif
+t_bool mn_get_regexps ( regex_t** label_re, regex_t** name_re, tCC *who );
 #endif /* ! GCC_FIXLIB_H */
index 33ea65208f98265d231087616b69ce27bfa82e32..44ef97253f524778634bf5bdb7ceb418c8435aad 100644 (file)
@@ -68,15 +68,13 @@ static apply_fix_p_t test ( tCC* fname ATTRIBUTE_UNUSED, \
 
 TEST_FOR_FIX_PROC_HEAD( machine_name_test )
 {
-#ifndef MN_NAME_PAT
-  return SKIP_FIX;
-#else
   regex_t *label_re, *name_re;
   regmatch_t match[2];
   tCC *base, *limit;
   IGNORE_ARG(fname);
 
-  mn_get_regexps(&label_re, &name_re, "machine_name_test");
+  if (!mn_get_regexps (&label_re, &name_re, "machine_name_test"))
+    return SKIP_FIX;
 
   for (base = text;
        xregexec (label_re, base, 2, match, 0) == 0;
@@ -114,7 +112,6 @@ TEST_FOR_FIX_PROC_HEAD( machine_name_test )
       /* Otherwise, keep looking... */
     }
   return SKIP_FIX;
-#endif
 }
 
 
index 8028e558de36a4cabe4de1c08393dbf81b3e1246..b151153dbf6b36c8cc4c6c101aba8877922c1ba2 100755 (executable)
@@ -45,11 +45,8 @@ do
     ;;
 
   '-?' )
-    echo "USAGE: gendefs [ -D<def-name> ... ] [ <output-name> ]"
+    echo "USAGE: gendefs [ -D<def-name> ... ]"
     echo "WHERE: '<def-name>' specifies a #define test name from inclhack.def"
-    echo "  and  '<output-name>' is one of:"
-    echo "       fixincl.x machine.h"
-    echo "The default is to produce the first three outputs."
     exit 0
     ;;
 
@@ -66,53 +63,15 @@ fi
 AG="autogen $AG"
 set -e
 
-case "$1" in
-fixincl.x | */fixincl.x )
-  if [ -z "`${AG} -v | fgrep 'Ver. 5.'`" ]
-  then
-    echo "AutoGen appears to be out of date or not correctly installed."
-    echo "Please download and install:"
-    echo "   ftp://gcc.gnu.org/pub/gcc/infrastructure/autogen.tar.gz"
-    touch fixincl.x
-  else
-    echo AutoGen-ing fixincl.x
-    $AG inclhack.def
-  fi
-  ;;
-
-machname.h | */machname.h )
-  # This script extracts from the specs file all the predefined macros
-  # that are not in the C89 reserved namespace (the reserved namespace
-  # is all identifiers beginnning with two underscores or one underscore
-  # followed by a capital letter).  The specs file is on standard input.
-  # A #define for a regular expression to find any of those macros in a
-  # header file is written to standard output.
-
-  # Note dependency on ASCII. \040 = space, \011 = tab, \012 = newline.
-  # tr ' ' '\n' is, alas, not portable.
-
-  tr -s '\040\011' '\012\012' < ../specs |
-    sed -n 's/^.*-D\([a-zA-Z_][a-zA-Z0-9_]*\).*$/\1/p' |
-    sort -u > mn.T
-
-  if grep -v '^_[_A-Z]' mn.T > mn.U
-  then
-    echo "Forbidden identifiers: `tr '\012' ' ' <mn.U`" >&2
-    sed 's/^/\\\\</; s/$/\\\\>/' <mn.U | tr '\012' '|' > mn.V
-    echo '' >>mn.V
-    sed 's/^/#define MN_NAME_PAT "/; s/|$/"/' < mn.V > machname.T
-  else
-    echo "No forbidden identifiers defined by this target" >&2
-    echo '#undef MN_NAME_PAT' > machname.T
-  fi
-  rm -f mn.[TUV]
-  mv -f machname.T machname.h
-  ;;
-
-* )
-  echo genfixes cannot create $1
-  exit 1
-  ;;
-esac
+if [ -z "`${AG} -v | fgrep 'Ver. 5.'`" ]
+then
+  echo "AutoGen appears to be out of date or not correctly installed."
+  echo "Please download and install:"
+  echo "   ftp://gcc.gnu.org/pub/gcc/infrastructure/autogen.tar.gz"
+  touch fixincl.x
+else
+  echo AutoGen-ing fixincl.x
+  $AG inclhack.def
+fi
 
 exit 0