(sne): Modified to use negc instead of xor.
[official-gcc.git] / gcc / fixinc.irix
blob222097718fbea9cc34c3ea858d4e4270cf06d75c
1 #! /bin/sh
2 # Install modified versions of certain problematic Irix include files.
3 # Copyright (C) 1997 Free Software Foundation, Inc.
4 # Contributed by Brendan Kehoe (brendan@cygnus.com).
6 # This file is part of GNU CC.
7 #
8 # GNU CC is free software; you can redistribute it and/or modify
9 # it under the terms of the GNU General Public License as published by
10 # the Free Software Foundation; either version 2, or (at your option)
11 # any later version.
13 # GNU CC is distributed in the hope that it will be useful,
14 # but WITHOUT ANY WARRANTY; without even the implied warranty of
15 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
16 # GNU General Public License for more details.
18 # You should have received a copy of the GNU General Public License
19 # along with GNU CC; see the file COPYING. If not, write to
20 # the Free Software Foundation, 59 Temple Place - Suite 330,
21 # Boston, MA 02111-1307, USA.
23 # See README-fixinc for more information.
25 # Directory containing the original header files.
26 INPUT=${2-${INPUT-/usr/include}}
28 # Fail if no arg to specify a directory for the output.
29 if [ x$1 = x ]
30 then echo fixincludes: no output directory specified
31 exit 1
34 # Directory in which to store the results.
35 LIB=${1?"fixincludes: output directory not specified"}
37 # Make sure it exists.
38 if [ ! -d $LIB ]; then
39 mkdir $LIB || exit 1
42 ORIG_DIR=`pwd`
44 # Make LIB absolute if it is relative.
45 # Don't do this if not necessary, since may screw up automounters.
46 case $LIB in
47 /*)
50 LIB=$ORIG_DIR/$LIB
52 esac
54 echo 'Building fixincludes in ' ${LIB}
57 # Note: For Irix, we deliberately don't try to create the directory trees,
58 # since we only modify math.h and limits.h. If we ADD ANY OTHERS,
59 # the "Making directories:" and symlinks code from fixinc.svr4 may
60 # have to go back in.
62 # The Irix math.h defines struct exception, which conflicts with
63 # the class exception defined in the C++ file std/stdexcept.h. We
64 # redefine it to __math_exception. This is not a great fix, but I
65 # haven't been able to think of anything better.
66 file=math.h
67 base=`basename $file`
68 if [ -r ${LIB}/$file ]; then
69 file_to_fix=${LIB}/$file
70 else
71 if [ -r ${INPUT}/$file ]; then
72 file_to_fix=${INPUT}/$file
73 else
74 file_to_fix=""
77 if [ \! -z "$file_to_fix" ]; then
78 echo Checking $file_to_fix
79 sed -e '/struct exception/i\
80 #ifdef __cplusplus\
81 #define exception __math_exception\
82 #endif'\
83 -e '/struct exception/a\
84 #ifdef __cplusplus\
85 #undef exception\
86 #endif' $file_to_fix > /tmp/$base
87 if cmp $file_to_fix /tmp/$base >/dev/null 2>&1; then \
88 true
89 else
90 echo Fixed $file_to_fix
91 rm -f ${LIB}/$file
92 cp /tmp/$base ${LIB}/$file
93 chmod a+r ${LIB}/$file
95 rm -f /tmp/$base
98 # In limits.h, put #ifndefs around things that are supposed to be defined
99 # in float.h to avoid redefinition errors if float.h is included first.
101 file=limits.h
102 base=`basename $file`
103 if [ -r ${LIB}/$file ]; then
104 file_to_fix=${LIB}/$file
105 else
106 if [ -r ${INPUT}/$file ]; then
107 file_to_fix=${INPUT}/$file
108 else
109 file_to_fix=""
112 if [ \! -z "$file_to_fix" ]; then
113 echo Checking $file_to_fix
114 sed -e '/[ ]FLT_MIN[ ]/i\
115 #ifndef FLT_MIN
117 -e '/[ ]FLT_MIN[ ]/a\
118 #endif
120 -e '/[ ]FLT_MAX[ ]/i\
121 #ifndef FLT_MAX
123 -e '/[ ]FLT_MAX[ ]/a\
124 #endif
126 -e '/[ ]FLT_DIG[ ]/i\
127 #ifndef FLT_DIG
129 -e '/[ ]FLT_DIG[ ]/a\
130 #endif
132 -e '/[ ]DBL_MIN[ ]/i\
133 #ifndef DBL_MIN
135 -e '/[ ]DBL_MIN[ ]/a\
136 #endif
138 -e '/[ ]DBL_MAX[ ]/i\
139 #ifndef DBL_MAX
141 -e '/[ ]DBL_MAX[ ]/a\
142 #endif
144 -e '/[ ]DBL_DIG[ ]/i\
145 #ifndef DBL_DIG
147 -e '/[ ]DBL_DIG[ ]/a\
148 #endif
149 ' $file_to_fix > /tmp/$base
150 if cmp $file_to_fix /tmp/$base >/dev/null 2>&1; then \
151 true
152 else
153 echo Fixed $file_to_fix
154 rm -f ${LIB}/$file
155 cp /tmp/$base ${LIB}/$file
156 chmod a+r ${LIB}/$file
158 rm -f /tmp/$base
161 exit 0