apicompatanamdw/compatanalysercmd/libraryanalyser/src/la.cpp
author shrivatsa
Mon, 27 Sep 2010 14:51:17 +0530
changeset 12 a0eee409ff14
parent 0 638b9c697799
permissions -rw-r--r--
Updates to CompatibilityAnalyser - The Tool should now work with Symbian^4 - Some minor bug fixes related to Qt headers in the Symbian Platform
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
0
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
     1
/*
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
     2
* Copyright (c) 2007-2009 Nokia Corporation and/or its subsidiary(-ies). 
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
     3
* All rights reserved.
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
     4
* This component and the accompanying materials are made available
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
     5
* under the terms of "Eclipse Public License v1.0"
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
     6
* which accompanies this distribution, and is available
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
     7
* at the URL "http://www.eclipse.org/legal/epl-v10.html".
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
     8
*
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
     9
* Initial Contributors:
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
    10
* Nokia Corporation - initial contribution.
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
    11
*
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
    12
* Contributors:
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
    13
*
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
    14
* Description:  Main entry of LibraryAnalyser 
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
    15
*
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
    16
*/
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
    17
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
    18
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
    19
#include "la.hpp"
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
    20
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
    21
// init globals
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
    22
bool _cl_use_gcc = false;
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
    23
bool _cl_use_gcce = false;
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
    24
bool _cl_use_rvct = false;
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
    25
bool _cl_use_libs = false;
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
    26
bool _cl_print_debug = false;
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
    27
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
    28
string _cl_baselinelibdir = "";
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
    29
string _cl_currentlibdir = "";
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
    30
string _cl_baselineversion = "";
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
    31
string _cl_currentversion = "";
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
    32
string _cl_reportfile = "";
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
    33
string _cl_toolsdir = "";
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
    34
string _cl_tempdir = "";
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
    35
string _cl_cfiltloc = "";
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
    36
string _cl_set = "";
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
    37
string _cl_baselinedlldir = "";
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
    38
string _cl_currentdlldir = "";
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
    39
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
    40
string _gcc_nm_location = "";
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
    41
string _gcce_nm_location = "";
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
    42
string _gcce_readelf_location = "";
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
    43
string _gcce_cfilt_location = "";
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
    44
string _rvct_armar_location = "";
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
    45
string _rvct_fromelf_location = "";
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
    46
string _rvct_cfilt_location = "";
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
    47
string _petran_location = "";
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
    48
string _dumpsis_location = "";
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
    49
string _tempfile_location = "";
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
    50
string _lib_extension = "";
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
    51
string _toolchain_name = "";
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
    52
string _baselinedllfile = "";
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
    53
string _currentdllfile = "";
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
    54
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
    55
vector<string> _lib_files_baseline;
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
    56
vector<string> _lib_files_current;
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
    57
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
    58
vector<string> _lib_dirs_baseline;
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
    59
vector<string> _lib_dirs_current;
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
    60
vector<string> _dll_dirs_baseline;
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
    61
vector<string> _dll_dirs_current;
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
    62
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
    63
vector<dll_issue> _dll_issuelist;
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
    64
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
    65
ofstream _reportf; 
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
    66
struct tm* _timenow;
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
    67
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
    68
int _CRT_glob = 0; // globbing not supported
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
    69
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
    70
// ----------------------------------------------------------------------------------------------------------
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
    71
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
    72
int main(int argc, char* argv[])
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
    73
{
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
    74
    // parse command line arguments
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
    75
    ParseCommandLineParameters(argc, argv);
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
    76
    
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
    77
    // init the environment
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
    78
    DoInitialChecksAndPreparations();
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
    79
    
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
    80
    // get list of .lib / .dso files
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
    81
    GetListsOfImportLibraries();
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
    82
    
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
    83
    // filter import library lists based on -set parameter
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
    84
    FilterListsOfImportLibraries();
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
    85
    
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
    86
    // do more checks before starting the actual analysis
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
    87
    DoPreAnalysisChecks();
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
    88
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
    89
    GetDllDataFiles();
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
    90
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
    91
    // write header of the report
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
    92
    WriteReportHeader();
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
    93
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
    94
    // generate issue list and write it to the report
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
    95
    GenerateAndWriteIssueList();
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
    96
    
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
    97
    // write footer of the report
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
    98
    WriteReportFooter();
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
    99
    
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   100
    // do some final tasks before we can quit
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   101
    DoFinalTasks();
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   102
 
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   103
	return EXIT_NORMAL;
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   104
}
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   105
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   106
// ----------------------------------------------------------------------------------------------------------
638b9c697799 1. Licenses updated to EPL.
noe\swadi
parents:
diff changeset
   107