From 43297964f38d3096816b824a1d5557714471b2ce Mon Sep 17 00:00:00 2001 From: Craig Burley Date: Mon, 22 Feb 1999 08:49:36 +0000 Subject: [PATCH] improve wall of separation between build and install From-SVN: r25367 --- gcc/ChangeLog | 5 +++++ gcc/Makefile.in | 4 ++-- gcc/ch/ChangeLog | 12 ++++++++++++ gcc/ch/Make-lang.in | 15 ++++++++++----- gcc/cp/ChangeLog | 6 ++++++ gcc/cp/Make-lang.in | 5 ++++- gcc/f/ChangeLog | 8 ++++++++ gcc/f/Make-lang.in | 32 ++++++++++++++++++-------------- 8 files changed, 65 insertions(+), 22 deletions(-) diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 1ee7875..edde687 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,4 +1,9 @@ Mon Feb 22 11:40:44 1999 Craig Burley +Sat Feb 20 09:59:36 1999 Craig Burley + + * Makefile.in (all.internal, all.cross): Depend on `doc' + target, to ensure docs get made before installation. + Decrease spurious warnings from -fsyntax-only: * stmt.c (expand_expr_stmt): Expand expr even when -fsyntax-only. diff --git a/gcc/Makefile.in b/gcc/Makefile.in index f42fcad..93d03cd 100644 --- a/gcc/Makefile.in +++ b/gcc/Makefile.in @@ -824,12 +824,12 @@ config.status: configure version.c LANGUAGES="$(CONFIG_LANGUAGES)" $(SHELL) config.status --recheck; \ fi -all.internal: start.encap rest.encap +all.internal: start.encap rest.encap doc # This is what to compile if making a cross-compiler. # Note that we can compile enquire using the cross-compiler just built, # although we can't run it on this machine. all.cross: native gcc-cross specs stmp-headers $(STMP_FIXPROTO) $(LIBGCC) \ - $(LIBGCC1_TEST) $(EXTRA_PARTS) lang.all.cross + $(LIBGCC1_TEST) $(EXTRA_PARTS) lang.all.cross doc # This is what to compile if making gcc with a cross-compiler. all.build: native xgcc$(exeext) $(EXTRA_PARTS) lang.all.build # This is what must be made before installing GCC and converting libraries. diff --git a/gcc/ch/ChangeLog b/gcc/ch/ChangeLog index a76fe91..2c3f938 100644 --- a/gcc/ch/ChangeLog +++ b/gcc/ch/ChangeLog @@ -1,4 +1,16 @@ Sun Jan 31 20:34:29 1999 Zack Weinberg +1999-02-20 Craig Burley + + * Make-lang.in (CHILL.info): Depend on intermediate ch/chill.info + target instead of the chill.texi file. + (ch/chill.info): New target, depends on the chill.texi source file. + Its command writes ch/chill.info instead of chill.info. + (CHILL.install-info): Install from ch/chill.info instead of + chill.info. + If any ch/chill.info* files exist, delete *all* chill.info* files + in $infodir first, not just the ones corresponding to the + files to be installed (just in case the docs get smaller). + * decl2.c: Don't define flag_no_ident here. Don't process -f(no-)ident here. diff --git a/gcc/ch/Make-lang.in b/gcc/ch/Make-lang.in index 27859f1..e0e9462 100644 --- a/gcc/ch/Make-lang.in +++ b/gcc/ch/Make-lang.in @@ -107,8 +107,10 @@ CHILL.all.cross: chill-cross CHILL.start.encap: chill CHILL.rest.encap: -CHILL.info: $(srcdir)/ch/chill.texi - $(MAKEINFO) -I$(srcdir)/ch $(srcdir)/ch/chill.texi -o chill.info +CHILL.info: ch/chill.info + +ch/chill.info: $(srcdir)/ch/chill.texi + $(MAKEINFO) -I$(srcdir)/ch $(srcdir)/ch/chill.texi -o ch/chill.info chill.dvi: $(srcdir)/ch/chill.texi $(srcdir)/extend.texi $(srcdir)/invoke.texi $(srcdir)/md.texi $(srcdir)/rtl.texi $(srcdir)/tm.texi cd ch ; \ @@ -139,10 +141,13 @@ CHILL.install-common: fi ; \ fi +# Don't delete $(infodir)/ch.info* unless there's actually new +# docs to install (in case LANGUAGES didn't contain chill earlier). CHILL.install-info: - -for i in chill.info*; do \ - rm -f $(infodir)/$$i; \ - $(INSTALL_DATA) $$i $(infodir)/$$i; \ + -for i in ch/chill.info*; do \ + rm -f $(infodir)/chill.info*; \ + realfile=`echo $$i | sed -e 's|.*/\([^/]*\)$$|\1|'`; \ + $(INSTALL_DATA) $$i $(infodir)/$$realfile; \ done CHILL.install-man: diff --git a/gcc/cp/ChangeLog b/gcc/cp/ChangeLog index c77d184..a4d9d60 100644 --- a/gcc/cp/ChangeLog +++ b/gcc/cp/ChangeLog @@ -1,4 +1,10 @@ Sun Feb 21 20:38:00 1999 H.J. Lu (hjl@gnu.org) +1999-02-20 Craig Burley + + * Make-lang.in (cplib2.ready): Don't consider updating + cplib2 stuff if the current directory isn't writable, as + it won't work (such as during a `make install'). + * decl2.c (start_objects): Make file scope constructors and destructors local to the file if ASM_OUTPUT_CONSTRUCTOR and diff --git a/gcc/cp/Make-lang.in b/gcc/cp/Make-lang.in index 8b5b5fc..8be82bf 100644 --- a/gcc/cp/Make-lang.in +++ b/gcc/cp/Make-lang.in @@ -189,8 +189,11 @@ cplib2.txt: $(CXX_LIB2SRCS) $(CXX_EXTRA_HEADERS) cplib2.ready mv -f cplib2.new cplib2.txt # Or if it would be different. +# Don't try to do write if `.' is not writable; +# in that case, we're installing from someone else's directory. +# But go ahead and fail if that directory hasn't been properly built. cplib2.ready: $(GCC_PASSES) $(LANGUAGES) $(LIBGCC2_DEPS) stmp-int-hdrs - @if [ -r cplib2.txt ]; then \ + @if [ -r cplib2.txt -a -w . ]; then \ case " $(LANGUAGES) " in \ *" "[cC]"++ "*) \ echo $(CXX_LIB2FUNCS) > cplib2.new;; \ diff --git a/gcc/f/ChangeLog b/gcc/f/ChangeLog index 64b864f..45695f2 100644 --- a/gcc/f/ChangeLog +++ b/gcc/f/ChangeLog @@ -1,4 +1,12 @@ 1999-02-20 Craig Burley +1999-02-20 Craig Burley + + * Make-lang.in (f77.install-common, f77.install-info, + f77.install-man, f77.uninstall): Use `$(prefix)/lang-f77' + instead of `lang-f77' for flag file, to be sure of a + writable directory, and remove the flag file after each + operation to keep things clean. + * g77.texi: Properly attribute Priest document; clarify that it is in the .ps version of the Goldberg document. diff --git a/gcc/f/Make-lang.in b/gcc/f/Make-lang.in index 2f37b1b..3cc2884 100644 --- a/gcc/f/Make-lang.in +++ b/gcc/f/Make-lang.in @@ -331,10 +331,10 @@ f77.install-normal: # and also as either g77 (if native) or $(tooldir)/bin/g77. f77.install-common: case "$(LANGUAGES)" in \ - *[fF]77*) touch lang-f77;; \ - *) rm -f lang-f77;; \ + *[fF]77*) touch $(prefix)/lang-f77;; \ + *) rm -f $(prefix)/lang-f77;; \ esac - -if [ -f lang-f77 -a -f f771$(exeext) ] ; then \ + -if [ -f $(prefix)/lang-f77 -a -f f771$(exeext) ] ; then \ if [ -f g77-cross$(exeext) ] ; then \ rm -f $(bindir)/$(G77_CROSS_NAME)$(exeext); \ $(INSTALL_PROGRAM) g77-cross$(exeext) $(bindir)/$(G77_CROSS_NAME)$(exeext); \ @@ -354,15 +354,16 @@ f77.install-common: echo ' f77-install-ok in the source or build directory.)'; \ echo ''; \ else true; fi + rm -f $(prefix)/lang-f77 # $(INSTALL_DATA) might be a relative pathname, so we can't cd into srcdir # to do the install. The sed rule was copied from stmp-int-hdrs. f77.install-info: f77.info case "$(LANGUAGES)" in \ - *[fF]77*) touch lang-f77;; \ - *) rm -f lang-f77;; \ + *[fF]77*) touch $(prefix)/lang-f77;; \ + *) rm -f $(prefix)/lang-f77;; \ esac - if [ -f lang-f77 -a -f f/g77.info ] ; then \ + if [ -f $(prefix)/lang-f77 -a -f f/g77.info ] ; then \ rm -f $(infodir)/g77.info*; \ for f in f/g77.info*; do \ realfile=`echo $$f | sed -e 's|.*/\([^/]*\)$$|\1|'`; \ @@ -370,19 +371,20 @@ f77.install-info: f77.info done; \ chmod a-x $(infodir)/g77.info*; \ else true; fi - @if [ -f lang-f77 -a -f $(srcdir)/f/g77.info ] ; then \ + @if [ -f $(prefix)/lang-f77 -a -f $(srcdir)/f/g77.info ] ; then \ if $(SHELL) -c 'install-info --version | sed 1q | fgrep -s -v -i debian' >/dev/null 2>&1; then \ echo " install-info --info-dir=$(infodir) $(infodir)/g77.info"; \ install-info --info-dir=$(infodir) $(infodir)/g77.info || : ; \ else : ; fi; \ else : ; fi + rm -f $(prefix)/lang-f77 f77.install-man: $(srcdir)/f/g77.1 case "$(LANGUAGES)" in \ - *[fF]77*) touch lang-f77;; \ - *) rm -f lang-f77;; \ + *[fF]77*) touch $(prefix)/lang-f77;; \ + *) rm -f $(prefix)/lang-f77;; \ esac - -if [ -f lang-f77 -a -f f771$(exeext) ] ; then \ + -if [ -f $(prefix)/lang-f77 -a -f f771$(exeext) ] ; then \ if [ -f g77-cross$(exeext) ] ; then \ rm -f $(man1dir)/$(G77_CROSS_NAME)$(manext); \ $(INSTALL_DATA) $(srcdir)/f/g77.1 $(man1dir)/$(G77_CROSS_NAME)$(manext); \ @@ -393,25 +395,27 @@ f77.install-man: $(srcdir)/f/g77.1 chmod a-x $(man1dir)/$(G77_INSTALL_NAME)$(manext); \ fi; \ else true; fi + rm -f $(prefix)/lang-f77 f77.uninstall: case "$(LANGUAGES)" in \ - *[fF]77*) touch lang-f77;; \ - *) rm -f lang-f77;; \ + *[fF]77*) touch $(prefix)/lang-f77;; \ + *) rm -f $(prefix)/lang-f77;; \ esac - @if [ -f lang-f77 ] ; then \ + @if [ -f $(prefix)/lang-f77 ] ; then \ if $(SHELL) -c 'install-info --version | sed 1q | fgrep -s -v -i debian' >/dev/null 2>&1; then \ echo " install-info --delete --info-dir=$(infodir) $(infodir)/g77.info"; \ install-info --delete --info-dir=$(infodir) $(infodir)/g77.info || : ; \ else : ; fi; \ else : ; fi - -if [ -f lang-f77 ]; then \ + -if [ -f $(prefix)/lang-f77 ]; then \ rm -rf $(bindir)/$(G77_INSTALL_NAME)$(exeext); \ rm -rf $(bindir)/$(G77_CROSS_NAME)$(exeext); \ rm -rf $(man1dir)/$(G77_INSTALL_NAME)$(manext); \ rm -rf $(man1dir)/$(G77_CROSS_NAME)$(manext); \ rm -rf $(infodir)/g77.info*; \ fi + rm -f $(prefix)/lang-f77 # # Clean hooks: # A lot of the ancillary files are deleted by the main makefile. -- 2.7.4