(automk14.info.gz) ANSI
Info Catalog
(automk14.info.gz) Support for Other Languages
(automk14.info.gz) Programs
(automk14.info.gz) Dependencies
7.10 Automatic de-ANSI-fication
===============================
Although the GNU standards allow the use of ANSI C, this can have the
effect of limiting portability of a package to some older compilers
(notably SunOS).
Automake allows you to work around this problem on such machines by
"de-ANSI-fying" each source file before the actual compilation takes
place.
If the `Makefile.am' variable `AUTOMAKE_OPTIONS' ( Options)
contains the option `ansi2knr' then code to handle de-ANSI-fication is
inserted into the generated `Makefile.in'.
This causes each C source file in the directory to be treated as
ANSI C. If an ANSI C compiler is available, it is used. If no ANSI C
compiler is available, the `ansi2knr' program is used to convert the
source files into K&R C, which is then compiled.
The `ansi2knr' program is simple-minded. It assumes the source code
will be formatted in a particular way; see the `ansi2knr' man page for
details.
Support for de-ANSI-fication requires the source files `ansi2knr.c'
and `ansi2knr.1' to be in the same package as the ANSI C source; these
files are distributed with Automake. Also, the package `configure.in'
must call the macro `AM_C_PROTOTYPES' ( Macros).
Automake also handles finding the `ansi2knr' support files in some
other directory in the current package. This is done by prepending the
relative path to the appropriate directory to the `ansi2knr' option.
For instance, suppose the package has ANSI C code in the `src' and
`lib' subdirs. The files `ansi2knr.c' and `ansi2knr.1' appear in
`lib'. Then this could appear in `src/Makefile.am':
AUTOMAKE_OPTIONS = ../lib/ansi2knr
If no directory prefix is given, the files are assumed to be in the
current directory.
Files mentioned in `LIBOBJS' which need de-ANSI-fication will not be
automatically handled. That's because `configure' will generate an
object name like `regex.o', while `make' will be looking for `regex_.o'
(when de-ANSI-fying). Eventually this problem will be fixed via
`autoconf' magic, but for now you must put this code into your
`configure.in', just before the `AC_OUTPUT' call:
# This is necessary so that .o files in LIBOBJS are also built via
# the ANSI2KNR-filtering rules.
LIBOBJS=`echo $LIBOBJS|sed 's/\.o /\$U.o /g;s/\.o$/\$U.o/'`
Info Catalog
(automk14.info.gz) Support for Other Languages
(automk14.info.gz) Programs
(automk14.info.gz) Dependencies
automatically generated byinfo2html