| #!/bin/sh |
| rm -f include/stddef.h |
| exit |
| # |
| # fixinc.interix -- Install modified versions of Interix system include |
| # files. |
| # |
| # Based on fixinc.sco script by Ian Lance Taylor (ian@airs.com)). |
| # With modifications by Douglas Rupp (drupp@cs.washington.edu) |
| # |
| # Copyright (C) 1999 Free Software Foundation, Inc. |
| # |
| # 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. |
| # |
| # ?????? fixup comment |
| # This script munges the native include files provided with Windows NT |
| # 3.5 SDK systems so as to provide a reasonable namespace when |
| # compiling with gcc. The header files by default do not |
| # provide many essential definitions and declarations if |
| # __STDC__ is 1. This script modifies the header files to check |
| # for __STRICT_ANSI__ being defined instead. Once munged, the |
| # resulting new system include files are placed in a directory |
| # that GNU C will search *before* searching the Include |
| # directory. |
| # |
| # 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} |
| |
| # 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 |
| |
| if [ "x$files" = x ]; then |
| echo No files found in $INPUT\; skipped |
| continue |
| 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}" |
| |
| 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 ${INPUT} |
| cd $1 |
| files=`find . -name '*.[hH]' -type f -print` |
| echo "Checking header files in $1; transforming into directory $2:" |
| for file in $files; do |
| echo " " $file |
| if [ -r $file ]; then |
| cp $file $2/$file >/dev/null 2>&1 || echo "Can't copy $file" |
| chmod +w,a+r $2/$file |
| |
| # The following have been removed from the sed command below |
| # because it is more useful to leave these things in. |
| # The only reason to remove them was for -pedantic, |
| # which isn't much of a reason. -- rms. |
| # ??? above/below |
| # /^[ ]*#[ ]*ident/d |
| # s/!__STDC__/!defined (__STRICT_ANSI__)/g |
| |
| sed -e '/#[ ]*include.*[<"][A-Za-z]:\\/ s,\\,/,g' \ |
| -e '/#[ ]*include.*[<"][A-Za-z]:\// s,\([A-Za-z]\):/,//\1/,' \ |
| -e '\,#[ ]*include.*[<"]//[A-Za-z]/, y,abcdefghijklmnopqrstuvwxyz,ABCDEFGHIJKLMNOPQRSTUVWXYZ,' \ |
| -e '\,#[ ]*INCLUDE.*[<"]//[A-Za-z]/, s,INCLUDE,include,' \ |
| $2/$file > $2/$file.sed |
| |
| mv $2/$file.sed $2/$file |
| if cmp $file $2/$file >/dev/null 2>&1; then |
| rm $2/$file |
| else |
| echo Fixed $file |
| flip -u $2/$file |
| fi |
| fi |
| done |
| shift; shift |
| done |
| |
| echo 'Removing unneeded directories:' |
| # (Rmdir leaf to root, and if the rmdir fails, who cares....) |
| cd $LIB |
| files=`find . -type d -print | sort -r` |
| for file in $files; do |
| rmdir $LIB/$file > /dev/null 2>&1 |
| done |
| |
| done # for include directory list |
| |
| 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 |