AC_PROG_CC_STRICT_PROTOTYPES(substvar [,hard])
,
Guido U. Draheim <guidod@gmx.de>
GPLWithACException
This program 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. As a special exception, the respective
Autoconf Macro's copyright owner gives unlimited permission to copy, distribute and modify
the configure scripts that are the output of Autoconf when processing the Macro. You
need not follow the terms of the
GNU General Public License when using or distributing such scripts
guidod's Obsoleted (obsoleted)
Try to find a compiler option that warns when a function prototype
is not fully defined. Enable it only if the the system headers are
reasonably clean with respect to compiling with strict-prototypes.
The sanity check is done by looking at sys/signal.h which has a set
of macro-definitions SIG_DFL and SIG_IGN that are cast to the local
signal-handler type. If that signal-handler type is not fully
qualified then the system headers are not seen as strictly
prototype clean.
Currently this macro knows about GCC. hopefully will evolve to use:
Solaris C compiler, Digital Unix C compiler, C for AIX Compiler,
HP-UX C compiler, and IRIX C compiler.
AC_DEFUN([AC_PROG_CC_STRICT_PROTOTYPES], [
pushdef([CV], ac_cv_prog_cc_strict_prototypes)dnl
hard=$2
if test -z "$hard"; then
msg="C to warn at nonstrict prototypes"
else
msg="C to require strict prototypes"
fi
AC_CACHE_CHECK($msg, CV, [
cat > conftest.c <<EOF
#include <sys/signal.h>
int main (void)
{
if (signal (SIGINT, SIG_IGN) == SIG_DFL) return 0;
return 1;
}
EOF
dnl GCC
if test "$GCC" = "yes"; then
if test -z "$hard"; then
CV="-Wstrict-prototypes"
else
CV="-fstrict-prototypes -Wstrict-prototypes"
fi
if test -n "`${CC-cc} -c $CV conftest.c 2>&1`" ; then
CV="suppressed...sys/stat.h"
fi
dnl Solaris C compiler
dnl HP-UX C compiler
dnl Digital Unix C compiler
dnl C for AIX Compiler
dnl IRIX C compiler
fi
rm -f conftest.*
])
if test -z "[$]$1" ; then
if test -n "$CV" ; then
case "$CV" in
*...*) $1="" ;; # known but suppressed
*) $1="$CV" ;;
esac
fi
fi
AC_SUBST($1)
popdef([CV])dnl
])