imgtools/imaker/buildrom_plugins/s60ibymacros.pm
author William Roberts <williamr@symbian.org>
Fri, 22 Oct 2010 12:33:01 +0100
changeset 651 0d0d83e3702d
parent 595 997c19261166
permissions -rw-r--r--
Enhance buildrom.pm to enable final OBY file to be converted into acceptable input for buildrom (Bug 3862)

# ============================================================================
#  Name        : s60ibymacros.pm
#  Part of     : build_RnD
#  Description : S60 specific IBY file macro handling
#  Version     : %version: 1 %
#
#  Copyright © 2006 Nokia.  All rights reserved.
#  This material, including documentation and any related computer
#  programs, is protected by copyright controlled by Nokia.  All
#  rights are reserved.  Copying, including reproducing, storing,
#  adapting or translating, any or all of this material requires the
#  prior written consent of Nokia.  This material also contains
#  confidential information which may not be disclosed to others
#  without the prior written consent of Nokia.
# ============================================================================
#
# 07.08.2006 Juha Ristimäki
# Initial version.
#

package s60ibymacros;

BEGIN
  {
  use Exporter ();
  our ( $VERSION, @ISA, @EXPORT );
  # set the version for version checking
  $VERSION     = 1.00;

  @ISA         = qw( Exporter );
  @EXPORT      = qw( &s60ibymacros_info &DoS60IbyModifications );
  }

my %s60ibymacros_infostruct =
  (
  name => "s60ibymacros",
  invocation => "InvocationPoint1",
  single => "s60ibymacros::DoS60IbyModifications"
  );

my @newobydata;

sub s60ibymacros_info
  {
  return \%s60ibymacros_infostruct;
  }

sub DoS60IbyModifications
  {
  my $obydata = shift;

  undef @newobydata;
  foreach $line (@{$obydata})
    {
    if ($line =~ /^\s*REM/i)
      {
      # Ignore REM statements, to avoid processing "REM __SCALABLE_IMAGE( ... )"
      push @newobydata, $line;
      }
    elsif( ! ( HandleIconMacros($line) || HandleCenrepMacros($line) ) )
      {
      push @newobydata, $line;
      }
    }
  @{$obydata} = @newobydata;
  }

sub HandleCenrepMacros
  {
  my $line = shift;
  if ( $line =~ m/^.*__CENREP_TXT_FILES\(\s*(\S+)\s*,\s*(\S+)\s*,\s*(\S+)\s*\)/i )
  # __CENREP_TXT_FILES(dataz_, source dir, target dir)
    {
    my $sourcepath="$1\\$2";
    my $targetpath=$3;
    my $s60extras_export_list_filename = "$sourcepath"."\\s60extras_export_list.txt";

    open(DH, $s60extras_export_list_filename);
    my @dlist = <DH>;
    chop @dlist;
    close(DH);

    my $cenreptxtfile;
    foreach $cenreptxtfile (@dlist)
      {
      if ($cenreptxtfile =~ /^\S+\.txt/)
        {
        push @newobydata, "data=$sourcepath\\$cenreptxtfile $targetpath\\$cenreptxtfile\n";
        }
      }
    return 1;
    }
  }

sub HandleIconMacros
  {
  my $line = shift;
  if ( $line =~ m/^.*__SCALABLE_IMAGE\(\s*(\S+)\s*,\s*(\S+)\s*,\s*(\S+)\s*,\s*(\S+)\s*\)/i )
  # __SCALABLE_IMAGE(emulator directory, file rom dir, dataz_, resource rom dir,
  #                  filename, resource filename)
    {
      
    my $sourcepath="$1\\$2";
    my $targetpath=$3;
    my $filename=$4;

    if( -e "$sourcepath\\$filename.mbm" )
      {
      push @newobydata, "AUTO-BITMAP=$sourcepath\\$filename.mbm $targetpath\\$filename.mbm\n";
      }
    if( -e "$sourcepath\\$filename.mif" )
      {
      push @newobydata, "data=$sourcepath\\$filename.mif $targetpath\\$filename.mif\n";
      }
    elsif( ! -e "$sourcepath\\$filename.mbm ")
      {
      print STDERR "* Invalid image file name: $sourcepath\\$filename.mbm or .mif\n";
      }
    return 1;
    }
  }

1;  # Return a true value from the file