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