Module::Install::XSUtil(3pm)

Module::Install::XSUtil3pm

Utility functions for xs modules

Usage

    # in Makefile.PL
    use inc::Module::Install;
    # Enables C compiler warnings
    cc_warnings;
    # Uses ppport.h
    # No need to include it. It's created here.
    use_ppport 3.19;
    # Sets C pre-processor macros.
    cc_define q{-DUSE_SOME_FEATURE=42};
    # Sets paths for header files
    cc_include_paths 'include'; # all the header files are in include/
    # Sets paths for source files
    cc_src_paths 'src'; # all the XS and C source files are in src/
    # Installs header files
    install_headers; # all the header files in @cc_include_paths

Version

This document describes Module::Install::XSUtil version 0.45.

Overview

Module::Install::XSUtil provides a set of utilities to setup distributions which include or depend on XS module.

See XS::MRO::Compat and Method::Cumulative for example.

Functions

cc_available

Returns true if a C compiler is available. YOU DO NOT NEED TO CALL THIS FUNCTION YOURSELF: it will be called for you when this module is initialized, and your Makefile.PL process will exit with 0 status. Only explicitly call if you need to do some esoteric handling when no compiler is available (for example, when you have a pure perl alternative)

c99_available

Returns true if a C compiler is available and it supports C99 features.

want_xs ?$default

Returns true if the user asked for the XS version or pure perl version of the module.

Will return true if "--xs" is explicitly specified as the argument to Makefile.PL, and false if "--pp" is specified. If neither is explicitly specified, will return the value specified by $default. If you do not specify the value of $default, then it will be true.

use_ppport ?$version

Creates ppport.h using "Devel::PPPort::WriteFile()".

This command calls "configure_requires 'Devel::PPPort' => $version" and adds "-DUSE_PPPORT" to "MakeMaker"'s "DEFINE".

use_xshelper ?-clean|-realclean

Create sxshelper.h, which is a helper header file to include EXTERN.h, perl.h, XSUB.h and ppport.h, and defines some portability stuff which are not supported by ppport.h.

Optional argument "-clean" and "-realclean" set "clean_files" or "realclean_files" to the generated file xshelper.h respectably.

This command includes "use_ppport".

cc_warnings

Enables C compiler warnings.

cc_define @macros

Sets "cpp" macros as compiler options.

cc_src_paths @source_paths

Sets source file directories which include *.xs or *.c.

cc_include_paths @include_paths

Sets include paths for a C compiler.

cc_inc_paths @include_paths;

This was an alias to "cc_include_paths", but from 0.42, this is "Module::Install::Compiler::cc_inc_paths", which replaces the EUMM's "INC" parameter.

Don't use this function. Use "cc_include_paths" instead.

cc_libs @libs

Sets "MakeMaker"'s "LIBS". If a name starts "-", it will be interpreted as is. Otherwise prefixed "-l".

e.g.:

    cc_libs -lfoo;
    cc_libs  'foo'; # ditto.
    cc_libs qw(-L/path/to/libs foo bar); # with library paths

cc_assert_lib %args

Checks if the given C library is installed via Devel::CheckLib. Takes exactly what Devel::CheckLib takes. Note that you must pass the path names explicitly.

requires_c99

Tells the build system to use C99 features.

requires_cplusplus

Tells the build system to use C++ language.

install_headers ?@header_files

Declares providing header files, extracts functions from these header files, and adds these functions to "MakeMaker"'s "FUNCLIST".

If @header_files are omitted, all the header files in include paths will be installed.

cc_append_to_inc @include_paths

Low level API.

cc_append_to_libs @libraries

Low level API.

cc_append_to_ccflags @ccflags

Low level API.

cc_append_to_funclist @funclist

Low level API.

Options

Under the control of this module, Makefile.PL accepts "-g" option, which sets "MakeMaker"'s "OPTIMIE" "-g" (or something like). It will disable optimization and enable some debugging features.

Dependencies

Perl 5.5.3 or later.

Note

In Makefile.PL, you might want to use "author_requires", which is provided by "Module::Install::AuthorReauires", in order to tell co-developers that they need to install this plugin.

    author_requires 'Module::Install::XSUtil';

Acknowledgement

Thanks to Taro Nishino for the test reports.

Tanks to lestrrat for the suggestions and patches.

Releases

8 releases since Debian 6.0 (Squeeze); the text changed 4 times.

  1. 6.0
  2. 7
  3. 8–10
  4. 11
  5. 12–13

Bugs

No bugs have been reported.

Please report any bugs or feature requests to the author.

Author

Goro Fuji (gfx) <gfuji(at)cpan.org>.

From libmodule-install-xsutil-perl 0.45-3 in Debian 13 (Trixie). Parsed by carta from the page's man source.