Use multiple XS files with Module::Build

When I'm porting Text-Xslate to Module::Build, I got an issue.

Text::Xslate uses multiple XS files for generating 1 .so file. M::B doesn't support this case.

Here is my solution:

Set xs_files for main .xs file.

xs_files => {
    'src/Text-Xslate.xs' => 'lib/Text/Xslate.xs',
},

And set c_source for other miscellaneous .xs files.

c_source => ['src'],

Finally, call ExtUtils::ParseXS in ACTION_code method.

sub ACTION_code {
    my $self = shift;

    require ExtUtils::ParseXS;
    ExtUtils::ParseXS->new->process_file(
        filename => 'src/xslate_methods.xs',
        output   => 'src/xslate_methods.c'
    );

    $self->SUPER::ACTION_code(@_);
}

That's all.


[Update 20131125] Oops. c_source should be directory!

Published: 2013-12-13(Fri) 12:42