| Imager documentation | view source | Contained in the Imager distribution. |
Imager::Probe - hot needle of inquiry for libraries
require Imager::Probe;
my %probe =
(
# short name of what we're looking for (displayed to user)
name => "FOO",
# pkg-config lookup
pkg => [ qw/name1 name2 name3/ ],
# perl subs that probe for the library
code => [ \&foo_probe1, \&foo_probe2 ],
# or just: code => \&foo_probe,
inccheck => sub { ... },
libcheck => sub { ... },
# search for this library if libcheck not supplied
libbase => "foo",
# library link time options, uses libbase to build options otherwise
libopts => "-lfoo",
# C code to check the library is sane
testcode => "...",
# header files needed
testcodeheaders => [ "stdio.h", "foo.h" ],
);
my $result = Imager::Probe->probe(\%probe)
or print "Foo library not found: ",Imager::Probe->error;
Does the probes that were hidden in Imager's Makefile.PL, pulled out so the file format libraries can be externalized.
The return value is either nothing if the probe fails, or a hash containing:
INC - -I and other C options LIBS - -L, -l and other link-time options DEFINE - -D options, if any.The possible values for the hash supplied to the probe() method are:
pkg - an array of pkg-config names to probe for. If the
pkg-config checks pass, inccheck and libcheck aren't used. inccheck - a code reference that checks if the supplied include
directory contains the required header files. libcheck - a code reference that checks if the supplied library
directory contains the required library files. Note: the
Makefile.PL version of this was supplied all of the library file
names instead. libbase - if inccheck is supplied, but libcheck isn't, then a
libcheck that checks for liblibbase$Config{_a} and
liblibbase.$Config{so} is created. If libopts isn't
supplied then that can be synthesized as -l<libbase>. libopts - if the libraries are found via inccheck/libcheck,
these are the -l options to supply during the link phase. code - a code reference to perform custom checks. Returns the
probe result directly. Can also be an array ref of functions to call. testcode - test C code that is run with Devel::CheckLib. You also
need to set testcodeheaders. testcodeprologue - C code to insert between the headers and the
main function. incpath - $Config{path_sep} separated list of header file
directories to check, or a reference to an array of such. libpath - $Config{path_sep} separated list of library file
directories to check, or a reference to an array of such.| Imager documentation | view source | Contained in the Imager distribution. |