aboutsummaryrefslogtreecommitdiff
path: root/02-usart/genmake.pl
diff options
context:
space:
mode:
Diffstat (limited to '02-usart/genmake.pl')
-rwxr-xr-x02-usart/genmake.pl15
1 files changed, 12 insertions, 3 deletions
diff --git a/02-usart/genmake.pl b/02-usart/genmake.pl
index 54b1f80..89403ce 100755
--- a/02-usart/genmake.pl
+++ b/02-usart/genmake.pl
@@ -23,13 +23,19 @@ sub header_deps {
}
my @files;
-find(sub { push @files, "src/$_" if $_ =~ /.*\.c/ }, "src/");
+find(sub {
+ push @files, "$File::Find::name" if $_ =~ /.*\.c/
+ }, "src/");
my @test_files;
-find(sub { push @test_files, "tests/$_" if $_ =~ /.*\.c/ }, "tests/");
+find(sub {
+ push @test_files, "$File::Find::name" if $_ =~ /.*\.c/
+ }, "tests/");
my @header_files;
-find(sub { push @header_files, "include/$_" if $_ =~ /.*\.h/ }, "include/" );
+find(sub {
+ push @header_files, "$File::Find::name" if $_ =~ /.*\.h/;
+ }, "include/" );
my $idempotency_hash=sha1_hex("@files @test_files @header_files");
@@ -70,10 +76,12 @@ foreach $file (@files) {
# Emit the rule to make the object file.
print "$obj_file: $deps_as_join\n\t";
+ print "\@mkdir -p " . dirname($obj_file) . "\n\t";
print '$(CC) -c ' . $c_file . ' -o ' . $obj_file . ' $(CFLAGS)' . "\n\n";
# Emit the rule to make the assembly file.
print "$s_file: $deps_as_join\n\t";
+ print "\@mkdir -p " . dirname($obj_file) . "\n\t";
print '$(CC) -S ' . $c_file . ' -o ' . $s_file . ' $(CFLAGS)' . "\n\n";
}
@@ -91,6 +99,7 @@ foreach $file (@test_files) {
my $deps_as_join = join(" ", @deps);
print "${outbinary}: $deps_as_join $obj_files_deps test_harness/test_harness.a\n\t";
+ print "mkdir -p " . dirname($outbinary) . "\n\t";
print '$(CC) $(CFLAGS) -o' . ${outbinary} . ' ' . $c_file . ' ' . $obj_files_deps . " test_harness/test_harness.a\n\n";
print "$directories$basename:\n\t";