Logo AND Algorithmique Numérique Distribuée

Public GIT Repository
Restructuration of file CompleteInFiles.
[simgrid.git] / buildtools / Cmake / generate_memcheck_tests.pl
1 #!/usr/bin/perl -w
2 use strict;
3
4 # input file = AddTest.txt
5
6 if($#ARGV!=1) {
7     die "Usage: generate_memcheck_tests.pl <CMAKE_HOME_DIRECTORY> AddTests.cmake\n";
8 }
9
10 my($proj_dir)=$ARGV[0];
11 open MAKETEST, $ARGV[1] or die "Unable to open $ARGV[1]. $!\n";
12
13 my(@test_list)=();
14
15 my($line);
16 my($dump)=0;
17 while(defined($line=<MAKETEST>)) {
18     chomp $line;
19     if($line =~ /BEGIN TESH TESTS/) {
20         $dump = 1;
21         next;
22     } 
23     if($line =~ /END TESH TESTS/) {
24         $dump = 0;
25         last;
26     }
27     if($dump) {
28         if($line =~ /ADD_TEST/) 
29         {
30             if($line =~ /ADD_TEST\(([\S]+)\s+.*\$\{CMAKE_BINARY_DIR\}\/bin\/tesh\s*--cd\s*(\S+)\s+(.*)\)$/) 
31             {
32                 my($name_test,$path,$tesh_file)=($1,$2,$3);
33                 $path=~ s/\"//g;
34                 my($complete_tesh_file)=$path."/".$tesh_file;
35                 my($count)=0;
36                 my($count_first)=0;
37                 my($count_second)=0;
38                 $complete_tesh_file =~ s/\$\{CMAKE_BINARY_DIR\}/$proj_dir/g;
39                 $complete_tesh_file =~ s/\$\{CMAKE_HOME_DIRECTORY\}/$proj_dir/g;
40                 open TESH_FILE, $complete_tesh_file or die "Unable to open $complete_tesh_file $!\n";
41                 my($l);
42                 while(defined($l=<TESH_FILE>))
43                 {
44                     chomp $l;
45                     if($l =~ /^\$ (.*)$/) 
46                     {
47                         my($command) = $1;
48                         $command =~ s/\${srcdir:=.}/./g;
49                         $command =~ s/\${EXEEXT:=}//g;
50                         $command =~ s/\$SG_TEST_EXENV //g;
51                         $command =~ s/\$SG_TEST_ENV //g;
52                         $command =~ s/\$SG_EXENV_TEST //g; 
53                         $command =~ s/\$EXEEXT//g;
54                         $command =~ s/\${EXEEXT}//g;
55                         $command =~ s/\${srcdir}/\${CMAKE_HOME_DIRECTORY}\/src/g;
56                         $command =~ s/ \$ARGS//g;
57                         $command =~ s/ \$@ //g; 
58                         $command =~ s/..\/..\/bin\/smpirun/\${CMAKE_BINARY_DIR\}\/bin\/smpirun/g;
59                         if($command =~ /^[^\/\$\s]+\//) {
60                             $command = $path."/".$command;
61                             $command =~ s/\/(.?\/)+/\//g;
62                         }
63                         print "ADD_TEST(memcheck-$name_test-$count $command --cd $path\/)\n";
64                         #push @test_list, "memcheck-$name_test-$count";
65                         $count++;
66                     }
67                     if($l =~ /^\& (.*)$/) 
68                     {
69                         last;
70                     }
71                 }
72                 close(TESH_FILE);
73             } 
74             else 
75             {
76                 next;
77             }
78         } 
79         else 
80         {
81             print $line."\n";
82         }
83     }   
84 }
85 close(MAKETEST);
86 #print "set(MEMCHECK_LIST\n";
87 #print (join("\n", @test_list));
88 #print ")\n";