diff options
author | wilson <wilson@138bc75d-0d04-0410-961f-82ee72b054a4> | 1998-07-22 12:50:10 +0000 |
---|---|---|
committer | wilson <wilson@138bc75d-0d04-0410-961f-82ee72b054a4> | 1998-07-22 12:50:10 +0000 |
commit | 9af94a5dbe90435fc169524937b20783c8bf2a87 (patch) | |
tree | 1951e821d923c5f33187ce5340a691cf96741a48 /gcc/fixinc.irix | |
parent | 7e2089706dc7c00b273435b218b746a84069d1ae (diff) | |
download | gcc-9af94a5dbe90435fc169524937b20783c8bf2a87.tar.gz |
Avoid irix 6.2/irix 6.3 header file conflict.
* fixinc.irix (math.h): Install wrapper instead of copying.
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@21339 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'gcc/fixinc.irix')
-rwxr-xr-x | gcc/fixinc.irix | 60 |
1 files changed, 31 insertions, 29 deletions
diff --git a/gcc/fixinc.irix b/gcc/fixinc.irix index 337289a121e..5a7cb3f227c 100755 --- a/gcc/fixinc.irix +++ b/gcc/fixinc.irix @@ -1,5 +1,7 @@ #! /bin/sh # Install modified versions of certain problematic Irix include files. +# If possible, create a wrapper (see fixinc.wrap) instead of copying files. +# # Copyright (C) 1997 Free Software Foundation, Inc. # Contributed by Brendan Kehoe (brendan@cygnus.com). # @@ -59,40 +61,40 @@ echo 'Building fixincludes in ' ${LIB} # ADD ANY OTHERS, the "Making directories:" and symlinks code from # fixinc.svr4 may have to go back in. -# The Irix math.h defines struct exception, which conflicts with +# This math.h fix is copied from fixinc.wrap. We want to avoid copying +# math.h because both math.h and stdlib.h have a declaration for initstate, +# and this declaration changed between Irix 6.2 and Irix 6.3. If we copy this +# file, then the same toolchain can't be shared between 6.2 and 6.3+. + +# Some math.h files define struct exception, which conflicts with # the class exception defined in the C++ file std/stdexcept.h. We # redefine it to __math_exception. This is not a great fix, but I # haven't been able to think of anything better. file=math.h -base=`basename $file` -if [ -r ${LIB}/$file ]; then - file_to_fix=${LIB}/$file -else - if [ -r ${INPUT}/$file ]; then - file_to_fix=${INPUT}/$file - else - file_to_fix="" - fi -fi -if [ \! -z "$file_to_fix" ]; then - echo Checking $file_to_fix - sed -e '/struct exception/i\ -#ifdef __cplusplus\ -#define exception __math_exception\ -#endif'\ - -e '/struct exception/a\ -#ifdef __cplusplus\ -#undef exception\ -#endif' $file_to_fix > /tmp/$base - if cmp $file_to_fix /tmp/$base >/dev/null 2>&1; then \ - true - else - echo Fixed $file_to_fix - rm -f ${LIB}/$file - cp /tmp/$base ${LIB}/$file - chmod a+r ${LIB}/$file +if [ -r $INPUT/$file ]; then + echo Checking $INPUT/$file + if grep 'struct exception' $INPUT/$file >/dev/null + then + echo Fixed $file + rm -f $LIB/$file + cat <<'__EOF__' >$LIB/$file +#ifndef _MATH_H_WRAPPER +#ifdef __cplusplus +# define exception __math_exception +#endif +#include_next <math.h> +#ifdef __cplusplus +# undef exception +#endif +#define _MATH_H_WRAPPER +#endif /* _MATH_H_WRAPPER */ +__EOF__ + # Define _MATH_H_WRAPPER at the end of the wrapper, not the start, + # so that if #include_next gets another instance of the wrapper, + # this will follow the #include_next chain until we arrive at + # the real <math.h>. + chmod a+r $LIB/$file fi - rm -f /tmp/$base fi # In limits.h, put #ifndefs around things that are supposed to be defined |