only generate irq headers on demand

as header file generation is not directly controlled by make (which, by
the way, makes the generatedheaders target phony), the script has to
take care of not needlessly generating files itself lest to have make
rebuild everything everytime
This commit is contained in:
chrysn 2012-10-23 01:31:30 +02:00
parent 0a1cf977eb
commit 2ad04777bf
2 changed files with 8 additions and 1 deletions

View File

@ -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

View File

@ -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)