[3.4-bi] DESTDIR support completed

Christian Cornelssen ccorn@cs.tu-berlin.de
Wed Jan 1 15:40:00 GMT 2003


Dear GCC developers,

here is DESTDIR support for the -rgcc-3_4-basic-improvements-branch,
diffed against CVS as of 12/29.  Support has been added for all
current languages, including Ada, and for all platforms that use
"configure"d dirs for installation, though I could check it only for
ix86-pc-linux-gnu without Ada.  Professional packagers are welcome to
test (and use) it broadly.

Some URLs for reference:

3.0.4:	http://gcc.gnu.org/ml/gcc-patches/2002-03/msg01385.html
3.2:	http://gcc.gnu.org/ml/gcc-patches/2002-10/msg00317.html
...:	http://gcc.gnu.org/ml/gcc-patches/2002-11/msg01378.html
...:	http://gcc.gnu.org/ml/gcc-patches/2002-11/msg01435.html

This is the logical continuation, and hopefully it's the last time
that I have to add DESTDIR support to GCC.

The contribution consists of the following attached files:

1. `destdir.diff' modifies all Makefile sources related to
   installation, including `Makefile.tpl' (requiring AutoGen)
   and `libstdc++-v3/include/Makefile.am' (requiring Automake-1.4p5).

2. `destdir-doc.diff' adds documentation to `gcc/doc/install.texi'.
   Please review it, it also tries to explain tooldir issues.

3. `destdir-no-am.diff' simulates the effect of regenerating
   `libstdc++-v3/include/Makefile.in' from its `Makefile.am'.
   This is provided because the configure/Makefile suite is very
   sensitive to changes in Autotool versions.  It cannot simply be
   "autoreconf"ed to Autoconf-2.52/Automake-1.6.x, for example.

4. Just for completeness, `destdir-no-ag.diff' contains the diff
   on `Makefile.in' resulting from "autogen Makefile.def".

The patches are in "cvs diff -u" format, intended to be piped to
"patch -p0" within the toplevel directory of a full 3.4-bi gcc checkout.

Some notes again:

 - I have followed Automake's style in directly modifying the
   ultimate installation commands by prepending $(DESTDIR) to
   the destination specifiers.  Also like newer Automakes, I have
   not defined a default value for DESTDIR in any `Makefile.in',
   in order to let Make import that variable from the environment
   and thus share it with sub-makes.  Additionally, I have added
   "DESTDIR=$(DESTDIR)" to the FLAGS_TO_PASS variables defined in
   some `Makefile.in's (resp. `Makefile.tpl').

   BTW: `gcc/ada/{Make-lang,Makefile}.in' do not define
   FLAGS_TO_PASS, but use it.  Is that correct?  (If you add a
   definition, don't forget DESTDIR then.)

 - Care has been taken to make the $(DESTDIR) magic work with all
   choices for $(LN).  In some places this required replacing
   absolute linking like "$(LN) $(bindir)/xxx $(bindir)/yyy"
   with relative linking as in "(cd $(DESTDIR)$(bindir) && \
   $(LN) xxx yyy)".

 - In `gcc/Makefile.in', the directory creating routines for the
   `installdirs' target have been changed from a series of
   conditional mkdirs to a smarter loop, in order to support
   arbitrary choices of installation dirs.

 - Some installation routines (e.g. in `gcc/{ada,cp}/Make-lang.in'
   and `gcc/Makefile.in') try to be smart and duplicate executables
   into additional tooldirs if these exist.  The patches also
   redirect the tests, so packagers who want to have tooldir stuff
   will have to create the tooldirs in the DESTDIR tree before
   doing a DESTDIRed installation.

   I prefer this approach because it lets the packager control
   that detail, independent of the situation on the particular
   build system.  (E.g. in SuSE Linux, the tooldirs exist, but seem
   to be solely used by the binutils.)  As another application,
   DESTDIR might hold a path that shall finally become a chroot jail.
   Testing for tooldirs within the DESTDIR tree is the appropriate
   method for that.

   The alternative would be: Test for system's tooldir as before,
   then create its DESTDIRed analogue if necessary (new), and do the
   DESTDIRed installation.  This may be more or less convenient than
   the above approach, but it cannot be influenced by the packager.

 - Tests for (files in) system directories that are examined or
   executed in the course of the build process are not redirected.
   This means that neither ${build_tooldir} nor ${SYSTEM_HEADER_DIR}
   get $(DESTDIR) prepended.  Similar reasoning applies to the
   RANLIB_FOR_TARGET setting in `gcc/config/m68hc11/t-m68hc11-gas'
   which remains unchanged.  We could discuss whether
   `contrib/test_installed' should want, and would work with,
   ${DESTDIR} before its uses of ${prefix}; my guess was "no".

 - GCC-3.4-bi additionally installs fixincludes utilities.  I have
   added ${DESTDIR} support to `gcc/mkheaders.in' as well, so
   that the installed `mkheaders' script can be run within the
   relocated installation image, provided that DESTDIR has been
   set appropriately in the environment.

   Note that the actual `fixincl' program uses DESTDIR for
   another purpose (see `gcc/fixinc/fixlib.h').  The wrapper
   script `fixinc.sh', as called by "mkheaders", overrides
   DESTDIR accordingly.  Hence "mkheaders" and "fixincl" run in
   different environments without conflicts.  Nevertheless, this
   may be confusing.  I'd suggest renaming the variable inside
   the fixinc* utilities.  You may as well decide to not patch
   `gcc/mkheaders.in', it's not critical.

 - While fixing the `install-data-local' rule in
   `libstdc++-v3/include/Makefile.am', I encountered a couple of
   mkinstalldirs commands unused by subsequent installation commands.
   In the latter, I changed the installation destination to use the
   previously made subdirs (${c_base_builddir} and ${std_builddir}),
   and then found that these evaluate to "." only, so there is no
   actual change of behaviour, but the commands are more consistent
   now.

 - In order to find the places that needed changing, and to check for
   completeness, I used two different methods.  One is to build a
   "positives" list of variables that hold installation directories,
   and to scan the tree for uses without $(DESTDIR).  To obtain
   the list, I started with `configure's installation directory
   variables, then scanned the tree for references to these variables
   within variable definitions, then extended the list accordingly,
   and rescanned.  The second approach employed the `scaninst.pl'
   script introduced earlier.  That method looks for installation
   commands and maintains a "negatives" list of directory variables
   that point into the build tree.  Now that the DESTDIRification
   has been worked out, both approaches find less than one
   screenful of suspicious commands, which can be verified easily.
   (Most prominent examples are variables that hide DESTDIR in their
   definition, as `Makefile.tpl's MAKEDIRS, `gcc/mklibgcc.in's ldir,
   and `libstdc++-v3/po/Makefile.am's locale_installdir.)

 - To review the patch, you will want to filter out mere insertions of
   $(DESTDIR).  The following can get you started:

	comm -23 <(sed '/^+/d; s:^-: :' destdir.diff) <(sed \
	'/^-/d; /^+/s:\$\+[{(]DESTDIR[)}]::g; s:^+: :' destdir.diff) \
	| less -S

   (The <(...) notation is Bash syntax for a named pipe.)  This
   command outputs old (not new) lines that have changed in more
   aspects than just DESTDIR insertions.  The output is pretty short,
   and you should be able to find the explanation in the above notes.
   In any case, you should then be able to look up those few places
   in `destdir.diff' to get all details.

Here is a suggestion for the ChangeLog entry.  I have not taken the
effort to enumerate all modified rules or variables, so there is
room for criticism.  However, message size would explode otherwise.

	* Makefile.tpl, gcc/Makefile.in, gcc/ada/Make-lang.in,
	gcc/ada/Makefile.in, gcc/config/alpha/t-osf4,
	gcc/config/arc/t-arc, gcc/config/arm/t-netbsd,
	gcc/config/ia64/t-hpux, gcc/config/mips/t-iris5-6,
	gcc/config/pa/t-hpux-shlib, gcc/config/rs6000/t-aix43,
	gcc/config/rs6000/t-aix52, gcc/config/t-slibgcc-elf-ver,
	gcc/config/t-slibgcc-sld, gcc/cp/Make-lang.in,
	gcc/f/Make-lang.in, gcc/java/Make-lang.in, gcc/mkheaders.in,
	gcc/mklibgcc.in, gcc/treelang/Make-lang.in,
	libf2c/Makefile.in, libiberty/Makefile.in,
	libobjc/Makefile.in, libstdc++-v3/include/Makefile.am:
	Add DESTDIR support to all install/uninstall commands.
	Pass DESTDIR to sub-makes via FLAGS_TO_PASS.
	* gcc/doc/install.texi: Describe DESTDIR and tooldir issues.
	* Makefile.in: Regenerate.
	* libstdc++-v3/include/Makefile.in: Regenerate.

Regards,

Christian Cornelssen
-------------- next part --------------
Index: Makefile.tpl
===================================================================
RCS file: /usr/local/src/cvs/gcc-cvs/gcc/Makefile.tpl,v
retrieving revision 1.5.2.27
diff -u -r1.5.2.27 Makefile.tpl
--- Makefile.tpl	13 Dec 2002 22:58:06 -0000	1.5.2.27
+++ Makefile.tpl	29 Dec 2002 12:34:48 -0000
@@ -389,6 +389,7 @@
 	"CXXFLAGS=$(CXXFLAGS)" \
 	"CXXFLAGS_FOR_TARGET=$(CXXFLAGS_FOR_TARGET)" \
 	"CXX_FOR_TARGET=$(CXX_FOR_TARGET)" \
+	"DESTDIR=$(DESTDIR)" \
 	"DLLTOOL_FOR_TARGET=$(DLLTOOL_FOR_TARGET)" \
 	"INSTALL=$(INSTALL)" \
 	"INSTALL_DATA=$(INSTALL_DATA)" \
@@ -633,7 +634,7 @@
 install-info: do-install-info dir.info
 	s=`cd $(srcdir); ${PWD}`; export s; \
 	if [ -f dir.info ] ; then \
-	  $(INSTALL_DATA) dir.info $(infodir)/dir.info ; \
+	  $(INSTALL_DATA) dir.info $(DESTDIR)$(infodir)/dir.info ; \
 	else true ; fi
 
 local-clean:
@@ -763,7 +764,7 @@
 
 dir.info: do-install-info
 	if [ -f $(srcdir)/texinfo/gen-info-dir ] ; then \
-	  $(srcdir)/texinfo/gen-info-dir $(infodir) $(srcdir)/texinfo/dir.info-template > dir.info.new ; \
+	  $(srcdir)/texinfo/gen-info-dir $(DESTDIR)$(infodir) $(srcdir)/texinfo/dir.info-template > dir.info.new ; \
 	  mv -f dir.info.new dir.info ; \
 	else true ; \
 	fi
Index: gcc/Makefile.in
===================================================================
RCS file: /usr/local/src/cvs/gcc-cvs/gcc/gcc/Makefile.in,v
retrieving revision 1.939.2.20
diff -u -r1.939.2.20 Makefile.in
--- gcc/Makefile.in	11 Dec 2002 23:03:23 -0000	1.939.2.20
+++ gcc/Makefile.in	29 Dec 2002 19:07:59 -0000
@@ -688,6 +688,7 @@
 	"BISON=$(BISON)" \
 	"BISONFLAGS=$(BISONFLAGS)" \
 	"CFLAGS=$(CFLAGS) $(WARN_CFLAGS)" \
+	"DESTDIR=$(DESTDIR)" \
 	"GCC_FOR_TARGET=$(GCC_FOR_TARGET)" \
 	"LDFLAGS=$(LDFLAGS)" \
 	"FLEX=$(FLEX)" \
@@ -2385,7 +2386,7 @@
 
 .PHONY: install-gcc-tooldir
 install-gcc-tooldir:
-	$(SHELL) ${srcdir}/mkinstalldirs $(gcc_tooldir)
+	$(SHELL) ${srcdir}/mkinstalldirs $(DESTDIR)$(gcc_tooldir)
 
 # Build fixed copies of system files.
 stmp-fixinc: fixinc.sh gsyslimits.h
@@ -2775,173 +2776,163 @@
 # Handle cpp installation.
 install-cpp: cpp$(exeext)
 	-if [ -f gcc-cross$(exeext) ] ; then \
-	  rm -f $(bindir)/$(CPP_CROSS_NAME)$(exeext); \
-	  $(INSTALL_PROGRAM) -m 755 cpp$(exeext) $(bindir)/$(CPP_CROSS_NAME)$(exeext); \
+	  rm -f $(DESTDIR)$(bindir)/$(CPP_CROSS_NAME)$(exeext); \
+	  $(INSTALL_PROGRAM) -m 755 cpp$(exeext) $(DESTDIR)$(bindir)/$(CPP_CROSS_NAME)$(exeext); \
 	  if [ x$(cpp_install_dir) != x ]; then \
-	    rm -f $(prefix)/$(cpp_install_dir)/$(CPP_CROSS_NAME)$(exeext); \
-	    $(INSTALL_PROGRAM) -m 755 cpp$(exeext) $(prefix)/$(cpp_install_dir)/$(CPP_CROSS_NAME)$(exeext); \
+	    rm -f $(DESTDIR)$(prefix)/$(cpp_install_dir)/$(CPP_CROSS_NAME)$(exeext); \
+	    $(INSTALL_PROGRAM) -m 755 cpp$(exeext) $(DESTDIR)$(prefix)/$(cpp_install_dir)/$(CPP_CROSS_NAME)$(exeext); \
 	  else true; fi; \
 	else \
-	  rm -f $(bindir)/$(CPP_INSTALL_NAME)$(exeext); \
-	  $(INSTALL_PROGRAM) -m 755 cpp$(exeext) $(bindir)/$(CPP_INSTALL_NAME)$(exeext); \
+	  rm -f $(DESTDIR)$(bindir)/$(CPP_INSTALL_NAME)$(exeext); \
+	  $(INSTALL_PROGRAM) -m 755 cpp$(exeext) $(DESTDIR)$(bindir)/$(CPP_INSTALL_NAME)$(exeext); \
 	  if [ x$(cpp_install_dir) != x ]; then \
-	    rm -f $(prefix)/$(cpp_install_dir)/$(CPP_INSTALL_NAME)$(exeext); \
-	    $(INSTALL_PROGRAM) -m 755 cpp$(exeext) $(prefix)/$(cpp_install_dir)/$(CPP_INSTALL_NAME)$(exeext); \
+	    rm -f $(DESTDIR)$(prefix)/$(cpp_install_dir)/$(CPP_INSTALL_NAME)$(exeext); \
+	    $(INSTALL_PROGRAM) -m 755 cpp$(exeext) $(DESTDIR)$(prefix)/$(cpp_install_dir)/$(CPP_INSTALL_NAME)$(exeext); \
 	  else true; fi; \
 	fi
 
 # Create the installation directories.
+# $(libdir)/gcc-lib/include isn't currently searched by cpp.
 installdirs:
-	-if [ -d $(prefix) ] ; then true ; else mkdir $(prefix) ; chmod a+rx $(prefix) ; fi
-	-if [ -d $(exec_prefix) ] ; then true ; else mkdir $(exec_prefix) ; chmod a+rx $(exec_prefix) ; fi
-	-if [ -d $(libdir) ] ; then true ; else mkdir $(libdir) ; chmod a+rx $(libdir) ; fi
-	-if [ -d $(libdir)/gcc-lib ] ; then true ; else mkdir $(libdir)/gcc-lib ; chmod a+rx $(libdir)/gcc-lib ; fi
-# This dir isn't currently searched by cpp.
-#	-if [ -d $(libdir)/gcc-lib/include ] ; then true ; else mkdir $(libdir)/gcc-lib/include ; chmod a+rx $(libdir)/gcc-lib/include ; fi
-	-fdir= ; for dir in `echo $(libsubdir) | tr '/' ' '`; do \
-	  fdir=$${fdir}/$${dir}; \
-	  if [ -d $${fdir} ] ; then true ; else mkdir $${fdir}; chmod a+rx $${fdir}; fi ; \
+	-for d in $(libsubdir) $(bindir) $(includedir) $(infodir) $(slibdir) $(man1dir) $(man7dir); do \
+	  fdir=; for dir in `echo "$(DESTDIR)$$d" | tr '/' ' '`; do \
+	    fdir=$${fdir}/$${dir}; \
+	    if [ -d "$${fdir}" ] ; then true ; \
+	    else mkdir "$${fdir}" || break; chmod a+rx "$${fdir}"; fi ; \
+	  done; \
 	done
-	-if [ -d $(bindir) ] ; then true ; else mkdir $(bindir) ; chmod a+rx $(bindir) ; fi
-	-if [ -d $(includedir) ] ; then true ; else mkdir $(includedir) ; chmod a+rx $(includedir) ; fi
-	-if [ -d $(infodir) ] ; then true ; else mkdir $(infodir) ; chmod a+rx $(infodir) ; fi
-	-if [ -d $(slibdir) ] ; then true ; else mkdir $(slibdir) ; chmod a+rx $(slibdir) ; fi
-# We don't use mkdir -p to create the parents of man1dir,
-# because some systems don't support it.
-# Instead, we use this technique to create the immediate parent of man1dir.
-	-parent=`echo $(man1dir)|sed -e 's@/[^/]*$$@@'`; \
-	if [ -d $$parent ] ; then true ; else mkdir $$parent ; chmod a+rx $$parent ; fi
-	-if [ -d $(man1dir) ] ; then true ; else mkdir $(man1dir) ; chmod a+rx $(man1dir) ; fi
-	-if [ -d $(man7dir) ] ; then true ; else mkdir $(man7dir) ; chmod a+rx $(man7dir) ; fi
 
 # Install the compiler executables built during cross compilation.
 install-common: native $(EXTRA_PARTS) lang.install-common
 	for file in $(COMPILERS); do \
 	  if [ -f $$file ] ; then \
-	    rm -f $(libsubdir)/$$file; \
-	    $(INSTALL_PROGRAM) $$file $(libsubdir)/$$file; \
+	    rm -f $(DESTDIR)$(libsubdir)/$$file; \
+	    $(INSTALL_PROGRAM) $$file $(DESTDIR)$(libsubdir)/$$file; \
 	  else true; \
 	  fi; \
 	done
 	for file in $(EXTRA_PASSES) $(EXTRA_PROGRAMS) $(USE_COLLECT2) ..; do \
 	  if [ x"$$file" != x.. ]; then \
-	    rm -f $(libsubdir)/$$file; \
-	    $(INSTALL_PROGRAM) $$file $(libsubdir)/$$file; \
+	    rm -f $(DESTDIR)$(libsubdir)/$$file; \
+	    $(INSTALL_PROGRAM) $$file $(DESTDIR)$(libsubdir)/$$file; \
 	  else true; fi; \
 	done
 	for file in $(EXTRA_PARTS) ..; do \
 	  if [ x"$$file" != x.. ]; then \
-	    rm -f $(libsubdir)/$$file; \
-	    $(INSTALL_DATA) $$file $(libsubdir)/$$file; \
-	    chmod a-x $(libsubdir)/$$file; \
+	    rm -f $(DESTDIR)$(libsubdir)/$$file; \
+	    $(INSTALL_DATA) $$file $(DESTDIR)$(libsubdir)/$$file; \
+	    chmod a-x $(DESTDIR)$(libsubdir)/$$file; \
 	  else true; fi; \
 	done
 # Don't mess with specs if it doesn't exist yet.
 	-if [ -f specs ] ; then \
-	  rm -f $(libsubdir)/specs; \
-	  $(INSTALL_DATA) specs $(libsubdir)/specs; \
-	  chmod a-x $(libsubdir)/specs; \
+	  rm -f $(DESTDIR)$(libsubdir)/specs; \
+	  $(INSTALL_DATA) specs $(DESTDIR)$(libsubdir)/specs; \
+	  chmod a-x $(DESTDIR)$(libsubdir)/specs; \
 	fi
 # Install protoize if it was compiled.
 	-if [ -f protoize$(exeext) ]; \
 	then \
 	    if [ -f gcc-cross$(exeext) ] ; then \
-		rm -f $(bindir)/$(PROTOIZE_CROSS_NAME)$(exeext); \
-		$(INSTALL_PROGRAM) protoize$(exeext) $(bindir)/$(PROTOIZE_CROSS_NAME)$(exeext); \
-		rm -f $(bindir)/$(UNPROTOIZE_CROSS_NAME)$(exeext); \
-		$(INSTALL_PROGRAM) unprotoize$(exeext) $(bindir)/$(UNPROTOIZE_CROSS_NAME)$(exeext); \
+		rm -f $(DESTDIR)$(bindir)/$(PROTOIZE_CROSS_NAME)$(exeext); \
+		$(INSTALL_PROGRAM) protoize$(exeext) $(DESTDIR)$(bindir)/$(PROTOIZE_CROSS_NAME)$(exeext); \
+		rm -f $(DESTDIR)$(bindir)/$(UNPROTOIZE_CROSS_NAME)$(exeext); \
+		$(INSTALL_PROGRAM) unprotoize$(exeext) $(DESTDIR)$(bindir)/$(UNPROTOIZE_CROSS_NAME)$(exeext); \
 	    else \
-		rm -f $(bindir)/$(PROTOIZE_INSTALL_NAME)$(exeext); \
-		$(INSTALL_PROGRAM) protoize$(exeext) $(bindir)/$(PROTOIZE_INSTALL_NAME)$(exeext); \
-		rm -f $(bindir)/$(UNPROTOIZE_INSTALL_NAME)$(exeext); \
-		$(INSTALL_PROGRAM) unprotoize$(exeext) $(bindir)/$(UNPROTOIZE_INSTALL_NAME)$(exeext); \
+		rm -f $(DESTDIR)$(bindir)/$(PROTOIZE_INSTALL_NAME)$(exeext); \
+		$(INSTALL_PROGRAM) protoize$(exeext) $(DESTDIR)$(bindir)/$(PROTOIZE_INSTALL_NAME)$(exeext); \
+		rm -f $(DESTDIR)$(bindir)/$(UNPROTOIZE_INSTALL_NAME)$(exeext); \
+		$(INSTALL_PROGRAM) unprotoize$(exeext) $(DESTDIR)$(bindir)/$(UNPROTOIZE_INSTALL_NAME)$(exeext); \
 	    fi ; \
-	    rm -f $(libsubdir)/SYSCALLS.c.X; \
-	    $(INSTALL_DATA) SYSCALLS.c.X $(libsubdir)/SYSCALLS.c.X; \
-	    chmod a-x $(libsubdir)/SYSCALLS.c.X; \
+	    rm -f $(DESTDIR)$(libsubdir)/SYSCALLS.c.X; \
+	    $(INSTALL_DATA) SYSCALLS.c.X $(DESTDIR)$(libsubdir)/SYSCALLS.c.X; \
+	    chmod a-x $(DESTDIR)$(libsubdir)/SYSCALLS.c.X; \
 	fi
 # Install gcov if it was compiled.
 	-if [ -f gcov$(exeext) ]; \
 	then \
-	    rm -f $(bindir)/gcov$(exeext); \
-	    $(INSTALL_PROGRAM) gcov$(exeext) $(bindir)/$(GCOV_INSTALL_NAME)$(exeext); \
+	    rm -f $(DESTDIR)$(bindir)/gcov$(exeext); \
+	    $(INSTALL_PROGRAM) gcov$(exeext) $(DESTDIR)$(bindir)/$(GCOV_INSTALL_NAME)$(exeext); \
 	fi
-	$(INSTALL_SCRIPT) gccbug $(bindir)/$(GCCBUG_INSTALL_NAME)
+	$(INSTALL_SCRIPT) gccbug $(DESTDIR)$(bindir)/$(GCCBUG_INSTALL_NAME)
 
 # Install the driver program as $(target_alias)-gcc, 
 # $(target-alias)-gcc-$(version)
 # and also as either gcc (if native) or $(gcc_tooldir)/bin/gcc.
 install-driver: installdirs xgcc$(exeext)
 	-if [ -f gcc-cross$(exeext) ] ; then \
-	  rm -f $(bindir)/$(GCC_CROSS_NAME)$(exeext); \
-	  $(INSTALL_PROGRAM) gcc-cross$(exeext) $(bindir)/$(GCC_CROSS_NAME)$(exeext); \
-	  rm -f $(bindir)/$(target_alias)-gcc-$(version); \
-	  $(LN) $(bindir)/$(GCC_CROSS_NAME)$(exeext) $(bindir)/$(target_alias)-gcc-$(version) ; \
-	  if [ -d $(gcc_tooldir)/bin/. ] ; then \
-	    rm -f $(gcc_tooldir)/bin/gcc$(exeext); \
-	    $(INSTALL_PROGRAM) gcc-cross$(exeext) $(gcc_tooldir)/bin/gcc$(exeext); \
+	  rm -f $(DESTDIR)$(bindir)/$(GCC_CROSS_NAME)$(exeext); \
+	  $(INSTALL_PROGRAM) gcc-cross$(exeext) $(DESTDIR)$(bindir)/$(GCC_CROSS_NAME)$(exeext); \
+	  rm -f $(DESTDIR)$(bindir)/$(target_alias)-gcc-$(version); \
+	  ( cd $(DESTDIR)$(bindir) && \
+	    $(LN) $(GCC_CROSS_NAME)$(exeext) $(target_alias)-gcc-$(version) ); \
+	  if [ -d $(DESTDIR)$(gcc_tooldir)/bin/. ] ; then \
+	    rm -f $(DESTDIR)$(gcc_tooldir)/bin/gcc$(exeext); \
+	    $(INSTALL_PROGRAM) gcc-cross$(exeext) $(DESTDIR)$(gcc_tooldir)/bin/gcc$(exeext); \
 	  else true; fi; \
 	else \
-	  rm -f $(bindir)/$(GCC_INSTALL_NAME)$(exeext); \
-	  $(INSTALL_PROGRAM) xgcc$(exeext) $(bindir)/$(GCC_INSTALL_NAME)$(exeext); \
-	  rm -f $(bindir)/$(target_alias)-gcc-$(version); \
-	  $(LN) $(bindir)/$(GCC_INSTALL_NAME)$(exeext) $(bindir)/$(target_alias)-gcc-$(version) ; \
-	  rm -f $(bindir)/$(target_alias)-gcc-tmp$(exeext); \
-	  $(LN) $(bindir)/$(GCC_INSTALL_NAME)$(exeext) $(bindir)/$(target_alias)-gcc-tmp$(exeext); \
-	  mv $(bindir)/$(target_alias)-gcc-tmp$(exeext) $(bindir)/$(GCC_TARGET_INSTALL_NAME)$(exeext); \
+	  rm -f $(DESTDIR)$(bindir)/$(GCC_INSTALL_NAME)$(exeext); \
+	  $(INSTALL_PROGRAM) xgcc$(exeext) $(DESTDIR)$(bindir)/$(GCC_INSTALL_NAME)$(exeext); \
+	  rm -f $(DESTDIR)$(bindir)/$(target_alias)-gcc-$(version); \
+	  ( cd $(DESTDIR)$(bindir) && \
+	    $(LN) $(GCC_INSTALL_NAME)$(exeext) $(target_alias)-gcc-$(version) ); \
+	  rm -f $(DESTDIR)$(bindir)/$(target_alias)-gcc-tmp$(exeext); \
+	  ( cd $(DESTDIR)$(bindir) && \
+	    $(LN) $(GCC_INSTALL_NAME)$(exeext) $(target_alias)-gcc-tmp$(exeext) && \
+	    mv -f $(target_alias)-gcc-tmp$(exeext) $(GCC_TARGET_INSTALL_NAME)$(exeext) ); \
 	fi
 
 # Install the info files.
 # $(INSTALL_DATA) might be a relative pathname, so we can't cd into srcdir
 # to do the install.
 install-info: doc installdirs lang.install-info
-	-rm -f $(infodir)/cpp.info* $(infodir)/gcc.info*
-	-rm -f $(infodir)/cppinternals.info* $(infodir)/gccint.info*
+	-rm -f $(DESTDIR)$(infodir)/cpp.info* $(DESTDIR)$(infodir)/gcc.info*
+	-rm -f $(DESTDIR)$(infodir)/cppinternals.info* $(DESTDIR)$(infodir)/gccint.info*
 	if [ -f $(docdir)/gcc.info ]; then \
 	  for f in $(docdir)/cpp.info* $(docdir)/gcc.info* \
 		$(docdir)/cppinternals.info* $(docdir)/gccint.info*; do \
 	    realfile=`echo $$f | sed -e 's|.*/\([^/]*\)$$|\1|'`; \
-	    $(INSTALL_DATA) $$f $(infodir)/$$realfile; \
+	    $(INSTALL_DATA) $$f $(DESTDIR)$(infodir)/$$realfile; \
 	  done; \
 	else true; fi
 	-if $(SHELL) -c 'install-info --version' >/dev/null 2>&1; then \
-	  if [ -f $(infodir)/dir ] ; then \
+	  if [ -f $(DESTDIR)$(infodir)/dir ] ; then \
 	    for f in cpp.info gcc.info gccint.info cppinternals.info; do \
-		if [ -f $(infodir)/$$f ]; then \
-		  install-info --dir-file=$(infodir)/dir $(infodir)/$$f; \
+		if [ -f $(DESTDIR)$(infodir)/$$f ]; then \
+		  install-info --dir-file=$(DESTDIR)$(infodir)/dir $(DESTDIR)$(infodir)/$$f; \
 		else true; fi; \
 	    done; \
 	  else true; fi; \
 	else true; fi;
-	-chmod a-x $(infodir)/cpp.info* $(infodir)/gcc.info*
-	-chmod a-x $(infodir)/cppinternals.info* $(infodir)/gccint.info*
+	-chmod a-x $(DESTDIR)$(infodir)/cpp.info* $(DESTDIR)$(infodir)/gcc.info*
+	-chmod a-x $(DESTDIR)$(infodir)/cppinternals.info* $(DESTDIR)$(infodir)/gccint.info*
 
 # Install the man pages.
 install-man: installdirs $(GENERATED_MANPAGES) lang.install-man
 	-if [ -f gcc-cross$(exeext) ] ; then \
-	  rm -f $(man1dir)/$(GCC_CROSS_NAME)$(man1ext); \
-	  $(INSTALL_DATA) $(docdir)/gcc.1 $(man1dir)/$(GCC_CROSS_NAME)$(man1ext); \
-	  chmod a-x $(man1dir)/$(GCC_CROSS_NAME)$(man1ext); \
+	  rm -f $(DESTDIR)$(man1dir)/$(GCC_CROSS_NAME)$(man1ext); \
+	  $(INSTALL_DATA) $(docdir)/gcc.1 $(DESTDIR)$(man1dir)/$(GCC_CROSS_NAME)$(man1ext); \
+	  chmod a-x $(DESTDIR)$(man1dir)/$(GCC_CROSS_NAME)$(man1ext); \
 	else \
-	  rm -f $(man1dir)/$(GCC_INSTALL_NAME)$(man1ext); \
-	  $(INSTALL_DATA) $(docdir)/gcc.1 $(man1dir)/$(GCC_INSTALL_NAME)$(man1ext); \
-	  chmod a-x $(man1dir)/$(GCC_INSTALL_NAME)$(man1ext); \
+	  rm -f $(DESTDIR)$(man1dir)/$(GCC_INSTALL_NAME)$(man1ext); \
+	  $(INSTALL_DATA) $(docdir)/gcc.1 $(DESTDIR)$(man1dir)/$(GCC_INSTALL_NAME)$(man1ext); \
+	  chmod a-x $(DESTDIR)$(man1dir)/$(GCC_INSTALL_NAME)$(man1ext); \
 	fi
-	-rm -f $(man1dir)/cpp$(man1ext)
-	-$(INSTALL_DATA) $(docdir)/cpp.1 $(man1dir)/cpp$(man1ext)
-	-chmod a-x $(man1dir)/cpp$(man1ext)
-	-rm -f $(man1dir)/gcov$(man1ext)
-	-$(INSTALL_DATA) $(docdir)/gcov.1 $(man1dir)/gcov$(man1ext)
-	-chmod a-x $(man1dir)/gcov$(man1ext)
-	-rm -f $(man7dir)/fsf-funding$(man7ext)
-	-$(INSTALL_DATA) $(docdir)/fsf-funding.7 $(man7dir)/fsf-funding$(man7ext)
-	-chmod a-x $(man7dir)/fsf-funding$(man7ext)
-	-rm -f $(man7dir)/gfdl$(man7ext)
-	-$(INSTALL_DATA) $(docdir)/gfdl.7 $(man7dir)/gfdl$(man7ext)
-	-chmod a-x $(man7dir)/gfdl$(man7ext)
-	-rm -f $(man7dir)/gpl$(man7ext)
-	-$(INSTALL_DATA) $(docdir)/gpl.7 $(man7dir)/gpl$(man7ext)
-	-chmod a-x $(man7dir)/gpl$(man7ext)
+	-rm -f $(DESTDIR)$(man1dir)/cpp$(man1ext)
+	-$(INSTALL_DATA) $(docdir)/cpp.1 $(DESTDIR)$(man1dir)/cpp$(man1ext)
+	-chmod a-x $(DESTDIR)$(man1dir)/cpp$(man1ext)
+	-rm -f $(DESTDIR)$(man1dir)/gcov$(man1ext)
+	-$(INSTALL_DATA) $(docdir)/gcov.1 $(DESTDIR)$(man1dir)/gcov$(man1ext)
+	-chmod a-x $(DESTDIR)$(man1dir)/gcov$(man1ext)
+	-rm -f $(DESTDIR)$(man7dir)/fsf-funding$(man7ext)
+	-$(INSTALL_DATA) $(docdir)/fsf-funding.7 $(DESTDIR)$(man7dir)/fsf-funding$(man7ext)
+	-chmod a-x $(DESTDIR)$(man7dir)/fsf-funding$(man7ext)
+	-rm -f $(DESTDIR)$(man7dir)/gfdl$(man7ext)
+	-$(INSTALL_DATA) $(docdir)/gfdl.7 $(DESTDIR)$(man7dir)/gfdl$(man7ext)
+	-chmod a-x $(DESTDIR)$(man7dir)/gfdl$(man7ext)
+	-rm -f $(DESTDIR)$(man7dir)/gpl$(man7ext)
+	-$(INSTALL_DATA) $(docdir)/gpl.7 $(DESTDIR)$(man7dir)/gpl$(man7ext)
+	-chmod a-x $(DESTDIR)$(man7dir)/gpl$(man7ext)
 
 # Install the library.
 install-libgcc: libgcc.mk libgcc.a installdirs
@@ -3000,23 +2991,23 @@
 # Fix symlinks to absolute paths in the installed include directory to
 # point to the installed directory, not the build directory.
 # Don't need to use LN_S here since we really do need ln -s and no substitutes.
-	-files=`cd $(libsubdir)/include; find . -type l -print 2>/dev/null`; \
+	-files=`cd $(DESTDIR)$(libsubdir)/include; find . -type l -print 2>/dev/null`; \
 	if [ $$? -eq 0 ]; then \
 	  dir=`cd include; ${PWD}`; \
 	  for i in $$files; do \
-	    dest=`ls -ld $(libsubdir)/include/$$i | sed -n 's/.*-> //p'`; \
+	    dest=`ls -ld $(DESTDIR)$(libsubdir)/include/$$i | sed -n 's/.*-> //p'`; \
 	    if expr "$$dest" : "$$dir.*" > /dev/null; then \
-	      rm -f $(libsubdir)/include/$$i; \
-	      ln -s `echo $$i | sed "s|/[^/]*|/..|g" | sed 's|/..$$||'``echo "$$dest" | sed "s|$$dir||"` $(libsubdir)/include/$$i; \
+	      rm -f $(DESTDIR)$(libsubdir)/include/$$i; \
+	      ln -s `echo $$i | sed "s|/[^/]*|/..|g" | sed 's|/..$$||'``echo "$$dest" | sed "s|$$dir||"` $(DESTDIR)$(libsubdir)/include/$$i; \
 	    fi; \
 	  done; \
 	fi
 
 # Create or recreate the gcc private include file directory.
 install-include-dir: installdirs
-	-rm -rf $(libsubdir)/include
-	mkdir $(libsubdir)/include
-	-chmod a+rx $(libsubdir)/include
+	-rm -rf $(DESTDIR)$(libsubdir)/include
+	mkdir $(DESTDIR)$(libsubdir)/include
+	-chmod a+rx $(DESTDIR)$(libsubdir)/include
 
 # Install the include directory using tar.
 install-headers-tar: stmp-int-hdrs $(STMP_FIXPROTO) install-include-dir
@@ -3025,7 +3016,7 @@
 # found in CDPATH, corrupting the output.  We could just redirect the
 # output of `cd', but some shells lose on redirection within `()'s
 	(cd `${PWD}`/include ; \
-	 tar -cf - .; exit 0) | (cd $(libsubdir)/include; tar xpf - )
+	 tar -cf - .; exit 0) | (cd $(DESTDIR)$(libsubdir)/include; tar xpf - )
 # /bin/sh on some systems returns the status of the first tar,
 # and that can lose with GNU tar which always writes a full block.
 # So use `exit 0' to ignore its exit status.
@@ -3034,78 +3025,78 @@
 install-headers-cpio: stmp-int-hdrs $(STMP_FIXPROTO) install-include-dir
 # See discussion about the use of `pwd` above
 	cd `${PWD}`/include ; \
-	find . -print | cpio -pdum $(libsubdir)/include
+	find . -print | cpio -pdum $(DESTDIR)$(libsubdir)/include
 
 # Install the include directory using cp.
 install-headers-cp: stmp-int-hdrs $(STMP_FIXPROTO) install-include-dir
-	cp -p -r include $(libsubdir)
+	cp -p -r include $(DESTDIR)$(libsubdir)
 
 itoolsdir = $(libsubdir)/install-tools
 # Don't install the headers.  Instead, install appropriate scripts
 # and supporting files for fixincludes to be run later.
 install-mkheaders: stmp-int-hdrs $(STMP_FIXPROTO) install-include-dir \
     mkheaders xlimits.h
-	-rm -rf $(itoolsdir)
-	$(SHELL) $(srcdir)/mkinstalldirs $(itoolsdir)/include
+	-rm -rf $(DESTDIR)$(itoolsdir)
+	$(SHELL) $(srcdir)/mkinstalldirs $(DESTDIR)$(itoolsdir)/include
 	for file in $(USER_H); do \
 	  realfile=`echo $$file | sed -e 's|.*/\([^/]*\)$$|\1|'`; \
 	  $(INSTALL_DATA) $$file \
-	    $(itoolsdir)/include/$$realfile ; \
+	    $(DESTDIR)$(itoolsdir)/include/$$realfile ; \
 	done
-	$(INSTALL_DATA) xlimits.h $(itoolsdir)/include/limits.h
+	$(INSTALL_DATA) xlimits.h $(DESTDIR)$(itoolsdir)/include/limits.h
 	if [ x$(STMP_FIXINC) != x ] ; then \
 	  $(INSTALL_DATA) $(srcdir)/README-fixinc \
-	    $(itoolsdir)/include/README ; \
-	  $(INSTALL_PROGRAM) fixinc.sh $(itoolsdir)/fixinc.sh ; \
-	  $(INSTALL_PROGRAM) fixinc/fixincl $(itoolsdir)/fixincl ; \
-	  $(INSTALL_DATA) $(srcdir)/gsyslimits.h $(itoolsdir)/gsyslimits.h ; \
+	    $(DESTDIR)$(itoolsdir)/include/README ; \
+	  $(INSTALL_PROGRAM) fixinc.sh $(DESTDIR)$(itoolsdir)/fixinc.sh ; \
+	  $(INSTALL_PROGRAM) fixinc/fixincl $(DESTDIR)$(itoolsdir)/fixincl ; \
+	  $(INSTALL_DATA) $(srcdir)/gsyslimits.h $(DESTDIR)$(itoolsdir)/gsyslimits.h ; \
 	else :; fi
 	if [ x$(STMP_FIXPROTO) != x ] ; then \
 	  $(INSTALL_PROGRAM) $(srcdir)/mkinstalldirs \
-		$(itoolsdir)/mkinstalldirs ; \
-	  $(INSTALL_PROGRAM) $(srcdir)/fixproto $(itoolsdir)/fixproto ; \
+		$(DESTDIR)$(itoolsdir)/mkinstalldirs ; \
+	  $(INSTALL_PROGRAM) $(srcdir)/fixproto $(DESTDIR)$(itoolsdir)/fixproto ; \
 	  $(INSTALL_PROGRAM) fix-header$(build_exeext) \
-		$(itoolsdir)/fix-header$(build_exeext) ; \
+		$(DESTDIR)$(itoolsdir)/fix-header$(build_exeext) ; \
 	else :; fi
-	$(INSTALL_PROGRAM) mkheaders $(itoolsdir)/mkheaders
+	$(INSTALL_PROGRAM) mkheaders $(DESTDIR)$(itoolsdir)/mkheaders
 	echo 'SYSTEM_HEADER_DIR="'"$(SYSTEM_HEADER_DIR)"'"' \
-		> $(itoolsdir)/mkheaders.conf
+		> $(DESTDIR)$(itoolsdir)/mkheaders.conf
 	echo 'OTHER_FIXINCLUDES_DIRS="$(OTHER_FIXINCLUDES_DIRS)"' \
-		>> $(itoolsdir)/mkheaders.conf
+		>> $(DESTDIR)$(itoolsdir)/mkheaders.conf
 	echo 'FIXPROTO_DEFINES="$(FIXPROTO_DEFINES)"' \
-		>> $(itoolsdir)/mkheaders.conf
-	echo 'STMP_FIXPROTO="$(STMP_FIXPROTO)"' >> $(itoolsdir)/mkheaders.conf
-	echo 'STMP_FIXINC="$(STMP_FIXINC)"' >> $(itoolsdir)/mkheaders.conf
+		>> $(DESTDIR)$(itoolsdir)/mkheaders.conf
+	echo 'STMP_FIXPROTO="$(STMP_FIXPROTO)"' >> $(DESTDIR)$(itoolsdir)/mkheaders.conf
+	echo 'STMP_FIXINC="$(STMP_FIXINC)"' >> $(DESTDIR)$(itoolsdir)/mkheaders.conf
 
 # Use this target to install the program `collect2' under the name `collect2'.
 install-collect2: collect2 installdirs
-	$(INSTALL_PROGRAM) collect2$(exeext) $(libsubdir)/collect2$(exeext)
+	$(INSTALL_PROGRAM) collect2$(exeext) $(DESTDIR)$(libsubdir)/collect2$(exeext)
 # Install the driver program as $(libsubdir)/gcc for collect2.
-	$(INSTALL_PROGRAM) xgcc$(exeext) $(libsubdir)/gcc$(exeext)
+	$(INSTALL_PROGRAM) xgcc$(exeext) $(DESTDIR)$(libsubdir)/gcc$(exeext)
 
 # Cancel installation by deleting the installed files.
 uninstall: intl.uninstall lang.uninstall
-	-rm -rf $(libsubdir)
-	-rm -rf $(bindir)/$(GCC_INSTALL_NAME)$(exeext)
-	-rm -rf $(bindir)/$(GCC_CROSS_NAME)$(exeext)
-	-rm -f $(bindir)/$(CPP_INSTALL_NAME)$(exeext)
-	-rm -f $(bindir)/$(CPP_CROSS_NAME)$(exeext)
+	-rm -rf $(DESTDIR)$(libsubdir)
+	-rm -rf $(DESTDIR)$(bindir)/$(GCC_INSTALL_NAME)$(exeext)
+	-rm -rf $(DESTDIR)$(bindir)/$(GCC_CROSS_NAME)$(exeext)
+	-rm -f $(DESTDIR)$(bindir)/$(CPP_INSTALL_NAME)$(exeext)
+	-rm -f $(DESTDIR)$(bindir)/$(CPP_CROSS_NAME)$(exeext)
 	-if [ x$(cpp_install_dir) != x ]; then \
-	  rm -f $(prefix)/$(cpp_install_dir)/$(CPP_INSTALL_NAME)$(exeext); \
-	  rm -f $(prefix)/$(cpp_install_dir)/$(CPP_CROSS_NAME)$(exeext); \
+	  rm -f $(DESTDIR)$(prefix)/$(cpp_install_dir)/$(CPP_INSTALL_NAME)$(exeext); \
+	  rm -f $(DESTDIR)$(prefix)/$(cpp_install_dir)/$(CPP_CROSS_NAME)$(exeext); \
 	else true; fi
-	-rm -rf $(bindir)/$(PROTOIZE_INSTALL_NAME)$(exeext)
-	-rm -rf $(bindir)/$(PROTOIZE_CROSS_NAME)$(exeext)
-	-rm -rf $(bindir)/$(UNPROTOIZE_INSTALL_NAME)$(exeext)
-	-rm -rf $(bindir)/$(UNPROTOIZE_CROSS_NAME)$(exeext)
-	-rm -rf $(bindir)/$(GCOV_INSTALL_NAME)$(exeext)
-	-rm -rf $(man1dir)/$(GCC_INSTALL_NAME)$(man1ext)
-	-rm -rf $(man1dir)/$(GCC_CROSS_NAME)$(man1ext)
-	-rm -rf $(man1dir)/cpp$(man1ext)
-	-rm -rf $(man1dir)/protoize$(man1ext)
-	-rm -rf $(man1dir)/unprotoize$(man1ext)
-	-rm -f $(infodir)/cpp.info* $(infodir)/gcc.info*
-	-rm -f $(infodir)/cppinternals.info* $(infodir)/gccint.info*
+	-rm -rf $(DESTDIR)$(bindir)/$(PROTOIZE_INSTALL_NAME)$(exeext)
+	-rm -rf $(DESTDIR)$(bindir)/$(PROTOIZE_CROSS_NAME)$(exeext)
+	-rm -rf $(DESTDIR)$(bindir)/$(UNPROTOIZE_INSTALL_NAME)$(exeext)
+	-rm -rf $(DESTDIR)$(bindir)/$(UNPROTOIZE_CROSS_NAME)$(exeext)
+	-rm -rf $(DESTDIR)$(bindir)/$(GCOV_INSTALL_NAME)$(exeext)
+	-rm -rf $(DESTDIR)$(man1dir)/$(GCC_INSTALL_NAME)$(man1ext)
+	-rm -rf $(DESTDIR)$(man1dir)/$(GCC_CROSS_NAME)$(man1ext)
+	-rm -rf $(DESTDIR)$(man1dir)/cpp$(man1ext)
+	-rm -rf $(DESTDIR)$(man1dir)/protoize$(man1ext)
+	-rm -rf $(DESTDIR)$(man1dir)/unprotoize$(man1ext)
+	-rm -f $(DESTDIR)$(infodir)/cpp.info* $(DESTDIR)$(infodir)/gcc.info*
+	-rm -f $(DESTDIR)$(infodir)/cppinternals.info* $(DESTDIR)$(infodir)/gccint.info*
 #
 # These targets are for the dejagnu testsuites. The file site.exp
 # contains global variables that all the testsuites will use.
Index: gcc/mkheaders.in
===================================================================
RCS file: /usr/local/src/cvs/gcc-cvs/gcc/gcc/mkheaders.in,v
retrieving revision 1.1
diff -u -r1.1 mkheaders.in
--- gcc/mkheaders.in	27 May 2002 04:24:54 -0000	1.1
+++ gcc/mkheaders.in	1 Jan 2003 13:16:11 -0000
@@ -37,6 +37,8 @@
     echo "  -v        Print more output (may be repeated for even more output)"
     echo "  --help    This help"
     echo "  --version Print version information"
+    echo "Environment:"
+    echo "  DESTDIR   Gets prepended to the paths of destination directories"
     exit 0
 fi
 
@@ -75,27 +77,27 @@
 itoolsdir=${libsubdir}/install-tools
 incdir=${libsubdir}/include
 
-. ${itoolsdir}/mkheaders.conf
+. ${DESTDIR}${itoolsdir}/mkheaders.conf
 
-cd ${itoolsdir}
-rm -rf ${incdir}/*
+cd ${DESTDIR}${itoolsdir}
+rm -rf ${DESTDIR}${incdir}/*
 
 if [ x${STMP_FIXINC} != x ] ; then
 	TARGET_MACHINE="${target}" target_canonical="${target}" \
-	    ${SHELL} ./fixinc.sh ${incdir} \
+	    ${SHELL} ./fixinc.sh ${DESTDIR}${incdir} \
 	    ${SYSTEM_HEADER_DIR} ${OTHER_FIXINCLUDES_DIRS}
-	rm -f ${incdir}/syslimits.h
-	if [ -f ${incdir}/limits.h ]; then
-	  mv ${incdir}/limits.h ${incdir}/syslimits.h
+	rm -f ${DESTDIR}${incdir}/syslimits.h
+	if [ -f ${DESTDIR}${incdir}/limits.h ]; then
+	  mv ${DESTDIR}${incdir}/limits.h ${DESTDIR}${incdir}/syslimits.h
 	else
-	  cp gsyslimits.h ${incdir}/syslimits.h
+	  cp gsyslimits.h ${DESTDIR}${incdir}/syslimits.h
 	fi
 fi
 
-cp include/* ${incdir}
+cp include/* ${DESTDIR}${incdir}
 
 if [ x${STMP_FIXPROTO} != x ] ; then
-  mkinstalldirs="${SHELL} ${itoolsdir}/mkinstalldirs"
+  mkinstalldirs="${SHELL} ${DESTDIR}${itoolsdir}/mkinstalldirs"
   export FIXPROTO_DEFINES mkinstalldirs
-  ${SHELL} fixproto ${incdir} ${incdir} ${SYSTEM_HEADER_DIR} || exit 1
+  ${SHELL} fixproto ${DESTDIR}${incdir} ${DESTDIR}${incdir} ${SYSTEM_HEADER_DIR} || exit 1
 fi
Index: gcc/mklibgcc.in
===================================================================
RCS file: /usr/local/src/cvs/gcc-cvs/gcc/gcc/mklibgcc.in,v
retrieving revision 1.47.8.3
diff -u -r1.47.8.3 mklibgcc.in
--- gcc/mklibgcc.in	1 Dec 2002 05:42:11 -0000	1.47.8.3
+++ gcc/mklibgcc.in	29 Dec 2002 19:20:13 -0000
@@ -19,6 +19,7 @@
 # FPBIT
 # FPBIT_FUNCS
 # LIB2_DIVMOD_FUNCS
+# DESTDIR
 # DPBIT
 # DPBIT_FUNCS
 # LIBGCC
@@ -436,10 +437,10 @@
   dir=`echo ${ml} | sed -e 's/;.*$//' -e 's/=/$(EQ)/g'`
   flags=`echo ${ml} | sed -e 's/^[^;]*;//' -e 's/@/ -/g'`;
   if [ $dir != . ]; then
-    ldir='$(libsubdir)'/$dir
+    ldir='$(DESTDIR)$(libsubdir)'/$dir
     echo "	if [ -d $ldir ]; then true; else mkdir $ldir; chmod a+rx $ldir; fi;"
   else
-    ldir='$(libsubdir)'
+    ldir='$(DESTDIR)$(libsubdir)'
   fi
   echo '	$(INSTALL_DATA)' ${dir}/libgcc.a ${ldir}/
   echo '	$(RANLIB_FOR_TARGET)' ${ldir}/libgcc.a
@@ -495,10 +496,10 @@
     dir=`echo ${ml} | sed -e 's/;.*$//' -e 's/=/$(EQ)/g'`
     if [ $dir != . ]; then
       out=${dir}/$f
-      ldir='$(libsubdir)'/$dir
+      ldir='$(DESTDIR)$(libsubdir)'/$dir
     else
       out=$f
-      ldir='$(libsubdir)'
+      ldir='$(DESTDIR)$(libsubdir)'
     fi
     echo '	$(INSTALL_DATA)' $out $ldir/
   done
Index: gcc/ada/Make-lang.in
===================================================================
RCS file: /usr/local/src/cvs/gcc-cvs/gcc/gcc/ada/Make-lang.in,v
retrieving revision 1.15.4.3
diff -u -r1.15.4.3 Make-lang.in
--- gcc/ada/Make-lang.in	1 Dec 2002 05:42:23 -0000	1.15.4.3
+++ gcc/ada/Make-lang.in	29 Dec 2002 15:05:35 -0000
@@ -394,30 +394,30 @@
 	$(srcdir)/ada/gnat_rm.info $(srcdir)/ada/gnat-style.info
 
 ada.install-info:
-	-rm -f $(infodir)/gnat_ug_*.info*
-	-rm -f $(infodir)/gnat_rm.info* 
-	-rm -f $(infodir)/gnat-style.info* 
+	-rm -f $(DESTDIR)$(infodir)/gnat_ug_*.info*
+	-rm -f $(DESTDIR)$(infodir)/gnat_rm.info* 
+	-rm -f $(DESTDIR)$(infodir)/gnat-style.info* 
 	if [ -f $(srcdir)/ada/gnat_ug_unx.info ]; then \
 	  for f in $(srcdir)/ada/gnat_ug_*.info* \
 		$(srcdir)/ada/gnat_rm.info* \
 		$(srcdir)/ada/gnat-style.info*; do \
 	    realfile=`echo $$f | sed -e 's|.*/\([^/]*\)$$|\1|'`; \
-	    $(INSTALL_DATA) $$f $(infodir)/$$realfile; \
+	    $(INSTALL_DATA) $$f $(DESTDIR)$(infodir)/$$realfile; \
 	  done; \
 	else true; fi
 	-if $(SHELL) -c 'install-info --version' >/dev/null 2>&1; then \
-	  if [ -f $(infodir)/dir ] ; then \
+	  if [ -f $(DESTDIR)$(infodir)/dir ] ; then \
 	    for f in gnat_ug_vms.info gnat_ug_wnt.info gnat_ug_unx.info \
 		gnat_ug_vxw.info gnat_rm.info gnat-style.info; do \
-		if [ -f $(infodir)/$$f ]; then \
-		  install-info --dir-file=$(infodir)/dir $(infodir)/$$f; \
+		if [ -f $(DESTDIR)$(infodir)/$$f ]; then \
+		  install-info --dir-file=$(DESTDIR)$(infodir)/dir $(DESTDIR)$(infodir)/$$f; \
 		else true; fi; \
 	    done; \
 	  else true; fi; \
 	else true; fi;
-	-chmod a-x $(infodir)/gnat_ug_vms.info* $(infodir)/gnat_ug_wnt.info*
-	-chmod a-x $(infodir)/gnat_ug_unx.info* $(infodir)/gnat_ug_vxw.info*
-	-chmod a-x $(infodir)/gnat_rm.info* $(infodir)/gnat-style.info*
+	-chmod a-x $(DESTDIR)$(infodir)/gnat_ug_vms.info* $(DESTDIR)$(infodir)/gnat_ug_wnt.info*
+	-chmod a-x $(DESTDIR)$(infodir)/gnat_ug_unx.info* $(DESTDIR)$(infodir)/gnat_ug_vxw.info*
+	-chmod a-x $(DESTDIR)$(infodir)/gnat_rm.info* $(DESTDIR)$(infodir)/gnat-style.info*
 
 ada/gnat_ug_unx.dvi : $(srcdir)/ada/gnat_ug_unx.texi \
 	$(srcdir)/doc/include/fdl.texi
@@ -469,217 +469,217 @@
 	 then \
 	  if [ -f gnatbind-cross$(exeext) ] ; \
 	  then \
-	    $(RM) $(bindir)/$(target_alias)-gnatbind$(exeext); \
-	    $(INSTALL_PROGRAM) gnatbind-cross$(exeext) $(bindir)/$(target_alias)-gnatbind$(exeext); \
-	    if [ -d $(tooldir)/bin/. ] ; then \
-	      rm -f $(tooldir)/bin/gnatbind$(exeext); \
-	      $(INSTALL_PROGRAM) gnatbind-cross$(exeext) $(tooldir)/bin/gnatbind$(exeext); \
+	    $(RM) $(DESTDIR)$(bindir)/$(target_alias)-gnatbind$(exeext); \
+	    $(INSTALL_PROGRAM) gnatbind-cross$(exeext) $(DESTDIR)$(bindir)/$(target_alias)-gnatbind$(exeext); \
+	    if [ -d $(DESTDIR)$(tooldir)/bin/. ] ; then \
+	      rm -f $(DESTDIR)$(tooldir)/bin/gnatbind$(exeext); \
+	      $(INSTALL_PROGRAM) gnatbind-cross$(exeext) $(DESTDIR)$(tooldir)/bin/gnatbind$(exeext); \
             fi; \
 	  else \
-	    $(RM) $(bindir)/gnatbind$(exeext); \
-	    $(INSTALL_PROGRAM) gnatbind$(exeext) $(bindir)/gnatbind$(exeext); \
+	    $(RM) $(DESTDIR)$(bindir)/gnatbind$(exeext); \
+	    $(INSTALL_PROGRAM) gnatbind$(exeext) $(DESTDIR)$(bindir)/gnatbind$(exeext); \
 	  fi ; \
 	fi
 	-if [ -f gnat1$(exeext) ] ; \
 	then \
 	  if [ -f gnatbl-cross$(exeext) ] ; \
 	  then \
-	    $(RM) $(bindir)/$(target_alias)-gnatbl$(exeext); \
-	    $(INSTALL_PROGRAM) gnatbl-cross$(exeext) $(bindir)/$(target_alias)-gnatbl$(exeext); \
-	    if [ -d $(tooldir)/bin/. ] ; then \
-	       rm -f $(tooldir)/bin/gnatbl$(exeext); \
-	       $(INSTALL_PROGRAM) gnatbl-cross$(exeext) $(tooldir)/bin/gnatbl$(exeext); \
+	    $(RM) $(DESTDIR)$(bindir)/$(target_alias)-gnatbl$(exeext); \
+	    $(INSTALL_PROGRAM) gnatbl-cross$(exeext) $(DESTDIR)$(bindir)/$(target_alias)-gnatbl$(exeext); \
+	    if [ -d $(DESTDIR)$(tooldir)/bin/. ] ; then \
+	       rm -f $(DESTDIR)$(tooldir)/bin/gnatbl$(exeext); \
+	       $(INSTALL_PROGRAM) gnatbl-cross$(exeext) $(DESTDIR)$(tooldir)/bin/gnatbl$(exeext); \
             fi; \
 	  else \
-	    $(RM) $(bindir)/gnatbl$(exeext); \
-	    $(INSTALL_PROGRAM) gnatbl$(exeext) $(bindir)/gnatbl$(exeext); \
+	    $(RM) $(DESTDIR)$(bindir)/gnatbl$(exeext); \
+	    $(INSTALL_PROGRAM) gnatbl$(exeext) $(DESTDIR)$(bindir)/gnatbl$(exeext); \
 	  fi ; \
 	fi
 	-if [ -f gnat1$(exeext) ] ; \
 	then \
 	  if [ -f gnatchop-cross$(shext) ] ; \
 	  then \
-	    $(RM) $(bindir)/$(target_alias)-gnatchop$(shext); \
-	    $(INSTALL_PROGRAM) $(srcdir)/ada/gnatchop$(shext) $(bindir)/$(target_alias)-gnatchop$(shext); \
-	    if [ -d $(tooldir)/bin/. ] ; then \
-	       rm -f $(tooldir)/bin/gnatchop$(shext); \
-	       $(INSTALL_PROGRAM) gnatchop$(shext) $(tooldir)/bin/gnatchop$(exeext); \
+	    $(RM) $(DESTDIR)$(bindir)/$(target_alias)-gnatchop$(shext); \
+	    $(INSTALL_PROGRAM) $(srcdir)/ada/gnatchop$(shext) $(DESTDIR)$(bindir)/$(target_alias)-gnatchop$(shext); \
+	    if [ -d $(DESTDIR)$(tooldir)/bin/. ] ; then \
+	       rm -f $(DESTDIR)$(tooldir)/bin/gnatchop$(shext); \
+	       $(INSTALL_PROGRAM) gnatchop$(shext) $(DESTDIR)$(tooldir)/bin/gnatchop$(exeext); \
             fi; \
 	  else \
-	    $(RM) $(bindir)/gnatchop$(shext); \
-	    $(INSTALL_PROGRAM) $(srcdir)/ada/gnatchop$(shext) $(bindir)/gnatchop$(shext); \
+	    $(RM) $(DESTDIR)$(bindir)/gnatchop$(shext); \
+	    $(INSTALL_PROGRAM) $(srcdir)/ada/gnatchop$(shext) $(DESTDIR)$(bindir)/gnatchop$(shext); \
 	  fi ; \
 	fi
 	-if [ -f gnat1$(exeext) ] ; \
 	then \
 	  if [ -f gnatchop-cross$(exeext) ] ; \
 	  then \
-	    $(RM) $(bindir)/$(target_alias)-gnatchop$(exeext); \
-	    $(INSTALL_PROGRAM) gnatchop-cross$(exeext) $(bindir)/$(target_alias)-gnatchop$(exeext); \
-	    if [ -d $(tooldir)/bin/. ] ; then \
-	       rm -f $(tooldir)/bin/gnatchop$(exeext); \
-	       $(INSTALL_PROGRAM) gnatchop-cross$(exeext) $(tooldir)/bin/gnatchop$(exeext); \
+	    $(RM) $(DESTDIR)$(bindir)/$(target_alias)-gnatchop$(exeext); \
+	    $(INSTALL_PROGRAM) gnatchop-cross$(exeext) $(DESTDIR)$(bindir)/$(target_alias)-gnatchop$(exeext); \
+	    if [ -d $(DESTDIR)$(tooldir)/bin/. ] ; then \
+	       rm -f $(DESTDIR)$(tooldir)/bin/gnatchop$(exeext); \
+	       $(INSTALL_PROGRAM) gnatchop-cross$(exeext) $(DESTDIR)$(tooldir)/bin/gnatchop$(exeext); \
             fi; \
 	  else \
-	    $(RM) $(bindir)/gnatchop$(exeext); \
-	    $(INSTALL_PROGRAM) gnatchop$(exeext) $(bindir)/gnatchop$(exeext); \
+	    $(RM) $(DESTDIR)$(bindir)/gnatchop$(exeext); \
+	    $(INSTALL_PROGRAM) gnatchop$(exeext) $(DESTDIR)$(bindir)/gnatchop$(exeext); \
 	  fi ; \
 	fi
 	-if [ -f gnat1$(exeext) ] ; \
 	then \
 	  if [ -f gnat-cross$(exeext) ] ; \
 	  then \
-	    $(RM) $(bindir)/$(target_alias)-gnat$(exeext); \
-	    $(INSTALL_PROGRAM) gnat-cross$(exeext) $(bindir)/$(target_alias)-gnat$(exeext); \
-	    if [ -d $(tooldir)/bin/. ] ; then \
-	       rm -f $(tooldir)/bin/gnat$(exeext); \
-	       $(INSTALL_PROGRAM) gnat-cross$(exeext) $(tooldir)/bin/gnat$(exeext); \
+	    $(RM) $(DESTDIR)$(bindir)/$(target_alias)-gnat$(exeext); \
+	    $(INSTALL_PROGRAM) gnat-cross$(exeext) $(DESTDIR)$(bindir)/$(target_alias)-gnat$(exeext); \
+	    if [ -d $(DESTDIR)$(tooldir)/bin/. ] ; then \
+	       rm -f $(DESTDIR)$(tooldir)/bin/gnat$(exeext); \
+	       $(INSTALL_PROGRAM) gnat-cross$(exeext) $(DESTDIR)$(tooldir)/bin/gnat$(exeext); \
             fi; \
 	  else \
-	    $(RM) $(bindir)/gnat$(exeext); \
-	    $(INSTALL_PROGRAM) gnat$(exeext) $(bindir)/gnat$(exeext); \
+	    $(RM) $(DESTDIR)$(bindir)/gnat$(exeext); \
+	    $(INSTALL_PROGRAM) gnat$(exeext) $(DESTDIR)$(bindir)/gnat$(exeext); \
 	  fi ; \
 	fi
 	-if [ -f gnat1$(exeext) ] ; \
 	then \
 	  if [ -f gnatkr-cross$(exeext) ] ; \
 	  then \
-	    $(RM) $(bindir)/$(target_alias)-gnatkr$(exeext); \
-	    $(INSTALL_PROGRAM) gnatkr-cross$(exeext) $(bindir)/$(target_alias)-gnatkr$(exeext); \
-	    if [ -d $(tooldir)/bin/. ] ; then \
-	       rm -f $(tooldir)/bin/gnatkr$(exeext); \
-	       $(INSTALL_PROGRAM) gnatkr-cross$(exeext) $(tooldir)/bin/gnatkr$(exeext); \
+	    $(RM) $(DESTDIR)$(bindir)/$(target_alias)-gnatkr$(exeext); \
+	    $(INSTALL_PROGRAM) gnatkr-cross$(exeext) $(DESTDIR)$(bindir)/$(target_alias)-gnatkr$(exeext); \
+	    if [ -d $(DESTDIR)$(tooldir)/bin/. ] ; then \
+	       rm -f $(DESTDIR)$(tooldir)/bin/gnatkr$(exeext); \
+	       $(INSTALL_PROGRAM) gnatkr-cross$(exeext) $(DESTDIR)$(tooldir)/bin/gnatkr$(exeext); \
             fi; \
 	  else \
-	    $(RM) $(bindir)/gnatkr$(exeext); \
-	    $(INSTALL_PROGRAM) gnatkr$(exeext) $(bindir)/gnatkr$(exeext); \
+	    $(RM) $(DESTDIR)$(bindir)/gnatkr$(exeext); \
+	    $(INSTALL_PROGRAM) gnatkr$(exeext) $(DESTDIR)$(bindir)/gnatkr$(exeext); \
 	  fi ; \
 	fi
 	-if [ -f gnat1$(exeext) ] ; \
 	then \
 	  if [ -f gnatlink-cross$(exeext) ] ; \
 	  then \
-	    $(RM) $(bindir)/$(target_alias)-gnatlink$(exeext); \
-	    $(INSTALL_PROGRAM) gnatlink-cross$(exeext) $(bindir)/$(target_alias)-gnatlink$(exeext); \
-	    if [ -d $(tooldir)/bin/. ] ; then \
-	       rm -f $(tooldir)/bin/gnatlink$(exeext); \
-	       $(INSTALL_PROGRAM) gnatlink-cross$(exeext) $(tooldir)/bin/gnatlink$(exeext); \
+	    $(RM) $(DESTDIR)$(bindir)/$(target_alias)-gnatlink$(exeext); \
+	    $(INSTALL_PROGRAM) gnatlink-cross$(exeext) $(DESTDIR)$(bindir)/$(target_alias)-gnatlink$(exeext); \
+	    if [ -d $(DESTDIR)$(tooldir)/bin/. ] ; then \
+	       rm -f $(DESTDIR)$(tooldir)/bin/gnatlink$(exeext); \
+	       $(INSTALL_PROGRAM) gnatlink-cross$(exeext) $(DESTDIR)$(tooldir)/bin/gnatlink$(exeext); \
             fi; \
 	  else \
-	    $(RM) $(bindir)/gnatlink$(exeext); \
-	    $(INSTALL_PROGRAM) gnatlink$(exeext) $(bindir)/gnatlink$(exeext); \
+	    $(RM) $(DESTDIR)$(bindir)/gnatlink$(exeext); \
+	    $(INSTALL_PROGRAM) gnatlink$(exeext) $(DESTDIR)$(bindir)/gnatlink$(exeext); \
 	  fi ; \
 	fi
 	-if [ -f gnat1$(exeext) ] ; \
 	then \
 	  if [ -f gnatls-cross$(exeext) ] ; \
 	  then \
-	    $(RM) $(bindir)/$(target_alias)-gnatls$(exeext); \
-	    $(INSTALL_PROGRAM) gnatls-cross$(exeext) $(bindir)/$(target_alias)-gnatls$(exeext); \
-	    if [ -d $(tooldir)/bin/. ] ; then \
-	       rm -f $(tooldir)/bin/gnatls$(exeext); \
-	       $(INSTALL_PROGRAM) gnatls-cross$(exeext) $(tooldir)/bin/gnatls$(exeext); \
+	    $(RM) $(DESTDIR)$(bindir)/$(target_alias)-gnatls$(exeext); \
+	    $(INSTALL_PROGRAM) gnatls-cross$(exeext) $(DESTDIR)$(bindir)/$(target_alias)-gnatls$(exeext); \
+	    if [ -d $(DESTDIR)$(tooldir)/bin/. ] ; then \
+	       rm -f $(DESTDIR)$(tooldir)/bin/gnatls$(exeext); \
+	       $(INSTALL_PROGRAM) gnatls-cross$(exeext) $(DESTDIR)$(tooldir)/bin/gnatls$(exeext); \
             fi; \
 	  else \
-	    $(RM) $(bindir)/gnatls$(exeext); \
-	    $(INSTALL_PROGRAM) gnatls$(exeext) $(bindir)/gnatls$(exeext); \
+	    $(RM) $(DESTDIR)$(bindir)/gnatls$(exeext); \
+	    $(INSTALL_PROGRAM) gnatls$(exeext) $(DESTDIR)$(bindir)/gnatls$(exeext); \
 	  fi ; \
 	fi
 	-if [ -f gnat1$(exeext) ] ; \
 	then \
 	  if [ -f gnatmake-cross$(exeext) ] ; \
 	  then \
-	    $(RM) $(bindir)/$(target_alias)-gnatmake$(exeext); \
-	    $(INSTALL_PROGRAM) gnatmake-cross$(exeext) $(bindir)/$(target_alias)-gnatmake$(exeext); \
-	    if [ -d $(tooldir)/bin/. ] ; then \
-	       rm -f $(tooldir)/bin/gnatmake$(exeext); \
-	       $(INSTALL_PROGRAM) gnatmake-cross$(exeext) $(tooldir)/bin/gnatmake$(exeext); \
+	    $(RM) $(DESTDIR)$(bindir)/$(target_alias)-gnatmake$(exeext); \
+	    $(INSTALL_PROGRAM) gnatmake-cross$(exeext) $(DESTDIR)$(bindir)/$(target_alias)-gnatmake$(exeext); \
+	    if [ -d $(DESTDIR)$(tooldir)/bin/. ] ; then \
+	       rm -f $(DESTDIR)$(tooldir)/bin/gnatmake$(exeext); \
+	       $(INSTALL_PROGRAM) gnatmake-cross$(exeext) $(DESTDIR)$(tooldir)/bin/gnatmake$(exeext); \
             fi; \
 	  else \
-	    $(RM) $(bindir)/gnatmake$(exeext); \
-	    $(INSTALL_PROGRAM) gnatmake$(exeext) $(bindir)/gnatmake$(exeext); \
+	    $(RM) $(DESTDIR)$(bindir)/gnatmake$(exeext); \
+	    $(INSTALL_PROGRAM) gnatmake$(exeext) $(DESTDIR)$(bindir)/gnatmake$(exeext); \
 	  fi ; \
 	fi
 	-if [ -f gnat1$(exeext) ] ; \
 	then \
 	  if [ -f gnatmem-cross$(exeext) ] ; \
 	  then \
-	    $(RM) $(bindir)/$(target_alias)-gnatmem$(exeext); \
-	    $(INSTALL_PROGRAM) gnatmem-cross$(exeext) $(bindir)/$(target_alias)-gnatmem$(exeext); \
+	    $(RM) $(DESTDIR)$(bindir)/$(target_alias)-gnatmem$(exeext); \
+	    $(INSTALL_PROGRAM) gnatmem-cross$(exeext) $(DESTDIR)$(bindir)/$(target_alias)-gnatmem$(exeext); \
 	  else \
-	    $(RM) $(bindir)/gnatmem$(exeext); \
-	    $(INSTALL_PROGRAM) gnatmem$(exeext) $(bindir)/gnatmem$(exeext); \
+	    $(RM) $(DESTDIR)$(bindir)/gnatmem$(exeext); \
+	    $(INSTALL_PROGRAM) gnatmem$(exeext) $(DESTDIR)$(bindir)/gnatmem$(exeext); \
 	  fi ; \
 	fi
 	-if [ -f gnat1$(exeext) ] ; \
 	then \
 	  if [ -f gnatname-cross$(exeext) ] ; \
 	  then \
-	    $(RM) $(bindir)/$(target_alias)-gnatname$(exeext); \
-	    $(INSTALL_PROGRAM) gnatname-cross$(exeext) $(bindir)/$(target_alias)-gnatname$(exeext); \
+	    $(RM) $(DESTDIR)$(bindir)/$(target_alias)-gnatname$(exeext); \
+	    $(INSTALL_PROGRAM) gnatname-cross$(exeext) $(DESTDIR)$(bindir)/$(target_alias)-gnatname$(exeext); \
 	  else \
-	    $(RM) $(bindir)/gnatname$(exeext); \
-	    $(INSTALL_PROGRAM) gnatname$(exeext) $(bindir)/gnatname$(exeext); \
+	    $(RM) $(DESTDIR)$(bindir)/gnatname$(exeext); \
+	    $(INSTALL_PROGRAM) gnatname$(exeext) $(DESTDIR)$(bindir)/gnatname$(exeext); \
 	  fi ; \
 	fi
 	-if [ -f gnat1$(exeext) ] ; \
 	then \
 	  if [ -f gnatprep-cross$(exeext) ] ; \
 	  then \
-	    $(RM) $(bindir)/$(target_alias)-gnatprep$(exeext); \
-	    $(INSTALL_PROGRAM) gnatprep-cross$(exeext) $(bindir)/$(target_alias)-gnatprep$(exeext); \
-	    if [ -d $(tooldir)/bin/. ] ; then \
-	       rm -f $(tooldir)/bin/gnatprep$(exeext); \
-	       $(INSTALL_PROGRAM) gnatprep-cross$(exeext) $(tooldir)/bin/gnatprep$(exeext); \
+	    $(RM) $(DESTDIR)$(bindir)/$(target_alias)-gnatprep$(exeext); \
+	    $(INSTALL_PROGRAM) gnatprep-cross$(exeext) $(DESTDIR)$(bindir)/$(target_alias)-gnatprep$(exeext); \
+	    if [ -d $(DESTDIR)$(tooldir)/bin/. ] ; then \
+	       rm -f $(DESTDIR)$(tooldir)/bin/gnatprep$(exeext); \
+	       $(INSTALL_PROGRAM) gnatprep-cross$(exeext) $(DESTDIR)$(tooldir)/bin/gnatprep$(exeext); \
             fi; \
 	  else \
-	    $(RM) $(bindir)/gnatprep$(exeext); \
-	    $(INSTALL_PROGRAM) gnatprep$(exeext) $(bindir)/gnatprep$(exeext); \
+	    $(RM) $(DESTDIR)$(bindir)/gnatprep$(exeext); \
+	    $(INSTALL_PROGRAM) gnatprep$(exeext) $(DESTDIR)$(bindir)/gnatprep$(exeext); \
 	  fi ; \
 	fi
 	-if [ -f gnat1$(exeext) ] ; \
 	then \
 	  if [ -f gnatpsta-cross$(exeext) ] ; \
 	  then \
-	    $(RM) $(bindir)/$(target_alias)-gnatpsta$(exeext); \
-	    $(INSTALL_PROGRAM) gnatpsta-cross$(exeext) $(bindir)/$(target_alias)-gnatpsta$(exeext); \
-	    if [ -d $(tooldir)/bin/. ] ; then \
-	       rm -f $(tooldir)/bin/gnatpsta$(exeext); \
-	       $(INSTALL_PROGRAM) gnatpsta-cross$(exeext) $(tooldir)/bin/gnatpsta$(exeext); \
+	    $(RM) $(DESTDIR)$(bindir)/$(target_alias)-gnatpsta$(exeext); \
+	    $(INSTALL_PROGRAM) gnatpsta-cross$(exeext) $(DESTDIR)$(bindir)/$(target_alias)-gnatpsta$(exeext); \
+	    if [ -d $(DESTDIR)$(tooldir)/bin/. ] ; then \
+	       rm -f $(DESTDIR)$(tooldir)/bin/gnatpsta$(exeext); \
+	       $(INSTALL_PROGRAM) gnatpsta-cross$(exeext) $(DESTDIR)$(tooldir)/bin/gnatpsta$(exeext); \
             fi; \
 	  else \
-	    $(RM) $(bindir)/gnatpsta$(exeext); \
-	    $(INSTALL_PROGRAM) gnatpsta$(exeext) $(bindir)/gnatpsta$(exeext); \
+	    $(RM) $(DESTDIR)$(bindir)/gnatpsta$(exeext); \
+	    $(INSTALL_PROGRAM) gnatpsta$(exeext) $(DESTDIR)$(bindir)/gnatpsta$(exeext); \
 	  fi ; \
 	fi
 	-if [ -f gnat1$(exeext) ] ; \
 	then \
 	  if [ -f gnatxref-cross$(exeext) ] ; \
 	  then \
-	    $(RM) $(bindir)/$(target_alias)-gnatxref$(exeext); \
-	    $(INSTALL_PROGRAM) gnatxref-cross$(exeext) $(bindir)/$(target_alias)-gnatxref$(exeext); \
+	    $(RM) $(DESTDIR)$(bindir)/$(target_alias)-gnatxref$(exeext); \
+	    $(INSTALL_PROGRAM) gnatxref-cross$(exeext) $(DESTDIR)$(bindir)/$(target_alias)-gnatxref$(exeext); \
 	  else \
-	    $(RM) $(bindir)/gnatxref$(exeext); \
-	    $(INSTALL_PROGRAM) gnatxref$(exeext) $(bindir)/gnatxref$(exeext); \
+	    $(RM) $(DESTDIR)$(bindir)/gnatxref$(exeext); \
+	    $(INSTALL_PROGRAM) gnatxref$(exeext) $(DESTDIR)$(bindir)/gnatxref$(exeext); \
 	  fi ; \
     fi
 	-if [ -f gnat1$(exeext) ] ; \
 	then \
 	  if [ -f gnatfind-cross$(exeext) ] ; \
 	  then \
-	    $(RM) $(bindir)/$(target_alias)-gnatfind$(exeext); \
-	    $(INSTALL_PROGRAM) gnatfind-cross$(exeext) $(bindir)/$(target_alias)-gnatfind$(exeext); \
+	    $(RM) $(DESTDIR)$(bindir)/$(target_alias)-gnatfind$(exeext); \
+	    $(INSTALL_PROGRAM) gnatfind-cross$(exeext) $(DESTDIR)$(bindir)/$(target_alias)-gnatfind$(exeext); \
 	  else \
-	    $(RM) $(bindir)/gnatfind$(exeext); \
-	    $(INSTALL_PROGRAM) gnatfind$(exeext) $(bindir)/gnatfind$(exeext); \
+	    $(RM) $(DESTDIR)$(bindir)/gnatfind$(exeext); \
+	    $(INSTALL_PROGRAM) gnatfind$(exeext) $(DESTDIR)$(bindir)/gnatfind$(exeext); \
 	  fi ; \
 	fi
 	-if [ -f gnat1$(exeext) ] ; \
 	then \
 	  if [ -f gnatchop$(exeext) ] ; \
 	  then \
-	    $(RM) $(bindir)/gnatchop$(exeext); \
-	    $(INSTALL_PROGRAM) gnatchop$(exeext) $(bindir)/gnatchop$(exeext); \
+	    $(RM) $(DESTDIR)$(bindir)/gnatchop$(exeext); \
+	    $(INSTALL_PROGRAM) gnatchop$(exeext) $(DESTDIR)$(bindir)/gnatchop$(exeext); \
 	  fi ; \
 #
 # Gnatlbr is only used on VMS.
@@ -688,8 +688,8 @@
 	then \
 	  if [ -f gnatlbr$(exeext) ] ; \
 	  then \
-	    $(RM) $(bindir)/gnatlbr$(exeext); \
-	    $(INSTALL_PROGRAM) gnatlbr$(exeext) $(bindir)/gnatlbr$(exeext); \
+	    $(RM) $(DESTDIR)$(bindir)/gnatlbr$(exeext); \
+	    $(INSTALL_PROGRAM) gnatlbr$(exeext) $(DESTDIR)$(bindir)/gnatlbr$(exeext); \
 	  fi ; \
 	fi
 #
@@ -697,8 +697,8 @@
 #
 	-if [ -f gnat1$(exeext) ] ; \
 	then \
-	    $(RM) $(bindir)/gnatdll$(exeext); \
-	    $(INSTALL_PROGRAM) gnatdll$(exeext) $(bindir)/gnatdll$(exeext); \
+	    $(RM) $(DESTDIR)$(bindir)/gnatdll$(exeext); \
+	    $(INSTALL_PROGRAM) gnatdll$(exeext) $(DESTDIR)$(bindir)/gnatdll$(exeext); \
 	fi
 #
 # Finally, install the library
@@ -715,46 +715,46 @@
 ada.install-man:
 
 ada.uninstall:
-	-$(RM) $(bindir)/gnatbind$(exeext)
-	-$(RM) $(bindir)/gnatbl$(exeext)
-	-$(RM) $(bindir)/gnatchop$(exeext)
-	-$(RM) $(bindir)/gnat$(exeext)
-	-$(RM) $(bindir)/gnatdll$(exeext)
-	-$(RM) $(bindir)/gnatkr$(exeext)
-	-$(RM) $(bindir)/gnatlink$(exeext)
-	-$(RM) $(bindir)/gnatls$(exeext)
-	-$(RM) $(bindir)/gnatmake$(exeext)
-	-$(RM) $(bindir)/gnatmem$(exeext)
-	-$(RM) $(bindir)/gnatname$(exeext)
-	-$(RM) $(bindir)/gnatprep$(exeext)
-	-$(RM) $(bindir)/gnatpsta$(exeext)
-	-$(RM) $(bindir)/$(target_alias)-gnatbind$(exeext)
-	-$(RM) $(bindir)/$(target_alias)-gnatbl$(exeext)
-	-$(RM) $(bindir)/$(target_alias)-gnatchop$(exeext)
-	-$(RM) $(bindir)/$(target_alias)-gnat$(exeext)
-	-$(RM) $(bindir)/$(target_alias)-gnatkr(exeext)
-	-$(RM) $(bindir)/$(target_alias)-gnatlink$(exeext)
-	-$(RM) $(bindir)/$(target_alias)-gnatls$(exeext)
-	-$(RM) $(bindir)/$(target_alias)-gnatmake$(exeext)
-	-$(RM) $(bindir)/$(target_alias)-gnatmem$(exeext)
-	-$(RM) $(bindir)/$(target_alias)-gnatname$(exeext)
-	-$(RM) $(bindir)/$(target_alias)-gnatprep$(exeext)
-	-$(RM) $(bindir)/$(target_alias)-gnatpsta$(exeext)
-	-$(RM) $(tooldir)/bin/gnatbind$(exeext)
-	-$(RM) $(tooldir)/bin/gnatbl$(exeext)
-	-$(RM) $(tooldir)/bin/gnatchop$(exeext)
-	-$(RM) $(tooldir)/bin/gnat$(exeext)
-	-$(RM) $(tooldir)/bin/gnatdll$(exeext)
-	-$(RM) $(tooldir)/bin/gnatkr$(exeext)
-	-$(RM) $(tooldir)/bin/gnatlink$(exeext)
-	-$(RM) $(tooldir)/bin/gnatls$(exeext)
-	-$(RM) $(tooldir)/bin/gnatmake$(exeext)
-	-$(RM) $(tooldir)/bin/gnatmem$(exeext)
-	-$(RM) $(tooldir)/bin/gnatname$(exeext)
-	-$(RM) $(tooldir)/bin/gnatprep$(exeext)
-	-$(RM) $(tooldir)/bin/gnatpsta$(exeext)
+	-$(RM) $(DESTDIR)$(bindir)/gnatbind$(exeext)
+	-$(RM) $(DESTDIR)$(bindir)/gnatbl$(exeext)
+	-$(RM) $(DESTDIR)$(bindir)/gnatchop$(exeext)
+	-$(RM) $(DESTDIR)$(bindir)/gnat$(exeext)
+	-$(RM) $(DESTDIR)$(bindir)/gnatdll$(exeext)
+	-$(RM) $(DESTDIR)$(bindir)/gnatkr$(exeext)
+	-$(RM) $(DESTDIR)$(bindir)/gnatlink$(exeext)
+	-$(RM) $(DESTDIR)$(bindir)/gnatls$(exeext)
+	-$(RM) $(DESTDIR)$(bindir)/gnatmake$(exeext)
+	-$(RM) $(DESTDIR)$(bindir)/gnatmem$(exeext)
+	-$(RM) $(DESTDIR)$(bindir)/gnatname$(exeext)
+	-$(RM) $(DESTDIR)$(bindir)/gnatprep$(exeext)
+	-$(RM) $(DESTDIR)$(bindir)/gnatpsta$(exeext)
+	-$(RM) $(DESTDIR)$(bindir)/$(target_alias)-gnatbind$(exeext)
+	-$(RM) $(DESTDIR)$(bindir)/$(target_alias)-gnatbl$(exeext)
+	-$(RM) $(DESTDIR)$(bindir)/$(target_alias)-gnatchop$(exeext)
+	-$(RM) $(DESTDIR)$(bindir)/$(target_alias)-gnat$(exeext)
+	-$(RM) $(DESTDIR)$(bindir)/$(target_alias)-gnatkr(exeext)
+	-$(RM) $(DESTDIR)$(bindir)/$(target_alias)-gnatlink$(exeext)
+	-$(RM) $(DESTDIR)$(bindir)/$(target_alias)-gnatls$(exeext)
+	-$(RM) $(DESTDIR)$(bindir)/$(target_alias)-gnatmake$(exeext)
+	-$(RM) $(DESTDIR)$(bindir)/$(target_alias)-gnatmem$(exeext)
+	-$(RM) $(DESTDIR)$(bindir)/$(target_alias)-gnatname$(exeext)
+	-$(RM) $(DESTDIR)$(bindir)/$(target_alias)-gnatprep$(exeext)
+	-$(RM) $(DESTDIR)$(bindir)/$(target_alias)-gnatpsta$(exeext)
+	-$(RM) $(DESTDIR)$(tooldir)/bin/gnatbind$(exeext)
+	-$(RM) $(DESTDIR)$(tooldir)/bin/gnatbl$(exeext)
+	-$(RM) $(DESTDIR)$(tooldir)/bin/gnatchop$(exeext)
+	-$(RM) $(DESTDIR)$(tooldir)/bin/gnat$(exeext)
+	-$(RM) $(DESTDIR)$(tooldir)/bin/gnatdll$(exeext)
+	-$(RM) $(DESTDIR)$(tooldir)/bin/gnatkr$(exeext)
+	-$(RM) $(DESTDIR)$(tooldir)/bin/gnatlink$(exeext)
+	-$(RM) $(DESTDIR)$(tooldir)/bin/gnatls$(exeext)
+	-$(RM) $(DESTDIR)$(tooldir)/bin/gnatmake$(exeext)
+	-$(RM) $(DESTDIR)$(tooldir)/bin/gnatmem$(exeext)
+	-$(RM) $(DESTDIR)$(tooldir)/bin/gnatname$(exeext)
+	-$(RM) $(DESTDIR)$(tooldir)/bin/gnatprep$(exeext)
+	-$(RM) $(DESTDIR)$(tooldir)/bin/gnatpsta$(exeext)
 # Gnatlbr and Gnatchop are only used on VMS
-	-$(RM) $(bindir)/gnatlbr$(exeext) $(bindir)/gnatchop$(exeext)
+	-$(RM) $(DESTDIR)$(bindir)/gnatlbr$(exeext) $(DESTDIR)$(bindir)/gnatchop$(exeext)
 
 # Clean hooks:
 # A lot of the ancillary files are deleted by the main makefile.
Index: gcc/ada/Makefile.in
===================================================================
RCS file: /usr/local/src/cvs/gcc-cvs/gcc/gcc/ada/Makefile.in,v
retrieving revision 1.35.4.1
diff -u -r1.35.4.1 Makefile.in
--- gcc/ada/Makefile.in	1 Oct 2002 17:31:57 -0000	1.35.4.1
+++ gcc/ada/Makefile.in	29 Dec 2002 15:26:10 -0000
@@ -1711,38 +1711,38 @@
 #	Create the directory before deleting it, in case the directory is
 #	a list of directories (as it may be on VMS). This ensures we are
 #	deleting the right one.
-	-$(MKDIR) $(ADA_RTL_OBJ_DIR)
-	-$(MKDIR) $(ADA_INCLUDE_DIR)
-	$(RMDIR) $(ADA_RTL_OBJ_DIR)
-	$(RMDIR) $(ADA_INCLUDE_DIR)
-	-$(MKDIR) $(ADA_RTL_OBJ_DIR)
-	-$(MKDIR) $(ADA_INCLUDE_DIR)
-	-$(INSTALL_DATA) ada/rts/Makefile.adalib $(ADA_RTL_OBJ_DIR)
+	-$(MKDIR) $(DESTDIR)$(ADA_RTL_OBJ_DIR)
+	-$(MKDIR) $(DESTDIR)$(ADA_INCLUDE_DIR)
+	$(RMDIR) $(DESTDIR)$(ADA_RTL_OBJ_DIR)
+	$(RMDIR) $(DESTDIR)$(ADA_INCLUDE_DIR)
+	-$(MKDIR) $(DESTDIR)$(ADA_RTL_OBJ_DIR)
+	-$(MKDIR) $(DESTDIR)$(ADA_INCLUDE_DIR)
+	-$(INSTALL_DATA) ada/rts/Makefile.adalib $(DESTDIR)$(ADA_RTL_OBJ_DIR)
 	for file in ada/rts/*.ali; do \
-	    $(INSTALL_DATA) $$file $(ADA_RTL_OBJ_DIR); \
+	    $(INSTALL_DATA) $$file $(DESTDIR)$(ADA_RTL_OBJ_DIR); \
 	done
 	-for file in ada/rts/*$(arext);do \
-	    $(INSTALL_DATA) $$file $(ADA_RTL_OBJ_DIR); \
+	    $(INSTALL_DATA) $$file $(DESTDIR)$(ADA_RTL_OBJ_DIR); \
 	done
 ifeq ($(strip $(filter-out alpha% dec vms% openvms% alphavms%,$(targ))),)
 	-for file in ada/rts/lib*$(soext);do \
-	    $(INSTALL_DATA) $$file $(ADA_RTL_OBJ_DIR); \
+	    $(INSTALL_DATA) $$file $(DESTDIR)$(ADA_RTL_OBJ_DIR); \
 	done
 else
 	-for file in ada/rts/lib*-**$(soext);do \
-	    $(INSTALL_DATA) $$file $(ADA_RTL_OBJ_DIR); \
+	    $(INSTALL_DATA) $$file $(DESTDIR)$(ADA_RTL_OBJ_DIR); \
 	done
 endif
-	-$(LN_S) $(ADA_RTL_OBJ_DIR)/libgnat-*$(soext) \
-	       $(ADA_RTL_OBJ_DIR)/libgnat$(soext)
-	-$(LN_S) $(ADA_RTL_OBJ_DIR)/libgnarl-*$(soext) \
-	       $(ADA_RTL_OBJ_DIR)/libgnarl$(soext)
+	-( cd $(DESTDIR)$(ADA_RTL_OBJ_DIR) && \
+	  $(LN_S) libgnat-*$(soext) libgnat$(soext) )
+	-( cd $(DESTDIR)$(ADA_RTL_OBJ_DIR) && \
+	  $(LN_S) libgnarl-*$(soext) libgnarl$(soext) )
 # This copy must be done preserving the date on the original file.
 	for file in ada/rts/*.adb ada/rts/*.ads; do \
-	    $(INSTALL_DATA_DATE) $$file $(ADA_INCLUDE_DIR); \
+	    $(INSTALL_DATA_DATE) $$file $(DESTDIR)$(ADA_INCLUDE_DIR); \
 	done
-	cd $(ADA_INCLUDE_DIR); $(CHMOD) a-wx *.adb
-	cd $(ADA_INCLUDE_DIR); $(CHMOD) a-wx *.ads
+	cd $(DESTDIR)$(ADA_INCLUDE_DIR); $(CHMOD) a-wx *.adb
+	cd $(DESTDIR)$(ADA_INCLUDE_DIR); $(CHMOD) a-wx *.ads
 
 ../stamp-gnatlib2:
 	$(RM) rts/s-*.ali
@@ -1854,7 +1854,7 @@
         endif
 
 install-rts: force
-	$(CP) -r rts-$(RTS_NAME) $(libsubdir)/
+	$(CP) -r rts-$(RTS_NAME) $(DESTDIR)$(libsubdir)/
 
 rts-none: force
 	$(MAKE) $(FLAGS_TO_PASS) prepare-rts \
Index: gcc/config/t-slibgcc-elf-ver
===================================================================
RCS file: /usr/local/src/cvs/gcc-cvs/gcc/gcc/config/t-slibgcc-elf-ver,v
retrieving revision 1.4
diff -u -r1.4 t-slibgcc-elf-ver
--- gcc/config/t-slibgcc-elf-ver	9 May 2002 21:01:53 -0000	1.4
+++ gcc/config/t-slibgcc-elf-ver	29 Dec 2002 15:57:46 -0000
@@ -19,11 +19,11 @@
 # $(slibdir) double quoted to protect it from expansion while building
 # libgcc.mk.  We want this delayed until actual install time.
 SHLIB_INSTALL = \
-	$$(SHELL) $$(srcdir)/mkinstalldirs $$(slibdir)$(SHLIB_SLIBDIR_QUAL); \
+	$$(SHELL) $$(srcdir)/mkinstalldirs $$(DESTDIR)$$(slibdir)$(SHLIB_SLIBDIR_QUAL); \
 	$(INSTALL_DATA) $(SHLIB_NAME) \
-	  $$(slibdir)$(SHLIB_SLIBDIR_QUAL)/$(SHLIB_SONAME); \
-	rm -f $$(slibdir)$(SHLIB_SLIBDIR_QUAL)/$(SHLIB_SOLINK); \
+	  $$(DESTDIR)$$(slibdir)$(SHLIB_SLIBDIR_QUAL)/$(SHLIB_SONAME); \
+	rm -f $$(DESTDIR)$$(slibdir)$(SHLIB_SLIBDIR_QUAL)/$(SHLIB_SOLINK); \
 	$(LN_S) $(SHLIB_SONAME) \
-	  $$(slibdir)$(SHLIB_SLIBDIR_QUAL)/$(SHLIB_SOLINK)
+	  $$(DESTDIR)$$(slibdir)$(SHLIB_SLIBDIR_QUAL)/$(SHLIB_SOLINK)
 SHLIB_MKMAP = $(srcdir)/mkmap-symver.awk
 SHLIB_MAPFILES = $(srcdir)/libgcc-std.ver
Index: gcc/config/t-slibgcc-sld
===================================================================
RCS file: /usr/local/src/cvs/gcc-cvs/gcc/gcc/config/t-slibgcc-sld,v
retrieving revision 1.3
diff -u -r1.3 t-slibgcc-sld
--- gcc/config/t-slibgcc-sld	9 May 2002 21:01:53 -0000	1.3
+++ gcc/config/t-slibgcc-sld	29 Dec 2002 15:58:30 -0000
@@ -17,11 +17,11 @@
 # $(slibdir) double quoted to protect it from expansion while building
 # libgcc.mk.  We want this delayed until actual install time.
 SHLIB_INSTALL = \
-	$$(SHELL) $$(srcdir)/mkinstalldirs $$(slibdir)$(SHLIB_SLIBDIR_QUAL); \
+	$$(SHELL) $$(srcdir)/mkinstalldirs $$(DESTDIR)$$(slibdir)$(SHLIB_SLIBDIR_QUAL); \
 	$(INSTALL_DATA) $(SHLIB_NAME) \
-	  $$(slibdir)$(SHLIB_SLIBDIR_QUAL)/$(SHLIB_SONAME); \
-	rm -f $$(slibdir)$(SHLIB_SLIBDIR_QUAL)/$(SHLIB_SOLINK); \
+	  $$(DESTDIR)$$(slibdir)$(SHLIB_SLIBDIR_QUAL)/$(SHLIB_SONAME); \
+	rm -f $$(DESTDIR)$$(slibdir)$(SHLIB_SLIBDIR_QUAL)/$(SHLIB_SOLINK); \
 	$(LN_S) $(SHLIB_SONAME) \
-	  $$(slibdir)$(SHLIB_SLIBDIR_QUAL)/$(SHLIB_SOLINK)
+	  $$(DESTDIR)$$(slibdir)$(SHLIB_SLIBDIR_QUAL)/$(SHLIB_SOLINK)
 SHLIB_MKMAP = $(srcdir)/mkmap-symver.awk
 SHLIB_MAPFILES = $(srcdir)/libgcc-std.ver
Index: gcc/config/alpha/t-osf4
===================================================================
RCS file: /usr/local/src/cvs/gcc-cvs/gcc/gcc/config/alpha/t-osf4,v
retrieving revision 1.5
diff -u -r1.5 t-osf4
--- gcc/config/alpha/t-osf4	13 Jun 2001 14:26:02 -0000	1.5
+++ gcc/config/alpha/t-osf4	29 Dec 2002 15:29:54 -0000
@@ -17,6 +17,6 @@
 	$(LN_S) $(SHLIB_NAME) $(SHLIB_SONAME)
 # $(slibdir) double quoted to protect it from expansion while building
 # libgcc.mk.  We want this delayed until actual install time.
-SHLIB_INSTALL = $(INSTALL_DATA) $(SHLIB_NAME) $$(slibdir)/$(SHLIB_SONAME); \
-	rm -f $$(slibdir)/$(SHLIB_NAME); \
-	$(LN_S) $(SHLIB_SONAME) $$(slibdir)/$(SHLIB_NAME)
+SHLIB_INSTALL = $(INSTALL_DATA) $(SHLIB_NAME) $$(DESTDIR)$$(slibdir)/$(SHLIB_SONAME); \
+	rm -f $$(DESTDIR)$$(slibdir)/$(SHLIB_NAME); \
+	$(LN_S) $(SHLIB_SONAME) $$(DESTDIR)$$(slibdir)/$(SHLIB_NAME)
Index: gcc/config/arc/t-arc
===================================================================
RCS file: /usr/local/src/cvs/gcc-cvs/gcc/gcc/config/arc/t-arc,v
retrieving revision 1.5
diff -u -r1.5 t-arc
--- gcc/config/arc/t-arc	31 May 2002 20:11:49 -0000	1.5
+++ gcc/config/arc/t-arc	29 Dec 2002 15:30:42 -0000
@@ -62,10 +62,10 @@
 install-multilib-arc: install-multilib
 	for i in `$(GCC_FOR_TARGET) --print-multi-lib`; do \
 	  dir=`echo $$i | sed -e 's/;.*$$//'`; \
-	  rm -f $(libsubdir)/$${dir}/crtinit.o; \
-	  $(INSTALL_DATA) $${dir}/crtinit.o $(libsubdir)/$${dir}/crtinit.o; \
-	  chmod a-x $(libsubdir)/$${dir}/crtinit.o; \
-	  rm -f $(libsubdir)/$${dir}/crtfini.o; \
-	  $(INSTALL_DATA) $${dir}/crtfini.o $(libsubdir)/$${dir}/crtfini.o; \
-	  chmod a-x $(libsubdir)/$${dir}/crtfini.o; \
+	  rm -f $(DESTDIR)$(libsubdir)/$${dir}/crtinit.o; \
+	  $(INSTALL_DATA) $${dir}/crtinit.o $(DESTDIR)$(libsubdir)/$${dir}/crtinit.o; \
+	  chmod a-x $(DESTDIR)$(libsubdir)/$${dir}/crtinit.o; \
+	  rm -f $(DESTDIR)$(libsubdir)/$${dir}/crtfini.o; \
+	  $(INSTALL_DATA) $${dir}/crtfini.o $(DESTDIR)$(libsubdir)/$${dir}/crtfini.o; \
+	  chmod a-x $(DESTDIR)$(libsubdir)/$${dir}/crtfini.o; \
 	done
Index: gcc/config/arm/t-netbsd
===================================================================
RCS file: /usr/local/src/cvs/gcc-cvs/gcc/gcc/config/arm/t-netbsd,v
retrieving revision 1.5
diff -u -r1.5 t-netbsd
--- gcc/config/arm/t-netbsd	13 Dec 2001 14:24:03 -0000	1.5
+++ gcc/config/arm/t-netbsd	29 Dec 2002 15:31:33 -0000
@@ -16,9 +16,9 @@
 	$(LN_S) $(SHLIB_NAME) $(SHLIB_SONAME)
 # $(slibdir) double quoted to protect it from expansion while building
 # libgcc.mk.  We want this delayed until actual install time.
-SHLIB_INSTALL = $(INSTALL_DATA) $(SHLIB_NAME) $$(slibdir)/$(SHLIB_SONAME); \
-	rm -f $$(slibdir)/$(SHLIB_NAME); \
-	$(LN_S) $(SHLIB_SONAME) $$(slibdir)/$(SHLIB_NAME)
+SHLIB_INSTALL = $(INSTALL_DATA) $(SHLIB_NAME) $$(DESTDIR)$$(slibdir)/$(SHLIB_SONAME); \
+	rm -f $$(DESTDIR)$$(slibdir)/$(SHLIB_NAME); \
+	$(LN_S) $(SHLIB_SONAME) $$(DESTDIR)$$(slibdir)/$(SHLIB_NAME)
 
 # Don't build enquire
 ENQUIRE=
Index: gcc/config/ia64/t-hpux
===================================================================
RCS file: /usr/local/src/cvs/gcc-cvs/gcc/gcc/config/ia64/t-hpux,v
retrieving revision 1.4.30.1
diff -u -r1.4.30.1 t-hpux
--- gcc/config/ia64/t-hpux	17 Sep 2002 22:59:00 -0000	1.4.30.1
+++ gcc/config/ia64/t-hpux	29 Dec 2002 15:32:48 -0000
@@ -40,9 +40,9 @@
 	$(LN_S) @shlib_base_name@.so @shlib_base_name@.so.0
 # $(slibdir) double quoted to protect it from expansion while building
 # libgcc.mk.  We want this delayed until actual install time.
-SHLIB_INSTALL = $(INSTALL_DATA) @shlib_base_name@.so $$(slibdir)/@shlib_base_name@.so.0; \
-	rm -f $$(slibdir)/@shlib_base_name@.so; \
-	$(LN_S) @shlib_base_name@.so.0 $$(slibdir)/@shlib_base_name@.so; \
-	chmod +x $$(slibdir)/@shlib_base_name@.so
+SHLIB_INSTALL = $(INSTALL_DATA) @shlib_base_name@.so $$(DESTDIR)$$(slibdir)/@shlib_base_name@.so.0; \
+	rm -f $$(DESTDIR)$$(slibdir)/@shlib_base_name@.so; \
+	$(LN_S) @shlib_base_name@.so.0 $$(DESTDIR)$$(slibdir)/@shlib_base_name@.so; \
+	chmod +x $$(DESTDIR)$$(slibdir)/@shlib_base_name@.so
 
 SHLIB_MKMAP = $(srcdir)/mkmap-flat.awk
Index: gcc/config/mips/t-iris5-6
===================================================================
RCS file: /usr/local/src/cvs/gcc-cvs/gcc/gcc/config/mips/t-iris5-6,v
retrieving revision 1.2
diff -u -r1.2 t-iris5-6
--- gcc/config/mips/t-iris5-6	29 Jul 2002 22:21:41 -0000	1.2
+++ gcc/config/mips/t-iris5-6	29 Dec 2002 15:40:17 -0000
@@ -20,11 +20,11 @@
 # $(slibdir) double quoted to protect it from expansion while building
 # libgcc.mk.  We want this delayed until actual install time.
 SHLIB_INSTALL = \
-	$$(SHELL) $$(srcdir)/mkinstalldirs $$(slibdir)$(SHLIB_SLIBDIR_QUAL); \
+	$$(SHELL) $$(srcdir)/mkinstalldirs $$(DESTDIR)$$(slibdir)$(SHLIB_SLIBDIR_QUAL); \
 	$(INSTALL_DATA) $(SHLIB_NAME) \
-	  $$(slibdir)$(SHLIB_SLIBDIR_QUAL)/$(SHLIB_SONAME); \
-	rm -f $$(slibdir)$(SHLIB_SLIBDIR_QUAL)/$(SHLIB_SOLINK); \
+	  $$(DESTDIR)$$(slibdir)$(SHLIB_SLIBDIR_QUAL)/$(SHLIB_SONAME); \
+	rm -f $$(DESTDIR)$$(slibdir)$(SHLIB_SLIBDIR_QUAL)/$(SHLIB_SOLINK); \
 	$(LN_S) $(SHLIB_SONAME) \
-	  $$(slibdir)$(SHLIB_SLIBDIR_QUAL)/$(SHLIB_SOLINK)
+	  $$(DESTDIR)$$(slibdir)$(SHLIB_SLIBDIR_QUAL)/$(SHLIB_SOLINK)
 SHLIB_MKMAP = $(srcdir)/mkmap-flat.awk
 SHLIB_MAPFILES = $(srcdir)/libgcc-std.ver
Index: gcc/config/pa/t-hpux-shlib
===================================================================
RCS file: /usr/local/src/cvs/gcc-cvs/gcc/gcc/config/pa/t-hpux-shlib,v
retrieving revision 1.1
diff -u -r1.1 t-hpux-shlib
--- gcc/config/pa/t-hpux-shlib	19 Dec 2001 17:59:05 -0000	1.1
+++ gcc/config/pa/t-hpux-shlib	29 Dec 2002 15:50:17 -0000
@@ -13,7 +13,7 @@
 # $(slibdir) double quoted to protect it from expansion while building
 # libgcc.mk.  We want this delayed until actual install time.
 SHLIB_INSTALL = $(INSTALL_DATA) -m 555 $(SHLIB_NAME) \
-	$$(slibdir)/$(SHLIB_SONAME); \
-        rm -f $$(slibdir)/$(SHLIB_NAME); \
-        $(LN_S) $(SHLIB_SONAME) $$(slibdir)/$(SHLIB_NAME)
+	$$(DESTDIR)$$(slibdir)/$(SHLIB_SONAME); \
+        rm -f $$(DESTDIR)$$(slibdir)/$(SHLIB_NAME); \
+        $(LN_S) $(SHLIB_SONAME) $$(DESTDIR)$$(slibdir)/$(SHLIB_NAME)
 
Index: gcc/config/rs6000/t-aix43
===================================================================
RCS file: /usr/local/src/cvs/gcc-cvs/gcc/gcc/config/rs6000/t-aix43,v
retrieving revision 1.18
diff -u -r1.18 t-aix43
--- gcc/config/rs6000/t-aix43	20 Jul 2002 02:20:16 -0000	1.18
+++ gcc/config/rs6000/t-aix43	29 Dec 2002 15:51:09 -0000
@@ -55,7 +55,7 @@
 	rm -f @multilib_dir@/shr.o
 # $(slibdir) double quoted to protect it from expansion while building
 # libgcc.mk.  We want this delayed until actual install time.
-SHLIB_INSTALL = $(INSTALL_DATA) @shlib_base_name@.a $$(slibdir)/
+SHLIB_INSTALL = $(INSTALL_DATA) @shlib_base_name@.a $$(DESTDIR)$$(slibdir)/
 SHLIB_LIBS = -lc `case @shlib_base_name@ in *pthread*) echo -lpthread ;; esac`
 SHLIB_MKMAP = $(srcdir)/mkmap-flat.awk
 SHLIB_MAPFILES = $(srcdir)/libgcc-std.ver
Index: gcc/config/rs6000/t-aix52
===================================================================
RCS file: /usr/local/src/cvs/gcc-cvs/gcc/gcc/config/rs6000/t-aix52,v
retrieving revision 1.1.2.1
diff -u -r1.1.2.1 t-aix52
--- gcc/config/rs6000/t-aix52	15 Oct 2002 01:33:19 -0000	1.1.2.1
+++ gcc/config/rs6000/t-aix52	29 Dec 2002 15:54:58 -0000
@@ -36,7 +36,7 @@
 	rm -f @multilib_dir@/shr.o
 # $(slibdir) double quoted to protect it from expansion while building
 # libgcc.mk.  We want this delayed until actual install time.
-SHLIB_INSTALL = $(INSTALL_DATA) @shlib_base_name@.a $$(slibdir)/
+SHLIB_INSTALL = $(INSTALL_DATA) @shlib_base_name@.a $$(DESTDIR)$$(slibdir)/
 SHLIB_LIBS = -lc `case @shlib_base_name@ in *pthread*) echo -lpthread ;; esac`
 SHLIB_MKMAP = $(srcdir)/mkmap-flat.awk
 SHLIB_MAPFILES = $(srcdir)/libgcc-std.ver
Index: gcc/cp/Make-lang.in
===================================================================
RCS file: /usr/local/src/cvs/gcc-cvs/gcc/gcc/cp/Make-lang.in,v
retrieving revision 1.121.4.4
diff -u -r1.121.4.4 Make-lang.in
--- gcc/cp/Make-lang.in	1 Dec 2002 05:42:51 -0000	1.121.4.4
+++ gcc/cp/Make-lang.in	29 Dec 2002 16:08:56 -0000
@@ -142,27 +142,32 @@
 c++.install-common: installdirs
 	-if [ -f cc1plus$(exeext) ] ; then \
 	  if [ -f g++-cross$(exeext) ] ; then \
-	    rm -f $(bindir)/$(GXX_CROSS_NAME)$(exeext); \
-	    $(INSTALL_PROGRAM) g++-cross$(exeext) $(bindir)/$(GXX_CROSS_NAME)$(exeext); \
-	    chmod a+x $(bindir)/$(GXX_CROSS_NAME)$(exeext); \
-	    rm -f $(bindir)/$(CXX_CROSS_NAME)$(exeext); \
-	    $(LN) $(bindir)/$(GXX_CROSS_NAME)$(exeext) $(bindir)/$(CXX_CROSS_NAME)$(exeext); \
-	    if [ -d $(gcc_tooldir)/bin/. ] ; then \
-	      rm -f $(gcc_tooldir)/bin/g++$(exeext); \
-	      $(INSTALL_PROGRAM) g++-cross$(exeext) $(gcc_tooldir)/bin/g++$(exeext); \
-	      rm -f $(gcc_tooldir)/bin/c++$(exeext); \
-	      $(LN) $(gcc_tooldir)/bin/g++$(exeext) $(gcc_tooldir)/bin/c++$(exeext); \
+	    rm -f $(DESTDIR)$(bindir)/$(GXX_CROSS_NAME)$(exeext); \
+	    $(INSTALL_PROGRAM) g++-cross$(exeext) $(DESTDIR)$(bindir)/$(GXX_CROSS_NAME)$(exeext); \
+	    chmod a+x $(DESTDIR)$(bindir)/$(GXX_CROSS_NAME)$(exeext); \
+	    rm -f $(DESTDIR)$(bindir)/$(CXX_CROSS_NAME)$(exeext); \
+	    ( cd $(DESTDIR)$(bindir) && \
+	      $(LN) $(GXX_CROSS_NAME)$(exeext) $(CXX_CROSS_NAME)$(exeext) ); \
+	    if [ -d $(DESTDIR)$(gcc_tooldir)/bin/. ] ; then \
+	      rm -f $(DESTDIR)$(gcc_tooldir)/bin/g++$(exeext); \
+	      $(INSTALL_PROGRAM) g++-cross$(exeext) $(DESTDIR)$(gcc_tooldir)/bin/g++$(exeext); \
+	      rm -f $(DESTDIR)$(gcc_tooldir)/bin/c++$(exeext); \
+	      ( cd $(DESTDIR)$(gcc_tooldir)/bin && \
+	        $(LN) g++$(exeext) c++$(exeext) ); \
 	    else true; fi; \
 	  else \
-	    rm -f $(bindir)/$(GXX_INSTALL_NAME)$(exeext); \
-	    $(INSTALL_PROGRAM) g++$(exeext) $(bindir)/$(GXX_INSTALL_NAME)$(exeext); \
-	    chmod a+x $(bindir)/$(GXX_INSTALL_NAME)$(exeext); \
-	    rm -f $(bindir)/$(CXX_INSTALL_NAME)$(exeext); \
-	    $(LN) $(bindir)/$(GXX_INSTALL_NAME)$(exeext) $(bindir)/$(CXX_INSTALL_NAME)$(exeext); \
-	    rm -f $(bindir)/$(GXX_TARGET_INSTALL_NAME)$(exeext); \
-	    $(LN) $(bindir)/$(GXX_INSTALL_NAME)$(exeext) $(bindir)/$(GXX_TARGET_INSTALL_NAME)$(exeext); \
-	    rm -f $(bindir)/$(CXX_TARGET_INSTALL_NAME)$(exeext); \
-	    $(LN) $(bindir)/$(CXX_INSTALL_NAME)$(exeext) $(bindir)/$(CXX_TARGET_INSTALL_NAME)$(exeext); \
+	    rm -f $(DESTDIR)$(bindir)/$(GXX_INSTALL_NAME)$(exeext); \
+	    $(INSTALL_PROGRAM) g++$(exeext) $(DESTDIR)$(bindir)/$(GXX_INSTALL_NAME)$(exeext); \
+	    chmod a+x $(DESTDIR)$(bindir)/$(GXX_INSTALL_NAME)$(exeext); \
+	    rm -f $(DESTDIR)$(bindir)/$(CXX_INSTALL_NAME)$(exeext); \
+	    ( cd $(DESTDIR)$(bindir) && \
+	      $(LN) $(GXX_INSTALL_NAME)$(exeext) $(CXX_INSTALL_NAME)$(exeext) ); \
+	    rm -f $(DESTDIR)$(bindir)/$(GXX_TARGET_INSTALL_NAME)$(exeext); \
+	    ( cd $(DESTDIR)$(bindir) && \
+	      $(LN) $(GXX_INSTALL_NAME)$(exeext) $(GXX_TARGET_INSTALL_NAME)$(exeext) ); \
+	    rm -f $(DESTDIR)$(bindir)/$(CXX_TARGET_INSTALL_NAME)$(exeext); \
+	    ( cd $(DESTDIR)$(bindir) && \
+	      $(LN) $(CXX_INSTALL_NAME)$(exeext) $(CXX_TARGET_INSTALL_NAME)$(exeext) ); \
 	  fi ; \
 	fi
 
@@ -171,23 +176,23 @@
 c++.install-man: installdirs $(srcdir)/cp/g++.1
 	-if [ -f cc1plus$(exeext) ] ; then \
 	  if [ -f g++-cross$(exeext) ] ; then \
-	    rm -f $(man1dir)/$(GXX_CROSS_NAME)$(man1ext); \
-	    $(INSTALL_DATA) $(srcdir)/cp/g++.1 $(man1dir)/$(GXX_CROSS_NAME)$(man1ext); \
-	    chmod a-x $(man1dir)/$(GXX_CROSS_NAME)$(man1ext); \
+	    rm -f $(DESTDIR)$(man1dir)/$(GXX_CROSS_NAME)$(man1ext); \
+	    $(INSTALL_DATA) $(srcdir)/cp/g++.1 $(DESTDIR)$(man1dir)/$(GXX_CROSS_NAME)$(man1ext); \
+	    chmod a-x $(DESTDIR)$(man1dir)/$(GXX_CROSS_NAME)$(man1ext); \
 	  else \
-	    rm -f $(man1dir)/$(GXX_INSTALL_NAME)$(man1ext); \
-	    $(INSTALL_DATA) $(srcdir)/cp/g++.1 $(man1dir)/$(GXX_INSTALL_NAME)$(man1ext); \
-	    chmod a-x $(man1dir)/$(GXX_INSTALL_NAME)$(man1ext); \
+	    rm -f $(DESTDIR)$(man1dir)/$(GXX_INSTALL_NAME)$(man1ext); \
+	    $(INSTALL_DATA) $(srcdir)/cp/g++.1 $(DESTDIR)$(man1dir)/$(GXX_INSTALL_NAME)$(man1ext); \
+	    chmod a-x $(DESTDIR)$(man1dir)/$(GXX_INSTALL_NAME)$(man1ext); \
 	  fi; \
 	else true; fi
 
 c++.uninstall:
-	-rm -rf $(bindir)/$(CXX_INSTALL_NAME)$(exeext)
-	-rm -rf $(bindir)/$(CXX_CROSS_NAME)$(exeext)
-	-rm -rf $(bindir)/$(GXX_INSTALL_NAME)$(exeext)
-	-rm -rf $(bindir)/$(GXX_CROSS_NAME)$(exeext)
-	-rm -rf $(man1dir)/$(GXX_INSTALL_NAME)$(man1ext)
-	-rm -rf $(man1dir)/$(GXX_CROSS_NAME)$(man1ext)
+	-rm -rf $(DESTDIR)$(bindir)/$(CXX_INSTALL_NAME)$(exeext)
+	-rm -rf $(DESTDIR)$(bindir)/$(CXX_CROSS_NAME)$(exeext)
+	-rm -rf $(DESTDIR)$(bindir)/$(GXX_INSTALL_NAME)$(exeext)
+	-rm -rf $(DESTDIR)$(bindir)/$(GXX_CROSS_NAME)$(exeext)
+	-rm -rf $(DESTDIR)$(man1dir)/$(GXX_INSTALL_NAME)$(man1ext)
+	-rm -rf $(DESTDIR)$(man1dir)/$(GXX_CROSS_NAME)$(man1ext)
 #
 # Clean hooks:
 # A lot of the ancillary files are deleted by the main makefile.
Index: gcc/f/Make-lang.in
===================================================================
RCS file: /usr/local/src/cvs/gcc-cvs/gcc/gcc/f/Make-lang.in,v
retrieving revision 1.112.2.4
diff -u -r1.112.2.4 Make-lang.in
--- gcc/f/Make-lang.in	3 Dec 2002 02:25:49 -0000	1.112.2.4
+++ gcc/f/Make-lang.in	29 Dec 2002 16:17:12 -0000
@@ -244,13 +244,13 @@
 f77.install-common: installdirs
 	-if [ -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); \
-	    chmod a+x $(bindir)/$(G77_CROSS_NAME)$(exeext); \
+	    rm -f $(DESTDIR)$(bindir)/$(G77_CROSS_NAME)$(exeext); \
+	    $(INSTALL_PROGRAM) g77-cross$(exeext) $(DESTDIR)$(bindir)/$(G77_CROSS_NAME)$(exeext); \
+	    chmod a+x $(DESTDIR)$(bindir)/$(G77_CROSS_NAME)$(exeext); \
 	  else \
-	    rm -f $(bindir)/$(G77_INSTALL_NAME)$(exeext); \
-	    $(INSTALL_PROGRAM) g77$(exeext) $(bindir)/$(G77_INSTALL_NAME)$(exeext); \
-	    chmod a+x $(bindir)/$(G77_INSTALL_NAME)$(exeext); \
+	    rm -f $(DESTDIR)$(bindir)/$(G77_INSTALL_NAME)$(exeext); \
+	    $(INSTALL_PROGRAM) g77$(exeext) $(DESTDIR)$(bindir)/$(G77_INSTALL_NAME)$(exeext); \
+	    chmod a+x $(DESTDIR)$(bindir)/$(G77_INSTALL_NAME)$(exeext); \
 	  fi ; \
 	else true; fi
 	@if [ -f f77-install-ok -o -f $(srcdir)/f77-install-ok ]; then \
@@ -267,43 +267,43 @@
 # to do the install.  The sed rule was copied from stmp-int-hdrs.
 f77.install-info: f77.info installdirs
 	if [ -f $(srcdir)/f/g77.info ] ; then \
-	  rm -f $(infodir)/g77.info*; \
+	  rm -f $(DESTDIR)$(infodir)/g77.info*; \
 	  for f in $(srcdir)/f/g77.info*; do \
 	      realfile=`echo $$f | sed -e 's|.*/\([^/]*\)$$|\1|'`; \
-	      $(INSTALL_DATA) $$f $(infodir)/$$realfile; \
+	      $(INSTALL_DATA) $$f $(DESTDIR)$(infodir)/$$realfile; \
 	  done; \
-	  chmod a-x $(infodir)/g77.info*; \
+	  chmod a-x $(DESTDIR)$(infodir)/g77.info*; \
 	else true; fi
 	@if [ -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 || : ; \
+	    echo " install-info --info-dir=$(DESTDIR)$(infodir) $(DESTDIR)$(infodir)/g77.info"; \
+	    install-info --info-dir=$(DESTDIR)$(infodir) $(DESTDIR)$(infodir)/g77.info || : ; \
 	  else : ; fi; \
 	else : ; fi
 
 f77.install-man: $(GENERATED_MANPAGES) installdirs
 	-if [ -f f771$(exeext) ] ; then \
 	  if [ -f g77-cross$(exeext) ] ; then \
-	    rm -f $(man1dir)/$(G77_CROSS_NAME)$(man1ext); \
-	    $(INSTALL_DATA) $(srcdir)/f/g77.1 $(man1dir)/$(G77_CROSS_NAME)$(man1ext); \
-	    chmod a-x $(man1dir)/$(G77_CROSS_NAME)$(man1ext); \
+	    rm -f $(DESTDIR)$(man1dir)/$(G77_CROSS_NAME)$(man1ext); \
+	    $(INSTALL_DATA) $(srcdir)/f/g77.1 $(DESTDIR)$(man1dir)/$(G77_CROSS_NAME)$(man1ext); \
+	    chmod a-x $(DESTDIR)$(man1dir)/$(G77_CROSS_NAME)$(man1ext); \
 	  else \
-	    rm -f $(man1dir)/$(G77_INSTALL_NAME)$(man1ext); \
-	    $(INSTALL_DATA) $(srcdir)/f/g77.1 $(man1dir)/$(G77_INSTALL_NAME)$(man1ext); \
-	    chmod a-x $(man1dir)/$(G77_INSTALL_NAME)$(man1ext); \
+	    rm -f $(DESTDIR)$(man1dir)/$(G77_INSTALL_NAME)$(man1ext); \
+	    $(INSTALL_DATA) $(srcdir)/f/g77.1 $(DESTDIR)$(man1dir)/$(G77_INSTALL_NAME)$(man1ext); \
+	    chmod a-x $(DESTDIR)$(man1dir)/$(G77_INSTALL_NAME)$(man1ext); \
 	  fi; \
 	else true; fi
 
 f77.uninstall: installdirs
 	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 || : ; \
+	  echo " install-info --delete --info-dir=$(DESTDIR)$(infodir) $(DESTDIR)$(infodir)/g77.info"; \
+	  install-info --delete --info-dir=$(DESTDIR)$(infodir) $(DESTDIR)$(infodir)/g77.info || : ; \
 	else : ; fi
-	rm -rf $(bindir)/$(G77_INSTALL_NAME)$(exeext); \
-	rm -rf $(bindir)/$(G77_CROSS_NAME)$(exeext); \
-	rm -rf $(man1dir)/$(G77_INSTALL_NAME)$(man1ext); \
-	rm -rf $(man1dir)/$(G77_CROSS_NAME)$(man1ext); \
-	rm -rf $(infodir)/g77.info*
+	rm -rf $(DESTDIR)$(bindir)/$(G77_INSTALL_NAME)$(exeext); \
+	rm -rf $(DESTDIR)$(bindir)/$(G77_CROSS_NAME)$(exeext); \
+	rm -rf $(DESTDIR)$(man1dir)/$(G77_INSTALL_NAME)$(man1ext); \
+	rm -rf $(DESTDIR)$(man1dir)/$(G77_CROSS_NAME)$(man1ext); \
+	rm -rf $(DESTDIR)$(infodir)/g77.info*
 #
 # Clean hooks:
 # A lot of the ancillary files are deleted by the main makefile.
Index: gcc/java/Make-lang.in
===================================================================
RCS file: /usr/local/src/cvs/gcc-cvs/gcc/gcc/java/Make-lang.in,v
retrieving revision 1.91.2.1
diff -u -r1.91.2.1 Make-lang.in
--- gcc/java/Make-lang.in	1 Dec 2002 05:43:08 -0000	1.91.2.1
+++ gcc/java/Make-lang.in	29 Dec 2002 16:27:02 -0000
@@ -171,53 +171,54 @@
 java.install-common: installdirs
 	-if [ -f $(GCJ)$(exeext) ]; then \
 	  if [ -f $(GCJ)-cross$(exeext) ]; then \
-	    rm -f $(bindir)/$(JAVA_CROSS_NAME)$(exeext); \
-	    $(INSTALL_PROGRAM) $(GCJ)-cross$(exeext) $(bindir)/$(JAVA_CROSS_NAME)$(exeext); \
-	    chmod a+x $(bindir)/$(JAVA_CROSS_NAME)$(exeext); \
+	    rm -f $(DESTDIR)$(bindir)/$(JAVA_CROSS_NAME)$(exeext); \
+	    $(INSTALL_PROGRAM) $(GCJ)-cross$(exeext) $(DESTDIR)$(bindir)/$(JAVA_CROSS_NAME)$(exeext); \
+	    chmod a+x $(DESTDIR)$(bindir)/$(JAVA_CROSS_NAME)$(exeext); \
 	  else \
-	    rm -f $(bindir)/$(JAVA_INSTALL_NAME)$(exeext); \
-	    $(INSTALL_PROGRAM) $(GCJ)$(exeext) $(bindir)/$(JAVA_INSTALL_NAME)$(exeext); \
-	    chmod a+x $(bindir)/$(JAVA_INSTALL_NAME)$(exeext); \
-	    rm -f $(bindir)/$(JAVA_TARGET_INSTALL_NAME)$(exeext); \
-	    $(LN) $(bindir)/$(JAVA_INSTALL_NAME)$(exeext) $(bindir)/$(JAVA_TARGET_INSTALL_NAME)$(exeext); \
+	    rm -f $(DESTDIR)$(bindir)/$(JAVA_INSTALL_NAME)$(exeext); \
+	    $(INSTALL_PROGRAM) $(GCJ)$(exeext) $(DESTDIR)$(bindir)/$(JAVA_INSTALL_NAME)$(exeext); \
+	    chmod a+x $(DESTDIR)$(bindir)/$(JAVA_INSTALL_NAME)$(exeext); \
+	    rm -f $(DESTDIR)$(bindir)/$(JAVA_TARGET_INSTALL_NAME)$(exeext); \
+	    ( cd $(DESTDIR)$(bindir) && \
+	      $(LN) $(JAVA_INSTALL_NAME)$(exeext) $(JAVA_TARGET_INSTALL_NAME)$(exeext) ); \
 	  fi ; \
 	fi ; \
         for tool in $(JAVA_TARGET_INDEPENDENT_BIN_TOOLS); do \
 	  tool_transformed_name=`echo $$tool|sed '$(program_transform_name)'`; \
           if [ -f $$tool$(exeext) ]; then \
-	    rm -f $(bindir)/$$tool_transformed_name$(exeext); \
-	    $(INSTALL_PROGRAM) $$tool$(exeext) $(bindir)/$$tool_transformed_name$(exeext); \
-	    chmod a+x $(bindir)/$$tool_transformed_name$(exeext); \
+	    rm -f $(DESTDIR)$(bindir)/$$tool_transformed_name$(exeext); \
+	    $(INSTALL_PROGRAM) $$tool$(exeext) $(DESTDIR)$(bindir)/$$tool_transformed_name$(exeext); \
+	    chmod a+x $(DESTDIR)$(bindir)/$$tool_transformed_name$(exeext); \
           fi ; \
        done
 
 java.install-man:
 
 java.uninstall:
-	-rm -rf $(bindir)/$(JAVA_INSTALL_NAME)$(exeext)
-	-rm -rf $(bindir)/$(JAVA_CROSS_NAME)$(exeext)
-	-rm -rf $(man1dir)/$(JAVA_INSTALL_NAME)$(man1ext)
-	-rm -rf $(man1dir)/$(JAVA_CROSS_NAME)$(man1ext)
-	-rm -rf $(man1dir)/gcjh$(man1ext)
-	-rm -rf $(man1dir)/jv-scan$(man1ext)
-	-rm -rf $(man1dir)/jcf-dump$(man1ext)
-	-rm -rf $(man1dir)/gij$(man1ext)
-	-rm -rf $(man1dir)/jv-convert$(man1ext)
+	-rm -rf $(DESTDIR)$(bindir)/$(JAVA_INSTALL_NAME)$(exeext)
+	-rm -rf $(DESTDIR)$(bindir)/$(JAVA_CROSS_NAME)$(exeext)
+	-rm -rf $(DESTDIR)$(man1dir)/$(JAVA_INSTALL_NAME)$(man1ext)
+	-rm -rf $(DESTDIR)$(man1dir)/$(JAVA_CROSS_NAME)$(man1ext)
+	-rm -rf $(DESTDIR)$(man1dir)/gcjh$(man1ext)
+	-rm -rf $(DESTDIR)$(man1dir)/jv-scan$(man1ext)
+	-rm -rf $(DESTDIR)$(man1dir)/jcf-dump$(man1ext)
+	-rm -rf $(DESTDIR)$(man1dir)/gij$(man1ext)
+	-rm -rf $(DESTDIR)$(man1dir)/jv-convert$(man1ext)
 
 java.install-info: installdirs
 	if [ -f jc1$(exeext) ] ; then \
 	  if [ -f $(srcdir)/java/gcj.info ]; then \
-	    rm -f $(infodir)/gcj.info*; \
+	    rm -f $(DESTDIR)$(infodir)/gcj.info*; \
 	    for f in $(srcdir)/java/gcj.info*; do \
 	      realfile=`echo $$f | sed -e 's|.*/\([^/]*\)$$|\1|'`; \
-	      $(INSTALL_DATA) $$f $(infodir)/$$realfile; \
+	      $(INSTALL_DATA) $$f $(DESTDIR)$(infodir)/$$realfile; \
 	    done; \
-	    chmod a-x $(infodir)/gcj.info*; \
+	    chmod a-x $(DESTDIR)$(infodir)/gcj.info*; \
 	  else true; fi; \
 	else true; fi
-	-if [ -f jc1$(exeext) ] && [ -f $(infodir)/gcj.info ]; then \
+	-if [ -f jc1$(exeext) ] && [ -f $(DESTDIR)$(infodir)/gcj.info ]; then \
 	  if $(SHELL) -c 'install-info --version' >/dev/null 2>&1; then \
-	    install-info --dir-file=$(infodir)/dir $(infodir)/gcj.info; \
+	    install-info --dir-file=$(DESTDIR)$(infodir)/dir $(DESTDIR)$(infodir)/gcj.info; \
 	  else true; fi; \
 	else true; fi
 
@@ -418,33 +419,33 @@
 java.install-man: installdirs $(GENERATED_JAVA_MANPAGES)
 	-if [ -f $(GCJ)$(exeext) ]; then \
 	  if [ -f $(GCJ)-cross$(exeext) ]; then \
-	    rm -f $(man1dir)/$(JAVA_CROSS_NAME)$(man1ext); \
-	    $(INSTALL_DATA) $(srcdir)/java/gcj.1 $(man1dir)/$(JAVA_CROSS_NAME)$(man1ext); \
-	    chmod a-x $(man1dir)/$(JAVA_CROSS_NAME)$(man1ext); \
+	    rm -f $(DESTDIR)$(man1dir)/$(JAVA_CROSS_NAME)$(man1ext); \
+	    $(INSTALL_DATA) $(srcdir)/java/gcj.1 $(DESTDIR)$(man1dir)/$(JAVA_CROSS_NAME)$(man1ext); \
+	    chmod a-x $(DESTDIR)$(man1dir)/$(JAVA_CROSS_NAME)$(man1ext); \
 	  else \
-	    rm -f $(man1dir)/$(JAVA_INSTALL_NAME)$(man1ext); \
-	    $(INSTALL_DATA) $(srcdir)/java/gcj.1 $(man1dir)/$(JAVA_INSTALL_NAME)$(man1ext); \
-	    chmod a-x $(man1dir)/$(JAVA_INSTALL_NAME)$(man1ext); \
+	    rm -f $(DESTDIR)$(man1dir)/$(JAVA_INSTALL_NAME)$(man1ext); \
+	    $(INSTALL_DATA) $(srcdir)/java/gcj.1 $(DESTDIR)$(man1dir)/$(JAVA_INSTALL_NAME)$(man1ext); \
+	    chmod a-x $(DESTDIR)$(man1dir)/$(JAVA_INSTALL_NAME)$(man1ext); \
 	  fi ; \
 	fi
-	-rm -f $(man1dir)/gcjh$(man1ext)
-	-$(INSTALL_DATA) $(srcdir)/java/gcjh.1 $(man1dir)/gcjh$(man1ext)
-	-chmod a-x $(man1dir)/gcjh$(man1ext)
-	-rm -f $(man1dir)/jv-scan$(man1ext)
-	-$(INSTALL_DATA) $(srcdir)/java/jv-scan.1 $(man1dir)/jv-scan$(man1ext)
-	-chmod a-x $(man1dir)/jv-scan$(man1ext)
-	-rm -f $(man1dir)/jcf-dump$(man1ext)
-	-$(INSTALL_DATA) $(srcdir)/java/jcf-dump.1 $(man1dir)/jcf-dump$(man1ext)
-	-chmod a-x $(man1dir)/jcf-dump$(man1ext)
-	-rm -f $(man1dir)/gij$(man1ext)
-	-$(INSTALL_DATA) $(srcdir)/java/gij.1 $(man1dir)/gij$(man1ext)
-	-chmod a-x $(man1dir)/gij$(man1ext)
-	-rm -f $(man1dir)/jv-convert$(man1ext)
-	-$(INSTALL_DATA) $(srcdir)/java/jv-convert.1 $(man1dir)/jv-convert$(man1ext)
-	-chmod a-x $(man1dir)/jv-convert$(man1ext)
-	-rm -f $(man1dir)/rmic$(man1ext)
-	-$(INSTALL_DATA) $(srcdir)/java/rmic.1 $(man1dir)/rmic$(man1ext)
-	-chmod a-x $(man1dir)/rmic$(man1ext)
-	-rm -f $(man1dir)/rmiregistry$(man1ext)
-	-$(INSTALL_DATA) $(srcdir)/java/rmiregistry.1 $(man1dir)/rmiregistry$(man1ext)
-	-chmod a-x $(man1dir)/rmiregistry$(man1ext)
+	-rm -f $(DESTDIR)$(man1dir)/gcjh$(man1ext)
+	-$(INSTALL_DATA) $(srcdir)/java/gcjh.1 $(DESTDIR)$(man1dir)/gcjh$(man1ext)
+	-chmod a-x $(DESTDIR)$(man1dir)/gcjh$(man1ext)
+	-rm -f $(DESTDIR)$(man1dir)/jv-scan$(man1ext)
+	-$(INSTALL_DATA) $(srcdir)/java/jv-scan.1 $(DESTDIR)$(man1dir)/jv-scan$(man1ext)
+	-chmod a-x $(DESTDIR)$(man1dir)/jv-scan$(man1ext)
+	-rm -f $(DESTDIR)$(man1dir)/jcf-dump$(man1ext)
+	-$(INSTALL_DATA) $(srcdir)/java/jcf-dump.1 $(DESTDIR)$(man1dir)/jcf-dump$(man1ext)
+	-chmod a-x $(DESTDIR)$(man1dir)/jcf-dump$(man1ext)
+	-rm -f $(DESTDIR)$(man1dir)/gij$(man1ext)
+	-$(INSTALL_DATA) $(srcdir)/java/gij.1 $(DESTDIR)$(man1dir)/gij$(man1ext)
+	-chmod a-x $(DESTDIR)$(man1dir)/gij$(man1ext)
+	-rm -f $(DESTDIR)$(man1dir)/jv-convert$(man1ext)
+	-$(INSTALL_DATA) $(srcdir)/java/jv-convert.1 $(DESTDIR)$(man1dir)/jv-convert$(man1ext)
+	-chmod a-x $(DESTDIR)$(man1dir)/jv-convert$(man1ext)
+	-rm -f $(DESTDIR)$(man1dir)/rmic$(man1ext)
+	-$(INSTALL_DATA) $(srcdir)/java/rmic.1 $(DESTDIR)$(man1dir)/rmic$(man1ext)
+	-chmod a-x $(DESTDIR)$(man1dir)/rmic$(man1ext)
+	-rm -f $(DESTDIR)$(man1dir)/rmiregistry$(man1ext)
+	-$(INSTALL_DATA) $(srcdir)/java/rmiregistry.1 $(DESTDIR)$(man1dir)/rmiregistry$(man1ext)
+	-chmod a-x $(DESTDIR)$(man1dir)/rmiregistry$(man1ext)
Index: gcc/treelang/Make-lang.in
===================================================================
RCS file: /usr/local/src/cvs/gcc-cvs/gcc/gcc/treelang/Make-lang.in,v
retrieving revision 1.7.4.1
diff -u -r1.7.4.1 Make-lang.in
--- gcc/treelang/Make-lang.in	1 Dec 2002 05:43:14 -0000	1.7.4.1
+++ gcc/treelang/Make-lang.in	29 Dec 2002 16:30:37 -0000
@@ -161,10 +161,10 @@
 	do \
 	   if [ -f $$name ] ; then \
 	    name2="`echo \`basename $$name\` | sed -e '$(program_transform_name)' `"; \
-	    rm -f $(bindir)/$$name2$(exeext); \
-	    echo $(INSTALL_PROGRAM) $$name$(exeext) $(bindir)/$$name2$(exeext); \
-	    $(INSTALL_PROGRAM) $$name$(exeext) $(bindir)/$$name2$(exeext); \
-	    chmod a+x $(bindir)/$$name2$(exeext); \
+	    rm -f $(DESTDIR)$(bindir)/$$name2$(exeext); \
+	    echo $(INSTALL_PROGRAM) $$name$(exeext) $(DESTDIR)$(bindir)/$$name2$(exeext); \
+	    $(INSTALL_PROGRAM) $$name$(exeext) $(DESTDIR)$(bindir)/$$name2$(exeext); \
+	    chmod a+x $(DESTDIR)$(bindir)/$$name2$(exeext); \
 	  fi ; \
 	done
 	$(STAMP) treelang.install.common.done
@@ -174,9 +174,9 @@
 	do \
 	   if [ -f $$name ] ; then \
 	    name2="`echo \`basename $$name\` | sed -e '$(program_transform_name)' `"; \
-	    rm -f $(libsubdir)/$$name2$(exeext); \
-	    $(INSTALL_PROGRAM) $$name$(exeext) $(libsubdir)/$$name2$(exeext); \
-	    chmod a+x $(libsubdir)/$$name2$(exeext); \
+	    rm -f $(DESTDIR)$(libsubdir)/$$name2$(exeext); \
+	    $(INSTALL_PROGRAM) $$name$(exeext) $(DESTDIR)$(libsubdir)/$$name2$(exeext); \
+	    chmod a+x $(DESTDIR)$(libsubdir)/$$name2$(exeext); \
 	  fi ; \
 	done
 
@@ -188,8 +188,8 @@
 	  echo $$name; \
 	  name2="`echo $$name | sed -e '$(program_transform_name)' `"; \
 	  echo becomes $$name2; \
-	  echo -rm -rf $(bindir)/$$name2$(exeext); \
-	  rm -rf $(bindir)/$$name2$(exeext); \
+	  echo -rm -rf $(DESTDIR)$(bindir)/$$name2$(exeext); \
+	  rm -rf $(DESTDIR)$(bindir)/$$name2$(exeext); \
 	done
 	-rm treelang.install.common.done
 
Index: libf2c/Makefile.in
===================================================================
RCS file: /usr/local/src/cvs/gcc-cvs/gcc/libf2c/Makefile.in,v
retrieving revision 1.53.8.1
diff -u -r1.53.8.1 Makefile.in
--- libf2c/Makefile.in	1 Oct 2002 17:32:48 -0000	1.53.8.1
+++ libf2c/Makefile.in	29 Dec 2002 17:09:17 -0000
@@ -81,6 +81,7 @@
 	WARN_CFLAGS='$(WARN_CFLAGS)' \
 	CFLAGS='$(CFLAGS)' \
 	CPPFLAGS='$(CPPFLAGS)' \
+	DESTDIR='$(DESTDIR)' \
 	AR='$(AR)' \
 	RANLIB='$(RANLIB)' \
 	prefix='$(prefix)' \
@@ -214,21 +215,21 @@
 	cd libU77; $(MAKE) G77DIR=../../../gcc/ check
 
 install: all
-	$(SHELL) $(toplevel_srcdir)/mkinstalldirs $(glibcpp_toolexeclibdir)
-	$(LIBTOOL) --mode=install $(INSTALL) $(LIBG2C) $(glibcpp_toolexeclibdir)
-	$(INSTALL_DATA) libfrtbegin.a $(glibcpp_toolexeclibdir)
-	$(RANLIB) $(glibcpp_toolexeclibdir)/libfrtbegin.a
-	$(INSTALL_DATA) g2c.h $(libsubdir)/include/g2c.h
+	$(SHELL) $(toplevel_srcdir)/mkinstalldirs $(DESTDIR)$(glibcpp_toolexeclibdir)
+	$(LIBTOOL) --mode=install $(INSTALL) $(LIBG2C) $(DESTDIR)$(glibcpp_toolexeclibdir)
+	$(INSTALL_DATA) libfrtbegin.a $(DESTDIR)$(glibcpp_toolexeclibdir)
+	$(RANLIB) $(DESTDIR)$(glibcpp_toolexeclibdir)/libfrtbegin.a
+	$(INSTALL_DATA) g2c.h $(DESTDIR)$(libsubdir)/include/g2c.h
 	$(MULTIDO) $(FLAGS_TO_PASS) multi-do DO="$@"
-	@-$(LIBTOOL) --mode=finish $(glibcpp_toolexeclibdir)
+	@-$(LIBTOOL) --mode=finish $(DESTDIR)$(glibcpp_toolexeclibdir)
 
 install-strip:
 	$(MAKE) INSTALL_PROGRAM='$(INSTALL_PROGRAM) -s' install
 
 uninstall:
-	rm -f $(libsubdir)/include/g2c.h
-	rm -f $(glibcpp_toolexeclibdir)/libfrtbegin.a
-	$(LIBTOOL) --mode=uninstall rm -f $(glibcpp_toolexeclibdir)$(LIBG2C_BASE).la
+	rm -f $(DESTDIR)$(libsubdir)/include/g2c.h
+	rm -f $(DESTDIR)$(glibcpp_toolexeclibdir)/libfrtbegin.a
+	$(LIBTOOL) --mode=uninstall rm -f $(DESTDIR)$(glibcpp_toolexeclibdir)$(LIBG2C_BASE).la
 	$(MULTIDO) $(FLAGS_TO_PASS) multi-do DO="$@"
 
 mostlyclean:
Index: libiberty/Makefile.in
===================================================================
RCS file: /usr/local/src/cvs/gcc-cvs/gcc/libiberty/Makefile.in,v
retrieving revision 1.76.4.2
diff -u -r1.76.4.2 Makefile.in
--- libiberty/Makefile.in	3 Dec 2002 17:36:25 -0000	1.76.4.2
+++ libiberty/Makefile.in	30 Dec 2002 05:53:11 -0000
@@ -84,6 +84,7 @@
 	"AR_FLAGS=$(AR_FLAGS)" \
 	"CC=$(CC)" \
 	"CFLAGS=$(CFLAGS)" \
+	"DESTDIR=$(DESTDIR)" \
 	"LIBCFLAGS=$(LIBCFLAGS)" \
 	"EXTRA_OFILES=$(EXTRA_OFILES)" \
 	"HDEFINES=$(HDEFINES)" \
Index: libobjc/Makefile.in
===================================================================
RCS file: /usr/local/src/cvs/gcc-cvs/gcc/libobjc/Makefile.in,v
retrieving revision 1.21.8.1
diff -u -r1.21.8.1 Makefile.in
--- libobjc/Makefile.in	1 Oct 2002 17:32:58 -0000	1.21.8.1
+++ libobjc/Makefile.in	29 Dec 2002 17:10:58 -0000
@@ -118,6 +118,7 @@
 	"AR_FLAGS=$(AR_FLAGS)" \
 	"CC=$(CC)" \
 	"CFLAGS=$(CFLAGS)" \
+	"DESTDIR=$(DESTDIR)" \
 	"LIBCFLAGS=$(LIBCFLAGS)" \
 	"EXTRA_OFILES=$(EXTRA_OFILES)" \
 	"HDEFINES=$(HDEFINES)" \
@@ -318,21 +319,21 @@
 install: install-libs install-headers
 
 install-libs: installdirs
-	$(SHELL) $(toplevel_srcdir)/mkinstalldirs $(glibcpp_toolexeclibdir)
-	$(LIBTOOL_INSTALL) $(INSTALL) libobjc.la $(glibcpp_toolexeclibdir);
+	$(SHELL) $(toplevel_srcdir)/mkinstalldirs $(DESTDIR)$(glibcpp_toolexeclibdir)
+	$(LIBTOOL_INSTALL) $(INSTALL) libobjc.la $(DESTDIR)$(glibcpp_toolexeclibdir);
 	if [ "$(OBJC_BOEHM_GC)" ]; then \
 	  $(LIBTOOL_INSTALL) $(INSTALL) libobjc_gc.la \
-				$(glibcpp_toolexeclibdir);\
+				$(DESTDIR)$(glibcpp_toolexeclibdir);\
 	fi
 	$(MULTIDO) $(FLAGS_TO_PASS) multi-do DO="$@"
-	@-$(LIBTOOL) --mode=finish $(glibcpp_toolexeclibdir)
+	@-$(LIBTOOL) --mode=finish $(DESTDIR)$(glibcpp_toolexeclibdir)
 
 # Copy Objective C headers to installation include directory.
 install-headers:
-	$(SHELL) $(toplevel_srcdir)/mkinstalldirs $(libsubdir)/include/objc
+	$(SHELL) $(toplevel_srcdir)/mkinstalldirs $(DESTDIR)$(libsubdir)/include/objc
 	for file in $(OBJC_H); do \
 	  realfile=$(srcdir)/objc/$${file}; \
-	  $(INSTALL_DATA) $${realfile} $(libsubdir)/include/objc; \
+	  $(INSTALL_DATA) $${realfile} $(DESTDIR)$(libsubdir)/include/objc; \
 	done
 
 check uninstall install-strip dist installcheck installdirs:
Index: libstdc++-v3/include/Makefile.am
===================================================================
RCS file: /usr/local/src/cvs/gcc-cvs/gcc/libstdc++-v3/include/Makefile.am,v
retrieving revision 1.41.4.2
diff -u -r1.41.4.2 Makefile.am
--- libstdc++-v3/include/Makefile.am	1 Oct 2002 17:33:12 -0000	1.41.4.2
+++ libstdc++-v3/include/Makefile.am	29 Dec 2002 17:43:34 -0000
@@ -464,32 +464,32 @@
 # the rest are taken from the original source tree.
 gxx_include_dir = @gxx_include_dir@
 install-data-local:
-	$(mkinstalldirs) ${gxx_include_dir}
-	$(mkinstalldirs) ${gxx_include_dir}/${bits_builddir}
+	$(mkinstalldirs) $(DESTDIR)${gxx_include_dir}
+	$(mkinstalldirs) $(DESTDIR)${gxx_include_dir}/${bits_builddir}
 	for file in ${bits_headers}; do \
-	  $(INSTALL_DATA) $${file} ${gxx_include_dir}/${bits_builddir}; done
-	$(mkinstalldirs) ${gxx_include_dir}/${backward_builddir}
+	  $(INSTALL_DATA) $${file} $(DESTDIR)${gxx_include_dir}/${bits_builddir}; done
+	$(mkinstalldirs) $(DESTDIR)${gxx_include_dir}/${backward_builddir}
 	for file in ${backward_headers}; do \
-	  $(INSTALL_DATA) $${file} ${gxx_include_dir}/${backward_builddir}; done
-	$(mkinstalldirs) ${gxx_include_dir}/${ext_builddir}
+	  $(INSTALL_DATA) $${file} $(DESTDIR)${gxx_include_dir}/${backward_builddir}; done
+	$(mkinstalldirs) $(DESTDIR)${gxx_include_dir}/${ext_builddir}
 	for file in ${ext_headers}; do \
-	  $(INSTALL_DATA) $${file} ${gxx_include_dir}/${ext_builddir}; done
-	$(mkinstalldirs) ${gxx_include_dir}/${c_base_builddir}
+	  $(INSTALL_DATA) $${file} $(DESTDIR)${gxx_include_dir}/${ext_builddir}; done
+	$(mkinstalldirs) $(DESTDIR)${gxx_include_dir}/${c_base_builddir}
 	for file in ${c_base_headers_rename}; do \
-	  $(INSTALL_DATA) ${c_base_builddir}/$${file} ${gxx_include_dir}; done
+	  $(INSTALL_DATA) ${c_base_builddir}/$${file} $(DESTDIR)${gxx_include_dir}/${c_base_builddir}; done
 	c_base_headers_extra_install='$(c_base_headers_extra)';\
 	for file in $$c_base_headers_extra_install; do \
-	  $(INSTALL_DATA) $$file ${gxx_include_dir}/${bits_builddir}; done
+	  $(INSTALL_DATA) $$file $(DESTDIR)${gxx_include_dir}/${bits_builddir}; done
 	c_compatibility_headers_install='$(c_compatibility_headers_extra)';\
 	for file in $$c_compatibility_headers_install; do \
-	  $(INSTALL_DATA) $$file ${gxx_include_dir}; done
-	$(mkinstalldirs) ${gxx_include_dir}/${std_builddir}
+	  $(INSTALL_DATA) $$file $(DESTDIR)${gxx_include_dir}; done
+	$(mkinstalldirs) $(DESTDIR)${gxx_include_dir}/${std_builddir}
 	for file in ${std_headers_rename}; do \
-	  $(INSTALL_DATA) ${std_builddir}/$${file} ${gxx_include_dir}; done
-	$(mkinstalldirs) ${gxx_include_dir}/${target_builddir}
+	  $(INSTALL_DATA) ${std_builddir}/$${file} $(DESTDIR)${gxx_include_dir}/${std_builddir}; done
+	$(mkinstalldirs) $(DESTDIR)${gxx_include_dir}/${target_builddir}
 	for file in ${target_headers} ${target_headers_extra} \
 	 ${thread_target_headers}; do \
-	  $(INSTALL_DATA) $${file} ${gxx_include_dir}/${target_builddir}; done
+	  $(INSTALL_DATA) $${file} $(DESTDIR)${gxx_include_dir}/${target_builddir}; done
 
 # By adding these files here, automake will remove them for 'make clean'
 #CLEANFILES = ${allstamps}
-------------- next part --------------
Index: gcc/doc/install.texi
===================================================================
RCS file: /usr/local/src/cvs/gcc-cvs/gcc/gcc/doc/install.texi,v
retrieving revision 1.136.2.10
diff -u -r1.136.2.10 install.texi
--- gcc/doc/install.texi	14 Dec 2002 18:31:13 -0000	1.136.2.10
+++ gcc/doc/install.texi	30 Dec 2002 18:05:51 -0000
@@ -1390,6 +1390,45 @@
 parts of the compiler in @file{@var{libdir}/gcc-lib}; documentation in
 info format in @file{@var{infodir}} (normally @file{@var{prefix}/info}).
 
+In order to support multi-architectural systems, GCC's
+executables are not only installed into @file{@var{bindir}},
+that is, @file{@var{exec-prefix}/bin}, but additionally into
+@file{@var{exec-prefix}/@var{target-alias}/bin}, if that directory
+exists.  Typically, such @dfn{tooldirs} hold target-specific
+binutils, including assembler and linker.
+
+Installation into a temporary staging area or into a chroot jail can be
+achieved with the command
+@example
+make DESTDIR=@var{path-to-rootdir} install
+@end example
+@noindent where @var{path-to-rootdir} is the absolute path of a directory
+relative to which all installation paths will be interpreted.
+
+Using @code{DESTDIR} has several advantages over temporarily
+changing @code{prefix} during installation.  Most important, the
+setting of @code{DESTDIR} is never compiled into binaries, nor does
+it get stored permanently in any configuration, it only affects
+installation (and uninstallation, once that is fully supported)
+and can be chosen arbitrarily at installation time.  Moreover,
+setting @code{DESTDIR} relocates all installation directories
+consistently, even those set to fixed values during configuration.
+For example, configuring with @samp{--infodir=/usr/share/info} makes
+@code{infodir} independent of @code{prefix}, but installation with
+@samp{DESTDIR=@var{path-to-rootdir}} would correctly install info
+files into @file{@var{path-to-rootdir}/usr/share/info}.  Note that
+the directory specified by @code{DESTDIR} need not exist yet;
+it will be created if necessary.
+
+There is a subtle point with tooldirs and
+@code{DESTDIR}: If you relocate the installation to
+e.g.@: @samp{DESTDIR=@var{rootdir}}, then the directory
+@file{@var{rootdir}/@var{exec-prefix}/@var{target-alias}/bin} will
+be filled with duplicated GCC executables only if it already exists,
+it will not be created otherwise.  This is regarded as a feature,
+not as a bug, because it gives slightly more control to the packagers
+using the @code{DESTDIR} feature.
+
 If you built a released version of GCC using @samp{make bootstrap} then please
 quickly review the build status page for your release, available from
 @uref{http://gcc.gnu.org/buildstat.html}.
-------------- next part --------------
Index: libstdc++-v3/include/Makefile.in
===================================================================
RCS file: /usr/local/src/cvs/gcc-cvs/gcc/libstdc++-v3/include/Makefile.in,v
retrieving revision 1.55.2.2
diff -u -r1.55.2.2 Makefile.in
--- libstdc++-v3/include/Makefile.in	1 Oct 2002 17:33:13 -0000	1.55.2.2
+++ libstdc++-v3/include/Makefile.in	30 Dec 2002 16:57:25 -0000
@@ -670,32 +670,32 @@
 	    -e 's,^#include "\(.*\)",#include <bits/\1>,g' \
 	    < ${toplevel_srcdir}/gcc/${glibcpp_thread_h} > $@
 install-data-local:
-	$(mkinstalldirs) ${gxx_include_dir}
-	$(mkinstalldirs) ${gxx_include_dir}/${bits_builddir}
+	$(mkinstalldirs) $(DESTDIR)${gxx_include_dir}
+	$(mkinstalldirs) $(DESTDIR)${gxx_include_dir}/${bits_builddir}
 	for file in ${bits_headers}; do \
-	  $(INSTALL_DATA) $${file} ${gxx_include_dir}/${bits_builddir}; done
-	$(mkinstalldirs) ${gxx_include_dir}/${backward_builddir}
+	  $(INSTALL_DATA) $${file} $(DESTDIR)${gxx_include_dir}/${bits_builddir}; done
+	$(mkinstalldirs) $(DESTDIR)${gxx_include_dir}/${backward_builddir}
 	for file in ${backward_headers}; do \
-	  $(INSTALL_DATA) $${file} ${gxx_include_dir}/${backward_builddir}; done
-	$(mkinstalldirs) ${gxx_include_dir}/${ext_builddir}
+	  $(INSTALL_DATA) $${file} $(DESTDIR)${gxx_include_dir}/${backward_builddir}; done
+	$(mkinstalldirs) $(DESTDIR)${gxx_include_dir}/${ext_builddir}
 	for file in ${ext_headers}; do \
-	  $(INSTALL_DATA) $${file} ${gxx_include_dir}/${ext_builddir}; done
-	$(mkinstalldirs) ${gxx_include_dir}/${c_base_builddir}
+	  $(INSTALL_DATA) $${file} $(DESTDIR)${gxx_include_dir}/${ext_builddir}; done
+	$(mkinstalldirs) $(DESTDIR)${gxx_include_dir}/${c_base_builddir}
 	for file in ${c_base_headers_rename}; do \
-	  $(INSTALL_DATA) ${c_base_builddir}/$${file} ${gxx_include_dir}; done
+	  $(INSTALL_DATA) ${c_base_builddir}/$${file} $(DESTDIR)${gxx_include_dir}/${c_base_builddir}; done
 	c_base_headers_extra_install='$(c_base_headers_extra)';\
 	for file in $$c_base_headers_extra_install; do \
-	  $(INSTALL_DATA) $$file ${gxx_include_dir}/${bits_builddir}; done
+	  $(INSTALL_DATA) $$file $(DESTDIR)${gxx_include_dir}/${bits_builddir}; done
 	c_compatibility_headers_install='$(c_compatibility_headers_extra)';\
 	for file in $$c_compatibility_headers_install; do \
-	  $(INSTALL_DATA) $$file ${gxx_include_dir}; done
-	$(mkinstalldirs) ${gxx_include_dir}/${std_builddir}
+	  $(INSTALL_DATA) $$file $(DESTDIR)${gxx_include_dir}; done
+	$(mkinstalldirs) $(DESTDIR)${gxx_include_dir}/${std_builddir}
 	for file in ${std_headers_rename}; do \
-	  $(INSTALL_DATA) ${std_builddir}/$${file} ${gxx_include_dir}; done
-	$(mkinstalldirs) ${gxx_include_dir}/${target_builddir}
+	  $(INSTALL_DATA) ${std_builddir}/$${file} $(DESTDIR)${gxx_include_dir}/${std_builddir}; done
+	$(mkinstalldirs) $(DESTDIR)${gxx_include_dir}/${target_builddir}
 	for file in ${target_headers} ${target_headers_extra} \
 	 ${thread_target_headers}; do \
-	  $(INSTALL_DATA) $${file} ${gxx_include_dir}/${target_builddir}; done
+	  $(INSTALL_DATA) $${file} $(DESTDIR)${gxx_include_dir}/${target_builddir}; done
 
 # By adding these files here, automake will remove them for 'make clean'
 #CLEANFILES = ${allstamps}
-------------- next part --------------
Index: Makefile.in
===================================================================
RCS file: /usr/local/src/cvs/gcc-cvs/gcc/Makefile.in,v
retrieving revision 1.111.4.29
diff -u -r1.111.4.29 Makefile.in
--- Makefile.in	13 Dec 2002 22:58:06 -0000	1.111.4.29
+++ Makefile.in	29 Dec 2002 21:44:54 -0000
@@ -386,6 +386,7 @@
 	"CXXFLAGS=$(CXXFLAGS)" \
 	"CXXFLAGS_FOR_TARGET=$(CXXFLAGS_FOR_TARGET)" \
 	"CXX_FOR_TARGET=$(CXX_FOR_TARGET)" \
+	"DESTDIR=$(DESTDIR)" \
 	"DLLTOOL_FOR_TARGET=$(DLLTOOL_FOR_TARGET)" \
 	"INSTALL=$(INSTALL)" \
 	"INSTALL_DATA=$(INSTALL_DATA)" \
@@ -1076,7 +1077,7 @@
 install-info: do-install-info dir.info
 	s=`cd $(srcdir); ${PWD}`; export s; \
 	if [ -f dir.info ] ; then \
-	  $(INSTALL_DATA) dir.info $(infodir)/dir.info ; \
+	  $(INSTALL_DATA) dir.info $(DESTDIR)$(infodir)/dir.info ; \
 	else true ; fi
 
 local-clean:
@@ -1206,7 +1207,7 @@
 
 dir.info: do-install-info
 	if [ -f $(srcdir)/texinfo/gen-info-dir ] ; then \
-	  $(srcdir)/texinfo/gen-info-dir $(infodir) $(srcdir)/texinfo/dir.info-template > dir.info.new ; \
+	  $(srcdir)/texinfo/gen-info-dir $(DESTDIR)$(infodir) $(srcdir)/texinfo/dir.info-template > dir.info.new ; \
 	  mv -f dir.info.new dir.info ; \
 	else true ; \
 	fi


More information about the Gcc-patches mailing list