logo
Free, unlimited AI code reviews that run on commit
git-lrc git-lrc GitHub Install Now We'd appreciate a star git-lrc - Free, unlimited AI code reviews that run on commit | Product Hunt git-lrc - Free, unlimited AI code reviews that run on commit | Product Hunt

Module::Install::XSUtil - Utility functions for XS modules

Acknowledgement

       Thanks to Taro Nishino for the test reports.

       Tanks to lestrrat for the suggestions and patches.

Author

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

Bugs

       No bugs have been reported.

       Please report any bugs or feature requests to the author.

Dependencies

       Perl 5.5.3 or later.

Description

       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 includepaths 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.

Name

       Module::Install::XSUtil - Utility functions for XS modules

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';

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.

See Also

       ExtUtils::Depends.

       Module::Install.

       Module::Install::CheckLib.

       Devel::CheckLib.

       ExtUtils::MakeMaker.

Synopsis

           # 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.

See Also