summaryrefslogtreecommitdiff
path: root/gnu/egcs/gcc/fixinc/fixinc.dgux
diff options
context:
space:
mode:
authorMarc Espie <espie@cvs.openbsd.org>1999-05-26 13:38:57 +0000
committerMarc Espie <espie@cvs.openbsd.org>1999-05-26 13:38:57 +0000
commit0126e157b87f137fc08dc7f46f6c291b9d06ac5d (patch)
treef8555e3e504eb82b4cd3cba5cec20ae4ce8124ff /gnu/egcs/gcc/fixinc/fixinc.dgux
parentff8e9a4356e55ed142306c3a375fa280800abc86 (diff)
egcs projects compiler system
Exact copy of the snapshot, except for the removal of texinfo/ gcc/ch/ libchill/
Diffstat (limited to 'gnu/egcs/gcc/fixinc/fixinc.dgux')
-rw-r--r--gnu/egcs/gcc/fixinc/fixinc.dgux200
1 files changed, 200 insertions, 0 deletions
diff --git a/gnu/egcs/gcc/fixinc/fixinc.dgux b/gnu/egcs/gcc/fixinc/fixinc.dgux
new file mode 100644
index 00000000000..afdd0cd5935
--- /dev/null
+++ b/gnu/egcs/gcc/fixinc/fixinc.dgux
@@ -0,0 +1,200 @@
+#!/bin/sh
+#
+# modified for dgux by hassey@dg-rtp.dg.com based on
+#
+# fixinc.svr4 written by Ron Guilmette (rfg@ncd.com).
+#
+# This file is part of GNU CC.
+#
+# GNU CC 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,
+# 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
+# the Free Software Foundation, 59 Temple Place - Suite 330,
+# Boston, MA 02111-1307, USA.
+#
+#
+# See README-fixinc for more information.
+
+# Fail if no arg to specify a directory for the output.
+if [ x$1 = x ]
+then echo fixincludes: no output directory specified
+exit 1
+fi
+
+# Directory in which to store the results.
+LIB=${1?"fixincludes: output directory not specified"}
+
+# Make sure it exists.
+if [ ! -d $LIB ]; then
+ mkdir $LIB || exit 1
+fi
+
+ORIG_DIR=`${PWDCMD-pwd}`
+
+# Make LIB absolute if it is relative.
+# Don't do this if not necessary, since may screw up automounters.
+case $LIB in
+/*)
+ ;;
+*)
+ cd $LIB; LIB=`${PWDCMD-pwd}`
+ ;;
+esac
+
+echo 'Building fixincludes in ' ${LIB}
+
+# Determine whether this filesystem has symbolic links.
+if ln -s X $LIB/ShouldNotExist 2>/dev/null; then
+ rm -f $LIB/ShouldNotExist
+ LINKS=true
+else
+ LINKS=false
+fi
+
+echo 'Making directories:'
+# Directory containing the original header files.
+shift
+if [ $# -eq 0 ] ; then
+ set /usr/include
+fi
+
+INLIST="$@"
+
+for INPUT in ${INLIST} ; do
+cd ${ORIG_DIR}
+cd ${INPUT}
+
+if $LINKS; then
+ files=`ls -LR | sed -n s/:$//p`
+else
+ files=`find . -type d -print | sed '/^.$/d'`
+fi
+for file in $files; do
+ rm -rf $LIB/$file
+ if [ ! -d $LIB/$file ]
+ then mkdir $LIB/$file
+ fi
+done
+
+# treetops gets an alternating list
+# of old directories to copy
+# and the new directories to copy to.
+treetops="${INPUT} ${LIB}"
+
+if $LINKS; then
+ echo 'Making internal symbolic directory links'
+ for file in $files; do
+ dest=`ls -ld $file | sed -n 's/.*-> //p'`
+ if [ "$dest" ]; then
+ cwd=`pwd`
+ # In case $dest is relative, get to $file's dir first.
+ cd ${INPUT}
+ cd `echo ./$file | sed -n 's&[^/]*$&&p'`
+ # Check that the target directory exists.
+ # Redirections changed to avoid bug in sh on Ultrix.
+ (cd $dest) > /dev/null 2>&1
+ if [ $? = 0 ]; then
+ cd $dest
+ # X gets the dir that the link actually leads to.
+ x=`pwd`
+ # If link leads back into ${INPUT},
+ # make a similar link here.
+ if expr $x : "${INPUT}/.*" > /dev/null; then
+ # Y gets the actual target dir name, relative to ${INPUT}.
+ y=`echo $x | sed -n "s&${INPUT}/&&p"`
+ # DOTS is the relative path from ${LIB}/$file's dir back to ${LIB}.
+ dots=`echo "$file" |
+ sed -e 's@^./@@' -e 's@/./@/@g' -e 's@[^/][^/]*@..@g' -e 's@..$@@'`
+ echo $file '->' $dots$y ': Making link'
+ rm -fr ${LIB}/$file > /dev/null 2>&1
+ ln -s $dots$y ${LIB}/$file > /dev/null 2>&1
+ else
+ # If the link is to outside ${INPUT},
+ # treat this directory as if it actually contained the files.
+# This line used to have $dest instead of $x.
+# $dest seemed to be wrong for links found in subdirectories
+# of ${INPUT}. Does this change break anything?
+ treetops="$treetops $x ${LIB}/$file"
+ fi
+ fi
+ cd $cwd
+ fi
+ done
+fi
+
+# Completely replace <_int_varargs.h> with a file that defines
+# va_list and gnuc_va_list
+
+file=_int_varargs.h
+if [ -r ${INPUT}/$file ]; then
+ echo Replacing $file
+ cat > ${LIB}/$file << EOF
+/* This file was generated by fixinc.dgux. */
+#ifndef __INT_VARARGS_H
+#define __INT_VARARGS_H
+
+#if defined(__m88k__) && defined (__DGUX__)
+#ifndef __GNUC_VA_LIST
+#define __GNUC_VA_LIST
+typedef struct
+{
+ int __va_arg; /* argument number */
+ int *__va_stk; /* start of args passed on stack */
+ int *__va_reg; /* start of args passed in regs */
+} __gnuc_va_list;
+#endif /* not __GNUC_VA_LIST */
+#endif /* 88k && dgux */
+
+#ifndef _VA_LIST_
+#define _VA_LIST_
+typedef __gnuc_va_list va_list;
+#endif /* _VA_LIST_ */
+
+#endif /* __INT_VARARGS_H */
+
+EOF
+ chmod a+r ${LIB}/$file
+fi
+
+echo 'Removing unneeded directories:'
+cd $LIB
+files=`find . -type d -print | sort -r`
+for file in $files; do
+ rmdir $LIB/$file > /dev/null 2>&1
+done
+
+if $LINKS; then
+ echo 'Making internal symbolic non-directory links'
+ cd ${INPUT}
+ files=`find . -type l -print`
+ for file in $files; do
+ dest=`ls -ld $file | sed -n 's/.*-> //p'`
+ if expr "$dest" : '[^/].*' > /dev/null; then
+ target=${LIB}/`echo file | sed "s|[^/]*\$|$dest|"`
+ if [ -f $target ]; then
+ ln -s $dest ${LIB}/$file >/dev/null 2>&1
+ fi
+ fi
+ done
+fi
+
+done
+
+if [ x${INSTALL_ASSERT_H} != x ]
+then
+ cd ${ORIG_DIR}
+ rm -f include/assert.h
+ cp ${srcdir}/assert.h include/assert.h || exit 1
+ chmod a+r include/assert.h
+fi
+
+exit 0