libbuild2-autoconf/README.md
2021-11-04 10:59:53 +02:00

1.9 KiB

libbuild2-autoconf

GNU Autoconf emulation build system module for build2.

Specifically, this module provides an in-based rule for processing config.h.in files. Besides the Autoconf special line flavor (#undef), it also supports the CMake (#cmakedefine) and Meson (#mesondefine) variants.

Similar to Autoconf, this module provides built-in support for a number of common HAVE_* configuration options. However, the values of these options are not discovered by dynamic probing, such as trying to compile a test program to check if the feature is present. Instead, they are set to static expected values based on the platform/compiler macros (see note at the beginning of Project Configuration for rationale).

See libbuild2/autoconf/checks/ for the list of available build-in configuration options.

Adding new configuration options.

To add a new configuration option <NAME> simply create the <NAME>.h header file with the corresponding check and place it into libbuild2/autoconf/checks/ (use existing checks for inspiration).

The first line in this header file must be in the form:

// <NAME>

Subsequent lines should be C-style comments or preprocessor directives that #define or #undef <NAME> depending on whether the feature is available (though there can be idiosyncrasies; see const.h, for example). Note that there should be no double-quotes or backslashes except for line continuations. For example:

// HAVE_FOO
#ifndef _WIN32
#  define HAVE_FOO 1
#else
#  undef HAVE_FOO /* No foo on Windows. */
#endif