diff options
Diffstat (limited to '02-usart/genmake.pl')
-rwxr-xr-x | 02-usart/genmake.pl | 15 |
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"; |