libgo: only rebuild package if dependent .gox has changed
authorIan Lance Taylor <ian@gcc.gnu.org>
Tue, 1 Nov 2016 13:54:21 +0000 (13:54 +0000)
committerIan Lance Taylor <ian@gcc.gnu.org>
Tue, 1 Nov 2016 13:54:21 +0000 (13:54 +0000)
    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
libgo/Makefile.am
libgo/Makefile.in

index d5240a919411d8877937576d6ad0d78fa98500a5..4dd1f8c4eadea285b78845a978ca8359f9892882 100644 (file)
@@ -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.
index 0356de8a71ff38d3e227d43ea7053580e40aa093..edf193a5d4090ef40ab60a852ce35799b892ca2d 100644 (file)
@@ -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
index 140cfdf2aebcf6847eb33956f51244cf6f0e8811..908e66042a5f86b4d27b3aab41b0caaa6f6886d6 100644 (file)
@@ -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