App-mkpkgconfig
view release on metacpan - search on metacpan
view release on metacpan or search on metacpan
script/mkpkgconfig view on Meta::CPAN
use File::Basename;
use File::Spec::Functions;
use Carp;
our $VERSION = 'v2.0.1';
use constant {
ALL_VARS => 1,
REQUESTED_VARS => 2,
NEEDED_VARS => 3,
};
our %VarsAuto = (
exec_prefix => '${prefix}',
bindir => '${exec_prefix}/bin',
sbindir => '${exec_prefix}/sbin',
libdir => '${exec_prefix}/lib',
pkg_libdir => '${libdir}/${package}',
libexecdir => '${exec_prefix}/libexec',
pkg_libexecdir => '${libexecdir}/${package}',
datarootdir => '${prefix}/share',
datadir => '${datarootdir}',
pkg_datadir => '${datadir}/${package}',
sysconfdir => '${prefix}/etc',
pkg_sysconfdir => '${sysconfdir}/${package}',
localstatedir => '${prefix}/var',
pkg_localstatedir => '${localstatedir}/${package}',
includedir => '${prefix}/include',
pkg_includedir => '${includedir}/${package}',
docdir => '${datarootdir}/doc/${package}',
infodir => '${datarootdir}/info',
mandir => '${datarootdir}/man',
);
my %KeywordOptions = (
Name => { required => 1 },
Description => { required => 1 },
Requires => { required => 0 },
Libs => { required => 0 },
Conflicts => { required => 0 },
Cflags => { required => 0 },
URL => { required => 0 },
);
main( @ARGV ) unless caller;
sub main {
local @ARGV = @_;
# save original options for output;
my @sARGV = @ARGV;
my $opt = parse_opts();
require App::mkpkgconfig::PkgConfig;
my $conf = App::mkpkgconfig::PkgConfig->new;
# add standard variables
$conf->add_variable( prefix => $opt->prefix ) if defined $opt->prefix;
$conf->add_variable( package => $opt->package ) if defined $opt->package;
$conf->add_variable( version => $opt->modversion );
# add auto generated variables
$conf->add_variables( \%VarsAuto )
if defined $opt->auto;
# override from user
$conf->add_variables( $opt->var );
# add standard keywords
$conf->add_keyword( Name => $opt->name );
$conf->add_keyword( Description => $opt->description );
$conf->add_keyword( Version => '${version}' );
for my $kwd ( qw( Requires Libs Conflicts Cflags ) ) {
my $mth = lc $kwd;
$conf->add_keyword( $kwd => $opt->$mth )
if defined $opt->$mth;
}
# override from user
$conf->add_keywords( $opt->kwd );
#<<< no tidy
my @vars_needed =
# output all variables, used or not
$opt->usevars == ALL_VARS ? $conf->variables
# output only requested + keyword dependencies
: $opt->usevars == REQUESTED_VARS ? ( keys %{ $opt->var } , @{ $opt->auto // [] } )
# only variables actually used by keywords
: $opt->usevars == NEEDED_VARS ? ()
: die( "unknown filter for variables: ", $opt->usevars, "\n" );
#>>>
$conf->write(
$opt->output,
write => ( $opt->usevars == ALL_VARS ? 'all' : 'req' ),
vars => \@vars_needed,
comments => [
"This file was created by $0 ($VERSION) via",
join( ' ', $0, @sARGV ) ] );
}
sub parse_opts {
my %Map_usevars = (
'all' => ALL_VARS,
'requested' => REQUESTED_VARS,
view all matches for this distributionview release on metacpan - search on metacpan
( run in 6.108 seconds using v1.00-cache-2.02-grep-82fe00e-cpan-c30982ac1bc3 )