---
name: "PDL::Dev"
section: "3pm"
platform: "linux"
package: "pdl"
version: "1:2.081-2"
release: "Debian 12 (Bookworm)"
platforms: ["linux"]
url: "https://new.carta.tech/PDL::Dev"
---

# PDL::Dev(3pm)

PDL development module

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