1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
|
#!/usr/bin/perl
use Config;
sub permute
{
my @defines = @_;
my @result = ('');
foreach $define (@defines)
{
push @result, map { length($_) == 0 ? $define : "$_,$define" } @result;
}
@result;
}
sub gcctoolset
{
my $gccversion = `gcc -dumpversion`;
chomp($gccversion);
return "gcc$gccversion";
}
$fast = (shift eq 'fast');
@toolsets = ($^O =~ /MSWin/) ? (bcc, cw, dmc, ic8, mingw34, mingw44, mingw45, msvc6, msvc7, msvc71, msvc8, msvc8_x64, msvc9, msvc9_x64, msvc10, msvc10_x64) : ($^O =~ /solaris/) ? (suncc) : (&gcctoolset());
@configurations = (debug, release);
@defines = (PUGIXML_NO_XPATH, PUGIXML_NO_EXCEPTIONS, PUGIXML_NO_STL, PUGIXML_WCHAR_MODE);
if ($fast)
{
@defines = (PUGIXML_WCHAR_MODE);
}
@definesets = permute(@defines);
print "### autotest begin " . scalar localtime() . "\n";
%results = ();
foreach $toolset (@toolsets)
{
foreach $configuration (@configurations)
{
foreach $defineset (@definesets)
{
if ($defineset !~ /NO_XPATH/ && $defineset =~ /NO_EXCEPTIONS/) { next; }
if ($defineset !~ /NO_XPATH/ && $defineset =~ /NO_STL/) { next; }
print STDERR "*** testing $toolset/$configuration ($defineset) ... ***\n";
# launch command
my $cmdline = "jam toolset=$toolset configuration=$configuration defines=$defineset";
print "### autotest launch $cmdline\n";
my $coverage = `$cmdline coverage`;
my $result = $? >> 8;
# print build output
print $coverage;
# parse coverage
my $coverage_pugixml = $1 if ($coverage =~ /pugixml\.cpp' executed:([^%]+)%/);
my $coverage_pugixpath = $1 if ($coverage =~ /pugixpath\.cpp' executed:([^%]+)%/);
# print build report
print "### autotest $Config{archname} $toolset $configuration [$defineset] result $result $coverage_pugixml $coverage_pugixpath\n";
}
last if ($fast);
}
}
print "### autotest end " . scalar localtime() . "\n";
|