1
0
mirror of https://github.com/pgbackrest/pgbackrest.git synced 2024-12-14 10:13:05 +02:00
pgbackrest/libc/build/lib/pgBackRestLibC/Config/BuildDefine.pm
David Steele 7cf955425e The C library is now required.
This eliminates conditional loading and eases development of new library features.
2017-11-26 17:45:00 -05:00

82 lines
3.1 KiB
Perl

####################################################################################################################################
# Auto-Generate Command and Option Configuration Definition Constants for Export to Perl
####################################################################################################################################
package pgBackRestLibC::Config::BuildDefine;
use strict;
use warnings FATAL => qw(all);
use Carp qw(confess);
use English '-no_match_vars';
use Cwd qw(abs_path);
use Exporter qw(import);
our @EXPORT = qw();
use File::Basename qw(dirname);
use Storable qw(dclone);
use pgBackRest::Common::Log;
use pgBackRest::Common::String;
use pgBackRestBuild::Config::Data;
use pgBackRest::Version;
use pgBackRestBuild::Build::Common;
use pgBackRestBuild::Config::BuildDefine;
####################################################################################################################################
# Constants
####################################################################################################################################
use constant BLDLCL_FILE_DEFINE => 'define';
use constant BLDLCL_CONSTANT_OPTION_TYPE => '01-constantOptionType';
####################################################################################################################################
# Definitions for constants and data to build
####################################################################################################################################
my $strSummary = 'Command and Option Definitions';
my $rhBuild =
{
&BLD_FILE =>
{
&BLDLCL_FILE_DEFINE =>
{
&BLD_SUMMARY => $strSummary,
&BLD_CONSTANT_GROUP =>
{
&BLDLCL_CONSTANT_OPTION_TYPE =>
{
&BLD_SUMMARY => 'Option type',
&BLD_CONSTANT => {},
},
},
},
},
};
####################################################################################################################################
# Build configuration constants and data
####################################################################################################################################
sub buildXsConfigDefine
{
# Build option type constants
#-------------------------------------------------------------------------------------------------------------------------------
my $rhConstant = $rhBuild->{&BLD_FILE}{&BLDLCL_FILE_DEFINE}{&BLD_CONSTANT_GROUP}{&BLDLCL_CONSTANT_OPTION_TYPE}{&BLD_CONSTANT};
foreach my $strOptionType (cfgDefineOptionTypeList())
{
# Build Perl constant
my $strOptionTypeConstant = "CFGDEF_TYPE_" . uc($strOptionType);
$strOptionTypeConstant =~ s/\-/\_/g;
$rhConstant->{$strOptionTypeConstant}{&BLD_CONSTANT_VALUE} = buildConfigDefineOptionTypeEnum($strOptionType);
$rhConstant->{$strOptionTypeConstant}{&BLD_CONSTANT_EXPORT} = true;
};
return $rhBuild;
}
push @EXPORT, qw(buildXsConfigDefine);
1;