diff options
Diffstat (limited to 'contrib/libg++/libio/gen-params')
-rwxr-xr-x | contrib/libg++/libio/gen-params | 692 |
1 files changed, 0 insertions, 692 deletions
diff --git a/contrib/libg++/libio/gen-params b/contrib/libg++/libio/gen-params deleted file mode 100755 index b6e51b042dd9..000000000000 --- a/contrib/libg++/libio/gen-params +++ /dev/null @@ -1,692 +0,0 @@ -#!/bin/sh -# Copyright (C) 1992, 1993, 1994 Free Software Foundation -# -# This file is part of the GNU IO Library. This library is free -# software; you can redistribute it and/or modify it under the -# terms of the GNU General Public License as published by the -# Free Software Foundation; either version 2, or (at your option) -# any later version. -# -# This library is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with this library; see the file COPYING. If not, write to the Free -# Software Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. - -# Written by Per Bothner (bothner@cygnus.com) - -# This is a shell-script that figures out various things about a -# system, and writes (to stdout) a C-style include files with -# suitable definitions, including all the standard Posix types. -# It works by compiling various test programs -- some are run through -# the C pre-processor, and the output examined. -# The test programs are only compiled, not executed, so the script -# should even if you're cross-compiling. -# It uses $CC (which defaults to cc) to compile C programs (extension .c), -# and $CXX (which defaults to gcc) to compile C++ programs (extension .C). -# The shell-script is written for libg++.a. - -# Usage: gen-params [NAME1=name1 ...] -# - where an assignment (such as size_t="unsigned int" means to -# use that value, instead of trying to figure it out. - -# Uncomment following line for debugging -# set -x - -SED=sed - -# Evaluate the arguments (which should be assignments): -for arg in "$@"; do - # Quote arg (i.e. FOO=bar => FOO='bar'), then eval it. - eval `echo "$arg" | ${SED} -e "s|^\(.*\)=\(.*\)|\1='\2'|"` -done - -macro_prefix=${macro_prefix-"_G_"} -rootdir=`pwd`/.. -gccdir=${gccdir-${rootdir}/gcc} -binutilsdir=${binutilsdir-${rootdir}/binutils} -CC=${CC-`if [ -f ${gccdir}/xgcc ] ; \ - then echo ${gccdir}/xgcc -B${gccdir}/ ; \ - else echo cc ; fi`} -CXX=${CXX-`if [ -f ${gccdir}/xgcc ] ; \ - then echo ${gccdir}/xgcc -B${gccdir}/ ; \ - else echo gcc ; fi`} -CPP=${CPP-`echo ${CC} -E`} -CONFIG_NM=${CONFIG_NM-`if [ -f ${binutilsdir}/nm.new ] ; \ - then echo ${binutilsdir}/nm.new ; \ - else echo nm ; fi`} - -cat <<!EOF! -/* AUTOMATICALLY GENERATED; DO NOT EDIT! */ -#ifndef ${macro_prefix}config_h -#define ${macro_prefix}config_h -!EOF! - -if [ x"${LIB_VERSION}" != "x" ] ; then - echo "#define ${macro_prefix}LIB_VERSION" '"'${LIB_VERSION}'"' -fi - -# This program is used to test if the compiler prepends '_' before identifiers. -# It is also used to check the g++ uses '$' or '.' various places. - -if test -z "${NAMES_HAVE_UNDERSCORE}" -o -z "${DOLLAR_IN_LABEL}" \ - -o -z "${VTABLE_LABEL_PREFIX}"; then - cat >dummy.h <<!EOF! -#ifdef __GNUG__ -#pragma interface -#endif - struct filebuf { - virtual int foo(); - }; -!EOF! - cat >dummy.C <<!EOF! -#ifdef __GNUG__ -#pragma implementation -#endif -#include "dummy.h" - int filebuf::foo() { return 0; } - extern "C" int FUNC(int); - int FUNC(int i) { return i+10; } -!EOF! - - if ${CXX} -O -c dummy.C ; then - if test -z "${NAMES_HAVE_UNDERSCORE}" ; then - if test "`${CONFIG_NM} dummy.o | grep _FUNC`" != ""; then - NAMES_HAVE_UNDERSCORE=1 - elif test "`${CONFIG_NM} dummy.o | grep FUNC`" != ""; then - NAMES_HAVE_UNDERSCORE=0 - else - echo "${CONFIG_NM} failed to find FUNC in dummy.o!" 1>&2; exit -1; - fi - fi - echo "#define ${macro_prefix}NAMES_HAVE_UNDERSCORE ${NAMES_HAVE_UNDERSCORE}" - - if test -z "${VTABLE_LABEL_PREFIX}" ; then - # Determine how virtual function tables are named. This is fragile, - # because different nm's produce output in different formats. - ${CONFIG_NM} dummy.o >TMP - if [ -n "`${SED} -n -e 's/ virtual table/nope/p' <TMP`" ] ; then - ${CONFIG_NM} --no-cplus dummy.o >TMP 2>/dev/null || - ${CONFIG_NM} --no-demangle dummy.o >TMP 2>/dev/null || - ${CONFIG_NM} dummy.o >TMP 2>/dev/null - fi - # First we look for a pattern that matches historical output from g++. - # We surround the actual label name by <> to separate it from - # other nm junk. - ${SED} -n -e 's/_*vt[$_.]7*filebuf/<&>/p' <TMP >dummy.out - # For paranoia's sake (e.g. if we're using some other C++ compiler) - # we try a more general pattern, and append the result. - grep -v foo <TMP \ - | ${SED} -n -e 's/[a-zA-Z0-9_.$]*filebuf[a-zA-Z0-9_.$]*/<&>/p' \ - >>dummy.out - # Now we get rid of the <>, and any other junk on the nm output line. - # (We get rid of <filebuf> in case nm included debugging output for - # class filebuf itself.) Finally, we select the first line of - # the result, and hope that's what we wanted! - vtab_name=`${SED} -n -e '/<filebuf>/d' -e 's/^.*<\(.*\)>.*$/\1/p' \ - <dummy.out | ${SED} -n -e '1p'` - case "${vtab_name}" in - *7filebuf) echo "#define ${macro_prefix}VTABLE_LABEL_HAS_LENGTH 1" ;; - *) echo "#define ${macro_prefix}VTABLE_LABEL_HAS_LENGTH 0" ;; - esac - VTABLE_LABEL_PREFIX=`echo $vtab_name | ${SED} -e 's/7*filebuf//'` - fi - echo "#define ${macro_prefix}VTABLE_LABEL_PREFIX" '"'"${VTABLE_LABEL_PREFIX}"'"' - if [ "${VTABLE_LABEL_PREFIX}" = "__vt_" -o \ - "${VTABLE_LABEL_PREFIX}" = "___vt_" ] ; then - echo "#define ${macro_prefix}USING_THUNKS" - fi - - # VTABLE_LABEL_PREFIX_ID is the same as VTABLE_LABEL_PREFIX, - # but the former is a C identifier, while the latter is a quoted - # st - if [ -z ""`echo ${VTABLE_LABEL_PREFIX} | ${SED} -e 's/[a-zA-Z0-9_]//g'` ] ; then - if [ "${NAMES_HAVE_UNDERSCORE}" = "1" ] ; then - VTABLE_LABEL_PREFIX=`echo ${VTABLE_LABEL_PREFIX} | ${SED} -e 's/^_//'` - fi - echo "#define ${macro_prefix}VTABLE_LABEL_PREFIX_ID ${VTABLE_LABEL_PREFIX}" - fi - -# if test -n "${DOLLAR_IN_LABEL}" ; then -# echo "#define ${macro_prefix}DOLLAR_IN_LABEL ${DOLLAR_IN_LABEL}" -# elif test "`${CONFIG_NM} dummy.o | grep 'vt[$$]7filebuf'`" != ""; then -# echo "#define ${macro_prefix}DOLLAR_IN_LABEL 1" -# elif test "`${CONFIG_NM} dummy.o | grep 'vt[.]7filebuf'`" != ""; then -# echo "#define ${macro_prefix}DOLLAR_IN_LABEL 0" -# elif test "`${CONFIG_NM} dummy.o | grep 'vtbl__7filebuf'`" != ""; then -# echo "#define ${macro_prefix}DOLLAR_IN_LABEL 0" -# else -# echo "gen-params: ${CONFIG_NM} failed to find vt[.\$]filebuf in dummy.o!" 1>&2; exit 1 -# fi - else - # The compile failed for some reason (no C++?) - echo "gen-params: could not compile dummy.C with ${CXX}" 1>&2; exit 1; - fi -fi - -# A little test program to check if struct stat has st_blksize. -cat >dummy.c <<!EOF! -#include <sys/types.h> -#include <sys/stat.h> -int BLKSIZE(struct stat *st) -{ - return st->st_blksize; -} -!EOF! - -if ${CC} -c dummy.c >/dev/null 2>&1 ; then - echo "#define ${macro_prefix}HAVE_ST_BLKSIZE 1" -else - echo "#define ${macro_prefix}HAVE_ST_BLKSIZE 0" -fi - -# A little test program to check if the name 'clog' is defined in libm, -# as it is under DEC UNIX. -cat >dummy.c <<!EOF! -int clog; -main () {} -!EOF! - -if ${CC} dummy.c -lm 2>&1 >/dev/null | grep clog >/dev/null; then - echo "#define ${macro_prefix}CLOG_CONFLICT 1" -fi - -# Next, generate definitions for the standard types (such as mode_t) -# compatible with those in the standard C header files. -# It works by a dummy program through the C pre-processor, and then -# using sed to search for typedefs in the output. - -for hdr in wchar wctype; do - eval $hdr=0 - cat >dummy.c <<EOF -#include <${hdr}.h> -EOF - if ${CPP} dummy.c >/dev/null 2>&1 ; then eval $hdr=1; fi -done - -cat >dummy.c <<!EOF! -#include <sys/types.h> -#include <stddef.h> -#ifdef __STDC__ -#include <stdarg.h> -#else /* !__STDC__ */ -#include <varargs.h> -#endif /* __STDC__ */ -#include <stdio.h> -#include <time.h> -#include <signal.h> -#ifdef __STDC__ -#include <limits.h> -#endif -#if WCHAR == 1 -#include <wchar.h> -#endif -#if WCTYPE == 1 -#include <wctype.h> -#endif -#ifdef size_t -typedef size_t Xsize_t; -#elif defined(__SIZE_TYPE__) -typedef __SIZE_TYPE__ Xsize_t; -#endif -#ifdef ptrdiff_t -typedef ptrdiff_t Xptrdiff_t; -#elif defined(__PTRDIFF_TYPE__) -typedef __PTRDIFF_TYPE__ Xptrdiff_t; -#endif -#ifdef wchar_t -typedef wchar_t Xwchar_t; -#elif defined(__WCHAR_TYPE__) -typedef __WCHAR_TYPE__ Xwchar_t; -#endif -#ifdef va_list -typedef va_list XXXva_list; -#endif -#ifdef BUFSIZ -long XBUFSIZ=BUFSIZ; -#endif -#ifdef FOPEN_MAX -long XFOPEN_MAX=FOPEN_MAX; -#endif -#ifdef FILENAME_MAX -long XFILENAME_MAX=FILENAME_MAX; -#endif -#ifdef SHRT_MAX -long XSHRT_MAX=SHRT_MAX; -#endif -#ifdef INT_MAX -long XINT_MAX=INT_MAX; -#endif -#ifdef LONG_MAX -long XLONG_MAX=LONG_MAX; -#endif -#ifdef LONG_LONG_MAX -long XLONG_LONG_MAX=LONG_LONG_MAX; -#endif -!EOF! - -if ${CPP} dummy.c -DWCHAR=$wchar -DWCTYPE=$wctype >TMP ; then true -else - echo "gen-params: could not invoke ${CPP} on dummy.c" 1>&2 ; exit 1 -fi -tr ' ' ' ' <TMP >dummy.out - -for TYPE in dev_t clock_t fpos_t gid_t ino_t mode_t nlink_t off_t pid_t ptrdiff_t sigset_t size_t ssize_t time_t uid_t va_list wchar_t wint_t int16_t uint16_t int32_t uint_32_t u_int16_t u_int32_t; do - IMPORTED=`eval 'echo $'"$TYPE"` - if [ -n "${IMPORTED}" ] ; then - eval "$TYPE='$IMPORTED'" - else - t=$TYPE - VALUE='' - - # Follow `typedef VALUE TYPE' chains, but don't loop indefinitely. - for iteration in 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20; do - # Search dummy.out for a typedef for X*$t. - sed_script=" - /.*typedef *\\(.*[^ ]\\) *X*$t *;.*/{s||\1|;p;q;} - /.*typedef *\\(.*[^ a-zA-Z0-9_]\\)X*$t *;.*/{s||\1|;p;q;} - " - t=`${SED} -n "$sed_script" <dummy.out` - case "$t" in - '') - break;; - *) - # Found a type $t; save it in VALUE. - VALUE=$t - # If it won't cause problems in matching, - # look for a typedef for it in turn. - case "$VALUE" in - *.* | */* | *\ * | *\** | *\[* | *\\*) break;; - esac;; - esac - done - - case "$VALUE" in - ?*) eval "$TYPE=\"$VALUE\"" - esac - fi -done - -cat <<!EOF! -typedef ${clock_t-int /* default */} ${macro_prefix}clock_t; -typedef ${dev_t-int /* default */} ${macro_prefix}dev_t; -typedef ${fpos_t-long /* default */} ${macro_prefix}fpos_t; -typedef ${gid_t-int /* default */} ${macro_prefix}gid_t; -typedef ${ino_t-int /* default */} ${macro_prefix}ino_t; -typedef ${mode_t-int /* default */} ${macro_prefix}mode_t; -typedef ${nlink_t-int /* default */} ${macro_prefix}nlink_t; -typedef ${off_t-long /* default */} ${macro_prefix}off_t; -typedef ${pid_t-int /* default */} ${macro_prefix}pid_t; -#ifndef __PTRDIFF_TYPE__ -#define __PTRDIFF_TYPE__ ${ptrdiff_t-long int /* default */} -#endif -typedef __PTRDIFF_TYPE__ ${macro_prefix}ptrdiff_t; -typedef ${sigset_t-int /* default */} ${macro_prefix}sigset_t; -#ifndef __SIZE_TYPE__ -#define __SIZE_TYPE__ ${size_t-unsigned long /* default */} -#endif -typedef __SIZE_TYPE__ ${macro_prefix}size_t; -typedef ${time_t-int /* default */} ${macro_prefix}time_t; -typedef ${uid_t-int /* default */} ${macro_prefix}uid_t; -typedef ${wchar_t-int /* default */} ${macro_prefix}wchar_t; -!EOF! - - -# ssize_t is the signed version of size_t -if [ -n "${ssize_t}" ] ; then - echo "typedef ${ssize_t} ${macro_prefix}ssize_t;" -elif [ -z "${size_t}" ] ; then - echo "typedef long ${macro_prefix}ssize_t;" -else - # Remove "unsigned" from ${size_t} to get ${ssize_t}. - tmp="`echo ${size_t} | ${SED} -e 's|unsigned||g' -e 's| | |g'`" - if [ -z "$tmp" ] ; then - tmp=int - else - # check $tmp doesn't conflict with <unistd.h> - echo "#include <unistd.h> - extern $tmp read();" >dummy.c - ${CC} -c dummy.c >/dev/null 2>&1 || tmp=int - fi - echo "typedef $tmp /* default */ ${macro_prefix}ssize_t;" -fi - -# wint_t is often the integral type to which wchar_t promotes. -if [ -z "${wint_t}" ] ; then - for TYPE in int 'unsigned int' 'long int' 'long unsigned int'; do - cat >dummy.C <<!EOF! -#ifndef __WCHAR_TYPE__ -#define __WCHAR_TYPE__ ${wchar_t-int /* default */} -#endif -typedef __WCHAR_TYPE__ ${macro_prefix}wchar_t; -void foo ($TYPE); -void foo (double); -void bar (${macro_prefix}wchar_t w) -{ - foo (w); -} -!EOF! - if ${CXX} -c dummy.C >/dev/null 2>&1 ; then - wint_t="$TYPE /* default */" - break - fi - done -fi -echo "typedef ${wint_t-int /* wchar_t is broken */} ${macro_prefix}wint_t;" - -# va_list can cause problems (e.g. some systems have va_list as a struct). -# Check to see if ${va_list-char*} really is compatible with stdarg.h. -cat >dummy.C <<!EOF! -#define X_va_list ${va_list-char* /* default */} -extern long foo(X_va_list ap); /* Check that X_va_list compiles on its own */ -extern "C" { -#include <stdarg.h> -} -long foo(X_va_list ap) { return va_arg(ap, long); } -long bar(int i, ...) -{ va_list ap; long j; va_start(ap, i); j = foo(ap); va_end(ap); return j; } -!EOF! -if ${CXX} -c dummy.C >/dev/null 2>&1 ; then - # Ok: We have something that works. - echo "typedef ${va_list-char* /* default */} ${macro_prefix}va_list;" -else - # No, it breaks. Indicate that <stdarg.h> must be included. - echo "#define ${macro_prefix}NEED_STDARG_H -#define ${macro_prefix}va_list va_list" -fi - -cat >dummy.c <<!EOF! -#include <signal.h> -extern int (*signal())(); -extern int dummy (int); -main() -{ - int (*oldsig)(int) = signal (1, dummy); - (void) signal (2, oldsig); - return 0; -} -!EOF! -if ${CC} -c dummy.c >/dev/null 2>&1 ; then - echo "#define ${macro_prefix}signal_return_type int" -else - echo "#define ${macro_prefix}signal_return_type void" -fi - -# check sprintf return type - -cat >dummy.c <<!EOF! -#include <stdio.h> -extern int sprintf(); char buf[100]; -int main() { return sprintf(buf, "%d", 34); } -!EOF! -if ${CC} -c dummy.c >/dev/null 2>&1 ; then - echo "#define ${macro_prefix}sprintf_return_type int" -else - echo "#define ${macro_prefix}sprintf_return_type char*" -fi - -# Look for some standard macros. -for NAME in BUFSIZ FOPEN_MAX FILENAME_MAX NULL; do - IMPORTED=`eval 'echo $'"$NAME"` - if [ -n "${IMPORTED}" ] ; then - eval "$NAME='$IMPORTED /* specified */" - else - rm -f TMP - ${SED} -n -e 's| *;|;|g' -e "s|long X${NAME}= *\(.*\);|\1|w TMP" \ - <dummy.out>/dev/null - # Now select the first definition. - if [ -s TMP ]; then - eval "$NAME='"`${SED} -e '2,$d' <TMP`"'" - fi - fi -done - -# These macros must be numerical constants; strip any trailing 'L's. -for NAME in SHRT_MAX INT_MAX LONG_MAX LONG_LONG_MAX; do - IMPORTED=`eval 'echo $'"$NAME"` - if [ -n "${IMPORTED}" ] ; then - eval "$NAME='$IMPORTED /* specified */" - else - rm -f TMP - ${SED} -n -e 's| *;|;|g' -e "s|long X${NAME}= *\([0-9]*\)L* *;|\1|w TMP" \ - <dummy.out>/dev/null - # Now select the first definition. - if [ -s TMP ]; then - eval "$NAME='"`${SED} -e '2,$d' <TMP`"'" - fi - fi -done - -# Figure out integral type sizes. - -default_int16='short /* deduction failed */' -default_int32='long /* deduction failed */' -INT16=32767 -INT32=2147483647 - -if [ "${SHRT_MAX}" = $INT16 ] ; then - default_int16='short /* deduced */' - if [ "${LONG_MAX}" = $INT32 ] ; then - default_int32='long /* deduced */' - elif [ "${INT_MAX}" = $INT32 ] ; then - default_int32='int /* deduced */' - fi -fi - -[ -n "$u_int16_t" ] && uint16_t="$u_int16_t" -[ -n "$u_int32_t" ] && uint32_t="$u_int32_t" - -[ -z "$int16_t" ] && int16_t="$default_int16" -[ -z "$uint16_t" ] && uint16_t="unsigned $int16_t" -[ -z "$int32_t" ] && int32_t="$default_int32" -[ -z "$uint32_t" ] && uint32_t="unsigned $int32_t" - -cat <<!EOF! - -#if __GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 7) -typedef int ${macro_prefix}int8_t __attribute__((__mode__(__QI__))); -typedef unsigned int ${macro_prefix}uint8_t __attribute__((__mode__(__QI__))); -typedef int ${macro_prefix}int16_t __attribute__((__mode__(__HI__))); -typedef unsigned int ${macro_prefix}uint16_t __attribute__((__mode__(__HI__))); -typedef int ${macro_prefix}int32_t __attribute__((__mode__(__SI__))); -typedef unsigned int ${macro_prefix}uint32_t __attribute__((__mode__(__SI__))); -typedef int ${macro_prefix}int64_t __attribute__((__mode__(__DI__))); -typedef unsigned int ${macro_prefix}uint64_t __attribute__((__mode__(__DI__))); -#else -typedef $int16_t ${macro_prefix}int16_t; -typedef $uint16_t ${macro_prefix}uint16_t; -typedef $int32_t ${macro_prefix}int32_t; -typedef $uint32_t ${macro_prefix}uint32_t; -#endif - -#define ${macro_prefix}BUFSIZ ${BUFSIZ-1024 /* default */} -#define ${macro_prefix}FOPEN_MAX ${FOPEN_MAX-32 /* default */} -#define ${macro_prefix}FILENAME_MAX ${FILENAME_MAX-1024 /* default */} -#define ${macro_prefix}NULL ${NULL-0 /* default */} -#if defined (__cplusplus) || defined (__STDC__) -#define ${macro_prefix}ARGS(ARGLIST) ARGLIST -#else -#define ${macro_prefix}ARGS(ARGLIST) () -#endif -#if !defined (__GNUG__) || defined (__STRICT_ANSI__) -#define ${macro_prefix}NO_NRV -#endif -#if !defined (__GNUG__) -#define _G_NO_EXTERN_TEMPLATES -#endif -!EOF! - -rm -f dummy.c dummy.o dummy.h - -if test -n "${HAVE_ATEXIT}" ; then - echo "#define ${macro_prefix}HAVE_ATEXIT ${HAVE_ATEXIT}" -else - cat >dummy.c <<!EOF! -#include <stdlib.h> -int main() -{ - atexit (0); -} -!EOF! - if ${CC} dummy.c >/dev/null 2>&1 ; then - echo "#define ${macro_prefix}HAVE_ATEXIT 1" - else - echo "#define ${macro_prefix}HAVE_ATEXIT 0" - fi -fi - - -# *** Check for presence of certain include files *** - -# check for sys/resource.h - -if test -n "${HAVE_SYS_RESOURCE}" ; then - echo "#define ${macro_prefix}HAVE_SYS_RESOURCE ${HAVE_SYS_RESOURCE}" -else - cat >dummy.c <<!EOF! -#include <sys/types.h> -#include <sys/time.h> -#include <sys/resource.h> - int main() - { - struct rusage res; - getrusage(RUSAGE_SELF, &res); - return (int)(res.ru_utime.tv_sec + (res.ru_utime.tv_usec / 1000000.0)); - } -!EOF! - # Note: We link because some systems have sys/resource, but not getrusage(). - if ${CC} dummy.c >/dev/null 2>&1 ; then - echo "#define ${macro_prefix}HAVE_SYS_RESOURCE 1" - else - echo "#define ${macro_prefix}HAVE_SYS_RESOURCE 0" - fi -fi - -# check for struct tms in sys/times.h - -if test -n "${HAVE_SYS_TIMES}" ; then - echo "#define ${macro_prefix}HAVE_SYS_TIMES ${HAVE_SYS_TIMES}" -else - cat >dummy.c <<!EOF! -#include <sys/types.h> -#include <sys/times.h> - int main() - { - struct tms s; - return s.tms_utime; - } -!EOF! - if ${CC} -c dummy.c >/dev/null 2>&1 ; then - echo "#define ${macro_prefix}HAVE_SYS_TIMES 1" - else - echo "#define ${macro_prefix}HAVE_SYS_TIMES 0" - fi -fi - -# check for sys/socket.h - -if test -n "${HAVE_SYS_SOCKET}" ; then - echo "#define ${macro_prefix}HAVE_SYS_SOCKET ${HAVE_SYS_SOCKET}" -else - echo '#include <sys/types.h>' >dummy.c - echo '#include <sys/socket.h>' >>dummy.c - if ${CC} -c dummy.c >/dev/null 2>&1 ; then - echo "#define ${macro_prefix}HAVE_SYS_SOCKET 1" - else - echo "#define ${macro_prefix}HAVE_SYS_SOCKET 0" - fi -fi - -# check for sys/cdefs.h - -if test -n "${HAVE_SYS_CDEFS}" ; then - echo "#define ${macro_prefix}HAVE_SYS_CDEFS ${HAVE_SYS_CDEFS}" -else - echo '#include <sys/cdefs.h>' >dummy.c - echo 'extern int myfunc __P((int, int));' >>dummy.c - if ${CC} -c dummy.c >/dev/null 2>&1 ; then - echo "#define ${macro_prefix}HAVE_SYS_CDEFS 1" - else - echo "#define ${macro_prefix}HAVE_SYS_CDEFS 0" - fi -fi - -# Check for a (Posix-compatible) sys/wait.h */ - -if test -n "${HAVE_SYS_WAIT}" ; then - echo "#define ${macro_prefix}HAVE_SYS_WAIT ${HAVE_SYS_WAIT}" -else - cat >dummy.c <<!EOF! -#include <sys/types.h> -#include <sys/wait.h> - int f() { int i; wait(&i); return i; } -!EOF! - if ${CC} -c dummy.c >/dev/null 2>&1 ; then - echo "#define ${macro_prefix}HAVE_SYS_WAIT 1" - else - echo "#define ${macro_prefix}HAVE_SYS_WAIT 0" - fi -fi - -if test -n "${HAVE_UNISTD}" ; then - echo "#define ${macro_prefix}HAVE_UNISTD ${HAVE_UNISTD}" -else - echo '#include <unistd.h>' >dummy.c - if ${CC} -c dummy.c >/dev/null 2>&1 ; then - echo "#define ${macro_prefix}HAVE_UNISTD 1" - else - echo "#define ${macro_prefix}HAVE_UNISTD 0" - fi -fi - -if test -n "${HAVE_DIRENT}" ; then - echo "#define ${macro_prefix}HAVE_DIRENT ${HAVE_DIRENT}" -else - echo '#include <sys/types.h> -#include <dirent.h>' >dummy.c - if ${CC} -c dummy.c >/dev/null 2>&1 ; then - echo "#define ${macro_prefix}HAVE_DIRENT 1" - else - echo "#define ${macro_prefix}HAVE_DIRENT 0" - fi -fi - -if test -n "${HAVE_CURSES}" ; then - echo "#define ${macro_prefix}HAVE_CURSES ${HAVE_CURSES}" -else - echo '#include <curses.h>' >dummy.c - if ${CC} -c dummy.c >/dev/null 2>&1 ; then - echo "#define ${macro_prefix}HAVE_CURSES 1" - else - echo "#define ${macro_prefix}HAVE_CURSES 0" - fi -fi - -# There is no test for this at the moment; it is just set by the -# configuration files. -if test -n "${MATH_H_INLINES}" ; then - echo "#define ${macro_prefix}MATH_H_INLINES ${MATH_H_INLINES}" -else - echo "#define ${macro_prefix}MATH_H_INLINES 0" -fi - -if test -n "${HAVE_BOOL}" ; then - echo "#define ${macro_prefix}HAVE_BOOL ${HAVE_BOOL}" -else - echo 'bool i=true,j=false;' >dummy.C - if ${CXX} -c dummy.C >/dev/null 2>&1 ; then - echo "#define ${macro_prefix}HAVE_BOOL 1" - else - echo "#define ${macro_prefix}HAVE_BOOL 0" - fi -fi - -# Uncomment the following line if you don't have working templates. -# echo "#define ${macro_prefix}NO_TEMPLATES" - -rm -f dummy.C dummy.o dummy.c dummy.out TMP core a.out - -echo "#endif /* !${macro_prefix}config_h */" |