diff options
-rwxr-xr-x | 02-usart/genmake.pl | 19 | ||||
-rw-r--r-- | 02-usart/src/isr_vector.c | 6 | ||||
-rw-r--r-- | 02-usart/src/main.c | 4 |
3 files changed, 24 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"; diff --git a/02-usart/src/isr_vector.c b/02-usart/src/isr_vector.c index ab38dc2..6d5128c 100644 --- a/02-usart/src/isr_vector.c +++ b/02-usart/src/isr_vector.c @@ -1,7 +1,11 @@ #include "isr_vector.h" + +#include "arch.h" #include "delay.h" #include "gpio.h" +#ifdef ARCH_STM32L4 + /* Forward-declare the main function. This is implemented in main.c. */ void main(); @@ -163,3 +167,5 @@ void unhandled_isr() delay(5000000); } } + +#endif diff --git a/02-usart/src/main.c b/02-usart/src/main.c index 862676c..5f45e0b 100644 --- a/02-usart/src/main.c +++ b/02-usart/src/main.c @@ -74,6 +74,8 @@ int enable_usart1(uint32_t baud_rate) enable_interrupts(); } +#ifdef ARCH_STM32L4 + /* Main function. This gets executed from the interrupt vector defined above. */ int main() { @@ -92,3 +94,5 @@ int main() usart_transmit_str_sync(&USART2, "Hello, World\n"); for(;;); } + +#endif |