NAME¶
Module::Install::XSUtil - Utility functions for XS modules
VERSION¶
This document describes Module::Install::XSUtil version 0.43.
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
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 s
xshelper.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.
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';
BUGS¶
No bugs have been reported.
Please report any bugs or feature requests to the author.
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>.
SEE ALSO¶
ExtUtils::Depends.
Module::Install.
Module::Install::CheckLib.
Devel::CheckLib.
ExtUtils::MakeMaker.
LICENSE AND COPYRIGHT¶
Copyright (c) 2009-2010, Goro Fuji (gfx). All rights reserved.
This library is free software; you can redistribute it and/or modify it under
the same terms as Perl itself.