diff --git a/Makefile b/Makefile index 76c302d0..7ebd7699 100644 --- a/Makefile +++ b/Makefile @@ -88,5 +88,5 @@ clean: @printf " CLEAN doxygen\n" $(Q)$(MAKE) -C doc clean -.PHONY: build lib examples install doc clean +.PHONY: build lib examples install doc clean generatedheaders diff --git a/scripts/irq2nvic_h b/scripts/irq2nvic_h index f84c88e4..903af15e 100755 --- a/scripts/irq2nvic_h +++ b/scripts/irq2nvic_h @@ -125,6 +125,10 @@ def makeparentdir(filename): # where is my 'mkdir -p'? pass +def needs_update(infiles, outfiles): + timestamp = lambda filename: os.stat(filename).st_mtime + return any(not os.path.exists(o) for o in outfiles) or max(map(timestamp, infiles)) > min(map(timestamp, outfiles)) + def main(): infile = sys.argv[1] if not infile.startswith('./include/libopencm3/') or not infile.endswith('/irq.yaml'): @@ -132,6 +136,9 @@ def main(): nvic_h = infile.replace('irq.yaml', 'nvic.h') vector_nvic_c = infile.replace('./include/libopencm3/', './lib/').replace('irq.yaml', 'vector_nvic.c') + if not needs_update([__file__, infile], [nvic_h, vector_nvic_c]): + sys.exit(0) + makeparentdir(nvic_h) makeparentdir(vector_nvic_c)