diff --git a/README.md b/README.md index df2a1fa..76744b5 100644 --- a/README.md +++ b/README.md @@ -11,16 +11,72 @@ 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 +expected values based on the platform/compiler macro checks (see note at the beginning of [Project Configuration][proj-config] for rationale). See [`libbuild2/autoconf/checks/`][checks] for the list of available build-in -configuration options. +checks. -## Adding new configuration options. +## Using in your projects -To add a new configuration option `` simply create the `.h` header -file with the corresponding check and place it into +This module is part of the standard pre-installed `build2` modules and no +extra integration steps are required other than the `using` directive in +your `buildfile`. For example, for Autoconf `config.h.in`: + +``` +using autoconf + +h{config}: in{config} +``` + +Or for CMake `config.h.cmake`: + +``` +using autoconf + +h{config}: in{config.h.cmake} +``` + +The default falvor is `autoconf` but if the input file has the `.cmake` or +`.meson` extension, then the `cmake` or `meson` flavors are selected +automatically. If, however, the standard `config.h.in` file is re-used for +CMake/Meson, then the flavor must be specified explicitly with the +`autoconf.flavor` variable, for example: + +``` +using autoconf + +h{config}: in{config} +{ + autoconf.flavor = meson +} +``` + +Besides the built-in configuration options, custom substitutions can be +specified as `buildfile` variables in the same way as with the +[`in`][module-in] module. For example: + +``` +h{config}: in{config} +{ + PACKAGE_NAME = $project + PACKAGE_VERSION = $version +} +``` + +This mechanism can also be used to override the build-in checks, for example: + +``` +h{config}: in{config} +{ + HAVE_STRLCPY = true +} +``` + +## Adding new checks + +To add a check for a new configuration option `` simply create the +`.h` header file with the corresponding check and place it into [`libbuild2/autoconf/checks/`][checks] (use existing checks for inspiration). The first line in this header file must be in the form: @@ -31,7 +87,7 @@ The first line in this header file must be in the form: Subsequent lines should be C-style comments or preprocessor directives that `#define` or `#undef` `` depending on whether the feature is available -(though there can be idiosyncrasies; see `const.h`, for example). Note that +(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: