srcanamdw/appdep/src/appdep.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:  Main entry of Appdep 
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
// init globals
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
    22
bool _cl_use_gcc = false;
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
    23
bool _cl_use_gcce = false;
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
    24
bool _cl_use_rvct = false;
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
    25
bool _cl_generate_clean_cache = false;
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
    26
bool _cl_update_cache = false;
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
    27
bool _cl_use_libs = false;
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
    28
bool _cl_show_ordinals = false;
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
    29
bool _cl_use_udeb = false;
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
    30
bool _cl_print_debug = false;
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
    31
bool _some_cache_needs_update = false;
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
    32
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
    33
string _cl_toolsdir = "";
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
    34
string _cl_cachedir = "";
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
    35
string _cl_releasedir = "";
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
    36
string _cl_targets = "";
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
    37
string _cl_cfiltloc = "";
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
    38
string _cl_outputfile = "";
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
    39
string _cl_configfile = "";
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
    40
string _cl_sisfiles = "";
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
    41
string _cl_usestaticdepstxt = "";
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
    42
string _cl_properties = "";
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
    43
string _cl_staticdeps = "";
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
    44
string _cl_dependson = "";
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
    45
string _cl_showfunctions = "";
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
    46
string _cl_usesfunction = "";
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
    47
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
    48
string _gcc_nm_location = "";
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
    49
string _gcce_nm_location = "";
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
    50
string _gcce_readelf_location = "";
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
    51
string _gcce_cfilt_location = "";
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
    52
string _rvct_armar_location = "";
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
    53
string _rvct_fromelf_location = "";
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
    54
string _rvct_cfilt_location = "";
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
    55
string _petran_location = "";
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
    56
string _dumpsis_location = "";
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
    57
string _tempfile_location = "";
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
    58
string _target_mode = "";
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
    59
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
    60
vector<target> _targets;
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
    61
vector<binary_info> _all_binary_infos;
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
    62
vector<import_library_info> _all_import_library_infos;
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
    63
vector<import_library_info> _changed_import_libraries;
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
    64
vector<string> _sisfiles;
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
    65
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
    66
unsigned int _current_progress = 0;
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
    67
unsigned int _current_progress_percentage = 0;
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
    68
unsigned int _max_progress = 0;
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
    69
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
    70
ofstream _outputf;
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
    71
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
    72
int _CRT_glob = 0; // globbing not supported 
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
    73
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
int main(int argc, char* argv[])
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
    77
{
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
    78
    // parse command line arguments
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
    79
    ParseCommandLineParameters(argc, argv);
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
    80
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
    81
    // read from StaticDependencies.txt if in use
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
    82
    if (!_cl_usestaticdepstxt.empty())
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
    83
    {
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
    84
        GetDataFromStaticDependenciesTxt();
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
    85
    }
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
    86
    
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
    87
    // otherwise do normal cache operations
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
    88
    else
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
    89
    {
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
    90
        // first do some checks
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
    91
        DoInitialChecksAndPreparations();
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
    92
        ParseTargets();
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
    93
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
    94
        // checks for sis files if in use
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
    95
        if (!_cl_sisfiles.empty())
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
    96
            DoInitialChecksAndPreparationsForSisFiles(); 
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
    97
        
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
    98
        // try to read data from caches
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
    99
        if (!_cl_generate_clean_cache)
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   100
        {
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   101
            for (unsigned int i=0; i<_targets.size(); i++) // loop each target
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 (_targets.at(i).cache_files_valid)
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   104
                {
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   105
                    ReadDataFromSymbolTablesCache(_targets.at(i));
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   106
                    
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   107
                    if (_targets.at(i).cache_files_valid)    
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   108
                        ReadDataFromDependenciesCache(_targets.at(i));
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   109
                    else
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   110
                        _some_cache_needs_update = true;        
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   111
                }
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   112
                else
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   113
                {
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   114
                    _some_cache_needs_update = true;    
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   115
                }
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   116
            }         
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   117
        }
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   118
    }
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   119
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   120
    // check if cache needs generation or update
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   121
    if (_cl_generate_clean_cache || _cl_update_cache || _some_cache_needs_update)
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   122
    {    
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   123
        // before starting generating cache, we need more checks that user given params are correct
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   124
        DoCacheGenerationChecksAndPreparations();
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   125
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   126
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   127
        if (_cl_generate_clean_cache)
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   128
            cerr << "Generating cache files at " << _cl_cachedir << " ";
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   129
        else
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   130
            cerr << "Updating cache files at " << _cl_cachedir << " ";        
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   131
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   132
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   133
        // get lists of files from the directories
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   134
        FindImportLibrariesAndBinariesFromReleases();
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   135
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   136
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   137
        // init progress values    
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   138
        if (_max_progress == 0)
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   139
            _max_progress = 1;
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   140
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   141
        if (_cl_print_debug)
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   142
            cerr << endl;
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   143
        else
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   144
            ShowProgressInfo(_current_progress_percentage, _current_progress, _max_progress, true);
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   145
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   146
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   147
        // get import libaries of each target and then write that data to the caches
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   148
        for (unsigned int i=0; i<_targets.size(); i++) // loop each target
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   149
        {
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   150
            GetDataFromImportTables(_targets.at(i));
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   151
            
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   152
            // write data only if current file is not valid
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   153
            if (!_targets.at(i).cache_files_valid)
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   154
            {
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   155
                WriteDataToSymbolTableCacheFile(_targets.at(i));
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   156
            }
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   157
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   158
            // append all data to common vector
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   159
            for (unsigned int j=0; j<_targets.at(i).import_libraries.size(); j++)  // loop all binaries in one target
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   160
            {
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   161
               _all_import_library_infos.push_back(_targets.at(i).import_libraries.at(j));
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
            // clear the original vector to save RAM since it is not needed anymore
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   165
            _targets.at(i).import_libraries.clear();
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
        // get dependency data and write it to the cache files
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   169
        for (unsigned int i=0; i<_targets.size(); i++) // loop each target
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   170
        {
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   171
            GetDataFromBinaries(_targets.at(i));
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   172
            
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   173
            if (!_targets.at(i).cache_files_valid)  // only write cache if it needs updating
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   174
            {
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   175
                WriteDataToDependenciesCacheFile(_targets.at(i));    
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   176
            }
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   177
            
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   178
        }
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   179
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   180
        cerr << endl;
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   181
    }
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   182
    
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   183
    // if sis files in use and not done any previous operations, some things must be done
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   184
    else if (!_cl_sisfiles.empty()) 
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   185
    {
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   186
        // check Petran can be found
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   187
        SetAndCheckPetranPath();
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   188
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   189
        for (unsigned int i=0; i<_targets.size(); i++) // loop each target
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   190
        {
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   191
            // append all data to common vector
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   192
            for (unsigned int j=0; j<_targets.at(i).import_libraries.size(); j++)  // loop all import libraries in one target
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   193
            {
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   194
               // get a binary info data
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   195
               _all_import_library_infos.push_back(_targets.at(i).import_libraries.at(j));
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   196
            }
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   197
            
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   198
            // clear the original vector to save RAM since it is not needed anymore
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   199
            _targets.at(i).import_libraries.clear();
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   200
        }
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   201
    }    
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   202
    
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   203
    
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   204
    // include sis files to analysis if in use
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   205
    if (!_cl_sisfiles.empty())
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   206
        AnalyseSisFiles();
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   207
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   208
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   209
    // do the analysis
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   210
    if (_cl_properties.empty() && _cl_staticdeps.empty() && _cl_dependson.empty() && _cl_showfunctions.empty() && _cl_usesfunction.empty())
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   211
    {
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   212
        cerr << "Nothing to do." << endl;    
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   213
    }
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   214
	else
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   215
	{
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   216
        // copy binary_info vectors to a single one
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   217
        if (_cl_usestaticdepstxt.empty())
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   218
        {
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   219
            for (unsigned int i=0; i<_targets.size(); i++)  // loop all targets
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   220
            {
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   221
                for (unsigned int j=0; j<_targets.at(i).binaries.size(); j++)  // loop all binaries in one target
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   222
                {
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   223
                   // get a binary info data
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   224
                   _all_binary_infos.push_back(_targets.at(i).binaries.at(j));
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   225
                }
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   226
                
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   227
                // clear the original vector to save RAM
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   228
                _targets.at(i).binaries.clear();
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
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   232
        if (!_cl_properties.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
            // show properties of the binary file
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   235
            DisplayProperties(_cl_properties);
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   236
        } 
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   237
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   238
        if (!_cl_staticdeps.empty())
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   239
        {
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   240
            // determine all static dependencies of selected component  
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   241
            DisplayStaticDependencies(_cl_staticdeps);      
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   242
        }        
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   243
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   244
        if (!_cl_dependson.empty())
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   245
        {
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   246
            // list all components that depends on selected component
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   247
            DisplayDependents(_cl_dependson);  
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   248
        }  
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   249
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   250
        if (!_cl_showfunctions.empty())
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   251
        {
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   252
            // determine all functions that are included / supported in selected component
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   253
            DisplayFunctions(_cl_showfunctions);  
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   254
        }  
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   255
        
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   256
        if (!_cl_usesfunction.empty())
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   257
        {
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   258
            // list all components that are using selected function   
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   259
            DisplayUsesFunction(_cl_usesfunction);
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   260
        }
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
    // close output file
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   265
    if (_outputf.is_open())
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   266
    {   
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   267
        _outputf.close();
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   268
    }
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   269
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   270
    // delete the temporary file
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   271
    if (!_tempfile_location.empty())
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   272
        RemoveFile(_tempfile_location);
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   273
 
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   274
	return EXIT_NORMAL;
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   275
}
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   276
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   277
// ----------------------------------------------------------------------------------------------------------
509e4801c378 1. Copyrights changed to EPL
noe\swadi
parents:
diff changeset
   278