diff -r fa9d7d89d3d6 -r 68f68128601f sbsv1/abld/platform/armutl.pm --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/sbsv1/abld/platform/armutl.pm Thu Nov 25 13:59:07 2010 +0000 @@ -0,0 +1,180 @@ +# Copyright (c) 2002-2009 Nokia Corporation and/or its subsidiary(-ies). +# All rights reserved. +# This component and the accompanying materials are made available +# under the terms of "Eclipse Public License v1.0" +# which accompanies this distribution, and is available +# at the URL "http://www.eclipse.org/legal/epl-v10.html". +# +# Initial Contributors: +# Nokia Corporation - initial contribution. +# +# Contributors: +# +# Description: +# this package does various ancillary things for armedg modules +# +# + +package Armutl; + +require Exporter; +@ISA=qw(Exporter); +@EXPORT=qw( + Armutl_Help_Mmp + + Armutl_DoMmp + + Armutl_ArmIncDir + Armutl_ArmLibList + Armutl_ArmRT + Armutl_AsmFileList + Armutl_ArmVersion + Armutl_RVCTMajorVersion + Armutl_RVCTMinorVersion + Armutl_RVCTPatchLevel + Armutl_RVCTBuildNumber + Armutl_ArmLibDir +); + +use RVCT_plat2set; + +my $ArmInc=''; +my @ArmLibList=(); +my $ArmRT=0; +my @AsmFileList=(); + +# make sure that some of the tool subroutines still work in case of Plat() does not exists in namespace main +my $Plat = main::Plat() if defined &main::Plat; + +my ($RVCTMajorVersion, $RVCTMinorVersion, $RVCTBuildNumber) = RVCT_plat2set::get_version_list($Plat); + +my $RVCTVersion = "$RVCTMajorVersion.$RVCTMinorVersion"; +my $RVCTPatchLevel = 0; + + +sub Armutl_Help_Mmp { +# provide the help text for START END blocks + + print + "ARMINC // include value of RVCT*INC environment variable to search paths\n", + "ARMLIBS // list the ARM supplied libraries to be linked against\n", + "ARMRT // indicates this target froms part of the runtime and so\n", + " // shouldn't be linked against itself or other runtime libs\n", + "ARMNAKEDASM // list .cpp files subject to auto-translation from GCC inline asm to ARM embedded asm\n" + ; +} + +sub Armutl_DoMmp (@) { # takes platform text + my @PlatTxt=@_; + + my $BaseTrg=&main::BaseTrg; + my $BasicTrgType=&main::BasicTrgType; + my $MakeFilePath=&main::MakeFilePath; + my $MMPFILE=&main::MmpFile; + my @UidList=&main::UidList; + + # set up START ARMV5|THUMB2 ... END block module variables + my @MmpWarn=(); + my $Line; + + LINE: foreach $Line (@PlatTxt) { + my $LineInfo=shift @$Line; + $_=shift @$Line; + if (/^ARMINC$/o) { + $ArmInc = RVCT_plat2set::get_inc_path($Plat); + next LINE; + } + if (/^ARMRT$/o) { + $ArmRT = 1; + next LINE; + } + if (/^ARMLIBS$/o) { + my $LibVar = "RVCT${RVCTMajorVersion}${RVCTMinorVersion}LIB"; + my $ArmLibDir = RVCT_plat2set::get_lib_path($Plat); + + push @MmpWarn, "$LineInfo : No libraries specified for keyword ARMLIBS\n" unless @$Line; + + while (@$Line) { + my $lib = shift @$Line; + + my $lib_path = RVCT_plat2set::find_lib( $Plat, $lib ); + + if ($lib_path) + { + push @ArmLibList, $lib_path; + } + else + { + push @MmpWarn, "$LineInfo : arm library file $lib not found.\n" ; + } + } + next LINE; + } + if (/^ARMNAKEDASM$/o) { + push @MmpWarn, "$LineInfo : No files specified for keyword ARMNAKEDASM\n" unless @$Line; + push @AsmFileList, @$Line; + next LINE; + } + push @MmpWarn, "$LineInfo : Unrecognised Keyword \"$_\"\n"; + } + + undef $Line; + if (@MmpWarn) { + warn + "\nMMPFILE \"$MMPFILE\"\n", + "START .. END BLOCK WARNINGS(S)\n", + @MmpWarn, + "\n" + ; + } + undef @MmpWarn; + } + +sub Armutl_ArmIncDir() { + $ArmInc; +} + +sub Armutl_ArmLibList() { + @ArmLibList; +} + +sub Armutl_ArmRT() { + $ArmRT; +} + +sub Armutl_AsmFileList() { + @AsmFileList; +} + +sub Armutl_ArmVersion() { + return $RVCTVersion; +} + +sub Armutl_RVCTMajorVersion() { + return $RVCTMajorVersion; +} + +sub Armutl_RVCTMinorVersion() { + return $RVCTMinorVersion; +} + +sub Armutl_RVCTPatchLevel() { + return $RVCTPatchLevel; +} + +sub Armutl_RVCTBuildNumber() { + return $RVCTBuildNumber; +} + +sub Armutl_ArmLibDir() { + my $LibVar = "RVCT${RVCTMajorVersion}${RVCTMinorVersion}LIB"; + my $ArmLibDir = $ENV{$LibVar}; + return $ArmLibDir; +} + +1; + + + + +