summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorhainque <hainque@138bc75d-0d04-0410-961f-82ee72b054a4>2012-05-16 15:54:24 +0000
committerhainque <hainque@138bc75d-0d04-0410-961f-82ee72b054a4>2012-05-16 15:54:24 +0000
commitc3c99d74c21d2e3b1c3370eda2f5a9187daae81e (patch)
tree262eb1416ea56ae3ec8e1f8ebe41d62540c01805
parent8406dfc97808bf33271eb0b93dfa29c97f304530 (diff)
downloadgcc-c3c99d74c21d2e3b1c3370eda2f5a9187daae81e.tar.gz
toplevel/
* Makefile.tpl (gcc-no-fixedincludes): Rename into ... (gcc-install-no-fixedincludes): Now forwarder to local target in gcc/ (install-no-fixedincludes): Adjust accordingly. * Makefile.in: Regenerate. gcc/ * Makefile.in (install-no-fixedincludes): New target, former toplevel gcc-no-fixedincludes. Stash "include-fixed" in addition to "include". Add comments and improve stamp preservation across the whole sequence. (stmp-int-hdrs): Use move-if-change + cp -p to setup fix_dir/limits.h. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/branches/gcc-4_7-branch@187601 138bc75d-0d04-0410-961f-82ee72b054a4
-rw-r--r--ChangeLog7
-rw-r--r--Makefile.in30
-rw-r--r--Makefile.tpl30
-rw-r--r--gcc/ChangeLog7
-rw-r--r--gcc/Makefile.in46
5 files changed, 81 insertions, 39 deletions
diff --git a/ChangeLog b/ChangeLog
index 7f440c3acac..724b1f4612a 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,10 @@
+2012-05-16 Olivier Hainque <hainque@adacore.com>
+
+ * Makefile.tpl (gcc-no-fixedincludes): Rename into ...
+ (gcc-install-no-fixedincludes): Now forwarder to local target in gcc/
+ (install-no-fixedincludes): Adjust accordingly.
+ * Makefile.in: Regenerate.
+
2012-03-28 Georg-Johann Lay <avr@gjlay.de>
Backport from 2012-03-28 mainline r185907.
diff --git a/Makefile.in b/Makefile.in
index 86144c48934..4b991391572 100644
--- a/Makefile.in
+++ b/Makefile.in
@@ -2426,11 +2426,12 @@ install.all: install-no-fixedincludes
true ; \
fi
-# install-no-fixedincludes is used because Cygnus can not distribute
-# the fixed header files.
+# install-no-fixedincludes is used to allow the elaboration of binary packages
+# suitable for distribution, where we cannot include the fixed system header
+# files.
.PHONY: install-no-fixedincludes
install-no-fixedincludes: installdirs install-host-nogcc \
- install-target gcc-no-fixedincludes
+ install-target gcc-install-no-fixedincludes
.PHONY: install-strip
install-strip:
@@ -40721,25 +40722,16 @@ check-gcc-go:
check-go: check-gcc-go check-target-libgo
-# Install the gcc headers files, but not the fixed include files,
-# which Cygnus is not allowed to distribute. This rule is very
-# dependent on the workings of the gcc Makefile.in.
-.PHONY: gcc-no-fixedincludes
-gcc-no-fixedincludes:
+# The gcc part of install-no-fixedincludes, which relies on an intimate
+# knowledge of how a number of gcc internal targets (inter)operate. Delegate.
+.PHONY: gcc-install-no-fixedincludes
+gcc-install-no-fixedincludes:
@if [ -f ./gcc/Makefile ]; then \
- rm -rf gcc/tmp-include; \
- mv gcc/include gcc/tmp-include 2>/dev/null; \
- mkdir gcc/include; \
- cp $(srcdir)/gcc/gsyslimits.h gcc/include/syslimits.h; \
- touch gcc/stmp-fixinc gcc/include/fixed; \
- rm -f gcc/stmp-headers gcc/stmp-int-hdrs; \
r=`${PWD_COMMAND}`; export r; \
- s=`cd $(srcdir); ${PWD_COMMAND}` ; export s; \
+ s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \
$(HOST_EXPORTS) \
- (cd ./gcc && \
- $(MAKE) $(GCC_FLAGS_TO_PASS) install); \
- rm -rf gcc/include; \
- mv gcc/tmp-include gcc/include 2>/dev/null; \
+ (cd ./gcc \
+ && $(MAKE) $(GCC_FLAGS_TO_PASS) install-no-fixedincludes); \
else true; fi
@endif gcc
diff --git a/Makefile.tpl b/Makefile.tpl
index ae263e6d36f..371c3b6f7db 100644
--- a/Makefile.tpl
+++ b/Makefile.tpl
@@ -906,11 +906,12 @@ install.all: install-no-fixedincludes
true ; \
fi
-# install-no-fixedincludes is used because Cygnus can not distribute
-# the fixed header files.
+# install-no-fixedincludes is used to allow the elaboration of binary packages
+# suitable for distribution, where we cannot include the fixed system header
+# files.
.PHONY: install-no-fixedincludes
install-no-fixedincludes: installdirs install-host-nogcc \
- install-target gcc-no-fixedincludes
+ install-target gcc-install-no-fixedincludes
.PHONY: install-strip
install-strip:
@@ -1443,25 +1444,16 @@ check-gcc-[+language+]:
check-[+language+]: check-gcc-[+language+][+ FOR lib-check-target +] [+ lib-check-target +][+ ENDFOR lib-check-target +]
[+ ENDFOR languages +]
-# Install the gcc headers files, but not the fixed include files,
-# which Cygnus is not allowed to distribute. This rule is very
-# dependent on the workings of the gcc Makefile.in.
-.PHONY: gcc-no-fixedincludes
-gcc-no-fixedincludes:
+# The gcc part of install-no-fixedincludes, which relies on an intimate
+# knowledge of how a number of gcc internal targets (inter)operate. Delegate.
+.PHONY: gcc-install-no-fixedincludes
+gcc-install-no-fixedincludes:
@if [ -f ./gcc/Makefile ]; then \
- rm -rf gcc/tmp-include; \
- mv gcc/include gcc/tmp-include 2>/dev/null; \
- mkdir gcc/include; \
- cp $(srcdir)/gcc/gsyslimits.h gcc/include/syslimits.h; \
- touch gcc/stmp-fixinc gcc/include/fixed; \
- rm -f gcc/stmp-headers gcc/stmp-int-hdrs; \
r=`${PWD_COMMAND}`; export r; \
- s=`cd $(srcdir); ${PWD_COMMAND}` ; export s; \
+ s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \
$(HOST_EXPORTS) \
- (cd ./gcc && \
- $(MAKE) $(GCC_FLAGS_TO_PASS) install); \
- rm -rf gcc/include; \
- mv gcc/tmp-include gcc/include 2>/dev/null; \
+ (cd ./gcc \
+ && $(MAKE) $(GCC_FLAGS_TO_PASS) install-no-fixedincludes); \
else true; fi
@endif gcc
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index a107bf5cc84..a2ea5e2bd85 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,3 +1,10 @@
+2012-05-16 Olivier Hainque <hainque@adacore.com>
+
+ * Makefile.in (install-no-fixedincludes): New target, former toplevel
+ gcc-no-fixedincludes. Stash "include-fixed" in addition to "include".
+ Add comments and improve stamp preservation across the whole sequence.
+ (stmp-int-hdrs): Use move-if-change + cp -p to setup fix_dir/limits.h.
+
2012-05-16 Richard Guenther <rguenther@suse.de>
PR tree-optimization/53364
diff --git a/gcc/Makefile.in b/gcc/Makefile.in
index 2319cab3b1f..b8b77a512cb 100644
--- a/gcc/Makefile.in
+++ b/gcc/Makefile.in
@@ -4038,10 +4038,16 @@ gcov-dump$(exeext): $(GCOV_DUMP_OBJS) $(LIBDEPS)
# Build the include directories.
stmp-int-hdrs: $(STMP_FIXINC) $(USER_H) fixinc_list
# Copy in the headers provided with gcc.
+#
# The sed command gets just the last file name component;
# this is necessary because VPATH could add a dirname.
# Using basename would be simpler, but some systems don't have it.
+#
# The touch command is here to workaround an AIX/Linux NFS bug.
+#
+# The move-if-change + cp -p twists for limits.h are intended to preserve
+# the time stamp when we regenerate, to prevent pointless rebuilds during
+# e.g. install-no-fixedincludes.
-if [ -d include ] ; then true; else mkdir include; chmod a+rx include; fi
-if [ -d include-fixed ] ; then true; else mkdir include-fixed; chmod a+rx include-fixed; fi
for file in .. $(USER_H); do \
@@ -4090,8 +4096,10 @@ stmp-int-hdrs: $(STMP_FIXINC) $(USER_H) fixinc_list
fi; \
$(mkinstalldirs) $${fix_dir}; \
chmod a+rx $${fix_dir} || true; \
+ $(SHELL) $(srcdir)/../move-if-change \
+ tmp-xlimits.h tmp-limits.h; \
rm -f $${fix_dir}/limits.h; \
- mv tmp-xlimits.h $${fix_dir}/limits.h; \
+ cp -p tmp-limits.h $${fix_dir}/limits.h; \
chmod a+r $${fix_dir}/limits.h; \
done
# Install the README
@@ -4193,6 +4201,42 @@ stmp-fixinc: gsyslimits.h macro_list fixinc_list \
fi
$(STAMP) stmp-fixinc
#
+
+# Install with the gcc headers files, not the fixed include files, which we
+# are typically not allowed to distribute. The general idea is to:
+# - Get to "install" with a bare set of internal headers, not the
+# fixed system ones,
+# - Prevent rebuilds of what normally depends on the headers, which is
+# useless for installation purposes and would rely on improper headers.
+# - Restore as much of the original state as possible.
+
+.PHONY: install-no-fixedincludes
+
+install-no-fixedincludes:
+ # Stash the current set of headers away, save stamps we're going to
+ # alter explicitly, and arrange for fixincludes not to run next time
+ # we trigger a headers rebuild.
+ -rm -rf tmp-include
+ -mv include tmp-include 2>/dev/null
+ -mv include-fixed tmp-include-fixed 2>/dev/null
+ -mv stmp-int-hdrs tmp-stmp-int-hdrs 2>/dev/null
+ -mv stmp-fixinc tmp-stmp-fixinc 2>/dev/null
+ -mkdir include
+ -cp -p $(srcdir)/gsyslimits.h include/syslimits.h
+ -touch stmp-fixinc
+
+ # Rebuild our internal headers, restore the original stamps so that
+ # "install" doesn't trigger pointless rebuilds because of that update,
+ # then do install
+ $(MAKE) $(FLAGS_TO_PASS) stmp-int-hdrs
+ -mv tmp-stmp-int-hdrs stmp-int-hdrs 2>/dev/null
+ -mv tmp-stmp-fixinc stmp-fixinc 2>/dev/null
+ $(MAKE) $(FLAGS_TO_PASS) install
+
+ # Restore the original set of maybe-fixed headers
+ -rm -rf include; mv tmp-include include 2>/dev/null
+ -rm -rf include-fixed; mv tmp-include-fixed include-fixed 2>/dev/null
+
# Remake the info files.
doc: $(BUILD_INFO) $(GENERATED_MANPAGES)