5afad632208249984ef0d96dacfa99ad4f4490ec
[pintos-anon] / grading / userprog / mkmf
1 #! /usr/bin/perl -w
2
3 use strict;
4
5 my (@tests);
6
7 open (TESTS, "<Make.tests") or die;
8 while (<TESTS>) {
9     chomp;
10     /^#/ || /^\s+$/ and next;
11     s/\s//g;
12     push (@tests, $_);
13 }
14 close (TESTS);
15
16 open (MAKEBASE, "<Make.base") or die;
17 open (MAKEFILE, ">Makefile") or die;
18 print MAKEFILE <<EOF;
19 # This file is automatically generated from Make.base and Make.tests
20 # by mkmf.  Do not modify!
21
22 EOF
23 print MAKEFILE "TESTS =";
24 my ($n) = 65;
25 for my $test (@tests) {
26     if ($n + 1 + length ($test) > 65) {
27         print MAKEFILE " \\\n\t$test";
28         $n = length ($test);
29     } else {
30         print MAKEFILE " $test";
31         $n += 1 + length ($test);
32     }
33 }
34 print MAKEFILE "\n";
35
36 for my $test (@tests) {
37     my ($test_id) = $test;
38     $test_id =~ tr/-/_/;
39
40     print MAKEFILE "${test_id}_SRC = ${test}.c\n";
41 }
42 print MAKEFILE "\n";
43
44 while (<MAKEBASE>) {
45     print MAKEFILE $_;
46 }
47 close (MAKEBASE);
48
49 open (CVSIGNORE, ">.cvsignore");
50 print CVSIGNORE <<EOF;
51 # Automatically generated by mkmf - do not modify!
52 *.d
53 *.dsk
54 *.o
55 bochsrc.txt
56 bochsout.txt
57 child-arg
58 child-bad
59 child-close
60 child-simple
61 null
62 EOF
63 print CVSIGNORE join ("\n", @tests), "\n";
64 close (CVSIGNORE);