Subversion Repositories DevTools

Rev

Rev 4728 | Rev 4814 | Go to most recent revision | Show entire file | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed

Rev 4728 Rev 4778
Line 14... Line 14...
14
use warnings;
14
use warnings;
15
 
15
 
16
# Global variables
16
# Global variables
17
our $ScmPlatform;
17
our $ScmPlatform;
18
our $ScmNoToolsTest;
18
our $ScmNoToolsTest;
19
our $ScmToolsetProcessTests;
-
 
20
 
19
 
21
#   Misc variables
20
#   Misc variables
22
my $UseGcov = 0;
21
my $UseGcov = 0;
23
my $UseCppcheck = 0;
22
my $UseCppcheck = 0;
24
 
23
 
Line 152... Line 151...
152
    $::ScmToolsetVersion = "1.0.0";             # our version
151
    $::ScmToolsetVersion = "1.0.0";             # our version
153
    $::ScmToolsetGenerate = 0;                  # GEN generate optional
152
    $::ScmToolsetGenerate = 0;                  # GEN generate optional
154
    $::ScmToolsetCompilerPath = 1;              # Exports Compiler path to makefile via SCM_COMPILERPATH
153
    $::ScmToolsetCompilerPath = 1;              # Exports Compiler path to makefile via SCM_COMPILERPATH
155
    $::ScmToolsetProgDependancies = 0;          # handle Prog dependancies myself
154
    $::ScmToolsetProgDependancies = 0;          # handle Prog dependancies myself
156
    $::ScmToolsetSoName = 1;                    # Shared library supports SoName
155
    $::ScmToolsetSoName = 1;                    # Shared library supports SoName
157
    $ScmToolsetProcessTests = 0;                # Unit Tests require Pre/Post processing - set later
-
 
158
 
156
 
159
#.. Standard.rul requirements
157
#.. Standard.rul requirements
160
#
158
#
161
    $::s = "asm";
159
    $::s = "asm";
162
    $::o = "o";
160
    $::o = "o";
Line 489... Line 487...
489
    $file = StripExt( $obj );                   # Metric working file
487
    $file = StripExt( $obj );                   # Metric working file
490
    ToolsetGenerate( "\$(OBJDIR)/$file.met" );
488
    ToolsetGenerate( "\$(OBJDIR)/$file.met" );
491
 
489
 
492
    if ( $UseGcov )
490
    if ( $UseGcov )
493
    {
491
    {
494
        $ScmToolsetProcessTests = 1;
-
 
495
        ToolsetGenerate( '$(OBJDIR)/' . $file . '.gcno' );
492
        ToolsetGenerate( '$(OBJDIR)/' . $file . '.gcno' );
496
        ToolsetGenerate( '$(OBJDIR)/' . $file . '.gcda' );
493
        ToolsetGenerate( '$(OBJDIR)/' . $file . '.gcda' );
497
    }
494
    }
498
}
495
}
499
 
496
 
Line 542... Line 539...
542
    $file = StripExt( $obj );                   # Metric working file
539
    $file = StripExt( $obj );                   # Metric working file
543
    ToolsetGenerate( "\$(OBJDIR)/$file.met" );
540
    ToolsetGenerate( "\$(OBJDIR)/$file.met" );
544
 
541
 
545
    if ( $UseGcov )
542
    if ( $UseGcov )
546
    {
543
    {
547
        $ScmToolsetProcessTests = 1;
-
 
548
        ToolsetGenerate( '$(OBJDIR)/' . $file . '.gcno' );
544
        ToolsetGenerate( '$(OBJDIR)/' . $file . '.gcno' );
549
        ToolsetGenerate( '$(OBJDIR)/' . $file . '.gcda' );
545
        ToolsetGenerate( '$(OBJDIR)/' . $file . '.gcda' );
550
    }
546
    }
551
}
547
}
552
 
548
 
Line 946... Line 942...
946
    PackageProgAddFiles ( $name, $full );
942
    PackageProgAddFiles ( $name, $full );
947
    PackageProgAddFiles ( $name, $dbg );
943
    PackageProgAddFiles ( $name, $dbg );
948
 
944
 
949
}
945
}
950
 
946
 
-
 
947
  #-------------------------------------------------------------------------------
-
 
948
# Function        : ToolsetPostprocess 
-
 
949
#
-
 
950
# Description     : Last chance by the toolset to perform processing
-
 
951
#                   All Directives have been processed
-
 
952
#
-
 
953
#                   If automated unit test are being used,
-
 
954
#                   then we need to post process the results
-
 
955
#
-
 
956
# Inputs          : None
-
 
957
#
-
 
958
# Returns         : 
-
 
959
#
-
 
960
sub ToolsetPostprocess
-
 
961
{
-
 
962
    ToolsetPreprocessTests();
-
 
963
    ToolsetPostprocessTests();
-
 
964
    ToolsetCollateTestResults();
-
 
965
}
951
 
966
 
952
###############################################################################
967
###############################################################################
953
# Function        : ToolsetPreprocessTests
968
# Function        : ToolsetPreprocessTests
954
#
969
#
955
# Description     : 
970
# Description     : 
Line 963... Line 978...
963
sub ToolsetPreprocessTests
978
sub ToolsetPreprocessTests
964
{
979
{
965
    my ($io) = ToolsetPrinter::New();
980
    my ($io) = ToolsetPrinter::New();
966
    if ( $UseGcov && scalar(keys %::OBJSOURCE) > 0 )
981
    if ( $UseGcov && scalar(keys %::OBJSOURCE) > 0 )
967
    {
982
    {
968
        #   Force The Pre/Post/Collate rules to be processed
-
 
969
        $ScmToolsetProcessTests = 1;
983
        my $ruleName = 'preprocess_gcov_data';
970
 
-
 
971
        my $finaldir='$(LOCALDIR)/lcov/$(GBE_PLATFORM)$(GBE_TYPE)';
984
        my $finaldir='$(LOCALDIR)/lcov/$(GBE_PLATFORM)$(GBE_TYPE)';
972
        my $final=$finaldir . '/lcov-final.info';
985
        my $final=$finaldir . '/lcov-final.info';
973
        
986
        
974
        ToolsetGenerate( '$(OBJDIR)/lcov-baseline.info' );
987
        ToolsetGenerate( '$(OBJDIR)/lcov-baseline.info' );
-
 
988
        ToolsetAddUnitTestPreProcess($ruleName);
975
        $io->PrtLn('.PHONY: preprocess_tests' );
989
        $io->PrtLn('.PHONY: ' . $ruleName );
976
        $io->PrtLn('preprocess_tests:' );
990
        $io->PrtLn($ruleName . ':' );
977
 
991
 
978
        my $key;
992
        my $key;
979
        my $value;
993
        my $value;
980
        while(($key, $value) = each(%::OBJSOURCE))
994
        while(($key, $value) = each(%::OBJSOURCE))
981
        {
995
        {
Line 986... Line 1000...
986
                      . ' --rc lcov_branch_coverage=1'
1000
                      . ' --rc lcov_branch_coverage=1'
987
                      . ' --capture'
1001
                      . ' --capture'
988
                      . ' --initial'
1002
                      . ' --initial'
989
                      . ' --base-directory ' . $::Cwd
1003
                      . ' --base-directory ' . $::Cwd
990
                      . ' --directory $(OBJDIR)'
1004
                      . ' --directory $(OBJDIR)'
991
                      . ' --output-file $(OBJDIR)/lcov-baseline.info' ); 
1005
                      . ' --output-file $(OBJDIR)/lcov-baseline.info' );
-
 
1006
        $io->Newline();
992
    }
1007
    }
993
}
1008
}
994
 
1009
 
995
 
1010
 
996
###############################################################################
1011
###############################################################################
Line 1007... Line 1022...
1007
sub ToolsetPostprocessTests
1022
sub ToolsetPostprocessTests
1008
{
1023
{
1009
    my ($io) = ToolsetPrinter::New();
1024
    my ($io) = ToolsetPrinter::New();
1010
    if ( $UseGcov && scalar(keys %::OBJSOURCE) > 0 )
1025
    if ( $UseGcov && scalar(keys %::OBJSOURCE) > 0 )
1011
    {
1026
    {
-
 
1027
        my $ruleName = 'postprocess_gcov_data';
1012
        my $finaldir='$(LOCALDIR)/lcov/$(GBE_PLATFORM)$(GBE_TYPE)';
1028
        my $finaldir='$(LOCALDIR)/lcov/$(GBE_PLATFORM)$(GBE_TYPE)';
1013
        my $final=$finaldir . '/lcov-final.info';
1029
        my $final=$finaldir . '/lcov-final.info';
1014
        
1030
        
1015
        ToolsetGenerate( '$(OBJDIR)/lcov-capture.info' );
1031
        ToolsetGenerate( '$(OBJDIR)/lcov-capture.info' );
1016
        ToolsetGenerate( $final );
1032
        ToolsetGenerate( $final );
-
 
1033
        ToolsetAddUnitTestPostProcess($ruleName);
1017
        
1034
 
1018
        $io->PrtLn('.PHONY: postprocess_tests' );
1035
        $io->PrtLn('.PHONY: ' . $ruleName );
1019
        $io->PrtLn('postprocess_tests:' );
1036
        $io->PrtLn($ruleName . ':' );
1020
        $io->PrtLn("\t" . '$(eval GCDA_COUNT := $(shell find $(OBJDIR) -name "*.gcda"))');
1037
        $io->PrtLn("\t" . '$(eval GCDA_COUNT := $(shell find $(OBJDIR) -name "*.gcda"))');
1021
        
1038
        
1022
        $io->PrtLn  ("\t" . '$(XX_PRE)$(mkdir) -p ' . $finaldir);
1039
        $io->PrtLn  ("\t" . '$(XX_PRE)$(mkdir) -p ' . $finaldir);
1023
        $io->PrtPart("\t" . '$(XX_PRE)if [ "$(GCDA_COUNT)" = "" ]; then');
1040
        $io->PrtPart("\t" . '$(XX_PRE)if [ "$(GCDA_COUNT)" = "" ]; then');
1024
        $io->PrtPart("\t\t" . 'if [ ! -e ' . $final . " ]; then");
1041
        $io->PrtPart("\t\t" . 'if [ ! -e ' . $final . " ]; then");
Line 1058... Line 1075...
1058
                          . ';'); 
1075
                          . ';'); 
1059
        $io->PrtPart("\t\t\t" . '$(rm) -f ' . $final . ';');
1076
        $io->PrtPart("\t\t\t" . '$(rm) -f ' . $final . ';');
1060
        $io->PrtPart("\t\t\t" . '$(mv) $(OBJDIR)/lcov-merge.info ' . $final . ';');
1077
        $io->PrtPart("\t\t\t" . '$(mv) $(OBJDIR)/lcov-merge.info ' . $final . ';');
1061
        $io->PrtPart("\t\t" . 'fi' . ';');
1078
        $io->PrtPart("\t\t" . 'fi' . ';');
1062
        $io->PrtLn  ("\t" . 'fi');
1079
        $io->PrtLn  ("\t" . 'fi');
-
 
1080
        $io->Newline();
1063
    }
1081
    }
1064
}
1082
}
1065
 
1083
 
1066
 
1084
 
1067
###############################################################################
1085
###############################################################################
Line 1079... Line 1097...
1079
sub ToolsetCollateTestResults
1097
sub ToolsetCollateTestResults
1080
{
1098
{
1081
    my ($io) = ToolsetPrinter::New();
1099
    my ($io) = ToolsetPrinter::New();
1082
    if ( $UseGcov && scalar(keys %::OBJSOURCE) > 0 )
1100
    if ( $UseGcov && scalar(keys %::OBJSOURCE) > 0 )
1083
    {
1101
    {
-
 
1102
        my $ruleName = 'collate_gcov_results';
1084
        my $finaldir='$(LOCALDIR)/lcov/$(GBE_PLATFORM)$(GBE_TYPE)';
1103
        my $finaldir='$(LOCALDIR)/lcov/$(GBE_PLATFORM)$(GBE_TYPE)';
1085
        my $final=$finaldir . '/lcov-final.info';
1104
        my $final=$finaldir . '/lcov-final.info';
-
 
1105
 
-
 
1106
        ToolsetAddUnitTestCollateProcess($ruleName);
1086
        
1107
        
1087
        my $reportdir='$(PKGDIR)/lcov/$(GBE_PLATFORM)$(GBE_TYPE)';
1108
        my $reportdir='$(PKGDIR)/lcov/$(GBE_PLATFORM)$(GBE_TYPE)';
1088
        my $reportindex=$reportdir . '/index.html';
1109
        my $reportindex=$reportdir . '/index.html';
1089
        
1110
        
1090
        $io->PrtLn('.PHONY: collate_test_results' );
1111
        $io->PrtLn('.PHONY: ' . $ruleName );
1091
        $io->PrtLn('collate_test_results: ' . $reportindex);
1112
        $io->PrtLn($ruleName . ': ' . $reportindex);
1092
        $io->Newline();
1113
        $io->Newline();
1093
        $io->PrtLn($reportindex . ': ' . $final);
1114
        $io->PrtLn($reportindex . ': ' . $final);
1094
        $io->PrtLn("\t" . 'genhtml'
1115
        $io->PrtLn("\t" . 'genhtml'
1095
                      . ' --frames'
1116
                      . ' --frames'
1096
                      . ' --show-details'
1117
                      . ' --show-details'
Line 1098... Line 1119...
1098
                      . ' --branch-coverage'
1119
                      . ' --branch-coverage'
1099
                      . ' --output-directory ' . $reportdir
1120
                      . ' --output-directory ' . $reportdir
1100
                      . ' --legend'
1121
                      . ' --legend'
1101
                      . ' --demangle-cpp'
1122
                      . ' --demangle-cpp'
1102
                      . ' ' . $final);
1123
                      . ' ' . $final);
-
 
1124
        $io->Newline();
1103
    }
1125
    }
1104
}
1126
}
1105
 
1127
 
1106
 
1128
 
1107
###############################################################################
1129
###############################################################################