source: trunk/essentials/sys-devel/automake-1.4/m4/ccstdc.m4

Last change on this file was 3124, checked in by bird, 18 years ago

automake 1.4-p6

File size: 2.7 KB
Line 
1## ----------------------------------------- ##
2## ANSIfy the C compiler whenever possible. ##
3## From Franc,ois Pinard ##
4## ----------------------------------------- ##
5
6# serial 1
7
8# @defmac AC_PROG_CC_STDC
9# @maindex PROG_CC_STDC
10# @ovindex CC
11# If the C compiler in not in ANSI C mode by default, try to add an option
12# to output variable @code{CC} to make it so. This macro tries various
13# options that select ANSI C on some system or another. It considers the
14# compiler to be in ANSI C mode if it handles function prototypes correctly.
15#
16# If you use this macro, you should check after calling it whether the C
17# compiler has been set to accept ANSI C; if not, the shell variable
18# @code{am_cv_prog_cc_stdc} is set to @samp{no}. If you wrote your source
19# code in ANSI C, you can make an un-ANSIfied copy of it by using the
20# program @code{ansi2knr}, which comes with Ghostscript.
21# @end defmac
22
23AC_DEFUN([AM_PROG_CC_STDC],
24[AC_REQUIRE([AC_PROG_CC])
25AC_BEFORE([$0], [AC_C_INLINE])
26AC_BEFORE([$0], [AC_C_CONST])
27dnl Force this before AC_PROG_CPP. Some cpp's, eg on HPUX, require
28dnl a magic option to avoid problems with ANSI preprocessor commands
29dnl like #elif.
30dnl FIXME: can't do this because then AC_AIX won't work due to a
31dnl circular dependency.
32dnl AC_BEFORE([$0], [AC_PROG_CPP])
33AC_MSG_CHECKING(for ${CC-cc} option to accept ANSI C)
34AC_CACHE_VAL(am_cv_prog_cc_stdc,
35[am_cv_prog_cc_stdc=no
36ac_save_CC="$CC"
37# Don't try gcc -ansi; that turns off useful extensions and
38# breaks some systems' header files.
39# AIX -qlanglvl=ansi
40# Ultrix and OSF/1 -std1
41# HP-UX -Aa -D_HPUX_SOURCE
42# SVR4 -Xc -D__EXTENSIONS__
43for ac_arg in "" -qlanglvl=ansi -std1 "-Aa -D_HPUX_SOURCE" "-Xc -D__EXTENSIONS__"
44do
45 CC="$ac_save_CC $ac_arg"
46 AC_TRY_COMPILE(
47[#include <stdarg.h>
48#include <stdio.h>
49#include <sys/types.h>
50#include <sys/stat.h>
51/* Most of the following tests are stolen from RCS 5.7's src/conf.sh. */
52struct buf { int x; };
53FILE * (*rcsopen) (struct buf *, struct stat *, int);
54static char *e (p, i)
55 char **p;
56 int i;
57{
58 return p[i];
59}
60static char *f (char * (*g) (char **, int), char **p, ...)
61{
62 char *s;
63 va_list v;
64 va_start (v,p);
65 s = g (p, va_arg (v,int));
66 va_end (v);
67 return s;
68}
69int test (int i, double x);
70struct s1 {int (*f) (int a);};
71struct s2 {int (*f) (double a);};
72int pairnames (int, char **, FILE *(*)(struct buf *, struct stat *, int), int, int);
73int argc;
74char **argv;
75], [
76return f (e, argv, 0) != argv[0] || f (e, argv, 1) != argv[1];
77],
78[am_cv_prog_cc_stdc="$ac_arg"; break])
79done
80CC="$ac_save_CC"
81])
82if test -z "$am_cv_prog_cc_stdc"; then
83 AC_MSG_RESULT([none needed])
84else
85 AC_MSG_RESULT($am_cv_prog_cc_stdc)
86fi
87case "x$am_cv_prog_cc_stdc" in
88 x|xno) ;;
89 *) CC="$CC $am_cv_prog_cc_stdc" ;;
90esac
91])
Note: See TracBrowser for help on using the repository browser.