From e8ee97bf2b2e777b3c98f2d7030a43531287126d Mon Sep 17 00:00:00 2001 From: Manfred Hollstein Date: Tue, 16 Sep 1997 03:59:48 +0000 Subject: [PATCH] Renamed fixinc.math to fixinc.wrap From-SVN: r15465 --- gcc/fixinc.wrap | 86 +++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 86 insertions(+) create mode 100755 gcc/fixinc.wrap 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 +#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 . + 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 +#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 . + chmod a+r $LIB/$file + fi +fi + +exit 0 -- 2.30.2