Rev 5709 | Blame | Compare with Previous | Last modification | View Log | RSS feed
######################################################################### COPYRIGHT - VIX IP PTY LTD ("VIX"). ALL RIGHTS RESERVED.## Module name : jats_runtime_arm251.pm# Module type : Makefile system# Compiler(s) : Perl# Description : JATS Make Time Support for the ARM251 toolchain## This package contains functions that are invoked by the JATS# generated makefiles to perform complicated operations at Make Time## The functions are designed to be invoked as:# $(GBE_PERL) -Mjats_runtime_arm251 -e <function> -- <args>+## The functions in this packages are designed to take parameters# from @ARVG as this makes the interface easier to read.## This package is used to speedup and simplify the JATS builds# Some things are easier to do in Perl than shell hidden inside# a makefile##......................................................................#require 5.006_001;use strict;use warnings;package jats_runtime_arm251;our (@ISA, @EXPORT, @EXPORT_OK, %EXPORT_TAGS, $VERSION);use Exporter;use JatsError qw(:name=ARM251);$VERSION = 1.00;@ISA = qw(Exporter);# Symbols to autoexport (:DEFAULT tag)@EXPORT = qw( create_heapprintenv);## Parsed options are stored globally#our %opts;#BEGIN#{# print "-------jats_runtime_arm251 initiated\n";#}#-------------------------------------------------------------------------------# Function : process_options## Description : Extract options from the front of the command stream## Options of the form --Opt=Val are split out# Options of the form --Opt will set (or increment a value)## Inputs : None: Uses global ARGV## Returns : None: Resets global argv# Populates the %opts hash#sub process_options{while ( my $entry = shift @ARGV ){if ( $entry =~ m/^--(.*)/ ){if ( $1 =~ m/(.*)=(.*)/ ){$opts{$1} = $2;}else{$opts{$1}++;}}else{unshift @ARGV, $entry;last;}}## Process some known options# These are the same as those provided by 'jats_runtime'#$opts{'Progress'} = $opts{'Verbose'} if ( $opts{'Verbose'} );ErrorConfig( 'name', $opts{Name}) if ( $opts{'Name'} );ErrorConfig( 'verbose', $opts{Verbose}) if ( $opts{'Verbose'} );DebugDumpData("RunTime Opts", \%opts ) if ( $opts{'ShowOpts'} );;Message ("RunTime args: @ARGV") if ( $opts{'ShowArgs'} );printenv() if ( $opts{'ShowEnv'} );Message ($opts{'Message'}) if ( $opts{'Message'} );}#-------------------------------------------------------------------------------# Function : printenv## Description : Display all EnvVars## Inputs : None## Returns :#sub printenv{foreach my $entry ( sort keys %ENV ){print " $entry=$ENV{$entry}\n";}}#-------------------------------------------------------------------------------# Function : create_heap## Description : Create an assembler file to hold the heap data## Inputs : @ARGV# --Heap=nn# --OutFile=Filename## Returns :#sub create_heap{process_options();Error ("No Heap size provided") unless ( defined $opts{'Heap'} );Error ("No Outfile provided") unless ( defined $opts{'OutFile'} );Message ("Create Heap File");## Create a file and place known data into it#open (FH, '>', $opts{'OutFile'} ) || Error ("Cannot create: $opts{'OutFile'}", "Reason: $!");print FH << "EOT";GBLS VBarVBar SETS "|";------------------------------------------------------------------------; Macro to start a bss section;------------------------------------------------------------------------MACROBSS_SECTION \$name[ "\$name" = ""AREA |C\$\$bss|, NOINIT|LCLS ANameAName SETS VBar:CC:"\$name":CC:"\$":CC:"\$code":CC:VBarAREA \$AName, NOINIT]MENDBSS_SECTION ApplicationHeapEXPORT ApplicationHeapApplicationHeap \% $opts{'Heap'}ENDEOTclose FH;}1;