From f94a3edc6e4245f10e245d162737b889788f4f12 Mon Sep 17 00:00:00 2001 From: Ian Lance Taylor Date: Tue, 1 Nov 2016 13:54:21 +0000 Subject: [PATCH] libgo: only rebuild package if dependent .gox has changed Use mvifdiff and stamp files to track whether a .gox file has changed. When package A depends on package B, and we rebuild package B, only rebuild package A if package B's .gox file changes. This is safe because when package A imports package B it only reads package B's .gox file. This means that changes that do not affect export information will not cause dependent packages to be recompiled. Reviewed-on: https://go-review.googlesource.com/32476 From-SVN: r241742 --- gcc/go/gofrontend/MERGE | 2 +- libgo/Makefile.am | 7 +++++-- libgo/Makefile.in | 7 +++++-- 3 files changed, 11 insertions(+), 5 deletions(-) diff --git a/gcc/go/gofrontend/MERGE b/gcc/go/gofrontend/MERGE index d5240a91941..4dd1f8c4ead 100644 --- a/gcc/go/gofrontend/MERGE +++ b/gcc/go/gofrontend/MERGE @@ -1,4 +1,4 @@ -9ee8ad540d6f2f77af1821bfd977dc1820e1be8f +90f12ac1fa72a95e73cb88b6114fa3131c4ca8ee The first line of this file holds the git revision number of the last merge done from the gofrontend repository. diff --git a/libgo/Makefile.am b/libgo/Makefile.am index 0356de8a71f..edf193a5d40 100644 --- a/libgo/Makefile.am +++ b/libgo/Makefile.am @@ -924,7 +924,8 @@ BUILDPACKAGE = \ # How to build a .gox file from a .lo file. BUILDGOX = \ f=`echo $< | sed -e 's/.lo$$/.o/'`; \ - $(OBJCOPY) -j .go_export $$f $@.tmp && mv -f $@.tmp $@ + $(OBJCOPY) -j .go_export $$f $@.tmp; \ + $(SHELL) $(srcdir)/mvifdiff.sh $@.tmp `echo $@ | sed -e 's/s-gox/gox/'` GOTESTFLAGS = GOBENCH = @@ -1022,8 +1023,10 @@ $(1).lo: $(1)/check: $$(CHECK_DEPS) @$$(CHECK) .PHONY: $(1)/check -$(1).gox: $(1).lo +$(1).gox: $(1).s-gox; @true +$(1).s-gox: $(1).lo $$(BUILDGOX) + $$(STAMP) $$@ endef # This line expands PACKAGE_template once for each package name listed diff --git a/libgo/Makefile.in b/libgo/Makefile.in index 140cfdf2aeb..908e66042a5 100644 --- a/libgo/Makefile.in +++ b/libgo/Makefile.in @@ -1079,7 +1079,8 @@ BUILDPACKAGE = \ # How to build a .gox file from a .lo file. BUILDGOX = \ f=`echo $< | sed -e 's/.lo$$/.o/'`; \ - $(OBJCOPY) -j .go_export $$f $@.tmp && mv -f $@.tmp $@ + $(OBJCOPY) -j .go_export $$f $@.tmp; \ + $(SHELL) $(srcdir)/mvifdiff.sh $@.tmp `echo $@ | sed -e 's/s-gox/gox/'` GOTESTFLAGS = GOBENCH = @@ -3366,8 +3367,10 @@ $(1).lo: $(1)/check: $$(CHECK_DEPS) @$$(CHECK) .PHONY: $(1)/check -$(1).gox: $(1).lo +$(1).gox: $(1).s-gox; @true +$(1).s-gox: $(1).lo $$(BUILDGOX) + $$(STAMP) $$@ endef # This line expands PACKAGE_template once for each package name listed -- 2.30.2