2
0
Эх сурвалжийг харах

fpga/Makefile: better handling of variant recompiles

More logical handling of when to rebuild FPGA variants; make sure not
to clobber the root variant database!
H. Peter Anvin 3 жил өмнө
parent
commit
71f001b811
1 өөрчлөгдсөн 17 нэмэгдсэн , 14 устгасан
  1. 17 14
      fpga/Makefile

+ 17 - 14
fpga/Makefile

@@ -28,6 +28,8 @@ PYTHON		= python
 SED		= sed
 GZIP		= gzip
 
+BUILDDATE      := $(shell LC_ALL=C date)
+
 SUBDIRS     = usb
 PREREQFILES = $(mifdir)/sram.mif \
 	      $(foreach rev,$(REVISIONS),$(foreach coffmt,jic pof, \
@@ -36,7 +38,7 @@ PREREQFILES = $(mifdir)/sram.mif \
 alltarg := sof pof jic svf svf.gz xsvf xsvf.gz rbf rbf.gz \
 	   rpd rpd.gz pow.rpt sta.rpt
 allout   = $(foreach o,$(alltarg),$(outdir)/$(1).$(o))
-vartarg := sof svf svf.gz rbf rbf.gz
+vartarg := mif_update.rpt sof svf svf.gz rbf rbf.gz
 varout   = $(foreach o,$(vartarg),$(outdir)/$(1).$(o))
 
 sram_src = ../rv32/
@@ -65,22 +67,22 @@ $(REVISIONS):
 
 .PHONY: $(VARIANTS)
 $(VARIANTS):
-	$(MAKE) $@.variant
+	$(MAKE) $(outdir)/$@/variant.stamp
 
 .PHONY: %.vtargets
 %.vtargets:
 	$(MAKE) --old-file=$(outdir)/$*.fit.rpt $(call varout,$*)
 
-.PHONY: %.variant
-%.variant: mif/%.mif $(foreach rev,$(REVISIONS),$(outdir)/$(rev).fit.rpt)
-	-rm -rf var/$*
+$(outdir)/%/variant.stamp: mif/%.mif \
+			   $(foreach rev,$(REVISIONS),$(outdir)/$(rev).fit.rpt)
+	-rm -rf var/$* $(outdir)/$*
 	mkdir -p var/$* var/$*/mif $(outdir)/$*
-	ln *.qpf *.qsf Makefile *.deps var/$*/
-	ln $< var/$*/mif/sram.mif
-	( cd var/$* && ln -s ../../db ../../incremental_db . )
-	( cd var/$* && ln -s ../../$(outdir)/$* ./output )
-	$(MAKE) -C var/$* -f ../../Makefile -I ../.. \
-		$(REVISIONS:=.vtargets)
+	( cd $(outdir)/$* && ln -sf ../*.asm.rpt ../*.fit.rpt . )
+	cp -alf Makefile *.deps *.qpf *.qsf db incremental_db var/$*/
+	ln -f $< var/$*/mif/sram.mif
+	( cd var/$* && ln -sf ../../$(outdir)/$* ./output )
+	$(MAKE) -C var/$* $(REVISIONS:=.vtargets)
+	echo '$(BUILDDATE)' > $@
 
 $(outdir)/%.map.rpt: %.qsf | $(mifdir)/sram.mif
 	$(QMAP) $(PROJECT) -c $*
@@ -89,7 +91,8 @@ $(outdir)/%.fit.rpt: $(outdir)/%.map.rpt
 	$(QFIT) $(PROJECT) -c $*
 
 $(mifdir)/%.bin: $(sram_src)/%.bin $(all_map_deps)
-	LC_ALL=C date | tr '\n' '\0' | cat $< - > $@
+	cp -f $< $@
+	printf '%s\0' '$(BUILDDATE)' >> $@
 
 sram_depth  := 8192
 sram_width  := 32
@@ -177,12 +180,12 @@ clean:
 	rm -rf db incremental_db var simulation/modelsim \
 	greybox_tmp */greybox_tmp iodevs.vh output_files $(mifdir)
 	for d in $(REVISIONS); do \
-		$$d/*.rpt $$d/*.rpt $$d/*.summary $$d/*.smsg  \
+		rm -f $$d/*.rpt $$d/*.rpt $$d/*.summary $$d/*.smsg  \
 		$$d/*.htm $$d/*.htm_files $$d/*.map $$d/*.eqn $$d/*.sld \
 		$$d/*.done ; \
 	done
 
-spotless:
+spotless: clean
 	for d in $(SUBDIRS); do $(MAKE) -C $$d spotless; done
 	rm -rf $(outdir) $(mifdir) *.deps *~ \#*~