diff options
author | manfred <manfred@138bc75d-0d04-0410-961f-82ee72b054a4> | 1997-09-16 03:59:48 +0000 |
---|---|---|
committer | manfred <manfred@138bc75d-0d04-0410-961f-82ee72b054a4> | 1997-09-16 03:59:48 +0000 |
commit | e0cf59216e5d75a4732fc2289db22503eeca77d6 (patch) | |
tree | 9c9d255641ec9b6b9afd4b46e7163067874c1838 /gcc/fixinc.wrap | |
parent | 447a9eb9a6224483e22ea816ace798558a37c74d (diff) | |
download | gcc-e0cf59216e5d75a4732fc2289db22503eeca77d6.tar.gz |
Renamed fixinc.math to fixinc.wrap
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@15465 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'gcc/fixinc.wrap')
-rwxr-xr-x | gcc/fixinc.wrap | 86 |
1 files changed, 86 insertions, 0 deletions
diff --git a/gcc/fixinc.wrap b/gcc/fixinc.wrap new file mode 100755 index 00000000000..406c87e9c03 --- /dev/null +++ b/gcc/fixinc.wrap @@ -0,0 +1,86 @@ +#! /bin/sh +# Create wrappers for include files instead of replacing them. +# +# This script is designed for systems whose include files can be fixed +# by creating small wrappers around them. +# An advantage of this method is that if the system include files are changed +# (e.g. by OS upgrade), you need not re-run fixincludes. +# +# See README-fixinc for more information. + +# Directory containing the original header files. +# (This was named INCLUDES, but that conflicts with a name in Makefile.in.) +INPUT=${2-${INPUT-/usr/include}} + +# Directory in which to store the results. +LIB=${1?"fixincludes: output directory not specified"} + +# Make sure it exists. +if [ ! -d $LIB ]; then + mkdir $LIB || exit 1 +fi + +echo Building fixed headers in ${LIB} + +# 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 +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 +fi + +# Avoid the definition of the bool type in the Solaris 2.x curses.h when using +# g++, since it's now an official type in the C++ language. +file=curses.h +if [ -r $INPUT/$file ]; then + echo Checking $INPUT/$file + w='[ ]' + if grep "typedef$w$w*char$w$w*bool$w*;" $INPUT/$file >/dev/null + then + echo Fixed $file + rm -f $LIB/$file + cat <<'__EOF__' >$LIB/$file +#ifndef _CURSES_H_WRAPPER +#ifdef __cplusplus +# define bool __curses_bool_t +#endif +#include_next <curses.h> +#ifdef __cplusplus +# undef bool +#endif +#define _CURSES_H_WRAPPER +#endif /* _CURSES_H_WRAPPER */ +__EOF__ + # Define _CURSES_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 <curses.h>. + chmod a+r $LIB/$file + fi +fi + +exit 0 |