Rework makefiles to work with older make.
[pintos-anon] / grading / userprog / mkmf
diff --git a/grading/userprog/mkmf b/grading/userprog/mkmf
new file mode 100755 (executable)
index 0000000..a45ee56
--- /dev/null
@@ -0,0 +1,48 @@
+#! /usr/bin/perl -w
+
+use strict;
+
+my (@tests);
+
+open (TESTS, "<Make.tests") or die;
+while (<TESTS>) {
+    chomp;
+    /^#/ || /^\s+$/ and next;
+    s/\s//g;
+    push (@tests, $_);
+}
+close (TESTS);
+
+open (MAKEBASE, "<Make.base") or die;
+open (MAKEFILE, ">Makefile") or die;
+print MAKEFILE <<EOF;
+# This file is automatically generated from Make.base and Make.tests
+# by mkmf.  Do not modify!
+
+EOF
+print MAKEFILE "TESTS =";
+my ($n) = 65;
+for my $test (@tests) {
+    if ($n + 1 + length ($test) > 65) {
+       print MAKEFILE " \\\n\t$test";
+       $n = length ($test);
+    } else {
+       print MAKEFILE " $test";
+       $n += 1 + length ($test);
+    }
+}
+print MAKEFILE "\n";
+
+for my $test (@tests) {
+    my ($test_id) = $test;
+    $test_id =~ tr/-/_/;
+
+    print MAKEFILE "${test_id}_SRC = ${test}.c\n";
+}
+print MAKEFILE "\n";
+
+while (<MAKEBASE>) {
+    print MAKEFILE $_;
+}
+close (MAKEBASE);
+