# New Ticket Created by "Paul Cochrane"
# Please include the string: [perl #40475]
# in the subject line of all future correspondence about this issue.
# <URL: http://rt.perl.org/rt3/Ticket/Display.html?id=40475 >
Hi,
PMC files are just C-language files in a sense, right? If so, then
here's a patch that gets Parrot::Distribution to find all the .pmc
files, and adds a check to the c_code_coda.t test so that after a
"make realclean; perl Configure.pl; make" more of the c_code_coda
tests pass.
HTH,
Paul
files affected:
lib/Parrot/Distribution.pm
t/codingstd/c_code_coda.t
Index: lib/Parrot/Distribution.pm
===================================================================
--- lib/Parrot/Distribution.pm (revision 14845)
+++ lib/Parrot/Distribution.pm (working copy)
@@ -186,7 +186,59 @@
return;
}
+=item C<pmc_source_file_directories()>
+Returns the directories which contain PMC source files.
+
+=cut
+
+sub pmc_source_file_directories
+{
+ my $self = shift;
+
+ return
+ map $self->directory_with_name($_) =>
+ 'compilers/bcg/src/pmc',
+ 'languages/APL/src/pmc',
+ 'languages/WMLScript/pmc',
+ 'languages/amper/lib/kernel/pmc',
+ 'languages/cardinal/src/pmc',
+ 'languages/dotnet/pmc',
+ 'languages/lua/pmc',
+ 'languages/perl6/src/pmc',
+ 'languages/pugs/pmc',
+ 'languages/python/pmc',
+ 'languages/tcl/src/pmc',
+ map("src/$_" => qw<dynpmc pmc>),
+ 't/tools',
+ ;
+}
+
+
+=item C<pmc_source_file_with_name($name)>
+
+Returns the PMC source file with the specified name.
+
+=cut
+
+sub pmc_source_file_with_name
+{
+ my $self = shift;
+ my $name = shift || return;
+
+ $name .= '.pmc';
+
+ foreach my $dir ($self->pmc_source_file_directories)
+ {
+ return $dir->file_with_name($name)
+ if $dir->file_exists_with_name($name);
+ }
+
+ print 'WARNING: ' . __FILE__ . ':' . __LINE__ . ' File not found:' . $name ."\n";
+
+ return;
+}
+
=item C<file_for_perl_module($module)>
Returns the Perl module file for the specified module.
Index: t/codingstd/c_code_coda.t
===================================================================
--- t/codingstd/c_code_coda.t (revision 14845)
+++ t/codingstd/c_code_coda.t (working copy)
@@ -92,6 +92,7 @@
return (
map( $_->files_of_type('C code'), $DIST->c_source_file_directories ),
map( $_->files_of_type('C header'), $DIST->c_header_file_directories ),
+ map( $_->files_of_type('PMC code'), $DIST->pmc_source_file_directories ),
);
}