Dev(3)

NAME
PDL::Core::Dev - PDL development module

DESCRIPTION
This module encapsulates most of the stuff useful for PDL development and is often used from within Makefile.PL's.

SYNOPSIS
   use PDL::Core::Dev;

FUNCTIONS

  isbigendian
Is the machine big or little endian?

  print "Your machins is big endian.\n" if isbigendian();

returns 1 if the machine is big endian, 0 if little endian, or dies if neither. It uses the "byteorder" element of perl's %Config array.

   my $retval = isbigendian();

  trylink
a perl configure clone

  if (trylink 'libGL', '', 'char glBegin(); glBegin();', '-lGL') {
    $libs = '-lGLU -lGL';
    $have_GL = 1;
  } else {
    $have_GL = 0;
  }
  $maybe =
    trylink 'libwhatever', $inc, $body, $libs, $cflags,
        {MakeMaker=>1, Hide=>0, Clean=>1};

Try to link some C-code making up the body of a function with a given set of library specifiers

return 1 if successful, 0 otherwise

   trylink $infomsg, $include, $progbody, $libs [,$cflags,{OPTIONS}];

Takes 4 + 2 optional arguments.

•   an informational message to print (can be empty)

•   any commands to be included at the top of the generated C program (typically something like "#include "mylib.h"")

•   the body of the program (in function main)

•   library flags to use for linking. Preprocessing by MakeMaker should be performed as needed (see options and example).

•   compilation flags. For example, something like "-I/usr/local/lib". Optional argument. Empty if omitted.

•   OPTIONS

    MakeMaker
        Preprocess library strings in the way MakeMaker does things. This is advisable to ensure that your code will actually work after the link specs have been processed by MakeMaker.

    Hide
        Controls if linking output etc is hidden from the user or not. On by default except within the build of the PDL distribution where the config value set in perldl.conf prevails.

    Clean
        Remove temporary files. Enabled by default. You might want to switch it off during debugging.

  generate_core_flags
prints on "STDOUT" XS text with core flags, for Core.xs.

  got_complex_version
  PDL::Core::Dev::got_complex_version($func_name, $num_params)

For a given function appearing in C99's "complex.h", will return a boolean of whether the system being compiled on has the complex version of that. E.g. for "sin", will test whether "csinl" exists (before 2.069, would only check for "csin", causing build failures on non-C99 compliant "libc" which mandates long-double versions).