perl-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Philippe M. Chiasson" <go...@ectoplasm.org>
Subject Re: -Wdeclaration-after-statement Final version
Date Mon, 22 Aug 2005 17:42:36 GMT
Philip M. Gollucci wrote:
> Philippe M. Chiasson wrote:
> 
>> A better patch might be to first check if we already have that option
>> from Perl,
>> otherwise, try and figure out if it's safe to add it ourselves.
> 
> Okay, as requested, I've functionalized this and added a check to make sure
> $ccopts doesn't already contain this compile flag.
> 
> Index: lib/Apache2/Build.pm
> ===================================================================
> --- lib/Apache2/Build.pm        (revision 234145)
> +++ lib/Apache2/Build.pm        (working copy)
> @@ -523,6 +523,11 @@
>              $ccopts .= " $Wall -DAP_DEBUG";
>              $ccopts .= " -DAP_HAVE_DESIGNATED_INITIALIZER";
>          }
> +
> +        if ($self->has_gcc_version('3.3.2') &&
> +            $ccopts !~ /declaration-after-statement/) {
> +            $ccopts .= " -Wdeclaration-after-statement";
> +        }
>      }
> 
>      if ($self->{MP_COMPAT_1X}) {
> @@ -555,6 +560,28 @@
>      $ccopts;
>  }
> 
> +sub has_gcc_version {
> +
> +    my $self = shift;
> +    my $requested_version = shift;
> +
> +    my $has_version = $self->perl_config('gccversion');
> +
> +    return 0 unless $has_version;

Isn't "return;" the more canonical way of returning false ?

> +    my ($has_major, $has_minor, $has_patch) = split /\./, $has_version, 3;
> +    my ($r_major, $r_minor, $r_patch) = split /\./, $requested_version, 3;

Minor nit, but wouldn't

my @tuples = split /\./, $has_version;
my @r_tuples = split /\./, $requested_version;

return cmp_tuples(\@tuples, \@r_tuples) == 1;

sub cmp_tuples {
    my ($a, $b) = @_;

    while(@$a && @$b) {
        my $cmp = shift @$a <=> shift @$b;
        return $cmp if $cmp;
    }
    return @$a <=> @$b;
}

Be a more generic approach that would also work if there is ever a
gcc-4.0.0.1 and could possibly be used to refactor some more version
comparaisons ?

> +    if ($has_major > $r_major ||
> +        ($has_major == $r_major && $has_minor > $r_minor) ||
> +        ($has_major == $r_major && $has_minor == $r_minor
> +            && $has_patch >= $r_patch)) {
> +        return 1;
> +    }
> +    else {
> +        return 0;
> +    }
> +}
> +
>  sub perl_ccopts {
>      my $self = shift;

--------------------------------------------------------------------------------
Philippe M. Chiasson m/gozer\@(apache|cpan|ectoplasm)\.org/ GPG KeyID : 88C3A5A5
http://gozer.ectoplasm.org/     F9BF E0C2 480E 7680 1AE5 3631 CB32 A107 88C3A5A5

Mime
View raw message