OSDN Git Service

(alpha_need_linkage): Call get_identifier.
[pf3gnuchains/gcc-fork.git] / gcc / fixinc.irix
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).
5 #
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.
12
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.
17
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.
22 #
23 #       See README-fixinc for more information.
24
25 # Directory containing the original header files.
26 INPUT=${2-${INPUT-/usr/include}}
27
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
32 fi
33
34 # Directory in which to store the results.
35 LIB=${1?"fixincludes: output directory not specified"}
36
37 # Make sure it exists.
38 if [ ! -d $LIB ]; then
39   mkdir $LIB || exit 1
40 fi
41
42 ORIG_DIR=`pwd`
43
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 /*)
48         ;;
49 *)
50         LIB=$ORIG_DIR/$LIB
51         ;;
52 esac
53
54 echo 'Building fixincludes in ' ${LIB}
55
56 #
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.
61
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=""
75   fi
76 fi
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
94   fi
95   rm -f /tmp/$base
96 fi
97
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.
100
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=""
110   fi
111 fi
112 if [ \! -z "$file_to_fix" ]; then
113   echo Checking $file_to_fix
114   sed -e '/[    ]FLT_MIN[       ]/i\
115 #ifndef FLT_MIN
116 '\
117       -e '/[    ]FLT_MIN[       ]/a\
118 #endif
119 '\
120       -e '/[    ]FLT_MAX[       ]/i\
121 #ifndef FLT_MAX
122 '\
123       -e '/[    ]FLT_MAX[       ]/a\
124 #endif
125 '\
126       -e '/[    ]FLT_DIG[       ]/i\
127 #ifndef FLT_DIG
128 '\
129       -e '/[    ]FLT_DIG[       ]/a\
130 #endif
131 '\
132       -e '/[    ]DBL_MIN[       ]/i\
133 #ifndef DBL_MIN
134 '\
135       -e '/[    ]DBL_MIN[       ]/a\
136 #endif
137 '\
138       -e '/[    ]DBL_MAX[       ]/i\
139 #ifndef DBL_MAX
140 '\
141       -e '/[    ]DBL_MAX[       ]/a\
142 #endif
143 '\
144       -e '/[    ]DBL_DIG[       ]/i\
145 #ifndef DBL_DIG
146 '\
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
157   fi
158   rm -f /tmp/$base
159 fi
160
161 exit 0