NAME
ExtUtils::Builder::AutoDetect::C - compiler configuration, derived from perl's configuration
VERSION
version 0.032
SYNOPSIS
my $planner = ExtUtils::Builder::Planner->new;
$planner->load_extension('ExtUtils::Builder::AutoDetect::C', '0.001',
profiles => ['@Perl'],
type => 'loadable-object',
);
$planner->compile('foo.c', 'foo.o', include_dirs => ['.']);
$planner->link([ 'foo.o' ], 'foo.so', libraries => ['foo']);
my $plan = $planner->materialize;
$plan->run(['foo.so']);
DESCRIPTION
This module is a ExtUtils::Builder::Planner::Extension that facilitates compiling object.
METHODS
add_methods(%options)
This adds two delegate methods to the planner, compile and link. It takes named arguments that will be prefixed to the named arguments for all delegate calls. In practice, it's mainly useful with the config, profile and type arguments.
If your $planner has a config delegate, that will be used as default value for config.
This is usually not called directly, but through ExtUtils::Builder::Planner's load_extension method.
link(\@sources, $target, %options)
- type
-
This works the same as with
compile. - config
-
This works the same as with
compile. - profile
-
This works the same as with
compile. - libraries
-
A list of libraries to link to. E.g.
['z']. - library_dirs
-
A list of directories to find libraries in. E.g.
['/opt/my-app/lib/']. - extra_args
-
A list of additional arguments to the linker.
DELEGATES
compile($source, $target, %options)
This compiles $source to $target. It takes the following optional arguments:
- type
-
The type of the final product. This must be one of:
executable
An executable to be run. This is the default.
static-library
A static library to link against.
dynamic-library
A dynamic library to link against.
loadable-object
A loadable extension. On most platforms this is the same as a dynamic library, but some (Mac) make a distinction between these two.
- config
-
A Perl configuration to take hints from, must be an
ExtUtils::Configcompatible object. - profiles
-
A list of profile that can be used when compiling and linking. One profile comes with this distribution:
'@Perl', which sets up the appropriate things to compile/link withlibperl. - include_dirs
-
A list of directories to add to the include path, e.g.
['include', '.']. - define
-
A hash of preprocessor defines, e.g.
{DEBUG => 1, HAVE_FEATURE => 0 } - extra_args
-
A list of additional arguments to the compiler.
AUTHOR
Leon Timmermans <fawaka@gmail.com>
COPYRIGHT AND LICENSE
This software is copyright (c) 2012 by Leon Timmermans.
This is free software; you can redistribute it and/or modify it under the same terms as the Perl 5 programming language system itself.