aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorIan Lance Taylor <ian@gcc.gnu.org>2016-11-01 13:54:21 +0000
committerIan Lance Taylor <ian@gcc.gnu.org>2016-11-01 13:54:21 +0000
commitf94a3edc6e4245f10e245d162737b889788f4f12 (patch)
tree9acb7767e9def70288ebb2e996ed1cee01dfa9a5
parent380f39b91b2f596fd4b74b8cae49cfe44cf9bd0b (diff)
downloadgcc-f94a3edc6e4245f10e245d162737b889788f4f12.zip
gcc-f94a3edc6e4245f10e245d162737b889788f4f12.tar.gz
gcc-f94a3edc6e4245f10e245d162737b889788f4f12.tar.bz2
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
-rw-r--r--gcc/go/gofrontend/MERGE2
-rw-r--r--libgo/Makefile.am7
-rw-r--r--libgo/Makefile.in7
3 files changed, 11 insertions, 5 deletions
diff --git a/gcc/go/gofrontend/MERGE b/gcc/go/gofrontend/MERGE
index d5240a9..4dd1f8c 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 0356de8..edf193a 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 140cfdf..908e660 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