Rev 391 | Go to most recent revision | Blame | Compare with Previous | Last modification | View Log | RSS feed
################################################################################ Copyright (c) ERG Transit Systems. 1996-2006## File: PLATFORM/LMOS.cfg## Contents: LMOS Build support## This package is used during the processing of the build.pl file# Values provided by this package are used to extend the Platform# information as platforms are being created. This provides a# powerful set of mechanism to extend the entire JATS toolset################################################################################use strict;use warnings;package LMOS_Build;use JatsError;use Storable qw(dclone);## Create a hash of GBE_MACHTYPEs for which the LMOS platform is available# It won't just build on any old machine## Hash values are an array of platforms to replace the given platform# Note: The process is not recursive, thus the named plaforms MUST be# real platforms, not one that will expand into more platforms#my %valid_machines = ('linux_i386' => [ 'LMOS_ARM9TDMI','LMOS_LINUX_EMU','LMOS_LINUX_ETX','LMOS_PPC_603E','LMOS_COBRA',],'win32' => [ 'LMOS_WIN32' ],);#-------------------------------------------------------------------------------# Function : new_platform## Description : Called when a new platform is being created# The function can extend the build information## The 'LINUX' platform will be converted into a 'suitable'# platform for the current machine.## Inputs : $pInfo - Reference to the platform build info hash## Returns : Nothing yet#sub new_platform{my $class = shift; # Not really a class, but its called like a classmy $pInfo = shift;## Ignore this platform if there is no way that it can be built on the# current machine.#my $entry = $valid_machines{$::GBE_MACHTYPE};unless ( $entry ){Verbose ("LMOS will not build on this machine type: $::GBE_MACHTYPE");$pInfo->{NOT_AVAILABLE} = 1;return;}## Instantiate all targets#foreach my $target ( @$entry ){LMOS_generic( dclone($pInfo), $target );}## All done# Mark the original entry as a TEMPLATE so that it won't be added# We have added cloned copies of it#$pInfo->{TEMPLATE} = 1;}#-------------------------------------------------------------------------------# Function : LMOS_generic## Description : Take a clone of the buildinfo structure and specialise it# for the required target## Inputs : $pInfo - A clone of the buildinfo data# $target - Name of the target platform## Returns : Nothing# The buildinfo MUST be added to the build system#sub LMOS_generic{my ($pInfo, $target) = @_;Debug("LMOS_generic: $target");## Request that a simple BuildAlias be created for this platform# Use the original name of the TARGET#$pInfo->{ALIAS} = $pInfo->{TARGET};# ## # Specify the hardware family# # Will be used to create an ALIAS# ## $pInfo->{HARDWARE} = uc($arch);## Alter the 'TARGET' name# This is allowed (expected)#$pInfo->{TARGET} = uc($target);## Register this 'new' buildinfo entry with the build system#::AddBuildPlatformEntry( $pInfo );}1;