--- gcc/fixincludes 2018/04/24 16:55:44 1.1.1.12 +++ gcc/fixincludes 2018/04/24 17:01:10 1.1.1.15 @@ -5,6 +5,9 @@ # This works properly on a Sun in system version 3.4; # for other versions, you had better check. +# Directory containing the original header files. +INCLUDES=${2-${INCLUDES-/usr/include}} + # Directory in which to store the results. LIB=${LIB-/usr/local/lib/gcc-include} @@ -22,7 +25,7 @@ else fi echo 'Making directories:' -cd /usr/include +cd ${INCLUDES} if $LINKS; then files=`ls -LR | sed -n s/:$//p` else @@ -38,7 +41,7 @@ done # treetops gets an alternating list # of old directories to copy # and the new directories to copy to. -treetops="/usr/include ${LIB}" +treetops="${INCLUDES} ${LIB}" if $LINKS; then echo 'Making internal symbolic directory links' @@ -47,7 +50,7 @@ if $LINKS; then if [ "$dest" ]; then cwd=`pwd` # In case $dest is relative, get to $file's dir first. - cd /usr/include + cd ${INCLUDES} cd `echo ./$file | sed -n 's&[^/]*$&&p'` # Check that the target directory exists. # Redirections changed to avoid bug in sh on Ultrix. @@ -56,20 +59,20 @@ if $LINKS; then cd $dest # X gets the dir that the link actually leads to. x=`pwd` - # If link leads back into /usr/include, + # If link leads back into ${INCLUDES}, # make a similar link here. - if expr $x : '/usr/include/.*' > /dev/null; then - # Y gets the actual target dir name, relative to /usr/include. - y=`echo $x | sed -n 's&/usr/include/&&p'` + if expr $x : '${INCLUDES}/.*' > /dev/null; then + # Y gets the actual target dir name, relative to ${INCLUDES}. + y=`echo $x | sed -n 's&${INCLUDES}/&&p'` echo $file '->' $y ': Making link' rm -fr ${LIB}/$file > /dev/null 2>&1 ln -s ${LIB}/$y ${LIB}/$file > /dev/null 2>&1 else - # If the link is to outside /usr/include, + # If the link is to outside ${INCLUDES}, # 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 /usr/include. Does this change break anything? +# of ${INCLUDES}. Does this change break anything? treetops="$treetops $x ${LIB}/$file" fi fi @@ -82,12 +85,13 @@ set - $treetops while [ $# != 0 ]; do # $1 is an old directory to copy, and $2 is the new directory to copy to. echo "Finding header files in $1:" - cd /usr/include + cd ${INCLUDES} cd $1 files=`find . -name '*.h' -type f -print` echo 'Checking header files:' +# Note that BSD43_* are used on recent MIPS systems. for file in $files; do - if egrep '[ ]_IO[A-Z]*\(|#define._IO|CTRL' $file > /dev/null; then + if egrep '[ ]_IO[A-Z]*\(|[ ]BSD43__IO[A-Z]*\(|#define._IO|#define.BSD43__IO|CTRL' $file > /dev/null; then echo Fixing $file if [ -r $file ]; then cp $file $2/$file >/dev/null 2>&1 \ @@ -98,10 +102,15 @@ while [ $# != 0 ]; do /\\$/ N /\\$/ b loop /[ ]_IO[A-Z]*[ ]*(/ s/(\(.\),/('\''\1'\'',/ + /[ ]BSD43__IO[A-Z]*[ ]*(/ s/(\(.\),/('\''\1'\'',/ /#define._IO/ s/'\''x'\''/x/g + /#define.BSD43__IO/ s/'\''x'\''/x/g /[^A-Z]CTRL[ ]*(/ s/\([^'\'']\))/'\''\1'\'')/ /#define.CTRL/ s/'\''c'\''/c/g /#define._CTRL/ s/'\''c'\''/c/g + /#define.BSD43_CTRL/ s/'\''c'\''/c/g + /#if.* m68k$/ s/m68k/__m68k__/g + /#if.*defined *(m68k)/ s/m68k/__m68k__/g ' $2/$file > $2/$file.sed mv $2/$file.sed $2/$file if cmp $file $2/$file >/dev/null 2>&1; then @@ -114,7 +123,7 @@ while [ $# != 0 ]; do shift; shift done -cd /usr/include +cd ${INCLUDES} # Fix one other error in this file: a mismatched quote not inside a C comment. file=sundev/vuid_event.h @@ -138,6 +147,55 @@ EOF fi fi +# Fix this Sun file to avoid intefering with stddef.h. + +file=sys/stdtypes.h +if [ -r $file ]; then + if [ ! -r ${LIB}/$file ]; then + cp $file ${LIB}/$file >/dev/null 2>&1 \ + || echo "Can't copy $file" + chmod +w ${LIB}/$file + fi +fi + +if [ -r ${LIB}/$file ]; then + echo Fixing $file comment + ex ${LIB}/$file </dev/null 2>&1; then + echo Deleting ${LIB}/$file\; no fixes were needed. + rm ${LIB}/$file + fi +fi + # Fix an error in this file: a missing semi-colon at the end of the statsswtch # structure definition. file=rpcsvc/rstat.h @@ -155,9 +213,88 @@ if [ -r ${LIB}/$file ]; then g/boottime$/s//&;/ wq EOF - if cmp $file $2/$file >/dev/null 2>&1; then - echo Deleting $2/$file\; no fixes were needed. - rm $2/$file + if cmp $file ${LIB}/$file >/dev/null 2>&1; then + echo Deleting ${LIB}/$file\; no fixes were needed. + rm ${LIB}/$file + fi +fi + +# Fix an error in this file: a missing semi-colon at the end of the nodeent +# structure definition. +file=netdnet/dnetdb.h +if [ -r $file ]; then + if [ ! -r ${LIB}/$file ]; then + cp $file ${LIB}/$file >/dev/null 2>&1 \ + || echo "Can't copy $file" + chmod +w ${LIB}/$file + fi +fi + +if [ -r ${LIB}/$file ]; then + echo Fixing $file, definition of nodeent + ex ${LIB}/$file </dev/null 2>&1; then + echo Deleting ${LIB}/$file\; no fixes were needed. + rm ${LIB}/$file + fi +fi + +# Check for bad #ifdef line (in Ultrix 4.1) + +file=sys/file.h +if [ -r $file ]; then + if [ ! -r ${LIB}/$file ]; then + mkdir ${LIB}/rpcsvc 2>&- + cp $file ${LIB}/$file >/dev/null 2>&1 \ + || echo "Can't copy $file" + chmod +w ${LIB}/$file + fi +fi + +if [ -r ${LIB}/$file ]; then + echo Fixing $file, bad \#ifdef line + ex ${LIB}/$file </dev/null 2>&1; then + echo Deleting ${LIB}/$file\; no fixes were needed. + rm ${LIB}/$file + fi +fi + +# Check for superfluous `static' (in Ultrix 4.2) + +file=machine/cpu.h +if [ -r $file ]; then + if [ ! -r ${LIB}/$file ]; then + mkdir ${LIB}/machine 2>&- + cp $file ${LIB}/$file >/dev/null 2>&1 \ + || echo "Can't copy $file" + chmod +w ${LIB}/$file + fi +fi + +if [ -r ${LIB}/$file ]; then + echo Fixing $file, superfluous static + ex ${LIB}/$file </dev/null 2>&1; then + echo Deleting ${LIB}/$file\; no fixes were needed. + rm ${LIB}/$file + else +# This file has an alternative name, mips/cpu.h. Fix that name, too. + if cmp machine/cpu.h mips/cpu.h > /dev/null 2>& 1; then + mkdir ${LIB}/mips 2>&- + ln ${LIB}/$file ${LIB}/mips/cpu.h + fi fi fi @@ -195,7 +332,7 @@ if [ -r $file ]; then if [ ! -r ${LIB}/$file ]; then mkdir ${LIB}/netinet 2>&- sed -e '/^struct/,/^};/s/}$/};/' $file > ${LIB}/$file - cmp $file ${LIB}/$file >&- && rm -f ${LIB}/$file + cmp $file ${LIB}/$file >/dev/null 2>&1 && rm -f ${LIB}/$file fi fi @@ -205,19 +342,14 @@ file=pixrect/memvar.h if [ -r $file ]; then if [ ! -r ${LIB}/$file ]; then mkdir ${LIB}/pixrect 2>&- - sed -e '/^#define.CAT(a,b)/ s/IDENT(a)b/a##b/g' $file > ${LIB}/$file - cmp $file ${LIB}/$file >&- && rm -f ${LIB}/$file - fi -fi - -# Check for yet more missing ';' in struct (in SunOS 4.0.x) - -file=rpcsvc/rusers.h -if [ -r $file ]; then - if [ ! -r ${LIB}/$file ]; then - mkdir ${LIB}/rpcsvc 2>&- - sed -e '/^struct/,/^};/s/_cnt$/_cnt;/' $file > ${LIB}/$file - cmp $file ${LIB}/$file >&- && rm -f ${LIB}/$file + sed -e '/^#define.CAT(a,b)/ i\ +#ifdef __STDC__ \ +#define CAT(a,b) a##b\ +#else +/^#define.CAT(a,b)/ a\ +#endif +' $file > ${LIB}/$file + cmp $file ${LIB}/$file >/dev/null 2>&1 && rm -f ${LIB}/$file fi fi @@ -228,7 +360,7 @@ if [ -r $file ]; then if [ ! -r ${LIB}/$file ]; then mkdir ${LIB}/rpcsvc 2>&- sed -e '/^struct/,/^};/s/_cnt$/_cnt;/' $file > ${LIB}/$file - cmp $file ${LIB}/$file >&- && rm -f ${LIB}/$file + cmp $file ${LIB}/$file >/dev/null 2>&1 && rm -f ${LIB}/$file fi fi @@ -241,7 +373,7 @@ done if $LINKS; then echo 'Making internal symbolic non-directory links' - cd /usr/include + cd ${INCLUDES} files=`find . -type l -print` for file in $files; do dest=`ls -ld $file | sed -n 's/.*-> //p'`