From: Tom Tromey Date: Mon, 27 Nov 1995 21:14:52 +0000 (+0000) Subject: *** empty log message *** X-Git-Tag: Release-0-25~110 X-Git-Url: https://sourceware.org/git/?a=commitdiff_plain;h=d97012c72b1b56447944c07c94b8e78e56fe3212;p=automake.git *** empty log message *** --- diff --git a/NEWS b/NEWS index c1f4a515..ddc912b8 100644 --- a/NEWS +++ b/NEWS @@ -2,6 +2,7 @@ New in 0.21: * Reimplemented in Perl * Added --amdir option (for debugging) * Texinfo support cleaned up. +* Automatic de-ANSI-fication cleaned up. New in 0.20: * Automatic dependency tracking diff --git a/automake.texi b/automake.texi index fbb3031b..79418e49 100644 --- a/automake.texi +++ b/automake.texi @@ -463,9 +463,85 @@ This means that each C source file will be treated as ANSI C. If no ANSI C compiler is available on the build system, then the code will be turned into K&R C before compilation. -FIXME need a section here about what really goes on here, what -constraints there are, and what new files need to be in the -distribution. Only, I don't know. +Each directory that uses automatic de-ANSI-fication must include the +source files @file{ansi2knr.c} and @file{ansi2knr.1}. Also, your +@file{configure} script must define the variables @samp{U} and +@samp{ANSI2KNR}. Here is a snippet you can add to @file{aclocal.m4} to +achieve this: + +@example +## ------------------------------- ## +## Check for function prototypes. ## +## ------------------------------- ## + +AC_DEFUN(fp_C_PROTOTYPES, +[AC_REQUIRE([fp_PROG_CC_STDC]) +AC_MSG_CHECKING([for function prototypes]) +if test "$ac_cv_prog_cc_stdc" != no; then + AC_MSG_RESULT(yes) + AC_DEFINE(PROTOTYPES) + U= ANSI2KNR= +else + AC_MSG_RESULT(no) + U=_ ANSI2KNR=./ansi2knr +fi +AC_SUBST(U)dnl +AC_SUBST(ANSI2KNR)dnl +]) + + +## ----------------------------------------- ## +## ANSIfy the C compiler whenever possible. ## +## ----------------------------------------- ## + +# @@defmac AC_PROG_CC_STDC +# @@maindex PROG_CC_STDC +# @@ovindex CC +# If the C compiler in not in ANSI C mode by default, try to add an option +# to output variable @@code@{CC@} to make it so. This macro tries various +# options that select ANSI C on some system or another. It considers the +# compiler to be in ANSI C mode if it defines @@code@{__STDC__@} to 1 and +# handles function prototypes correctly. +# +# If you use this macro, you should check after calling it whether the C +# compiler has been set to accept ANSI C; if not, the shell variable +# @@code@{ac_cv_prog_cc_stdc@} is set to @@samp@{no@}. If you wrote your source +# code in ANSI C, you can make an un-ANSIfied copy of it by using the +# program @@code@{ansi2knr@}, which comes with Ghostscript. +# @@end defmac + +AC_DEFUN(fp_PROG_CC_STDC, +[AC_MSG_CHECKING(for $@{CC-cc@} option to accept ANSI C) +AC_CACHE_VAL(ac_cv_prog_cc_stdc, +[ac_cv_prog_cc_stdc=no +ac_save_CFLAGS="$CFLAGS" +# Don't try gcc -ansi; that turns off useful extensions and +# breaks some systems' header files. +# AIX -qlanglvl=ansi +# Ultrix and OSF/1 -std1 +# HP-UX -Aa -D_HPUX_SOURCE +# SVR4 -Xc +for ac_arg in "" -qlanglvl=ansi -std1 "-Aa -D_HPUX_SOURCE" -Xc +do + CFLAGS="$ac_save_CFLAGS $ac_arg" + AC_TRY_COMPILE( +[#if !defined(__STDC__) || __STDC__ != 1 +choke me +#endif +], [int test (int i, double x); +struct s1 @{int (*f) (int a);@}; +struct s2 @{int (*f) (double a);@};], +[ac_cv_prog_cc_stdc="$ac_arg"; break]) +done +CFLAGS="$ac_save_CFLAGS" +]) +AC_MSG_RESULT($ac_cv_prog_cc_stdc) +case "x$ac_cv_prog_cc_stdc" in + x|xno) ;; + *) CC="$CC $ac_cv_prog_cc_stdc" ;; +esac +]) +@end example @node Install