The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.

NAME

Module::Build::Pluggable::XSUtil::Cookbook - Cookbook for XSUtil

DESCRIPTION

This document describes porting from Module::Install::XSUtil

FUNCTIONS

-g Option
    use Module::Build::Pluggable (
        'XSUtil',
    );

Module::Build::Pluggable::XSUtil supports it.

cc_available
    $builder->have_c_compiler()

Module::Build supports to check the system having compiler natively.

c99_available
    use Devel::CheckCompiler;

    my $c99_available = check_c99();

Use Devel::CheckCompiler.

want_xs()
    use Devel::WantXS;
    my $want_xs = want_xs();

Devel::WantXS provides this feature.

use_ppport()
    use Module::Build::Pluggable (
        'XSUtil' => {
            ppport => 1,
        },
    );

Module::Build::Pluggable::XSUtil provides this feature.

use_xshelper()
    use Module::Build::Pluggable (
        'XSUtil' => {
            'xshelper' => 1,
        },
    );

Module::Build::Pluggable::XSUtil provides this feature.

cc_warnings()
    use Module::Build::Pluggable (
        'XSUtil' => {
            cc_warnings => 1,
        },
    );

Moule::Build::Pluggable::XSUtil provides this feature.

cc_define(@macros)
    Module::Build->new(
        extra_compiler_flags => join(' ', @macros)
    );
cc_src_paths(@source_paths)
    Module::Build->new(
        c_source => \@source_paths
    );
cc_include_paths(@include_paths)
    Module::Build->new(
        include_dirs => \@include_paths
    );
cc_libs(@libs)
    Module::Build->new(
        extra_linker_flags => join(' ', map { "-l$_" } @libs)
    );
cc_assert_lib(%args)
    use Module::Build::Pluggable (
        'CheckLib' => {
            %args
        },
    );

Module::Build::Pluggable::CheckLib provides this feature.

requires_c99()
    use Module::Build::Pluggable (
        'XSUtil' => {
            c99 => 1,
        },
    );

Module::Build::Pluggable::XSUtil provides this feature.

requires_cplusplus()
    use Module::Build::Pluggable (
        'XSUtil' => {
            'c++' => 1,
        },
    );

Module::Build::Pluggable::XSUtil provides this feature.