diff options
author | Josh Rahm <joshuarahm@gmail.com> | 2018-01-15 14:22:12 -0700 |
---|---|---|
committer | Josh Rahm <joshuarahm@gmail.com> | 2018-01-15 14:38:17 -0700 |
commit | 8519eb78ecf71da0d121d77265b9b70bc5f70561 (patch) | |
tree | e0a5590d9a749801106ecb0d39d6a3e29f9fc35b | |
parent | f6174510319f60b989579b434e12f80e467bf246 (diff) | |
download | stm32l4-8519eb78ecf71da0d121d77265b9b70bc5f70561.tar.gz stm32l4-8519eb78ecf71da0d121d77265b9b70bc5f70561.tar.bz2 stm32l4-8519eb78ecf71da0d121d77265b9b70bc5f70561.zip |
genmake now automatically generates new Makefile when file has been added.
-rwxr-xr-x | system-clock/genmake.pl | 20 |
1 files changed, 15 insertions, 5 deletions
diff --git a/system-clock/genmake.pl b/system-clock/genmake.pl index 3403759..26e91a8 100755 --- a/system-clock/genmake.pl +++ b/system-clock/genmake.pl @@ -18,16 +18,23 @@ sub header_deps { return @headers; } -my @files = glob('./*.c'); +my @files = glob('*.c'); my @obj_files; -open(my $fh, '<:encoding(UTF-8)', "Makefile.preamble") or die "Missing Makefile.preamble"; +open(my $fh, '<:encoding(UTF-8)', "Makefile.preamble") + or die "Missing Makefile.preamble"; + while (<$fh>) { print "$_"; } +# Emit a rule that will rerun genmake if the c files do not match. +my $idempotency_cmd="ls *.c *.h| sha1sum | awk '{print \$ 1}'"; +my $idempotency_cmd_make="ls *.c *.h | sha1sum | awk '{print \$\$1}'"; +print "IDEMPOTENCY_HASH=" . `$idempotency_cmd` . "\n"; + foreach $file (@files) { - (my $file_no_ext = $file) =~ s/^\.\/(.*)\.c$/\1/g; + (my $file_no_ext = $file) =~ s/\.c$//g; my $obj_file = "${file_no_ext}.o"; my $c_file = "${file_no_ext}.c"; @@ -48,5 +55,8 @@ foreach $file (@files) { } my $obj_files_deps = join(' ', @obj_files); -print "main.elf: $obj_files_deps linker_script.ld\n\t"; -print '$(LD) -o main.elf $(LD_FLAGS) ' . "$obj_files_deps\n\n"; +print "FORCE:\n\t\n\n"; +print "main.elf: FORCE $obj_files_deps linker_script.ld\n\t"; +print "([ \"\$\$($idempotency_cmd_make)\" != \"\$(IDEMPOTENCY_HASH)\" ] " + . "&& ./genmake.pl > Makefile && make main.elf ) " + . "|| " . '$(LD) -o main.elf $(LD_FLAGS) ' . "$obj_files_deps\n\n"; |