| Index: gcc/gcc/fixproto
|
| diff --git a/gcc/gcc/fixproto b/gcc/gcc/fixproto
|
| deleted file mode 100755
|
| index 7c42d9c77edc31daa834933c7edb82c40ab8b937..0000000000000000000000000000000000000000
|
| --- a/gcc/gcc/fixproto
|
| +++ /dev/null
|
| @@ -1,340 +0,0 @@
|
| -#!/bin/sh
|
| -#
|
| -# SYNOPSIS
|
| -# fixproto TARGET-DIR SOURCE-DIR-ALL SOURCE-DIR-STD
|
| -#
|
| -# COPYRIGHT
|
| -# Copyright (C) 1993, 1994, 1997, 1998, 2002, 2003, 2007, 2008
|
| -# Free Software Foundation, Inc.
|
| -# This file is part of GCC.
|
| -#
|
| -# 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 3, or (at your option)
|
| -# any later version.
|
| -#
|
| -# 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 GCC; see the file COPYING3. If not see
|
| -# <http://www.gnu.org/licenses/>.
|
| -#
|
| -# DESCRIPTION
|
| -# 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."
|
| -# Only standard ANSI/POSIX files found under SOURCE-DIR-STD
|
| -# are analyzed and "fixed."
|
| -# The SOURCE-DIRs are searched in order; a file found
|
| -# under multiple SOURCE-DIRs is only handled for the first one.
|
| -#
|
| -# STRATEGY
|
| -# Each include file is fed through cpp, and the scan-decls program
|
| -# parses it, and emits any found function declarations.
|
| -# The fix-header program analyzes the scan-decls output,
|
| -# together with the original include file, and writes a "fixed"
|
| -# include file, if needed.
|
| -#
|
| -# The comment at the beginning of fix-header.c lists specifically
|
| -# what kind of changes are made.
|
| -#
|
| -# NOTE
|
| -# Some file space will be wasted, because the original header
|
| -# files are copied. An earlier version just included the original
|
| -# by "reference", using GNU cpp's #include_next mechanism.
|
| -# This is currently not done, partly because #include_next is
|
| -# fragile (susceptible to version incompatibilities, and depends
|
| -# and GCC-specific features), and partly for performance reasons.
|
| -#
|
| -# AUTHORS
|
| -# Ron Guilmette (rfg@netcom.com) (original idea and code)
|
| -# Per Bothner (bothner@cygnus.com) (major re-write)
|
| -
|
| -dirname=`echo "$0" | sed 's,^[^/]*$,.,;s,//*[^/]*$,,'`
|
| -progname=`echo "$0" | sed 's,.*/,,'`
|
| -original_dir=`${PWDCMD-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
|
| -fi
|
| -
|
| -std_files="ctype.h dirent.h errno.h curses.h fcntl.h grp.h locale.h math.h pwd.h setjmp.h signal.h stdio.h stdlib.h string.h sys/socket.h sys/stat.h sys/times.h sys/resource.h sys/utsname.h sys/wait.h tar.h termios.h time.h unistd.h utime.h"
|
| -
|
| -rel_target_dir=$1
|
| -# All files in $src_dir_all (normally same as $rel_target_dir) are
|
| -# processed.
|
| -src_dir_all=$2
|
| -# In $src_dir_std (normally same as /usr/include), only the
|
| -# "standard" ANSI/POSIX files listed in $std_files are processed.
|
| -src_dir_std=$3
|
| -
|
| -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
|
| - rm -f $rel_target_dir/ShouldNotExist
|
| - LINKS=true
|
| -elif ln -s X /tmp/ShouldNotExist 2>/dev/null; then
|
| - rm -f /tmp/ShouldNotExist
|
| - LINKS=true
|
| -else
|
| - LINKS=false
|
| -fi
|
| -
|
| -if [ \! -d $abs_target_dir ] ; then
|
| - echo $progname\: creating directory $rel_target_dir
|
| - $mkinstalldirs $abs_target_dir
|
| -fi
|
| -
|
| -echo $progname\: populating \`$rel_target_dir\'
|
| -
|
| -include_path=""
|
| -
|
| -if [ `echo $* | wc -w` != 0 ] ; then
|
| - for rel_source_dir in $src_dir_all $src_dir_std; do
|
| - 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
|
| -
|
| -done_dirs=""
|
| -subdirs_made=""
|
| -echo "" >fixproto.list
|
| -
|
| -for code in ALL STD ; do
|
| -
|
| - subdirs="."
|
| -
|
| - case $code in
|
| - ALL)
|
| - rel_source_dir=$src_dir_all
|
| -
|
| - dirs="."
|
| - levels=2
|
| - while $LINKS && test -n "$dirs" -a $levels -gt 0
|
| - do
|
| - levels=`expr $levels - 1`
|
| - newdirs=
|
| - for d in $dirs ; do
|
| - # Find all directories under $d, relative to $d, excluding $d itself.
|
| - # Assume directory names ending in CC or containing ++ are
|
| - # for C++, so skip those.
|
| - subdirs="$subdirs "`cd $rel_source_dir/$d; find . -type d -print | \
|
| - sed -e '/^\.$/d' -e "s|^\./|${d}/|" -e 's|^\./||' \
|
| - -e '/CC$/d' -e '/[+][+]/d'`
|
| - links=
|
| - links=`cd $rel_source_dir; find $d/. -type l -print | \
|
| - sed -e "s|$d/./|$d/|" -e 's|^\./||'`
|
| - for link in $links --dummy-- ; do
|
| - test -d $rel_source_dir/$link/. && newdirs="$newdirs $link"
|
| - done
|
| - done
|
| - dirs="$newdirs"
|
| - subdirs="$subdirs $newdirs"
|
| - done
|
| - ;;
|
| - STD)
|
| - rel_source_dir=$src_dir_std
|
| - ;;
|
| - esac
|
| -
|
| - 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\'
|
| - continue
|
| - fi
|
| -
|
| - for rel_source_subdir in $subdirs; do
|
| -
|
| - abs_target_subdir=${abs_target_dir}/${rel_source_subdir}
|
| - if [ \! -d $abs_target_subdir ] ; then
|
| - if $mkinstalldirs $abs_target_subdir ; then
|
| - subdirs_made="$abs_target_subdir $subdirs_made"
|
| - fi
|
| - fi
|
| - # Append "/"; remove initial "./". Hence "." -> "" and "sys" -> "sys/".
|
| - rel_source_prefix=`echo $rel_source_subdir | sed -e 's|$|/|' -e 's|^\./||'`
|
| -
|
| - case $code in
|
| - ALL)
|
| - # The 'sed' is in case the *.h matches nothing, which yields "*.h"
|
| - # which would then get re-globbed in the current directory. Sigh.
|
| - rel_source_files=`cd ${abs_source_dir}/${rel_source_subdir}; echo *.h | sed -e 's|[*].h|NONE|'`
|
| - ;;
|
| -
|
| - STD)
|
| - files_to_check="$std_files"
|
| - rel_source_files=""
|
| -
|
| - # Also process files #included by the $std_files.
|
| - while [ -n "${files_to_check}" ]
|
| - do
|
| - new_files_to_check=""
|
| - for file in $files_to_check ; do
|
| - xxfile=`echo $file | sed -e 's|/\([^/\.][^/\.]*\)/\.\./|/|'`
|
| - # Create the dir where this file will go when fixed.
|
| - xxdir=`echo ./$file | sed -e 's|/[^/]*$||'`
|
| - if [ \! -d $abs_target_subdir/$xxdir ] ; then
|
| - if $mkinstalldirs $abs_target_subdir/$xxdir ; then
|
| - subdirs_made="$abs_target_subdir/$xxdir $subdirs_made"
|
| - fi
|
| - fi
|
| - # Just in case we have edited out a symbolic link
|
| - if [ -f $src_dir_std/$file -a -f $src_dir_std/$xxfile ] ; then
|
| - file=$xxfile
|
| - fi
|
| - case " $rel_source_files " in
|
| - *" ${file} "*)
|
| - # Already seen $file; nothing to do
|
| - ;;
|
| - *)
|
| - if test -f $src_dir_std/$file ; then
|
| - rel_dir=`echo $file | sed -n -e 's|^\(.*/\)[^/]*$|\1|p'`
|
| - # For #include "foo.h", that might be either "foo.h"
|
| - # or "${rel_dir}foo.h (or something bogus).
|
| - new_files_to_check="$new_files_to_check "`sed -n \
|
| - -e 's@ @ @g' \
|
| - -e 's@^ *# *include *<\([^>]*\)>.*$@\1@p' -e \
|
| - 's@^ *# *include *\"\([^\"]*\)\".*$@\1 '$rel_dir'\1@p'\
|
| - <$src_dir_std/$file`
|
| - rel_source_files="$rel_source_files $file"
|
| - fi
|
| - ;;
|
| - esac
|
| - done
|
| - files_to_check="$new_files_to_check"
|
| - done
|
| - rel_source_files="$rel_source_files"
|
| - ;;
|
| - esac
|
| -
|
| - for filename in $rel_source_files ; do
|
| - rel_source_file=${rel_source_prefix}${filename}
|
| - abs_source_file=$abs_source_dir/$rel_source_file
|
| - abs_target_file=$abs_target_dir/$rel_source_file
|
| -
|
| - if test "$filename" = 'NONE' ; then
|
| - echo "(No *.h files in $abs_source_dir/$rel_source_subdir)"
|
| - # If target file exists, check if was written while processing one
|
| - # of the earlier source directories; if so ignore it.
|
| - elif test -f $abs_target_file -a -n "$done_dirs" \
|
| - && grep "$rel_source_file" fixproto.list >/dev/null
|
| - 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
|
| - done
|
| - done_dirs="$done_dir $rel_source_dir"
|
| -done
|
| -
|
| -# This might be more cleanly moved into the main loop, by adding
|
| -# a <dummy> source directory at the end. FIXME!
|
| -
|
| -# All the headers we create define size_t and NULL.
|
| -for rel_source_file in unistd.h stdlib.h string.h time.h ; do
|
| - if grep "$rel_source_file" fixproto.list >/dev/null ; then
|
| - : # It exists, we don't need to make it
|
| - else
|
| - echo Adding missing $rel_source_file
|
| - rel_source_ident=`echo $rel_source_file | tr ./ __`
|
| - cat >tmp.h <<EOF
|
| -/* Fake ${rel_source_file}, created by GCC.
|
| - The functions declared in this file do not necessarily exist in
|
| - your C library. */
|
| -#ifndef __${rel_source_ident}
|
| -#define __${rel_source_ident}
|
| -
|
| -#define __need_NULL
|
| -#define __need_size_t
|
| -#include <stddef.h>
|
| -EOF
|
| - # Insert special stuff for particular files here.
|
| - case ${rel_source_file} in
|
| - time.h)
|
| - # If time.h doesn't exist, find out if sys/time.h does.
|
| - if test -f $src_dir_std/sys/time.h \
|
| - || grep "sys/time.h" fixproto.list >/dev/null ; then
|
| - # It does; include it and hope it has the needed declarations.
|
| - # Some versions require sys/types.h.
|
| - cat >>tmp.h <<EOF
|
| -
|
| -#include <sys/types.h>
|
| -#include <sys/time.h>
|
| -EOF
|
| - else
|
| - # It doesn't. Make up plausible definitions for time_t, clock_t.
|
| - # Forward-declare struct tm. Hope nobody tries to use it. (Odds
|
| - # are they won't.)
|
| - cat >>tmp.h <<EOF
|
| -
|
| -typedef long time_t;
|
| -typedef long clock_t;
|
| -struct tm;
|
| -EOF
|
| - fi ;;
|
| - esac
|
| - cat >>tmp.h <<EOF
|
| -
|
| -#endif /* __${rel_source_ident} */
|
| -EOF
|
| - ${FIX_HEADER} $rel_source_file tmp.h $abs_target_dir/$rel_source_file ${DEFINES} $include_path
|
| - 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
|
| -
|
| -# Remove any directories that we made that are still empty.
|
| -rmdir $subdirs_made 2>/dev/null
|
| -
|
| -exit 0
|
|
|