NAME
Config::AutoConf::INI - Drive Config::AutoConf with an INI file
VERSION
version 0.002
SYNOPSIS
use Config::AutoConf::INI;
#
# Config::AutoConf::INI->new() is an instance of Config::AutoConf
#
Config::AutoConf::INI->new()->check('config.ini');
Config::AutoConf::INI->new()->check();
#
# Shortest form
#
Config::AutoConf::INI->check;
DESCRIPTION
This module is a extending Config::AutoConf, using a INI-like config file.
SUBROUTINES/METHODS
check($config_ini)
Performs all checks that are in the INI file $config_ini
and that are responsible for configuring Config::AutoConf or defining autoconf variables. The following sections are supported, and executed in the order listed below.
This method can be used using an Config::AutoConf::INI instance, or the class itself:
my $self = Config::AutoConf::INI->new();
$self->check('config.ini');
$self->write_config_h('somewhere_else.h');
Config::AutoConf::INI->check();
The default value for $config_ini
is 'config_autoconf.ini'.
The result value is always an instance of Config::AutoConf::INI
- Configuration sections
-
- Includes
-
This is an interface to
Config::AutoConf
'spush_includes
.[includes] ; Anything on the the left-hand side is used if the right-hand side is a true value. ; Example: . = 1 /this/path = 0 C:\Windows\Temp = 1
- Preprocessor flags
-
This is an interface to
Config::AutoConf
'spush_preprocess_flags
.[preprocess_flags] ; Anything on the the left-hand side is used if the right-hand side is a true value. ; Example: -DCPPFLAG0N = 1 -DCPPFLAG0FF = 0
- Compiler flags
-
This is an interface to
Config::AutoConf
'spush_compiler_flags
.[compiler_flags] ; Anything on the the left-hand side is used if the right-hand side is a true value. ; Example: -DCCFLAG0N = 1 -DCCFLAG0FF = 0
- Linker flags
-
This is an interface to
Config::AutoConf
'spush_link_flags
.[link_flags] ; Anything on the the left-hand side is used if the right-hand side is a true value. ; Example: --very = 1 --special = 0
- Check sections
-
Config::AutoConf provides bundles that are explicitly supported in a bundle section, i.e.:
[bundle] ; The bundle check on the left-hand side is done when the right-hand side is a true value. ; The only supported bundles are stdc_headers, default_headers and dirent_headers. ; Example: stdc_headers = 1 default_headers = 1 dirent_headers = 1
In all the following sections, if the right-hand side is a true value the check is executed. If the right-hand side does not look like a number then a variable is explicitly created with that name (e.g.
I_HAVE_STDIO_G
). This does not prevent the default variable to be created (i.e.gHQVE_STDIO_H
). The wanted variable name can very well be equal to the default name.- Files
-
This is an interface to
Config::AutoConf
'scheck_file
.[files] /etc/passwd = HAVE_ETC_PASSWD /tmp/this = 0 /tmp/that = HAVE_TMP_THAT
- Programs
-
This is an interface to
Config::AutoConf
'scheck_prog
.[progs] cc = CC_NAME
- Headers
-
This is an interface to
Config::AutoConf
'scheck_header
.[headers] stddef.h = 0 time.h = 1
Please note that all found headers are systematically reinjected in any further test, in contrary to Config::AutoConf default behaviour, that is to reuse only STDC headers. =item Declarations
This is an interface to
Config::AutoConf
'scheck_decl
.[decls] read = 1
- Functions
-
This is an interface to
Config::AutoConf
'scheck_func
.[funcs] read = 1
- Types
-
This is an interface to
Config::AutoConf
'scheck_type
.[types] size_t = 1
- Types sizeof
-
This is an interface to
Config::AutoConf
'scheck_sizeof_types
.[sizeof_types] size_t = 1
- Types offset
-
This is an interface to
Config::AutoConf
'scheck_alignof_types
.[alignof_types] struct tm.tm_year = 1
- Aggregate members
-
This is an interface to
Config::AutoConf
'scheck_member
.[members] struct tm.tm_year = 1
- Result sections
-
- Outputs
-
This is an interface to
Config::AutoConf
'swrite_config_h
.[outputs] ; Anything on the the left-hand side is produced if the right-hand side is a true value. ; Example: config_autoconf.h = 1 config.h = 0
EXAMPLE
Here is an example of a .ini file:
[includes]
. = 1
/this/path = 1
[preprocess_flags]
-DFLAG01 = 1
-DFLAG02 = 0
[compiler_flags]
-DFLAG01 = 0
-DFLAG02 = 1
[link_flags]
-lm = 1
-loff = 0
[bundle]
stdc_headers = 1
default_headers = 1
dirent_headers = 1
[files]
/etc/passwd = HAVE_ETC_PASSWD
/tmp/this = HAVE_THIS
/tmp/that = HAVE_THAT
C:\Windows\Temp\foo = HAVE_C_WINDOWS_TEMP_FOO
[progs]
cc = CC_NAME
[headers]
stdio.h = 1
stddef.h = HAVE_STDDEF_H
time.h = 1
[decls]
read = 1
notchecked = 0
[funcs]
read = 1
[types]
size_t = 1
[sizeof_types]
size_t = 1
[alignof_types]
struct tm.tm_year = 1
[members]
struct tm.tm_year = 1
[outputs]
my_config.h = 1
SEE ALSO
AUTHOR
Jean-Damien Durand <jddpause@cpan.org>
COPYRIGHT AND LICENSE
This software is copyright (c) 2017 by Jean-Damien Durand.
This is free software; you can redistribute it and/or modify it under the same terms as the Perl 5 programming language system itself.