NAME

Make.pm - Main make module for Parrot

SYNOPSIS

Cross-platform make for Parrot.

Platform-dependent variables

Platform-dependent variables and extensions go here. For instance, the extension for executables varies widely between Windows and UNIX. UNIX doesn't use any extension, Windows uses .exe. Differences like these are encapsulated in the %extensions hash. Programs that differ from platform-to-platform are stored in %programs. This may end up being configured from Configure.pl.

Filename portability

These functions isolate the makefile from needing to know what extension a file needs to have. For instance, object files are used to create an executable. Ordinarily, a long list of objects would be declared in a makefile like classes/perlarray$(O) classes/perlhash$(O).

Instead, all of these functions accept either a single input filename or an array of filenames. So, the above makefile would look more like:

$class_objects = Object(input => [qw(classes/perlarray classes/perlhash)]);
Executable(input=>'parrot')

Given the name of an executable (with no extensions), returns the executable's name along with the appropriate extension. This is not an object, merely a function returning a string.

The input can also be an array of executables, to help

Object(input=>'test_main')

Given the name of an object file (with no extension), return the object's full name along with the appropriate extension. Also operates on array of file names.

Shared_Object(input=>'test_main')

Given the name of an shared object file (with no extension), return the object's full name along with the appropriate extension.