# Copyright (C) 2001-2007, Parrot Foundation.
=head1 NAME
config/auto/va_ptr.pm - va_list to va_ptr conversion test
=head1 DESCRIPTION
Tests which kind of PARROT_VA_TO_VAPTR to use.
=cut
package auto::va_ptr;
use strict;
use warnings;
use base qw(Parrot::Configure::Step);
use Parrot::Configure::Utils ':auto';
sub _init {
my $self = shift;
my %data;
$data{description} = q{Test the type of va_ptr};
$data{result} = q{};
return \%data;
}
sub runstep {
my ( $self, $conf ) = @_;
my $va_type;
$conf->cc_gen('config/auto/va_ptr/test_c.in');
eval { $conf->cc_build('-DVA_TYPE_STACK'); };
if ( $@ || $conf->cc_run_capture() !~ /^ok/ ) {
eval { $conf->cc_build('-DVA_TYPE_REGISTER'); };
if ( $@ || $conf->cc_run_capture() !~ /^ok/ ) {
die "Unknown va_ptr type";
}
$va_type = 'register';
}
else {
$va_type = 'stack';
}
$conf->cc_clean();
$self->set_result($va_type);
$conf->data->set( va_ptr_type => $va_type );
return 1;
}
1;
# Local Variables:
# mode: cperl
# cperl-indent-level: 4
# fill-column: 100
# End:
# vim: expandtab shiftwidth=4: