diff options
Diffstat (limited to '02-usart/genmake.pl')
-rwxr-xr-x | 02-usart/genmake.pl | 19 |
1 files changed, 14 insertions, 5 deletions
diff --git a/02-usart/genmake.pl b/02-usart/genmake.pl index a0e99de..7bf7de5 100755 --- a/02-usart/genmake.pl +++ b/02-usart/genmake.pl @@ -1,5 +1,7 @@ #!/usr/bin/perl +use File::Basename; + # This script is designed to introspect C files and generate a makefile to use. sub header_deps { @@ -66,15 +68,22 @@ my $obj_files_deps = join(' ', @obj_files); foreach $file (@test_files) { my $c_file = $file; - (my $file_no_ext = $file) =~ s/(.*)\.c/\1/g; + + my($basename, $directories, $suffix) = fileparse($file, qr/\.[^.]*/); + + my $outdir = $directories . "build/"; + my $outbinary = $outdir . $basename; + my @deps = header_deps($c_file); my $deps_as_join = join(" ", @deps); - print "_${file_no_ext}: $deps_as_join $obj_files_deps test_harness/test_harness.a\n\t"; - print '$(CC) $(CFLAGS) -o' . $file_no_ext . ' ' . $c_file . ' ' . $obj_file_deps . " test_harness/test_harness.a\n\n"; + print "${outbinary}: $deps_as_join $obj_files_deps test_harness/test_harness.a\n\t"; + print '$(CC) $(CFLAGS) -o' . ${outbinary} . ' ' . $c_file . ' ' . $obj_files_deps . " test_harness/test_harness.a\n\n"; - print "${file_no_ext}: $deps_as_join $obj_files_deps test_harness/test_harness.a\n\t"; - print 'PREFIX=$(TEST_PREFIX) CFLAGS="$(TEST_CFLAGS)" $(MAKE) _' . $file_no_ext . "\n\n"; + print "$directories$basename:\n\t"; + print 'mkdir -p ' . $outdir . "\n\t"; + print 'PREFIX=$(TEST_PREFIX) CFLAGS="$(TEST_CFLAGS)" $(MAKE) ' . $outbinary . "\n\t"; + print $outbinary . "\n\n"; } print "test_harness/test_harness.a: test_harness/test_harness.h test_harness/test_harness.c\n\t"; |