1
0
This repository has been archived on 2025-03-06. You can view files and clone it, but cannot push or open issues or pull requests.
on-restart-benchmarks/misc/genlcovmakefile.perl
Jip J. Dekker 3e72b0e857 Squashed 'software/gecode_on_record/' content from commit 37ed9bda4
git-subtree-dir: software/gecode_on_record
git-subtree-split: 37ed9bda495ea87e63217c19a374b5a93bb0078e
2021-06-16 14:03:52 +10:00

145 lines
3.6 KiB
Perl

#!/usr/bin/perl
#
# Main authors:
# Guido Tack <tack@gecode.org>
#
# Copyright:
# Guido Tack, 2008
#
# This file is part of Gecode, the generic constraint
# development environment:
# http://www.gecode.org
#
# Permission is hereby granted, free of charge, to any person obtaining
# a copy of this software and associated documentation files (the
# "Software"), to deal in the Software without restriction, including
# without limitation the rights to use, copy, modify, merge, publish,
# distribute, sublicense, and/or sell copies of the Software, and to
# permit persons to whom the Software is furnished to do so, subject to
# the following conditions:
#
# The above copyright notice and this permission notice shall be
# included in all copies or substantial portions of the Software.
#
# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
# EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
# MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
# NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
# LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
# OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
# WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
#
#
use File::Basename;
open (TESTS, "./test/test -list |");
my %tests;
my $blockSize = 40;
while ($l = <TESTS>) {
chomp($l);
$tests{$l} = "";
}
close (TESTS);
$size = 0;
foreach my $k (keys %tests) {
$size++;
}
my $targets = $size / $blockSize;
open (EXAMPLES, "find ./examples -maxdepth 1 -type f ! -name '*.*' |");
my @examples;
while (my $x = <EXAMPLES>) {
chomp($x);
my ($filename, $dummydir, $suffix) = fileparse($x);
open (HELP, "$x -help 2>&1 |");
my @prop;
my @model;
while (my $l = <HELP>) {
if ($l =~ /-propagation \((.*)\)/) {
$l1 = $1;
$l1 =~ s/ //g;
@prop = split(/,/, $l1);
} elsif ($l =~ /-model \((.*)\)/) {
$l1 = $1;
$l1 =~ s/ //g;
@model = split(/,/, $l1);
}
}
if (scalar(@prop) == 0) {
if (scalar(@model) == 0) {
push(@examples, $filename);
} else {
foreach $m (@model) {
push(@examples, "$filename -model $m");
}
}
} else {
foreach $p (@prop) {
if (scalar(@model) == 0) {
push(@examples, "$filename -propagation $p");
} else {
foreach $m (@model) {
push(@examples, "$filename -propagation $p -model $m");
}
}
}
}
close (HELP);
}
close (EXAMPLES);
print "LCOVOUTDIR = /srv/gecode/httpd/html/Internal/gcov-trunk\n\n";
print "all: tests examples\n";
print "\tlcov --directory \$(PWD) --base-directory \$(PWD) --capture \\\n";
print "\t --output-file testsandexamples.info\n";
print "\tgenhtml -t \"Gecode tests and examples\" testsandexamples.info -o \$(LCOVOUTDIR) -p \$(PWD)\n\n";
print "tests: \\\n";
for (my $tcount = 0; $tcount <= $targets; $tcount++) {
print "\ttest$tcount \\\n";
}
print "\tdone\n\n";
print "examples: \\\n";
foreach $e (@examples) {
$etarget = $e;
$etarget =~ s/[ -]/_/g;
print "\t$etarget \\\n";
}
print "\tdone\n\n";
$tcount = 1;
$count = 0;
print "test0:\n";
print "\t./test/test \\\n";
foreach my $k (keys %tests) {
if ($count == $blockSize) {
print "\t\t\$(TESTOPTIONS)\n\n";
print "test$tcount:\n";
print "\t./test/test \\\n";
$count = 0;
$tcount++;
}
print "\t\t-test ".$k." \\\n";
$count++;
}
if ($count < $blockSize) {
print "\t\t\$(TESTOPTIONS)\n\n";
}
foreach $e (@examples) {
$etarget = $e;
$etarget =~ s/[ -]/_/g;
print "$etarget:\n";
print "\t./examples/$e -time 240000\n\n";
}
print "done:\n";