srcanamdw/appdep/src/appdep_otherfunc.cpp
author noe\swadi
Sat, 09 Jan 2010 10:04:12 +0530
changeset 0 509e4801c378
permissions -rw-r--r--
1. Copyrights changed to EPL 2. Feature updates mentioned in release notes.
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
0
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
     1
/*
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
     2
* Copyright (c) 2007 Nokia Corporation and/or its subsidiary(-ies). 
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
     3
* All rights reserved.
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
     4
* This component and the accompanying materials are made available
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
     5
* under the terms of "Eclipse Public License v1.0"
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
     6
* which accompanies this distribution, and is available
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
     7
* at the URL "http://www.eclipse.org/legal/epl-v10.html".
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
     8
*
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
     9
* Initial Contributors:
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
    10
* Nokia Corporation - initial contribution.
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
    11
*
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
    12
* Contributors:
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
    13
*
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
    14
* Description:  Other non-categorized AppDep functionality 
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
    15
*
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
    16
*/
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
    17
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
    18
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
    19
#include "appdep.hpp"
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
    20
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
    21
// ----------------------------------------------------------------------------------------------------------
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
    22
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
    23
void ParseCommandLineParameters(int argc, char* argv[])
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
    24
{   
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
    25
	// loop through the command line parameters and check their usage
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
    26
	int i=1;
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
    27
	while (i<argc)
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
    28
	{
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
    29
		if (StringICmp("-?", argv[i])==0 ||
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
    30
		    StringICmp("-h", argv[i])==0 ||
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
    31
		    StringICmp("--help", argv[i])==0)
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
    32
		{
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
    33
			ShowCommandLineOptionsAndExit();
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
    34
		}
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
    35
		
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
    36
		else if (StringICmp("GCC", argv[i])==0)
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
    37
		{
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
    38
			_cl_use_gcc = true;
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
    39
		}
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
    40
		
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
    41
		else if (StringICmp("GCCE", argv[i])==0)
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
    42
		{
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
    43
			_cl_use_gcce = true;
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
    44
		}
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
    45
		
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
    46
		else if (StringICmp("RVCT", argv[i])==0)
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
    47
		{
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
    48
			_cl_use_rvct = true;
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
    49
		}
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
    50
	
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
    51
		else if (StringICmp("--refresh", argv[i])==0)
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
    52
		{
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
    53
			_cl_update_cache = true;
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
    54
		}
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
    55
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
    56
		else if (StringICmp("--clean", argv[i])==0)
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
    57
		{
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
    58
			_cl_generate_clean_cache = true;
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
    59
		}
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
    60
        		
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
    61
		else if (StringICmp("--uselibs", argv[i])==0)
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
    62
		{
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
    63
			_cl_use_libs = true;
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
    64
		}
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
    65
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
    66
		else if (StringICmp("--showordinals", argv[i])==0)
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
    67
		{
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
    68
			_cl_show_ordinals = true;
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
    69
		}
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
    70
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
    71
		else if (StringICmp("--useudeb", argv[i])==0)
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
    72
		{
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
    73
			_cl_use_udeb = true;
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
    74
		}
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
    75
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
    76
		else if (StringICmp("--debug", argv[i])==0)
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
    77
		{
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
    78
			_cl_print_debug = true;
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
    79
		}
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
    80
        		
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
    81
		else if (StringICmp("-tools", argv[i])==0)
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
    82
		{
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
    83
			if (i+1<argc) { _cl_toolsdir = argv[i+1]; i++; }
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
    84
		}
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
    85
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
    86
		else if (StringICmp("-cache", argv[i])==0)
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
    87
		{
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
    88
			if (i+1<argc) { _cl_cachedir = argv[i+1]; i++; }
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
    89
		}
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
    90
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
    91
		else if (StringICmp("-release", argv[i])==0)
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
    92
		{
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
    93
			if (i+1<argc) { _cl_releasedir = argv[i+1]; i++; }
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
    94
		}
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
    95
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
    96
		else if (StringICmp("-targets", argv[i])==0)
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
    97
		{
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
    98
			if (i+1<argc) { _cl_targets = argv[i+1]; i++; }
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
    99
		}
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   100
		
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   101
		else if (StringICmp("-cfilt", argv[i])==0)
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   102
		{
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   103
			if (i+1<argc) { _cl_cfiltloc = argv[i+1]; i++; }
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   104
		}
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   105
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   106
		else if (StringICmp("-out", argv[i])==0)
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   107
		{
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   108
			if (i+1<argc) { _cl_outputfile = argv[i+1]; i++; }
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   109
		}		
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   110
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   111
		else if (StringICmp("-config", argv[i])==0)
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   112
		{
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   113
			if (i+1<argc) { _cl_configfile = argv[i+1]; i++; }
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   114
		}		
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   115
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   116
		else if (StringICmp("-sisfiles", argv[i])==0)
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   117
		{
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   118
			if (i+1<argc) { _cl_sisfiles = argv[i+1]; i++; }
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   119
		}
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   120
		
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   121
		else if (StringICmp("-usestaticdepstxt", argv[i])==0)
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   122
		{
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   123
			if (i+1<argc) { _cl_usestaticdepstxt = argv[i+1]; i++; }
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   124
		}
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   125
		
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   126
		else if (StringICmp("-properties", argv[i])==0)
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   127
		{
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   128
			if (i+1<argc) { _cl_properties = argv[i+1]; i++; }
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   129
		}
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   130
		
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   131
		else if (StringICmp("-staticdeps", argv[i])==0)
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   132
		{
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   133
			if (i+1<argc) { _cl_staticdeps = argv[i+1]; i++; }
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   134
		}
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   135
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   136
		else if (StringICmp("-dependson", argv[i])==0)
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   137
		{
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   138
			if (i+1<argc) { _cl_dependson = argv[i+1]; i++; }
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   139
		}        		
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   140
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   141
		else if (StringICmp("-showfunctions", argv[i])==0)
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   142
		{
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   143
			if (i+1<argc) { _cl_showfunctions = argv[i+1]; i++; }
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   144
		} 		
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   145
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   146
		else if (StringICmp("-usesfunction", argv[i])==0)
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   147
		{
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   148
			if (i+1<argc) { _cl_usesfunction = argv[i+1]; i++; }
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   149
		} 
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   150
		
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   151
		// check if the parameter is illegal
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   152
        else
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   153
        {
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   154
            string param = argv[i];
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   155
            
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   156
            if (!param.empty() && param.at(0) == '-')
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   157
            {
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   158
        		cerr << "ERROR: Illegal argument: " << param << endl;
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   159
        		cerr << "Type appdep -? for help" << endl;
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   160
                exit(EXIT_INVALID_ARGUMENT);            
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   161
            }   
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   162
        }
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   163
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   164
		i++;
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   165
	}    
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   166
}
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   167
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   168
// ----------------------------------------------------------------------------------------------------------
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   169
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   170
void ShowCommandLineOptionsAndExit()
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   171
{
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   172
    cout << "AppDep v" << APPDEP_VERSION << " - " << APPDEP_DATE << "\n"
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   173
            "Copyright (c) " << APPDEP_COPYRIGHT_YEARS << " Nokia Corporation and/or its subsidiary(-ies). All rights reserved.\n"            
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   174
            "\n"
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   175
            "Usage: appdep GCC|GCCE|RVCT [parameters] [options] [commands]\n"
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   176
            "\n"
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   177
            "Where:\n"
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   178
            "  GCC                      Use Symbian GCC tool chain\n"
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   179
            "  GCCE                     Use CSL ARM tool chain\n"
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   180
            "  RVCT                     Use RVCT tool chain\n"
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   181
            "\n"
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   182
            "Parameters:\n"
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   183
            "  -targets A+B+C+...       Target types from release, one or more separated with + without spaces\n"
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   184
            "\n"
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   185
            "Required parameters when RVCT tool chain is used:\n"
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   186
            "  -cfilt FILE              Location FILE of cfilt/c++filt\n"
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   187
            "\n"
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   188
            "Options:\n"
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   189
            "  -tools DIRECTORY         DIRECTORY where the used compiler tool chain is installed\n"
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   190
            "  -release DIRECTORY       DIRECTORY where release has been installed\n"
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   191
            "  -cache DIRECTORY         DIRECTORY to store cache files\n"
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   192
            "  -out FILE                Prints results to FILE\n"
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   193
            "  --refresh                Updates the cache, use always after making changes to the release\n"
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   194
            "  --clean                  Always creates a clean cache\n"
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   195
            "  --uselibs                Always use LIBs instead of DSOs (not valid with GCC)\n"
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   196
            "  --showordinals           Show ordinals numbers in output when appropriate\n"
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   197
            "  --useudeb                Scan udeb folder for binaries instead of urel\n"
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   198
            "  -sisfiles FILE;FILE;...  Includes binaries from sis FILE under analysis\n"
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   199
            //"  -usestaticdepstxt FILE   Use platform generated StaticDependencies.txt instead of cache\n"
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   200
            //"  --debug                  Print debug messages where available\n"
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   201
            "\n"
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   202
            "Commands:\n"
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   203
            "  -properties FILE         Show properties of binary FILE\n"
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   204
            "  -staticdeps FILE         Print all static dependencies of component FILE\n"
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   205
            "  -dependson FILE          Print all components that depends on component FILE\n"
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   206
            "  -showfunctions FILE      Print all functions used by compoment FILE\n"
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   207
            "  -usesfunction NAME       Print all components that are using function NAME (NAME can be full\n"
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   208
            "                             function name or in format DLLNAME@ORDINALNUMBER)\n"
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   209
            "\n";
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   210
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   211
	exit(EXIT_NORMAL);
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   212
}
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   213
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   214
// ----------------------------------------------------------------------------------------------------------
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   215
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   216
void DoInitialChecksAndPreparations()
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   217
{
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   218
    // make sure the directory names have trailing directory markers
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   219
    MakeSureTrailingDirectoryMarkerExists(_cl_toolsdir);
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   220
    MakeSureTrailingDirectoryMarkerExists(_cl_cachedir);
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   221
    MakeSureTrailingDirectoryMarkerExists(_cl_releasedir);    
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   222
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   223
    // check that both --refresh and --clean are not defined
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   224
    if (_cl_update_cache && _cl_generate_clean_cache)
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   225
        {
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   226
    	cerr << "Do not specify both --refresh and --clean at the same time!" << endl;
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   227
    	cerr << "Type appdep -? for help" << endl;
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   228
    	exit(EXIT_WRONG_USAGE);
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   229
        }            
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   230
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   231
    // check if targets parameter has been given
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   232
    if (_cl_targets.empty())
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   233
    {
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   234
    	cerr << "-targets parameter not specified!" << endl;
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   235
    	cerr << "Type appdep -? for help" << endl;
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   236
    	exit(EXIT_NO_TARGETS);
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   237
    }
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   238
        
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   239
    // if releasedir param is not specified, assign it be the root of current drive
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   240
    if (_cl_releasedir.empty())
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   241
    {
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   242
        _cl_releasedir = DIR_SEPARATOR;
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   243
    }
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   244
   
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   245
    // append default cache location if otherwise the cache parameter is empty
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   246
    if (_cl_cachedir.empty())
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   247
    {
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   248
        _cl_cachedir = _cl_releasedir + DEFAULT_CACHE_DIR;
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   249
    }
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   250
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   251
	// check output file can be created
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   252
    if (!_cl_outputfile.empty())
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   253
    {
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   254
        _outputf.open(_cl_outputfile.c_str(), ios::trunc);
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   255
        if (!_outputf.is_open())
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   256
        {
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   257
            _outputf.close();
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   258
    		cerr << "ERROR: Cannot open " << _cl_outputfile << " for writing!" << endl;
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   259
    		cerr << "Please check that the directory exists and there are no write permission problems" << endl;
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   260
    		exit(EXIT_CANNOT_CREATE_OUTPUT_FILE);
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   261
        }            
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   262
    }    
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   263
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   264
    // set target mode
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   265
    if (_cl_use_udeb)
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   266
        _target_mode = "udeb";
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   267
    else
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   268
        _target_mode = "urel";
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   269
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   270
}
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   271
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   272
// ----------------------------------------------------------------------------------------------------------
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   273
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   274
void ParseTargets()
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   275
{
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   276
    // parse A+B+C+... to a vector
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   277
    int last_found_plus_pos = -1;
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   278
    for (unsigned int i=0; i<_cl_targets.length(); i++)
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   279
    {   
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   280
        // try to find '+' characters 
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   281
        string::size_type plus_pos = _cl_targets.find("+", i);
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   282
        
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   283
        target new_target;
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   284
        
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   285
        if (plus_pos == string::npos)
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   286
        {
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   287
            // could not find the plus character, append last part of the list
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   288
            string tmp = _cl_targets.substr(last_found_plus_pos+1, _cl_targets.length()-last_found_plus_pos-1);
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   289
            new_target.name = LowerCase(tmp);   
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   290
            _targets.push_back(new_target);
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   291
            break;
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   292
        }
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   293
        else
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   294
        {
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   295
            // found a plus character, append to the list, but needs to check if there are more
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   296
            string tmp = _cl_targets.substr(last_found_plus_pos+1, plus_pos-last_found_plus_pos-1);
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   297
            new_target.name = LowerCase(tmp);
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   298
            
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   299
            if (new_target.name.length() > 0)
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   300
                _targets.push_back(new_target);
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   301
            
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   302
            last_found_plus_pos = plus_pos;
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   303
            i = last_found_plus_pos;
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   304
        }    
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   305
    }        
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   306
    
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   307
    // set more values of targets vector
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   308
    for (unsigned int i=0; i<_targets.size(); i++)
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   309
    {  
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   310
        // set path where release the release can be found, eg z:\epoc32\release\armv5\ .
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   311
        _targets.at(i).release_dir = _cl_releasedir + EPOC32_RELEASE + _targets.at(i).name + DIR_SEPARATOR;
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   312
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   313
        // set path where the import libraries of the release can be found, eg z:\epoc32\release\armv5\lib\ .
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   314
        string lib_dir;
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   315
        if (_cl_use_gcce || _cl_use_rvct)
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   316
            lib_dir = "lib"; // lib dir used in Symbian OS 9.x    
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   317
        else
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   318
            lib_dir = _target_mode;
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   319
        
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   320
        _targets.at(i).release_lib_dir = _targets.at(i).release_dir + lib_dir + DIR_SEPARATOR;
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   321
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   322
        // set path where the binaries of the release can be found, eg z:\epoc32\release\armv5\urel\ .
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   323
        _targets.at(i).release_bin_dir = _targets.at(i).release_dir + _target_mode + DIR_SEPARATOR;
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   324
        
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   325
        // set location of the cache files of this target, eg z:\caches\armv5\urel\xxx.txt 
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   326
        _targets.at(i).cache_dir =  _cl_cachedir + _targets.at(i).name + DIR_SEPARATOR + _target_mode + DIR_SEPARATOR;      
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   327
        _targets.at(i).st_cache_path = _targets.at(i).cache_dir + CACHE_ST_FILENAME;
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   328
        _targets.at(i).dep_cache_path = _targets.at(i).cache_dir + CACHE_DEP_FILENAME;
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   329
     
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   330
        // check if those cache files exists
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   331
        _targets.at(i).cache_files_valid = FileExists(_targets.at(i).st_cache_path) && FileExists(_targets.at(i).dep_cache_path);
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   332
    }            
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   333
}
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   334
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   335
// ----------------------------------------------------------------------------------------------------------
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   336
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   337
void DoCacheGenerationChecksAndPreparations()
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   338
{
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   339
	if (!_cl_use_gcc && !_cl_use_gcce && !_cl_use_rvct)     
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   340
	{	
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   341
		cerr << "ERROR: No tool chain defined!" << endl;
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   342
		cerr << "Type appdep -? for help" << endl;
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   343
        exit(EXIT_WRONG_USAGE);
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   344
	}        
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   345
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   346
	if (_cl_use_rvct && _cl_cfiltloc.empty())     
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   347
	{	
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   348
		cerr << "ERROR: Specify -cfilt when RVCT is defined!" << endl;
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   349
		cerr << "Type appdep -? for help" << endl;
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   350
        exit(EXIT_WRONG_USAGE);
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   351
	}  
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   352
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   353
	if ( (_cl_use_gcc && (_cl_use_gcce || _cl_use_rvct)) || (_cl_use_gcce && (_cl_use_gcc || _cl_use_rvct)) ||
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   354
         (_cl_use_rvct && (_cl_use_gcc || _cl_use_gcce)) )   
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   355
	{	
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   356
		cerr << "ERROR: Specify only one tool chain!" << endl;
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   357
		cerr << "Type appdep -? for help" << endl;
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   358
        exit(EXIT_WRONG_USAGE);
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   359
	}     	    
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   360
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   361
	// make sure the vectors are empty when generating clean cache
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   362
	if (_cl_generate_clean_cache)
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   363
    {
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   364
        for (unsigned int i=0; i<_targets.size(); i++) // loop each target
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   365
        {
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   366
            _targets.at(i).import_libraries.clear();
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   367
            _targets.at(i).binaries.clear();    
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   368
        }
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   369
    }
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   370
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   371
    // if tools parameter is empty, try get it from path, otherwise check given parameter
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   372
    if (_cl_toolsdir.empty())
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   373
    {
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   374
        GetToolsPathFromEnvironmentVariable();
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   375
    }
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   376
    else
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   377
    {
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   378
        // check the given tools directory parameter is valid
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   379
        if (_cl_use_gcc)
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   380
        {
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   381
            _gcc_nm_location = _cl_toolsdir + GCC_NM_EXE;
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   382
    
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   383
        	if (!FileExists(_gcc_nm_location))
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   384
        	{
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   385
        		cerr << "ERROR: Unable to find " + _gcc_nm_location << ", check -tools parameter" << endl;
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   386
        		cerr << "Tip: GCC is typically installed to \\epoc32\\gcc\\bin directory" << endl;
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   387
        		exit(EXIT_TOOLCHAIN_NOT_FOUND);
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   388
        	}        
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   389
    
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   390
            // extra quotes needed to prevent white space problems while executing the tool
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   391
            InsertQuotesToFilePath(_gcc_nm_location);
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   392
        }
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   393
    
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   394
        else if (_cl_use_gcce)
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   395
        {
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   396
            _gcce_nm_location = _cl_toolsdir + GCCE_NM_EXE;
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   397
            _gcce_readelf_location = _cl_toolsdir + GCCE_READELF_EXE;
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   398
            _gcce_cfilt_location = _cl_toolsdir + GCCE_CFILT_EXE;
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   399
    
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   400
        	if (!FileExists(_gcce_nm_location))
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   401
        	{
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   402
        		cerr << "ERROR: Unable to find " + _gcce_nm_location << ", check -tools param" << endl;
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   403
        		cerr << "Tip: GCCE is typically installed to C:\\Program Files\\CSL Arm Toolchain\\bin" << endl;
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   404
        		exit(EXIT_TOOLCHAIN_NOT_FOUND);
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   405
        	} 
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   406
    
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   407
        	if (!FileExists(_gcce_readelf_location))
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   408
        	{
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   409
        		cerr << "ERROR: Unable to find " + _gcce_readelf_location << ", check -tools param" << endl;
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   410
        		cerr << "Tip: GCCE is typically installed to C:\\Program Files\\CSL Arm Toolchain\\bin" << endl;
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   411
        		exit(EXIT_TOOLCHAIN_NOT_FOUND);
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   412
        	} 
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   413
    
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   414
        	if (!FileExists(_gcce_cfilt_location))
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   415
        	{
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   416
        		cerr << "ERROR: Unable to find " + _gcce_cfilt_location << ", check -tools param" << endl;
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   417
        		cerr << "Tip: GCCE is typically installed to C:\\Program Files\\CSL Arm Toolchain\\bin" << endl;
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   418
        		exit(EXIT_TOOLCHAIN_NOT_FOUND);
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   419
        	} 
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   420
    
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   421
            // extra quotes needed to prevent white space problems while executing the tool
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   422
            InsertQuotesToFilePath(_gcce_nm_location);
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   423
            InsertQuotesToFilePath(_gcce_readelf_location);
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   424
            InsertQuotesToFilePath(_gcce_cfilt_location);
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   425
            
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   426
        }
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   427
    
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   428
        else if (_cl_use_rvct)
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   429
        {
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   430
            _rvct_armar_location = _cl_toolsdir + RVCT_ARMAR_EXE;
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   431
            _rvct_fromelf_location = _cl_toolsdir + RVCT_FROMELF_EXE;
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   432
    
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   433
        	if (!FileExists(_rvct_armar_location))
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   434
        	{
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   435
        		cerr << "ERROR: Unable to find " + _rvct_armar_location << ", check -tools param" << endl;
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   436
        		cerr << "Tip: Check your environment variables to see the directory where RVCT has been installed" << endl;
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   437
        		exit(EXIT_TOOLCHAIN_NOT_FOUND);
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   438
        	} 
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   439
    
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   440
        	if (!FileExists(_rvct_fromelf_location))
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   441
        	{
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   442
        		cerr << "ERROR: Unable to find " + _rvct_fromelf_location << ", check -tools param" << endl;
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   443
        		cerr << "Tip: Check your environment variables to see the directory where RVCT has been installed" << endl;
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   444
        		exit(EXIT_TOOLCHAIN_NOT_FOUND);
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   445
        	} 
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   446
                    
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   447
            // extra quotes needed to prevent white space problems while executing the tool
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   448
            InsertQuotesToFilePath(_rvct_armar_location);
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   449
            InsertQuotesToFilePath(_rvct_fromelf_location);
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   450
        }            
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   451
    } // else of if (!cl_toolsdir)
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   452
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   453
        
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   454
    // check path of RVCT's cfilt is correct
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   455
    if (_cl_use_rvct)
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   456
    {
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   457
        _rvct_cfilt_location = _cl_cfiltloc;
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   458
        
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   459
    	if (!FileExists(_rvct_cfilt_location))
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   460
    	{
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   461
    		cerr << "ERROR: Unable to find " + _rvct_cfilt_location << ", check -cfilt param" << endl;
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   462
    		cerr << "Tip: Working cfilt.exe can be found from the same directory where appdep has been installed" << endl;
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   463
    		exit(EXIT_CFILT_NOT_FOUND);
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   464
    	}    
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   465
        
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   466
        // extra quotes needed to prevent white space problems while executing the tool
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   467
        InsertQuotesToFilePath(_rvct_cfilt_location);
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   468
    }
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   469
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   470
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   471
    // check Petran can be found
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   472
    SetAndCheckPetranPath();
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   473
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   474
    // loop all targets
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   475
    for (unsigned int i=0; i<_targets.size(); i++)
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   476
    {
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   477
        // check directories for given targets are valid
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   478
        if (!DirectoryExists(_targets.at(i).release_dir))
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   479
        {
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   480
    		cerr << "ERROR: Directory " << _targets.at(i).release_dir << " not found!" << endl;
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   481
    		cerr << "Please check that -targets parameter is valid and you have a full release environment" << endl;
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   482
    		exit(EXIT_TARGETDIR_NOT_FOUND);            
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   483
        }
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   484
        else
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   485
        {
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   486
            //cerr <<  "NOTE: " << targets.at(i) << " is a valid target in your release" << endl;  
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   487
        }
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   488
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   489
        // make sure that the cache directory exists
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   490
        MkDirAll(_targets.at(i).cache_dir);    
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   491
    }
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   492
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   493
	// check that it is possible to create the temporary file under the cache directory
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   494
    _tempfile_location = _cl_cachedir + TEMP_FILENAME;
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   495
    ofstream tempf(_tempfile_location.c_str(), ios::trunc);
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   496
    if (!tempf.is_open())
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   497
    {
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   498
        tempf.close();
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   499
		cerr << "ERROR: Cannot open " << _tempfile_location << " for writing!" << endl;
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   500
		cerr << "Please check that the directory exists and there are no write permission problems" << endl;
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   501
		exit(EXIT_CANNOT_WRITE_TO_TEMP_FILE);
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   502
    }
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   503
    else
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   504
        tempf.close(); 
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   505
        
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   506
}
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   507
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   508
// ----------------------------------------------------------------------------------------------------------
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   509
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   510
void GetToolsPathFromEnvironmentVariable()
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   511
{
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   512
   #ifdef WIN32
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   513
    // get path environment variable
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   514
    const char* env_path = getenv("PATH");
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   515
    
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   516
    if (env_path != NULL)
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   517
    {
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   518
        string env_path_str = env_path;
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   519
        
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   520
        string::size_type previous_delimpos = 0;
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   521
        bool match_found(false);
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   522
        string test_path;
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   523
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   524
        for (unsigned int i=0; i<env_path_str.length(); i++)
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   525
        {
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   526
            // directories in %PATH% are separated with ';'-char
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   527
            string::size_type delimpos = env_path_str.find(";", i);
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   528
            
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   529
            if (delimpos != string::npos)
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   530
            {
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   531
                // get path
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   532
                test_path = env_path_str.substr(previous_delimpos, delimpos-previous_delimpos);
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   533
               
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   534
                MakeSureTrailingDirectoryMarkerExists(test_path);
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   535
                
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   536
                // remember found position
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   537
                previous_delimpos = delimpos + 1;
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   538
                i = delimpos;
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   539
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   540
                // do check if path is correct
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   541
                if (_cl_use_gcc)
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   542
                {
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   543
                    _gcc_nm_location = test_path + GCC_NM_EXE;
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   544
           
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   545
                	if (FileExists(_gcc_nm_location))
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   546
                	{
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   547
                		match_found = true;
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   548
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   549
                        // extra quotes needed to prevent white space problems while executing the tool
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   550
                        InsertQuotesToFilePath(_gcc_nm_location);
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   551
                	}        
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   552
                }
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   553
            
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   554
                else if (_cl_use_gcce)
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   555
                {
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   556
                    _gcce_nm_location = test_path + GCCE_NM_EXE;
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   557
                    _gcce_readelf_location = test_path + GCCE_READELF_EXE;
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   558
                    _gcce_cfilt_location = test_path + GCCE_CFILT_EXE;
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   559
            
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   560
                	if (FileExists(_gcce_nm_location) && FileExists(_gcce_readelf_location) && FileExists(_gcce_cfilt_location))
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   561
                	{
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   562
                		match_found = true;
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   563
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   564
                        // extra quotes needed to prevent white space problems while executing the tool
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   565
                        InsertQuotesToFilePath(_gcce_nm_location);
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   566
                        InsertQuotesToFilePath(_gcce_readelf_location);
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   567
                        InsertQuotesToFilePath(_gcce_cfilt_location);
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   568
                	} 
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   569
                }
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   570
            
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   571
                else if (_cl_use_rvct)
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   572
                {
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   573
                    _rvct_armar_location = test_path + RVCT_ARMAR_EXE;
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   574
                    _rvct_fromelf_location = test_path + RVCT_FROMELF_EXE;
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   575
            
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   576
                	if (FileExists(_rvct_armar_location) && FileExists(_rvct_fromelf_location))
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   577
                	{
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   578
                		match_found = true;
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   579
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   580
                        // extra quotes needed to prevent white space problems while executing the tool
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   581
                        InsertQuotesToFilePath(_rvct_armar_location);
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   582
                        InsertQuotesToFilePath(_rvct_fromelf_location);
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   583
                	} 
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   584
                }   
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   585
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   586
            }          
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   587
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   588
            // first matching directory found, no need to loop anymore
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   589
            if (match_found)
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   590
            {
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   591
                _cl_toolsdir = test_path;
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   592
                cerr << "Tool chain found from %PATH% at " << test_path << endl;
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   593
                break;
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   594
            }                           
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   595
            
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   596
            if (i>5000)
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   597
                break;  // something went wrong..
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   598
        }
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   599
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   600
        if (!match_found)
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   601
        {
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   602
            cerr << "ERROR: Cannot find specified compiler toolset from PATH environment" << endl;
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   603
            cerr << "Fix PATH environment variable or specify -tools parameter" << endl;
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   604
        	exit(EXIT_TOOLCHAIN_NOT_FOUND_FROM_PATH);                      
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   605
        }
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   606
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   607
    }
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   608
    else
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   609
    {
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   610
        cerr << "ERROR: PATH environment variable not available, please specify -tools parameter" << endl;
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   611
    	exit(EXIT_PATH_VARIABLE_NOT_FOUND);                
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   612
    }
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   613
  
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   614
   #else
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   615
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   616
    cerr << "ERROR: Optional -tools parameter is only supported in Windows environment " << endl;
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   617
	exit(EXIT_ONLY_SUPPORTED_IN_WIN32);                
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   618
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   619
   #endif
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   620
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   621
}
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   622
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   623
// ----------------------------------------------------------------------------------------------------------
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   624
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   625
void FindImportLibrariesAndBinariesFromReleases()
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   626
{
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   627
    // check if analysing .dso or .lib files
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   628
    string lib_filter;
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   629
    if (_cl_use_gcc || _cl_use_libs)  // for GCC use always .lib files
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   630
        lib_filter = "*.lib";
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   631
    else
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   632
        lib_filter = "*.dso";
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   633
            
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   634
    for (unsigned int i=0; i<_targets.size(); i++) // loop each target
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   635
    {
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   636
        // get import libraries
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   637
        GetFileNamesFromDirectory(_targets.at(i).release_lib_dir, lib_filter, _targets.at(i).lib_files);
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   638
        _max_progress += _targets.at(i).lib_files.size();
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   639
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   640
        // get binaries
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   641
        GetFileNamesFromDirectory(_targets.at(i).release_bin_dir, "*.app", _targets.at(i).bin_files);
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   642
        GetFileNamesFromDirectory(_targets.at(i).release_bin_dir, "*.exe", _targets.at(i).bin_files);
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   643
        GetFileNamesFromDirectory(_targets.at(i).release_bin_dir, "*.dll", _targets.at(i).bin_files);
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   644
        GetFileNamesFromDirectory(_targets.at(i).release_bin_dir, "*.prt", _targets.at(i).bin_files);
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   645
        GetFileNamesFromDirectory(_targets.at(i).release_bin_dir, "*.?sy", _targets.at(i).bin_files);
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   646
        GetFileNamesFromDirectory(_targets.at(i).release_bin_dir, "*.fep", _targets.at(i).bin_files);
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   647
        GetFileNamesFromDirectory(_targets.at(i).release_bin_dir, "*.agt", _targets.at(i).bin_files);
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   648
        GetFileNamesFromDirectory(_targets.at(i).release_bin_dir, "*.fxt", _targets.at(i).bin_files);
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   649
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   650
        // increase the value of total number of files
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   651
        _max_progress += _targets.at(i).bin_files.size();
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   652
    }
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   653
}
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   654
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   655
// ----------------------------------------------------------------------------------------------------------
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   656
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   657
void GetFileNamesFromDirectory(const string& directory, const string& filter, vector<string>& resultset)
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   658
{  
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   659
    // get list of files from the directory by executing OS specific dir/ls command
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   660
    string dir_command = DIR_COMMAND;
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   661
    string cmd = dir_command + " \"" + directory + "\"" + filter + " " + CERR_TO_NULL;
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   662
        
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   663
    vector<string> tempVector;
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   664
    ExecuteCommand(cmd, tempVector);
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   665
    
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   666
    // loop through all returned files
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   667
    for (unsigned int i=0; i<tempVector.size(); i++)
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   668
    {
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   669
        // remove any leading and trailing white spaces
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   670
        string file_entry = tempVector.at(i);
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   671
        TrimAll(file_entry);
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   672
        
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   673
        // filter out any unwanted files and append the file to the vector
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   674
        if (!file_entry.empty() && file_entry.find("{000a0000}")==string::npos && file_entry.find(".dll55l")==string::npos)
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   675
        {
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   676
            // strip out any possible directory paths
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   677
            string::size_type sep_pos = file_entry.find_last_of(DIR_SEPARATOR);
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   678
            if (sep_pos != string::npos)
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   679
                file_entry = file_entry.substr(sep_pos+1, file_entry.length()-sep_pos-1); 
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   680
                        
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   681
            // append entry
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   682
            resultset.push_back(file_entry);
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   683
        }
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   684
    }
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   685
}
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   686
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   687
// ----------------------------------------------------------------------------------------------------------
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   688
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   689
void SetAndCheckPetranPath()
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   690
{
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   691
	if(_cl_use_gcc)
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   692
	{
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   693
    	_petran_location = _cl_releasedir + PETRAN_LOCATION;
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   694
	}
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   695
	else
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   696
	{
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   697
    	_petran_location = _cl_releasedir + ELFTRAN_LOCATION;
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   698
	}
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   699
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   700
 	if (!FileExists(_petran_location))
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   701
	{
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   702
		cerr << "ERROR: Unable to find " + _petran_location << ", check -release param" << endl;
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   703
		cerr << "Make sure you have a working development environment" << endl;
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   704
		exit(EXIT_PETRAN_NOT_FOUND);
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   705
	}
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   706
}
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   707
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   708
// ----------------------------------------------------------------------------------------------------------