Provided by: zmk-doc_0.5.1-2_all 

NAME
Configure — module providing build time configuration system
SYNOPSIS
include z.mk
$(eval $(call ZMK.Import,Configure))
DESCRIPTION
The Configure module provides two sides of the build-time configuration system. On one hand side it
provides the familiar configure script, which can be used to set up various settings, prepare a directory
for out-of-tree build, and integrate with project specific configuration settings. On the other hand it
exposes the collected information as a set of variables, allowing the rest of the build system to modify
its behavior accordingly.
TARGETS
This module provides the following targets.
configure
This target generates the configuration script. The script is also automatically placed inside the source
archive, so that the recipient does not need to have a local installation of zmk to build a project from
source.
config.$(NAME).mk
This target is named after the configuration file created by the configure script. The rules are such,
that if the configure script is newer than the configuration file, then the script is re-executed to
generate a possibly updated configuration file.
distclean
This phony target removes the configuration file config.$(NAME).mk. In maintainer mode, the
configuration file is also removed.
VARIABLES
This module provides the following variables.
Configure.HostArchTriplet
This variable is set by the configure script when invoked with the --host=... option. It represents the
triplet describing the system which will eventually execute the compiled binaries. This is in contrast to
the system that is preforming the build.
Unlike in autoconf this variable is not set automatically. It is usually provided by Linux distribution
packaging which follows the up-to-date conventions on architecture triplet names. The triplet contains
three components, separated by dashes, the CPU architecture, Kernel name and Operating System name.
Popular values include x86_64-linux-gnu, aarch64-linux-gnu and riscv64-linux-gnu. Note that there is a
lot of variability in the architecture name and special cases related to the ARM architecture.
Configure.BuildArchTriplet
This variable is set by the configure script when invoked with the --build=... option. It represents the
triplet describing the system which is performing the build process. This is in contrast to the system
that will execute the built binaries.
When both Configure.HostArchTriplet and Configure.BuildArchTriplet are set and their values differ and
when CC and CXX are not overridden, then zmk automatically selects a cross-compiler from the GNU Compiler
Collection named $(Configure.HostArchTriplet)-gcc and $(Configure.HostArchTriplet)-g++ for the C and C++
compilers, respectively.
Configure.TargetArchTriplet
This variable is set by the configure script when invoked with the --target=... option. It represents the
triplet describing the system for which any generated code will be made. This variable is needed
infrequently, usually by tools such as compilers, to prepare them for creating binary code for a given
architecture.
Configure.SysRoot
This variable is set by the configure script when invoked with the --with-libtool-sysroot=... option. It
represents the explicit root directory of the file system where the compiler should look for libraries
and headers. It is typically used during cross-compilation, to isolate the build process from whatever
headers and libraries are installed natively on the system.
Configure.DependencyTracking
This variable is controlled by the configure script options --enable-dependency-tracking (default) and
--disable-dependency-tracking. When enabled it expands to yes and causes compatible compilers to
generate dependency information when compiling source files, that is subsequently used by Make to
understand relationship between all the source files and object files.
When performing pristine builds in a scratch environment that does not contain any old object files, this
setting can be disabled to speed up the build a little.
Configure.MaintainerMode
This variable is controlled by the configure script options --enable-maintainer-mode (default) and
--disable-maintainer-mode. When enabled it expands to yes and impacts the configure and
config.$(NAME).mk targets as described earlier.
Configure.SilentRules
This variable is controlled by the configure script options --enable-silent-rules and
--disable-silent-rules (default). When enabled it expands to yes and silences make rules defined by zmk.
Configure.StaticLibraries
This variable is controlled by the configure script options --enable-static (default) and
--disable-static. When static libraries are disabled the template Library.A becomes inactive.
Configure.DynamicLibraries
This variable is controlled by the configure script options --enable-dynamic (default) and
--disable-dynamic. When dynamic libraries are disabled the templates Library.So and Library.DyLib become
inactive.
Configure.ProgramPrefix
This variable is set by the configure script when invoked with the --program-prefix=... option.
The argument is the prefix added to installed name of all the programs built with the Program and the
Script templates.
Configure.ProgramSuffix
This variable is set by the configure script when invoked with the --program-suffix=... option.
The argument is the suffix added to installed name of all the programs built with the Program and the
Script templates.
Configure.ProgramTransformName
This variable is set by the configure script when invoked with the --program-transform-name=... option.
The argument is a sed expression used to transform the installed name of all the programs built with the
Program and the Script templates. The transformation affects the entire name, together with any prefix or
suffix defined by their options.
Configure.Configured
This variable expands to yes when the configure script was used to customize the build process. It can be
used to offer default behaviors that are appropriate to a given project, without interacting with
customizations performed by distribution packaging.
Configure.Options
This variable expands to the command line arguments passed to the configure script. It is used for
automatic re-configuration supported by maintainer mode. It can be also provided to the pre-processor to
embed the information about build-time configuration into the application or library binary.
FILES
configure
Automatically generated POSIX shell script mimicking the appearance and behavior of a similar file
provided by GNU autoconf. This script should not be committed to version control systems. This script is
added to release archives, as it allows one to compile a project from source without additionally
depending on zmk libraries.
config.$(NAME).mk
Project specific configuration file generated by executing the configure script.
EXAMPLES
The Configure module is automatically imported and is implicitly available when templates such as Program
or Script are used. It does not require any additional input files. All customization is available
directly from the project makefile.
HISTORY
The Configure module first appeared in zmk 0.3. Starting with version 0.4 the configuration module
provides the configure script and configuration persistence only to projects which define their Configure
NAME .
BUGS
Versions prior to 0.4 used a fixed name for the configuration file created by running the configure
script, namely GNUmakefile.configured.mk. This caused issues with make's PATH traversal when searching
for include candidates that was resolved by using configuration files specific to a given project, called
config.$(NAME).mk.
AUTHORS
Zygmunt Krynicki <me@zygoon.pl>
zmk 0.5.1 Dec 28, 2020 zmk.Configure.5(PRM)