Alien-wxWidgets
view release on metacpan or search on metacpan
lib/Alien/wxWidgets.pm view on Meta::CPAN
my %crit = awx_smart_config @_;
my @configs = awx_sort_config awx_grep_config [ $class->_list ], %crit ;
unless( @configs ) {
my @all_configs = $class->get_configurations;
my $message = "Searching configuration for:\n";
$message .= _pretty_print_criteria( \%crit );
$message .= "\nAvailable configurations:\n";
if( @all_configs ) {
$message .= _pretty_print_configuration( $_ ) foreach @all_configs;
} else {
$message .= "No wxWidgets build found\n";
}
die $message;
}
%VALUES = $configs[0]->{package}->values;
}
sub _pretty_print_criteria {
my $criteria = shift;
my %display = %$criteria;
$display{version} = join '-', @{$display{version}} if ref $display{version};
$display{version} = '(any version)' unless $display{version};
$display{toolkit} = '(any toolkit)' unless $display{toolkit};
$display{compiler_kind} = '(any compiler)' unless $display{compiler_kind};
$display{compiler_version} = '(any version)' unless $display{compiler_version};
return _pretty_print_configuration( \%display );
}
sub _pretty_print_configuration {
my $config = shift;
my @options = map { !defined $config->{$_} ? () :
$config->{$_} ? ( $_ ) :
( "no $_" ) }
qw(debug unicode mslu);
return "wxWidgets $config->{version} for $config->{toolkit}; " .
"compiler compatibility: $config->{compiler_kind} " .
$config->{compiler_version} . '; ' .
( @options ? 'options: ' . join( ', ', @options ) : '' ) .
"\n";
}
sub show_configurations {
my $class = shift;
my @configs = $class->get_configurations( @_ );
print _pretty_print_configuration( $_ ) foreach @configs;
}
sub dump_configurations {
my $class = shift;
my @configs = $class->get_configurations( @_ );
require Data::Dumper;
print Data::Dumper->Dump( \@configs );
}
sub get_configurations {
my $class = shift;
return awx_sort_config awx_grep_config [ $class->_list ], @_;
}
my $lib_nok = 'adv|base|html|net|xml|media';
my $lib_mono_28 = 'adv|base|html|net|xml|xrc|media|aui|richtext';
my $lib_mono_29 = 'adv|base|html|net|xml|xrc|media|aui|richtext|stc';
sub _grep_libraries {
my $lib_filter = $VALUES{version} >= 2.005001 ? qr/(?!a)a/ : # no match
$^O =~ /MSWin32/ ? qr/^(?:$lib_nok|gl)$/ :
qr/^(?:$lib_nok)$/;
my( $type, @libs ) = @_;
my $dlls = $VALUES{_libraries};
@libs = keys %$dlls unless @libs;
push @libs, 'core', 'base' unless grep /^core|mono$/, @libs;
my $lib_mono = $VALUES{version} >= 2.009 ? $lib_mono_29 : $lib_mono_28;
if( ( $VALUES{config}{build} || '' ) eq 'mono' ) {
@libs = map { $_ eq 'core' ? ( 'mono' ) :
$_ =~ /^(?:$lib_mono)$/ ? () :
$_ } @libs;
@libs = qw(mono) unless @libs;
}
return map { _remap( $_ ) }
map { defined( $dlls->{$_}{$type} ) ? $dlls->{$_}{$type} :
croak "No such '$type' library: '$_'" }
grep !/$lib_filter/, @libs;
}
sub link_libraries { shift; return _grep_libraries( 'link', @_ ) }
sub shared_libraries { shift; return _grep_libraries( 'dll', @_ ) }
sub import_libraries { shift; return _grep_libraries( 'lib', @_ ) }
sub library_keys { shift; return keys %{$VALUES{_libraries}} }
sub libraries {
my $class = shift;
return ( _remap( $VALUES{link_libraries} ) || '' ) . ' ' .
join ' ', map { _remap( $_ ) }
$class->link_libraries( @_ );
}
1;
__END__
=head1 METHODS
=head2 load/import
use Alien::wxWidgets version => 2.004 | [ 2.004, 2.005 ],
( run in 0.535 second using v1.01-cache-2.11-cpan-524268b4103 )