############################################################################### # Copyright (c) ERG Transit Systems. 1996-2008 # # File: PLATFORM/DEVLINUX.cfg # # Contents: DEVLINUX 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 DEVLINUX_Build; use JatsError; use Storable qw(dclone); # # Create a hash of GBE_MACHTYPEs for which the DEVLINUX platform is available # It won't just build on any old machine # # Hash values are an array of: # Operating System # architecture # my %valid_machines = ( 'linux_i386' => [ 'COBRA', 'ARM9TDMI', 'LINUX_EMU', 'LINUX_ETX', 'PPC_603E', 'UBUNTU12', 'UBUNTU12_INSTRUMENT', 'SK20' ], ); #------------------------------------------------------------------------------- # 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 class my $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 ("DEVLINUX will not build on this machine type: $::GBE_MACHTYPE"); $pInfo->{NOT_AVAILABLE} = 1; return; } # # Instantiate all targets # foreach my $target ( @$entry ) { DEVLINUX_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 : DEVLINUX_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 DEVLINUX_generic { my ($pInfo, $target) = @_; Debug("DEVLINUX_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;