OSDN Git Service

* emit-rtl.c (gen_reg_rtx): Also reallocate reg_decl array.
[pf3gnuchains/gcc-fork.git] / gcc / fixproto
index dfeb596..3d65cbb 100755 (executable)
@@ -4,26 +4,26 @@
 #      fixproto TARGET-DIR SOURCE-DIR-ALL SOURCE-DIR-STD
 #
 # COPYRIGHT
-#      Copyright (C) 1993, 1994 Free Software Foundation, Inc.
-#      This file is part of GNU CC.
+#      Copyright (C) 1993, 1994, 1997, 1998 Free Software Foundation, Inc.
+#      This file is part of GCC.
 #
-#      GNU CC is free software; you can redistribute it and/or modify
+#      GCC is free software; you can redistribute it and/or modify
 #      it under the terms of the GNU General Public License as published by
 #      the Free Software Foundation; either version 2, or (at your option)
 #      any later version.
 #
-#      GNU CC is distributed in the hope that it will be useful,
+#      GCC is distributed in the hope that it will be useful,
 #      but WITHOUT ANY WARRANTY; without even the implied warranty of
 #      MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 #      GNU General Public License for more details.
 #
 #      You should have received a copy of the GNU General Public License
-#      along with GNU CC; see the file COPYING.  If not, write to
+#      along with GCC; see the file COPYING.  If not, write to
 #      the Free Software Foundation, 59 Temple Place - Suite 330,
 #      Boston, MA 02111-1307, USA.
 #
 # DESCRIPTION
-#      Adjunct script for GNU CC to populate a directory with ANSI,
+#      Adjunct script for GCC to populate a directory with ANSI,
 #      Posix.1, and C++ compatible header files.
 #
 #      Each file found under SOURCE-DIR-ALL is analyzed and "fixed."
 #      Ron Guilmette (rfg@netcom.com) (original idea and code)
 #      Per Bothner (bothner@cygnus.com) (major re-write)
 
-progname=$0
-progname=`basename $progname`
+dirname=`echo "$0" | sed 's,^[^/]*$,.,;s,//*[^/]*$,,'`
+progname=`echo "$0" | sed 's,.*/,,'`
 original_dir=`pwd`
 FIX_HEADER=${FIX_HEADER-$original_dir/fix-header}
 DEFINES="-D__STDC__=0 -D__cplusplus ${FIXPROTO_DEFINES}"
 
+if mkdir -p . 2> /dev/null; then
+  # Great, mkdir accepts -p
+  mkinstalldirs="mkdir -p"
+else
+  # We expect mkinstalldirs to be passed in the environment.
+  # If it is not, assume it is in the directory that contains this script.
+  mkinstalldirs=${mkinstalldirs-"/bin/sh $dirname/mkinstalldirs"}
+  if $mkinstalldirs . 2> /dev/null; then
+    :
+  else
+    # But, in case of failure, fallback to plain mkdir, and hope it works
+    mkinstalldirs=mkdir
+  fi
+fi
+
 if [ `echo $1 | wc -w` = 0 ] ; then
   echo $progname\: usage\: $progname target-dir \[ source-dir \.\.\. \]
   exit 1
@@ -75,11 +90,14 @@ src_dir_all=$2
 # "standard" ANSI/POSIX files listed in $std_files are processed.
 src_dir_std=$3
 
-if [ `expr $rel_target_dir : '\(.\)'` != '/' ] ; then
-  abs_target_dir=$original_dir/$rel_target_dir
-else
-  abs_target_dir=$rel_target_dir
-fi
+case $rel_target_dir in
+  /* | [A-Za-z]:[\\/]*)
+     abs_target_dir=$rel_target_dir
+     ;;
+  *)
+     abs_target_dir=$original_dir/$rel_target_dir
+     ;;
+esac
 
 # Determine whether this system has symbolic links.
 if ln -s X $rel_target_dir/ShouldNotExist 2>/dev/null; then
@@ -94,7 +112,7 @@ fi
 
 if [ \! -d $abs_target_dir ] ; then
   echo $progname\: creating directory $rel_target_dir
-  mkdir $abs_target_dir
+  $mkinstalldirs $abs_target_dir
 fi
 
 echo $progname\: populating \`$rel_target_dir\'
@@ -103,11 +121,14 @@ include_path=""
 
 if [ `echo $* | wc -w` != 0 ] ; then
   for rel_source_dir in $src_dir_all $src_dir_std; do
-    if [ `expr $rel_source_dir : '\(.\)'` != '/' ] ; then
-      abs_source_dir=$original_dir/$rel_source_dir
-    else
-      abs_source_dir=$rel_source_dir
-    fi
+     case $rel_source_dir in
+       /* | [A-Za-z]:[\\/]*)
+         abs_source_dir=$rel_source_dir
+         ;;
+       *)
+         abs_source_dir=$original_dir/$rel_source_dir
+         ;;
+     esac
     include_path="$include_path -I$abs_source_dir"
   done
 fi
@@ -160,11 +181,14 @@ for code in ALL STD ; do
       ;;
   esac
 
-  if [ `expr $rel_source_dir : '\(.\)'` != '/' ] ; then
-    abs_source_dir=$original_dir/$rel_source_dir
-  else
-    abs_source_dir=$rel_source_dir
-  fi
+  case $rel_source_dir in
+    /* | [A-Za-z]:[\\/]*)
+       abs_source_dir=$rel_source_dir
+       ;;
+    *)
+       abs_source_dir=$original_dir/$rel_source_dir
+       ;;
+  esac
 
   if [ \! -d $abs_source_dir ] ; then
     echo $progname\: warning\: no such directory\: \`$rel_source_dir\'
@@ -175,7 +199,7 @@ for code in ALL STD ; do
 
       abs_target_subdir=${abs_target_dir}/${rel_source_subdir}
       if [ \! -d $abs_target_subdir ] ; then
-       if mkdir $abs_target_subdir ; then
+       if $mkinstalldirs $abs_target_subdir ; then
          subdirs_made="$abs_target_subdir $subdirs_made"
        fi
       fi
@@ -202,7 +226,7 @@ for code in ALL STD ; do
              # Create the dir where this file will go when fixed.
              xxdir=`echo ./$file | sed -e 's|/[^/]*$||'`
              if [ \! -d $abs_target_subdir/$xxdir ] ; then
-               if mkdir $abs_target_subdir/$xxdir ; then
+               if $mkinstalldirs $abs_target_subdir/$xxdir ; then
                  subdirs_made="$abs_target_subdir/$xxdir $subdirs_made"
                fi
              fi
@@ -249,6 +273,7 @@ for code in ALL STD ; do
        then true
        else
          $FIX_HEADER $rel_source_file $abs_source_file $abs_target_file ${DEFINES} $include_path
+         if test $? != 0 ; then exit 1 ; fi
          echo "${rel_source_file}" >>fixproto.list
        fi
       done
@@ -267,8 +292,8 @@ do
     rel_source_ident=`echo $rel_source_file | tr ./ __`
     required_list=`eval echo '${required_'${rel_source_ident}'-}'`
     cat >tmp.h <<EOF
-#ifndef ${rel_source_ident}
-#define ${rel_source_ident}
+#ifndef __${rel_source_ident}
+#define __${rel_source_ident}
 EOF
     if test $rel_source_file = stdlib.h
     then
@@ -281,10 +306,16 @@ EOF
     fi
     cat >>tmp.h <<EOF
 
-#endif /* ${rel_source_ident} */
+#endif /* __${rel_source_ident} */
 EOF
     ${FIX_HEADER} $rel_source_file tmp.h $abs_target_dir/$rel_source_file ${DEFINES} $include_path
-    rm tmp.h
+    if test $? != 0 ; then exit 1 ; fi
+    if test -f $abs_target_dir/$rel_source_file
+    then
+      rm tmp.h
+    else
+      mv tmp.h $abs_target_dir/$rel_source_file
+    fi
   fi
 done