[ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
For our third try at this program, we will write a `configure.in' script to discover the configuration features on the host system, rather than requiring the user to edit the `Makefile'. We will also write a `Makefile.am' rather than a `Makefile'.
The only change to `poke.c' is to add a line at the start of the file:
#include "config.h" |
The new `configure.in' file is as follows.
AC_INIT(poke.c) AM_INIT_AUTOMAKE(poke, 1.0) AM_CONFIG_HEADER(config.h:config.in) AC_PROG_CC AC_HEADER_STDC AC_CHECK_HEADERS(utime.h) AC_EGREP_HEADER(utimbuf, utime.h, AC_DEFINE(HAVE_STRUCT_UTIMBUF)) AC_FUNC_UTIME_NULL AC_OUTPUT(Makefile) |
The first four macros in this file, and the last one, were described above; see 2.1 Write configure.in. If we omit these macros, then when we run `automake' we will get a reminder that we need them.
The other macros are standard autoconf macros.
See the autoconf manual for a more complete description.
The new `Makefile.am' file is as follows. Note how simple this is compared to our earlier `Makefile'.
bin_PROGRAMS = poke poke_SOURCES = poke.c |
This means that we should build a single program name `poke'. It should be installed in the binary directory, which we called `bindir' earlier. The program `poke' is built from the source file `poke.c'.
We must also write a `acconfig.h' file. Besides `PACKAGE' and `VERSION', which must be mentioned for all packages which use automake, we must include `HAVE_STRUCT_UTIMBUF', since we mentioned it in an `AC_DEFINE'.
/* Name of package. */ #undef PACKAGE /* Version of package. */ #undef VERSION /* Whether utime.h defines struct utimbuf. */ #undef HAVE_STRUCT_UTIMBUF |
[ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |