Files
GseTDDUebungKCLR/database/perl/lib/Module/CPANTS/Kwalitee/NeedsCompiler.pm
Riley Schneider b732d8d4b5 Initial Commit
2025-12-03 16:38:10 +01:00

108 lines
2.5 KiB
Perl
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

package Module::CPANTS::Kwalitee::NeedsCompiler;
use warnings;
use strict;
our $VERSION = '1.01';
$VERSION =~ s/_//; ## no critic
sub order { 200 }
##################################################################
# Analyse
##################################################################
sub analyse {
my $class = shift;
my $me = shift;
my $files = $me->d->{files_array};
foreach my $f (@$files) {
if ($f =~ /\.[hc]$/i or $f =~ /\.xs$/i) {
$me->d->{needs_compiler} = 1;
return;
}
}
if (defined ref($me->d->{prereq}) and ref($me->d->{prereq}) eq 'ARRAY') {
for my $m (@{ $me->d->{prereq} }) {
if ($m->{requires} =~ /^Inline::/
or $m->{requires} eq 'ExtUtils::CBuilder'
or $m->{requires} eq 'ExtUtils::ParseXS') {
$me->d->{needs_compiler} = 1;
return;
}
}
}
return;
}
##################################################################
# Kwalitee Indicators
##################################################################
sub kwalitee_indicators{
return [
];
}
q{Favourite compiler:
gcc};
__END__
=encoding UTF-8
=head1 NAME
Module::CPANTS::Kwalitee::NeedsCompiler - Checks if the module needs a (probably C) compiler
=head1 SYNOPSIS
Checks if there is some indication in the module that it needs a C compiler to build and install
=head1 DESCRIPTION
=head2 Methods
=head3 order
Defines the order in which Kwalitee tests should be run.
Returns C<200>.
=head3 analyse
Checks for file with F<.c>, F<.h> or F<.xs> extensions.
Check is the module depends on any of the Inline:: modules or
on ExtUtils::CBuilder or ExtUtils::ParseXS.
=head3 TODO:
How to recognize cases such as https://metacpan.org/release/GAAS/Perl-API-0.01/
and https://metacpan.org/release/Term-Size-Perl
that generate the .c files during installation
In addition there are modules that can work without their XS part.
E.g. Scalar-List-Utils, Net-DNS, Template-Toolkit
For our purposes these all should be marked as "need C compiler"
as they need it for their full functionality and speed.
=head3 kwalitee_indicators
No Kwalitee Indicator.
=head1 SEE ALSO
L<Module::CPANTS::Analyse>
=head1 AUTHOR
L<Gábor Szabó|https://metacpan.org/author/szabgab>
=head1 COPYRIGHT AND LICENSE
Copyright © 20062008 L<Gábor Szabó|https://metacpan.org/author/szabgab>
You may use and distribute this module according to the same terms
that Perl is distributed under.