aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rwxr-xr-x02-usart/genmake.pl19
-rw-r--r--02-usart/src/isr_vector.c6
-rw-r--r--02-usart/src/main.c4
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