Node:Autofrisk, Next:, Previous:Using Autoconf Macros, Up:Autoconf Support

12.4 Autofrisk

The guile-tools autofrisk command looks for the file in the current directory and writes out containing autoconf definitions for AUTOFRISK_CHECKS and AUTOFRISK_SUMMARY. See Autoconf Background, and See Using Autoconf Macros, for more info.

The file consists of a series of configuration forms (Scheme lists), which have one of the following formats:

  (files-glob PATTERN ...)                      ;; required
  (non-critical-external MODULE ...)            ;; optional
  (non-critical-internal MODULE ...)            ;; optional
  (programs (MODULE PROG ...) ...)              ;; optional
  (pww-varname VARNAME)                         ;; optional

pattern is a string that may contain "*" and "?" characters to be expanded into filenames. module is a list of symbols naming a module, such as `(srfi srfi-1)'. varname is a shell-safe name to use instead of probably_wont_work, the default. This var is passed to `AC_SUBST'. prog is a string that names a program, such as "gpg".

Autofrisk expands the files-glob pattern(s) into a list of files, scans each file's module definition form(s), and constructs a module dependency graph wherein modules defined by define-module are considered internal and the remaining, external. For each external module that has an internal dependency, Autofrisk emits a GUILE_MODULE_REQUIRED check (see Autoconf Macros), which altogether form the body of AUTOFRISK_CHECKS.

GUILE_MODULE_REQUIRED causes the configure script to exit with an error message if the specified module is not available; it enforces a strong dependency. You can temper dependency strength by using the non-critical-external and non-critical-internal configuration forms in For graph edges that touch such non-critical modules, Autofrisk uses GUILE_MODULE_AVAILABLE, and arranges for AUTOFRISK_SUMMARY to display a warning if they are not found.

The shell code resulting from the expansion of AUTOFRISK_CHECKS and AUTOFRISK_SUMMARY uses the shell variable probably_wont_work to collect the names of unfound non-critical modules. If this bothers you, use configuration form (pww-name foo) in

Although Autofrisk does not detect when a module uses a program (for example, in a system call), it can generate AC_PATH_PROG forms anyway if you use the programs configuration form in These are collected into AUTOCONF_CHECKS.

See Using Autofrisk, for some examples.