tracefw/tracecompiler/tracecompiler/tracecompiler.pm
changeset 41 838cdffd57ce
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/tracefw/tracecompiler/tracecompiler/tracecompiler.pm	Mon Aug 23 15:29:36 2010 +0300
@@ -0,0 +1,174 @@
+#
+# Copyright (c) 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:
+#
+# Module for TraceCompiler
+#
+package tracecompiler;
+
+# If this is 1, debug prints are shown
+my $DEBUG = 0;
+
+use FindBin;
+
+# Get current directory as TraceCompiler path
+my $trace_compiler_path = $FindBin::Bin;  # e.g. X:/epoc32/tools
+$trace_compiler_path =~ s/\\/\//g; # Replace all "\" with "/"
+$trace_compiler_path =~ s/\/$//; # Remove possible trailing slash
+
+#-------------------------------------------------------
+# Concatenate path
+#-------------------------------------------------------
+sub concatenatePath
+{
+  my $concatenatePathBase = $_[0];
+  my $concatenatePathFile = $_[1];
+  
+  my $backCount = 0;
+  
+  # Change all "\" characters to "/"
+  $concatenatePathBase =~ s/\\/\//g;
+  $concatenatePathFile =~ s/\\/\//g;
+  
+  # Replace all "/./" with "/"
+  $concatenatePathBase =~ s/\/\.\//\//g;
+  $concatenatePathFile =~ s/\/\.\//\//g;
+    
+  # Find how many back references there are and remove them
+  while ($concatenatePathFile =~ /\.\.\//g) 
+  { 
+    $backCount++ 
+  }
+  $concatenatePathFile =~ s/\.\.\///g;
+  
+  # If there is / in the end of the base remove it
+  $concatenatePathBase =~ s/\/$//;
+  
+  # Remove directories from the end of the path
+  $concatenatePathBase = reverse($concatenatePathBase);
+  for (my $i=0; $i<$backCount; $i++)
+  {
+    $concatenatePathBase =~ s/.*?\///;
+  }
+  $concatenatePathBase = reverse($concatenatePathBase);
+  
+  my $concatenatePathFullFilePath = "$concatenatePathBase\/$concatenatePathFile";
+  
+  # Replace again all "/./" with "/"
+  $concatenatePathFullFilePath =~ s/\/\.\//\//g;
+  
+  debugMsg("Concatenate returns $concatenatePathFullFilePath");
+  return $concatenatePathFullFilePath;
+}
+
+#-------------------------------------------------------
+# Get java command
+#-------------------------------------------------------
+sub getJavaCommand
+{
+  my @java_commands = ("/tools/ncp_tools/helium/external/jdk1.5/jre/bin/java.exe", "java.exe", "c:/apps/seeinstaller/jre/bin/java.exe");
+
+  my $java_command;
+  
+  foreach my $command (@java_commands)
+  {
+    if (checkJava($command))
+    {
+      $java_command = $command;
+      last;
+    }
+  }
+  
+  return $java_command;
+}
+
+#-------------------------------------------------------
+# Check java
+#-------------------------------------------------------
+sub checkJava
+{
+  open (IN, "$_[0] -version 2>&1 |");
+  while(<IN>)
+  {
+    if (/(\d+\.\d+)/)
+    {
+      if ($1 >= 1.5)
+      {
+        return 1;
+      }
+    } 
+  }
+  
+  return 0;
+}
+
+#-------------------------------------------------------
+# Gets TraceCompiler version number
+#-------------------------------------------------------
+sub getTraceCompilerVersion
+{
+  # Get Java command or EXIT if not found
+  my $java_command = getJavaCommand();
+
+  if (not defined $java_command)
+  {
+    return "Java 1.5 or newer required!\n";
+    exit;
+  }
+  
+   # run from class files class files
+  my $version_query_command = "$java_command -classpath $trace_compiler_path/tracecompiler com.nokia.tracecompiler.TraceCompilerMain -v";
+  
+  # run from jar  file	command
+  #my $version_query_command = "$java_command -jar $trace_compiler_path/tracecompiler.jar -version"; 
+
+  my $version = qx($version_query_command);
+    
+  return $version;
+}
+
+
+#-------------------------------------------------------
+# Debug Message. Writes to log file and outputs to screen.
+#-------------------------------------------------------
+sub debugMsg
+{
+  if ($DEBUG)
+  {
+    open FILE, ">>/tracecompiler_debug.txt" or die $!;
+    print FILE $_[0] . "\n";
+    close FILE;
+    
+    return print "DEBUG: $_[0]\n";
+  }
+}
+
+#-------------------------------------------------------
+# Writes TraceCompiler version to log and screen if Debug is on.
+#-------------------------------------------------------
+sub debugTraceCompilerVersion
+{
+  if ($DEBUG)
+  {   
+    open FILE, ">>/tracecompiler_debug.txt" or die $!;
+    my $version = getTraceCompilerVersion();
+    print FILE $version;
+    close FILE;
+    
+    return print "DEBUG: $version\n";
+  }
+}
+
+1;
+