From 8294b6fe4d3311b335dfddc90eeeee2ebd1ddb12 Mon Sep 17 00:00:00 2001 From: Olivier Hainque Date: Wed, 16 May 2012 13:37:14 +0000 Subject: Makefile.tpl (gcc-no-fixedincludes): Rename into ... 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. From-SVN: r187594 --- ChangeLog | 7 +++++++ Makefile.in | 30 +++++++++++------------------- Makefile.tpl | 30 +++++++++++------------------- gcc/ChangeLog | 7 +++++++ gcc/Makefile.in | 46 +++++++++++++++++++++++++++++++++++++++++++++- 5 files changed, 81 insertions(+), 39 deletions(-) diff --git a/ChangeLog b/ChangeLog index a50fa6793bf..e29515044c9 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,10 @@ +2012-05-16 Olivier Hainque + + * 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-05-15 H.J. Lu Merge upstream change diff --git a/Makefile.in b/Makefile.in index e30c5e2ad80..def860e386d 100644 --- a/Makefile.in +++ b/Makefile.in @@ -2447,11 +2447,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: @@ -41200,25 +41201,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 239992be54d..546ec91185b 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,10 @@ +2012-05-16 Olivier Hainque + + * 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 * tree-inline.c (insert_init_stmt): Do not call diff --git a/gcc/Makefile.in b/gcc/Makefile.in index 944436c7a81..4853eb90452 100644 --- a/gcc/Makefile.in +++ b/gcc/Makefile.in @@ -4053,10 +4053,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 \ @@ -4105,8 +4111,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 @@ -4208,6 +4216,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) -- cgit v1.2.3