Macro: ac_prog_cc_strict_prototypes

Back to the Main Page. | # ac_prog_cc_strict_prototypes | Download the M4 Source.

Synopsis

  `AC_PROG_CC_STRICT_PROTOTYPES(substvar [,hard])`

Version

  1.1.1.1 (2001/07/26) C_Support @ ac-archive-0.5.39

Author

  Guido Draheim <guidod@gmx.de>

Description

  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.

M4 Source Code

      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
      ])