Node:Using Autoconf Macros, Next:Autofrisk, Previous:Autoconf Macros, Up:Autoconf Support
Using the autoconf macros is straightforward: Add the macro "calls" (actually
instantiations) to configure.ac
, run aclocal
, and finally,
run autoconf
. If your system doesn't have guile.m4 installed, place
the desired macro definitions (AC_DEFUN
forms) in acinclude.m4
,
and aclocal
will do the right thing.
Some of the macros can be used inside normal shell constructs: if foo ;
then GUILE_BAZ ; fi
, but this is not guaranteed. It's probably a good idea
to instantiate macros at top-level.
We now include two examples, one simple and one complicated.
The first example is for a package that uses libguile, and thus needs to know
how to compile and link against it. So we use GUILE_FLAGS
to set the
vars GUILE_CFLAGS
and GUILE_LDFLAGS
, which are automatically
substituted in the Makefile.
In configure.ac: GUILE_FLAGS In Makefile.in: GUILE_CFLAGS = @GUILE_CFLAGS@ GUILE_LDFLAGS = @GUILE_LDFLAGS@ myprog.o: myprog.c $(CC) -o $ $(GUILE_CFLAGS) $< myprog: myprog.o $(CC) -o $ $< $(GUILE_LDFLAGS)
The second example is for a package of Guile Scheme modules that uses an
external program and other Guile Scheme modules (some might call this a "pure
scheme" package). So we use the GUILE_SITE_DIR
macro, a regular
AC_PATH_PROG
macro, and the GUILE_MODULE_AVAILABLE
macro.
In configure.ac: GUILE_SITE_DIR probably_wont_work="" # pgtype pgtable GUILE_MODULE_AVAILABLE(have_guile_pg, (database postgres)) test $have_guile_pg = no && probably_wont_work="(my pgtype) (my pgtable) $probably_wont_work" # gpgutils AC_PATH_PROG(GNUPG,gpg) test x"$GNUPG" = x && probably_wont_work="(my gpgutils) $probably_wont_work" if test ! "$probably_wont_work" = "" ; then p=" ***" echo echo "$p" echo "$p NOTE:" echo "$p The following modules probably won't work:" echo "$p $probably_wont_work" echo "$p They can be installed anyway, and will work if their" echo "$p dependencies are installed later. Please see README." echo "$p" echo fi In Makefile.in: instdir = @GUILE_SITE@/my install: $(INSTALL) my/*.scm $(instdir)