OSDN Git Service

* init.c (expand_vec_init): Fix off-by-one error.
[pf3gnuchains/gcc-fork.git] / gcc / Makefile.in
index 10fab13..c407d28 100644 (file)
@@ -53,7 +53,8 @@ ALLOCA_FINISH = true
 # CFLAGS is for the user to override to, e.g., do a bootstrap with -O2.
 # BOOT_CFLAGS is the value of CFLAGS to pass
 # to the stage2 and stage3 compilations
-# WARN_CFLAGS are the warning flags to pass to stage2 and stage3.  It is
+# WARN_CFLAGS are the warning flags to pass to stage2 and stage3.  
+# (And for stage 1 if the native compiler is GCC.)  It is
 # separate from BOOT_CFLAGS because people tend to override optimization
 # flags and we'd like them to still have warnings turned on.  They are free
 # to explicitly turn warnings off if they wish.
@@ -61,7 +62,7 @@ ALLOCA_FINISH = true
 # TCFLAGS is used for compilations with the GCC just built.
 XCFLAGS =
 TCFLAGS =
-CFLAGS = -g
+CFLAGS = -g @stage1_warn_cflags@
 BOOT_CFLAGS = -O2 $(CFLAGS)
 WARN_CFLAGS = -W -Wall
 # These exists to be overridden by the x-* and t-* files, respectively.
@@ -78,7 +79,7 @@ CC = @CC@
 BISON = `if [ -f $(objdir)/../bison/bison ] ; then case $(srcdir) in \
        /*) echo $(objdir)/../bison/bison -L $(srcdir)/../bison/ ;; \
        *) echo $(objdir)/../bison/bison -L $(objdir)/$(srcdir)/../bison/ ;; \
-       esac else echo bison ; fi`
+       esac; else echo bison ; fi`
 BISONFLAGS =
 LEX = `if [ -f $(objdir)/../flex/flex ] ; then echo $(objdir)/../flex/flex ; else echo flex ; fi`
 LEXFLAGS =
@@ -144,7 +145,7 @@ USER_H = $(srcdir)/ginclude/stdarg.h $(srcdir)/ginclude/stddef.h \
     $(srcdir)/ginclude/va-m32r.h $(srcdir)/ginclude/va-sh.h \
     $(srcdir)/ginclude/va-v850.h $(srcdir)/ginclude/va-arc.h \
     $(srcdir)/ginclude/iso646.h $(srcdir)/ginclude/va-ppc.h \
-    $(EXTRA_HEADERS) $(LANG_EXTRA_HEADERS) \
+    $(srcdir)/ginclude/va-c4x.h $(EXTRA_HEADERS) $(LANG_EXTRA_HEADERS) \
     $(srcdir)/ginclude/proto.h $(srcdir)/ginclude/stdbool.h
 
 # Target to use whe installing assert.h.  Some systems may
@@ -154,7 +155,7 @@ INSTALL_ASSERT_H = install-assert-h
 # The GCC to use for compiling libgcc2.a, enquire, and libgcc1-test.
 # Usually the one we just built.
 # Don't use this as a dependency--use $(GCC_PASSES) or $(GCC_PARTS).
-GCC_FOR_TARGET = ./xgcc -B./
+GCC_FOR_TARGET = ./xgcc -B./ -B$(build_tooldir)/bin/
 
 # This is used instead of ALL_CFLAGS when compiling with GCC_FOR_TARGET.
 # It omits XCFLAGS, and specifies -B./.
@@ -243,9 +244,14 @@ build_xm_file=@build_xm_file_list@
 host_xm_file=@host_xm_file_list@
 lang_specs_files=@lang_specs_files@
 lang_options_files=@lang_options_files@
+lang_tree_files=@lang_tree_files@
 GCC_THREAD_FILE=@thread_file@
+OBJC_BOEHM_GC=@objc_boehm_gc@
 GTHREAD_FLAGS=@gthread_flags@
-version=@version@
+# Be prepared for gcc2 merges.
+gcc_version=@gcc_version@
+gcc_version_trigger=@gcc_version_trigger@
+version=$(gcc_version)
 mainversion=`sed -e 's/.*\"\([0-9]*\.[0-9]*\).*/\1/' < $(srcdir)/version.c`
 
 # Common prefix for installation directories.
@@ -264,12 +270,10 @@ bindir = @bindir@
 libdir = @libdir@
 # Directory in which the compiler finds executables, libraries, etc.
 libsubdir = $(libdir)/gcc-lib/$(target_alias)/$(version)
+# Used to produce a relative $(tooldir) in gcc.o
+unlibsubdir = ../../..
 # Directory in which the compiler finds g++ includes.
 gxx_include_dir= @gxx_include_dir@
-# Directory in which the old g++ header files may be found.
-# The reason we use $(libdir)/g++-include rather than using libsubdir
-# is for compatibility with older versions of libg++.
-old_gxx_include_dir= $(libdir)/g++-include
 # Directory to search for site-specific includes.
 includedir = $(local_prefix)/include
 # assertdir is overridden in cross-make.
@@ -287,7 +291,9 @@ build_exeext = @build_exeext@
 mandir = @mandir@/man1
 # Directory in which to find other cross-compilation tools and headers.
 # Used in install-cross.
-tooldir = $(exec_prefix)/$(target_alias)
+tooldir = $(libsubdir)/$(unlibsubdir)/../$(target_alias)
+# Since tooldir does not exist at build-time, use -B$(build_tooldir)/bin/
+build_tooldir = $(exec_prefix)/$(target_alias)
 # Dir for temp files.
 tmpdir = /tmp
 
@@ -450,9 +456,13 @@ HOST_DOPRINT=$(DOPRINT)
 
 # Actual name to use when installing a native compiler.
 GCC_INSTALL_NAME = `t='$(program_transform_name)'; echo gcc | sed -e $$t`
+PROTOIZE_INSTALL_NAME = `t='$(program_transform_name)'; echo protoize | sed -e $$t`
+UNPROTOIZE_INSTALL_NAME = `t='$(program_transform_name)'; echo unprotoize | sed -e $$t`
 
 # Actual name to use when installing a cross-compiler.
 GCC_CROSS_NAME = `t='$(program_transform_cross_name)'; echo gcc | sed -e $$t`
+PROTOIZE_CROSS_NAME = `t='$(program_transform_cross_name)'; echo protoize | sed -e $$t`
+UNPROTOIZE_CROSS_NAME = `t='$(program_transform_cross_name)'; echo unprotoize | sed -e $$t`
 
 # Choose the real default target.
 ALL=all.internal
@@ -511,8 +521,7 @@ all: all.indirect
 
 all.indirect: $(ALL)
 
-# IN_GCC tells obstack.h that we are using gcc's <stddef.h> file.
-# ??? IN_GCC should be obsolete now.
+# IN_GCC tells various files that system.h, toplev.c, etc are available.
 INTERNAL_CFLAGS = $(CROSS) -DIN_GCC @extra_c_flags@
 
 # This is the variable actually used when we compile.
@@ -542,7 +551,8 @@ HOST_LIBDEPS= $(HOST_PREFIX)$(HOST_OBSTACK) $(HOST_PREFIX)$(HOST_ALLOCA) $(HOST_
 
 # How to link with both our special library facilities
 # and the system's installed libraries.
-LIBS = $(OBSTACK) $(USE_ALLOCA) $(MALLOC) $(VFPRINTF) $(DOPRINT) $(CLIB)
+LIBS = $(OBSTACK) $(USE_ALLOCA) $(MALLOC) $(VFPRINTF) $(DOPRINT) $(CLIB) \
+       ../libiberty/libiberty.a
 
 # Likewise, for use in the tools that must run on this machine
 # even if we are cross-building GCC.
@@ -557,7 +567,7 @@ HOST_PRINT = $(HOST_PREFIX)print-rtl.o
 # Both . and srcdir are used, in that order,
 # so that tm.h and config.h will be found in the compilation
 # subdirectory rather than in the source directory.
-INCLUDES = -I. -I$(srcdir) -I$(srcdir)/config
+INCLUDES = -I. -I$(srcdir) -I$(srcdir)/config -I$(srcdir)/../include
 
 # Always use -I$(srcdir)/config when compiling.
 .c.o:
@@ -583,7 +593,7 @@ LANG_EXTRA_HEADERS = @all_headers@
 # subdirectories.
 # ??? The choices here will need some experimenting with.
 FLAGS_TO_PASS = \
-       "AR_FLAGS=$(AR_FLAGS)" \
+       "AR_FLAGS=$(AR_FOR_TARGET_FLAGS)" \
        "AR_FOR_TARGET=$(AR_FOR_TARGET)" \
        "BISON=$(BISON)" \
        "BISONFLAGS=$(BISONFLAGS)" \
@@ -630,11 +640,12 @@ OBJS = toplev.o version.o tree.o print-tree.o stor-layout.o fold-const.o \
  function.o stmt.o except.o expr.o calls.o expmed.o explow.o optabs.o \
  varasm.o rtl.o print-rtl.o rtlanal.o emit-rtl.o genrtl.o real.o regmove.o \
  dbxout.o sdbout.o dwarfout.o dwarf2out.o xcoffout.o bitmap.o alias.o \
- integrate.o jump.o cse.o loop.o unroll.o flow.o stupid.o combine.o \
+ integrate.o jump.o cse.o loop.o unroll.o flow.o stupid.o combine.o varray.o \
  regclass.o local-alloc.o global.o reload.o reload1.o caller-save.o gcse.o \
  insn-peep.o reorg.o $(SCHED_PREFIX)sched.o final.o recog.o reg-stack.o \
  insn-opinit.o insn-recog.o insn-extract.o insn-output.o insn-emit.o \
- profile.o insn-attrtab.o $(out_object_file) getpwd.o $(EXTRA_OBJS) convert.o
+ profile.o insn-attrtab.o $(out_object_file) getpwd.o $(EXTRA_OBJS) convert.o \
+ mbchar.o dyn-string.o splay-tree.o
 
 # GEN files are listed separately, so they can be built before doing parallel
 #  makes for cc1 or cc1plus.  Otherwise sequent parallel make attempts to load
@@ -648,8 +659,8 @@ CCCP=@cpp_main@
 STAGESTUFF = *$(objext) insn-flags.h insn-config.h insn-codes.h \
  insn-output.c insn-recog.c insn-emit.c insn-extract.c insn-peep.c \
  insn-attr.h insn-attrtab.c insn-opinit.c genrtl.c genrtl.h tree-check.h \
- s-flags s-config s-codes s-mlib \
- s-output s-recog s-emit s-extract s-peep \
+ s-flags s-config s-codes s-mlib s-under\
+ s-output s-recog s-emit s-extract s-peep s-check \
  s-attr s-attrtab s-opinit s-crt s-crtS s-crt0 \
  genemit$(build_exeext) genoutput$(build_exeext) genrecog$(build_exeext) \
  genextract$(build_exeext) genflags$(build_exeext) gencodes$(build_exeext) \
@@ -713,6 +724,8 @@ TREE_H = tree.h real.h tree.def gansidecl.h machmode.h machmode.def tree-check.h
 BASIC_BLOCK_H = basic-block.h bitmap.h
 DEMANGLE_H = demangle.h gansidecl.h
 RECOG_H = recog.h gansidecl.h
+EXPR_H = expr.h insn-codes.h
+REGS_H = regs.h varray.h machmode.h machmode.def gansidecl.h
 #\f
 # Language makefile fragments.
 
@@ -833,9 +846,9 @@ stamp-objlist: $(OBJS)
 # to avoid confusion if the current directory is in the path
 # and CC is `gcc'.  It is renamed to `gcc' when it is installed.
 xgcc$(exeext): gcc.o version.o choose-temp.o pexecute.o prefix.o version.o \
-   $(LIBDEPS) $(EXTRA_GCC_OBJS)
+   mkstemp.o $(LIBDEPS) $(EXTRA_GCC_OBJS)
        $(CC) $(ALL_CFLAGS) $(LDFLAGS) -o $@ gcc.o prefix.o version.o \
-         choose-temp.o pexecute.o $(EXTRA_GCC_OBJS) $(LIBS)
+         choose-temp.o pexecute.o mkstemp.o $(EXTRA_GCC_OBJS) $(LIBS)
 
 # Dump a specs file to make -B./ read these specs over installed ones.
 specs: xgcc$(exeext)
@@ -848,8 +861,8 @@ specs: xgcc$(exeext)
 gcc-cross: xgcc$(exeext)
        cp xgcc$(exeext) gcc-cross$(exeext)
 
-cc1$(exeext): $(P) $(C_OBJS) $(OBJS) $(LIBDEPS)
-       $(CC) $(ALL_CFLAGS) $(LDFLAGS) -o $@ $(C_OBJS) $(OBJS) $(LIBS)
+cc1$(exeext): $(P) $(OBJS) $(C_OBJS) $(LIBDEPS)
+       $(CC) $(ALL_CFLAGS) $(LDFLAGS) -o $@ $(OBJS) $(C_OBJS) $(LIBS)
 
 # Copy float.h from its source.
 gfloat.h: $(FLOAT_H)
@@ -1214,12 +1227,12 @@ crtbeginS.o crtendS.o: s-crtS ; @true
 s-crtS: crtstuff.c $(GCC_PASSES) $(CONFIG_H) \
   defaults.h frame.h gbl-ctors.h
        $(GCC_FOR_TARGET) $(GCC_CFLAGS) $(INCLUDES) $(CRTSTUFF_T_CFLAGS_S) \
-         -DCRT_BEGIN -finhibit-size-directive -fno-inline-functions \
-         -g0 -c $(srcdir)/crtstuff.c 
+         -DCRT_BEGIN -DCRTSTUFFS_O -finhibit-size-directive -fno-inline-functions \
+         -fno-exceptions -g0 -c $(srcdir)/crtstuff.c 
        mv crtstuff$(objext) crtbeginS$(objext)
        $(GCC_FOR_TARGET) $(GCC_CFLAGS) $(INCLUDES) $(CRTSTUFF_T_CFLAGS_S) \
-         -DCRT_END -finhibit-size-directive -fno-inline-functions \
-         -g0 -c $(srcdir)/crtstuff.c -o crtendS$(objext)
+         -DCRT_END -DCRTSTUFFS_O -finhibit-size-directive -fno-inline-functions \
+         -fno-exceptions -g0 -c $(srcdir)/crtstuff.c -o crtendS$(objext)
        touch s-crtS
 
 # Compile the start modules crt0.o and mcrt0.o that are linked with every program
@@ -1254,42 +1267,64 @@ $(srcdir)/c-parse.y: c-parse.in
        $(srcdir)/move-if-change tmp-c-parse.y $(srcdir)/c-parse.y
 
 $(srcdir)/c-gperf.h: c-parse.gperf
-       gperf -p -j1 -i 1 -g -o -t -G -N is_reserved_word -k1,3,$$ \
-          $(srcdir)/c-parse.gperf >tmp-gperf.h
+       gperf -L KR-C -F ', 0, 0' -p -j1 -i 1 -g -o -t -G -N is_reserved_word \
+          -k1,3,$$ $(srcdir)/c-parse.gperf >tmp-gperf.h
         $(srcdir)/move-if-change tmp-gperf.h $(srcdir)/c-gperf.h
 
 c-decl.o : c-decl.c $(CONFIG_H) system.h $(TREE_H) c-tree.h c-lex.h flags.h \
     output.h toplev.h
 c-typeck.o : c-typeck.c $(CONFIG_H) system.h $(TREE_H) c-tree.h flags.h \
-    output.h expr.h insn-codes.h $(RTL_H) toplev.h
+    output.h $(EXPR_H) $(RTL_H) toplev.h
 c-lang.o : c-lang.c $(CONFIG_H) system.h $(TREE_H) c-tree.h c-lex.h toplev.h \
     output.h
 c-lex.o : c-lex.c $(CONFIG_H) system.h $(TREE_H) $(RTL_H) c-lex.h c-tree.h \
     $(srcdir)/c-parse.h input.h flags.h $(srcdir)/c-gperf.h c-pragma.h \
-    toplev.h output.h
+    toplev.h output.h mbchar.h
 c-aux-info.o : c-aux-info.c  $(CONFIG_H) system.h $(TREE_H) c-tree.h flags.h
 c-convert.o : c-convert.c $(CONFIG_H) system.h $(TREE_H) flags.h toplev.h
 c-pragma.o: c-pragma.c $(CONFIG_H) system.h $(RTL_H) $(TREE_H) except.h \
     function.h defaults.h c-pragma.h toplev.h
 c-iterate.o: c-iterate.c $(CONFIG_H) system.h $(TREE_H) $(RTL_H) c-tree.h \
-    flags.h toplev.h 
+    flags.h toplev.h $(EXPR_H)
+mbchar.o: mbchar.c $(CONFIG_H) system.h gansidecl.h mbchar.h
 
 collect2$(exeext): collect2.o tlink.o hash.o cplus-dem.o underscore.o \
-       version.o choose-temp.o $(LIBDEPS)
+       version.o choose-temp.o mkstemp.o $(LIBDEPS)
 # Don't try modifying collect2 (aka ld) in place--it might be linking this.
        -rm -f collect2$(exeext)
        $(CC) $(ALL_CFLAGS) $(LDFLAGS) -o $@ collect2.o tlink.o hash.o \
-         cplus-dem.o underscore.o version.o choose-temp.o $(LIBS)
+         cplus-dem.o underscore.o version.o choose-temp.o mkstemp.o $(LIBS)
 
-collect2.o : collect2.c $(CONFIG_H) system.h gansidecl.h gstab.h obstack.h \
-       $(DEMANGLE_H)
+collect2.o : collect2.c $(CONFIG_H) system.h gansidecl.h gstab.h \
+       $(srcdir)/../include/obstack.h $(DEMANGLE_H)
        $(CC) $(ALL_CFLAGS) $(ALL_CPPFLAGS) $(INCLUDES)  \
        -DTARGET_MACHINE=\"$(target_alias)\" $(MAYBE_USE_COLLECT2) \
        -c `echo $(srcdir)/collect2.c | sed 's,^\./,,'`
 
 tlink.o: tlink.c $(DEMANGLE_H) hash.h $(CONFIG_H) system.h toplev.h
 hash.o: hash.c hash.h system.h toplev.h
-cplus-dem.o: cplus-dem.c $(DEMANGLE_H)
+
+cplus-dem.o: $(srcdir)/../libiberty/cplus-dem.c $(DEMANGLE_H)
+       rm -f cplus-dem.c
+       $(LN_S) $(srcdir)/../libiberty/cplus-dem.c cplus-dem.c
+       $(CC) -c $(ALL_CFLAGS) $(ALL_CPPFLAGS) $(INCLUDES) cplus-dem.c
+
+pexecute.o: $(srcdir)/../libiberty/pexecute.c $(CONFIG_H) system.h gansidecl.h
+       rm -f pexecute.c
+       $(LN_S) $(srcdir)/../libiberty/pexecute.c pexecute.c
+       $(CC) -c $(ALL_CFLAGS) $(ALL_CPPFLAGS) $(INCLUDES) pexecute.c
+
+vfprintf.o: $(srcdir)/../libiberty/vfprintf.c $(CONFIG_H) system.h gansidecl.h
+       rm -f vfprintf.c
+       $(LN_S) $(srcdir)/../libiberty/vfprintf.c vfprintf.c
+       $(CC) -c $(ALL_CFLAGS) $(ALL_CPPFLAGS) $(INCLUDES) vfprintf.c
+
+splay-tree.o: $(srcdir)/../libiberty/splay-tree.c \
+  $(srcdir)/../include/splay-tree.h $(srcdir)/../include/libiberty.h \
+  gansidecl.h
+       rm -f splay-tree.c
+       $(LN_S) $(srcdir)/../libiberty/splay-tree.c splay-tree.c
+       $(CC) -c $(ALL_CFLAGS) $(ALL_CPPFLAGS) $(INCLUDES) splay-tree.c
 
 underscore.c: s-under ; @true
 
@@ -1309,7 +1344,7 @@ s-under: $(GCC_PASSES)
 # A file used by all variants of C.
 
 c-common.o : c-common.c $(CONFIG_H) system.h $(TREE_H) c-tree.h c-lex.h \
-       flags.h toplev.h output.h
+       flags.h toplev.h output.h c-pragma.h $(RTL_H)
 
 # Language-independent files.
 
@@ -1326,24 +1361,37 @@ gcc.o: gcc.c $(CONFIG_H) system.h gansidecl.h multilib.h Makefile \
   -c `echo $(srcdir)/gcc.c | sed 's,^\./,,'`
 
 tree-check.h: s-check ; @true
-s-check : tree.def gencheck $(srcdir)/move-if-change
+s-check : gencheck $(srcdir)/move-if-change
        ./gencheck > tmp-check.h
        $(srcdir)/move-if-change tmp-check.h tree-check.h
        touch s-check
 
-gencheck : gencheck.o tree.h tree.def $(HOST_LIBDEPS)
+gencheck : gencheck.o tree.def $(lang_tree_files) $(HOST_LIBDEPS)
        $(HOST_CC) $(HOST_CFLAGS) $(HOST_LDFLAGS) -o $@ \
         gencheck.o $(HOST_LIBS)
 
-gencheck.o : gencheck.c hconfig.h system.h
+gencheck.o : gencheck.c hconfig.h system.h gansidecl.h
        $(HOST_CC) -c $(HOST_CFLAGS) $(HOST_CPPFLAGS) $(INCLUDES) $(srcdir)/gencheck.c
 
 dumpvers: dumpvers.c
 
 version.o: version.c
-obstack.o: obstack.c $(CONFIG_H)
-choose-temp.o: choose-temp.c $(CONFIG_H) gansidecl.h system.h
-pexecute.o: pexecute.c $(CONFIG_H) system.h gansidecl.h
+obstack.o: $(srcdir)/../libiberty/obstack.c $(CONFIG_H)
+       rm -f obstack.c
+       $(LN_S) $(srcdir)/../libiberty/obstack.c obstack.c
+       $(CC) -c $(ALL_CFLAGS) $(ALL_CPPFLAGS) $(INCLUDES) obstack.c
+
+choose-temp.o: $(srcdir)/../libiberty/choose-temp.c $(CONFIG_H) gansidecl.h \
+       system.h
+       rm -f choose-temp.c
+       $(LN_S) $(srcdir)/../libiberty/choose-temp.c choose-temp.c
+       $(CC) -c $(ALL_CFLAGS) $(ALL_CPPFLAGS) $(INCLUDES) choose-temp.c
+
+mkstemp.o: $(srcdir)/../libiberty/mkstemp.c $(CONFIG_H) gansidecl.h system.h
+       rm -f mkstemp.c
+       $(LN_S) $(srcdir)/../libiberty/mkstemp.c mkstemp.c
+       $(CC) -c $(ALL_CFLAGS) $(ALL_CPPFLAGS) $(INCLUDES) mkstemp.c
+
 prefix.o: prefix.c $(CONFIG_H) system.h gansidecl.h Makefile
        $(CC) $(ALL_CFLAGS) $(ALL_CPPFLAGS) $(INCLUDES) \
        -DPREFIX=\"$(prefix)\" \
@@ -1354,12 +1402,13 @@ convert.o: convert.c $(CONFIG_H) $(TREE_H) flags.h convert.h toplev.h
 tree.o : tree.c $(CONFIG_H) system.h $(TREE_H) flags.h function.h toplev.h except.h
 print-tree.o : print-tree.c $(CONFIG_H) system.h $(TREE_H)
 stor-layout.o : stor-layout.c $(CONFIG_H) system.h $(TREE_H) flags.h \
-   function.h expr.h insn-codes.h $(RTL_H) toplev.h except.h
-fold-const.o : fold-const.c $(CONFIG_H) system.h $(TREE_H) flags.h toplev.h
+   function.h $(EXPR_H) $(RTL_H) toplev.h except.h
+fold-const.o : fold-const.c $(CONFIG_H) system.h $(TREE_H) flags.h toplev.h \
+   $(RTL_H)
 toplev.o : toplev.c $(CONFIG_H) system.h $(TREE_H) $(RTL_H) \
    flags.h input.h insn-attr.h xcoffout.h defaults.h output.h \
-   insn-codes.h insn-config.h recog.h Makefile toplev.h dwarfout.h \
-   dwarf2out.h sdbout.h dbxout.h \
+   insn-codes.h insn-config.h $(RECOG_H) Makefile toplev.h dwarfout.h \
+   dwarf2out.h sdbout.h dbxout.h $(EXPR_H) \
    $(lang_options_files)
        $(CC) $(ALL_CFLAGS) $(ALL_CPPFLAGS) $(INCLUDES) $(MAYBE_USE_COLLECT2) \
          -DTARGET_NAME=\"$(target_alias)\" \
@@ -1371,113 +1420,119 @@ print-rtl.o : print-rtl.c $(CONFIG_H) system.h $(RTL_H) bitmap.h
 rtlanal.o : rtlanal.c $(CONFIG_H) system.h $(RTL_H)
 
 varasm.o : varasm.c $(CONFIG_H) system.h $(TREE_H) $(RTL_H) flags.h \
-   function.h defaults.h insn-codes.h expr.h hard-reg-set.h regs.h \
-   xcoffout.h output.h c-pragma.h toplev.h except.h dbxout.h
+   function.h defaults.h $(EXPR_H) hard-reg-set.h $(REGS_H) \
+   xcoffout.h output.h c-pragma.h toplev.h except.h dbxout.h sdbout.h
 function.o : function.c $(CONFIG_H) system.h $(RTL_H) $(TREE_H) flags.h \
-   function.h insn-flags.h insn-codes.h expr.h regs.h hard-reg-set.h \
+   function.h insn-flags.h insn-codes.h $(EXPR_H) $(REGS_H) hard-reg-set.h \
    insn-config.h $(RECOG_H) output.h toplev.h except.h
 stmt.o : stmt.c $(CONFIG_H) system.h $(RTL_H) $(TREE_H) flags.h function.h  \
-   insn-flags.h insn-config.h insn-codes.h hard-reg-set.h expr.h except.h \
+   insn-flags.h insn-config.h insn-codes.h hard-reg-set.h $(EXPR_H) except.h \
    loop.h $(RECOG_H) toplev.h output.h
 except.o : except.c $(CONFIG_H) system.h $(RTL_H) $(TREE_H) flags.h \
-   function.h insn-flags.h insn-codes.h expr.h regs.h hard-reg-set.h \
+   function.h insn-flags.h $(EXPR_H) $(REGS_H) hard-reg-set.h \
    insn-config.h $(RECOG_H) output.h except.h toplev.h
 expr.o : expr.c $(CONFIG_H) system.h $(RTL_H) $(TREE_H) flags.h function.h \
-   regs.h insn-flags.h insn-codes.h expr.h insn-config.h $(RECOG_H) output.h \
+   $(REGS_H) insn-flags.h insn-codes.h $(EXPR_H) insn-config.h $(RECOG_H) output.h \
    typeclass.h hard-reg-set.h toplev.h hard-reg-set.h except.h
-calls.o : calls.c $(CONFIG_H) system.h $(RTL_H) $(TREE_H) flags.h expr.h \
-   insn-codes.h insn-flags.h regs.h toplev.h output.h
+calls.o : calls.c $(CONFIG_H) system.h $(RTL_H) $(TREE_H) flags.h $(EXPR_H) \
+   insn-flags.h $(REGS_H) toplev.h output.h
 expmed.o : expmed.c $(CONFIG_H) system.h $(RTL_H) $(TREE_H) flags.h  \
-   insn-flags.h insn-config.h insn-codes.h expr.h $(RECOG_H) real.h
+   insn-flags.h insn-config.h insn-codes.h $(EXPR_H) $(RECOG_H) real.h
 explow.o : explow.c $(CONFIG_H) system.h $(RTL_H) $(TREE_H) flags.h \
-   hard-reg-set.h insn-config.h expr.h $(RECOG_H) insn-flags.h insn-codes.h
+   hard-reg-set.h insn-config.h $(EXPR_H) $(RECOG_H) insn-flags.h insn-codes.h
 optabs.o : optabs.c $(CONFIG_H) system.h $(RTL_H) $(TREE_H) flags.h  \
-   insn-flags.h insn-config.h insn-codes.h expr.h $(RECOG_H) reload.h
-dbxout.o : dbxout.c $(CONFIG_H) system.h $(TREE_H) $(RTL_H) flags.h regs.h \
+   insn-flags.h insn-config.h insn-codes.h $(EXPR_H) $(RECOG_H) reload.h
+dbxout.o : dbxout.c $(CONFIG_H) system.h $(TREE_H) $(RTL_H) flags.h $(REGS_H) \
    insn-config.h reload.h gstab.h xcoffout.h defaults.h output.h dbxout.h \
    toplev.h
 sdbout.o : sdbout.c $(CONFIG_H) system.h $(TREE_H) $(RTL_H) flags.h except.h \
-   function.h expr.h output.h hard-reg-set.h regs.h defaults.h real.h \
-   insn-config.h obstack.h xcoffout.h c-pragma.h sdbout.h
+   function.h $(EXPR_H) output.h hard-reg-set.h $(REGS_H) defaults.h real.h \
+   insn-config.h $(srcdir)/../include/obstack.h xcoffout.h c-pragma.h \
+   sdbout.h toplev.h
 dwarfout.o : dwarfout.c $(CONFIG_H) system.h $(TREE_H) $(RTL_H) dwarf.h \
    flags.h insn-config.h reload.h output.h defaults.h toplev.h dwarfout.h
 dwarf2out.o : dwarf2out.c $(CONFIG_H) system.h $(TREE_H) $(RTL_H) dwarf2.h \
-   flags.h insn-config.h insn-codes.h reload.h output.h defaults.h \
-   hard-reg-set.h regs.h expr.h toplev.h dwarf2out.h
+   flags.h insn-config.h reload.h output.h defaults.h \
+   hard-reg-set.h $(REGS_H) $(EXPR_H) toplev.h dwarf2out.h dyn-string.h
 xcoffout.o : xcoffout.c $(CONFIG_H) system.h $(TREE_H) $(RTL_H) xcoffout.h \
-   flags.h
+   flags.h toplev.h output.h dbxout.h
 emit-rtl.o : emit-rtl.c $(CONFIG_H) system.h $(RTL_H) $(TREE_H) flags.h \
-   except.h function.h regs.h insn-config.h insn-codes.h $(RECOG_H) real.h \
-   expr.h obstack.h hard-reg-set.h bitmap.h
+   except.h function.h $(REGS_H) insn-config.h $(RECOG_H) real.h \
+   $(EXPR_H) $(srcdir)/../include/obstack.h hard-reg-set.h bitmap.h
 real.o : real.c $(CONFIG_H) system.h $(TREE_H) toplev.h
 getpwd.o : getpwd.c $(CONFIG_H) system.h
 
 integrate.o : integrate.c $(CONFIG_H) system.h $(RTL_H) $(TREE_H) flags.h \
-   integrate.h insn-flags.h insn-config.h insn-codes.h expr.h real.h regs.h \
+   integrate.h insn-flags.h insn-config.h $(EXPR_H) real.h $(REGS_H) \
    function.h output.h $(RECOG_H) except.h toplev.h
 
-jump.o : jump.c $(CONFIG_H) system.h $(RTL_H) flags.h hard-reg-set.h regs.h \
-   insn-config.h insn-codes.h insn-flags.h $(RECOG_H) expr.h real.h except.h
-stupid.o : stupid.c $(CONFIG_H) system.h $(RTL_H) regs.h hard-reg-set.h flags.h
+jump.o : jump.c $(CONFIG_H) system.h $(RTL_H) flags.h hard-reg-set.h $(REGS_H) \
+   insn-config.h insn-flags.h $(RECOG_H) $(EXPR_H) real.h except.h \
+   toplev.h
+stupid.o : stupid.c $(CONFIG_H) system.h $(RTL_H) $(REGS_H) hard-reg-set.h \
+   $(BASIC_BLOCK_H) insn-config.h reload.h flags.h toplev.h
 
-cse.o : cse.c $(CONFIG_H) system.h $(RTL_H) regs.h hard-reg-set.h flags.h \
-   real.h insn-config.h insn-codes.h $(RECOG_H) expr.h toplev.h output.h
-gcse.o : gcse.c $(CONFIG_H) system.h $(RTL_H) regs.h hard-reg-set.h flags.h \
-   real.h insn-config.h insn-codes.h $(RECOG_H) expr.h basic-block.h output.h
+cse.o : cse.c $(CONFIG_H) system.h $(RTL_H) $(REGS_H) hard-reg-set.h flags.h \
+   real.h insn-config.h $(RECOG_H) $(EXPR_H) toplev.h output.h
+gcse.o : gcse.c $(CONFIG_H) system.h $(RTL_H) $(REGS_H) hard-reg-set.h flags.h \
+   real.h insn-config.h $(RECOG_H) $(EXPR_H) $(BASIC_BLOCK_H) output.h
 profile.o : profile.c $(CONFIG_H) system.h $(RTL_H) flags.h insn-flags.h \
-   gcov-io.h $(TREE_H) output.h regs.h toplev.h
+   gcov-io.h $(TREE_H) output.h $(REGS_H) toplev.h insn-config.h
 loop.o : loop.c $(CONFIG_H) system.h $(RTL_H) flags.h loop.h insn-config.h \
-   insn-flags.h insn-codes.h regs.h hard-reg-set.h $(RECOG_H) expr.h real.h
-unroll.o : unroll.c $(CONFIG_H) system.h $(RTL_H) insn-config.h insn-codes.h \
-   integrate.h regs.h $(RECOG_H) flags.h expr.h loop.h
+   insn-flags.h $(REGS_H) hard-reg-set.h $(RECOG_H) $(EXPR_H) real.h \
+   toplev.h
+unroll.o : unroll.c $(CONFIG_H) system.h $(RTL_H) insn-config.h \
+   integrate.h $(REGS_H) $(RECOG_H) flags.h $(EXPR_H) loop.h toplev.h
 flow.o : flow.c $(CONFIG_H) system.h $(RTL_H) flags.h insn-config.h \
-   $(BASIC_BLOCK_H) regs.h hard-reg-set.h output.h
+   $(BASIC_BLOCK_H) $(REGS_H) hard-reg-set.h output.h toplev.h recog.h
 combine.o : combine.c $(CONFIG_H) system.h $(RTL_H) flags.h  \
-   insn-config.h insn-flags.h insn-codes.h insn-attr.h regs.h expr.h \
-   $(BASIC_BLOCK_H) $(RECOG_H) real.h hard-reg-set.h
+   insn-config.h insn-flags.h insn-codes.h insn-attr.h $(REGS_H) $(EXPR_H) \
+   $(BASIC_BLOCK_H) $(RECOG_H) real.h hard-reg-set.h toplev.h
 regclass.o : regclass.c $(CONFIG_H) system.h $(RTL_H) hard-reg-set.h flags.h \
-   $(BASIC_BLOCK_H) regs.h insn-config.h $(RECOG_H) reload.h real.h toplev.h \
+   $(BASIC_BLOCK_H) $(REGS_H) insn-config.h $(RECOG_H) reload.h real.h toplev.h \
    output.h
 local-alloc.o : local-alloc.c $(CONFIG_H) system.h $(RTL_H) flags.h \
-   $(BASIC_BLOCK_H) regs.h hard-reg-set.h insn-config.h $(RECOG_H) output.h \
-   insn-attr.h
+   $(BASIC_BLOCK_H) $(REGS_H) hard-reg-set.h insn-config.h $(RECOG_H) output.h \
+   insn-attr.h toplev.h
 bitmap.o : bitmap.c $(CONFIG_H) system.h $(RTL_H) flags.h $(BASIC_BLOCK_H) \
-   regs.h
-global.o : global.c $(CONFIG_H) system.h $(RTL_H) flags.h  \
-   $(BASIC_BLOCK_H) regs.h hard-reg-set.h insn-config.h output.h
+   $(REGS_H)
+global.o : global.c $(CONFIG_H) system.h $(RTL_H) flags.h reload.h \
+   $(BASIC_BLOCK_H) $(REGS_H) hard-reg-set.h insn-config.h output.h toplev.h
+varray.o : varray.c $(CONFIG_H) system.h varray.h $(RTL_H) $(TREE_H) bitmap.h
 
-reload.o : reload.c $(CONFIG_H) system.h $(RTL_H) flags.h output.h expr.h \
-   reload.h $(RECOG_H) hard-reg-set.h insn-config.h insn-codes.h regs.h \
+reload.o : reload.c $(CONFIG_H) system.h $(RTL_H) flags.h output.h $(EXPR_H) \
+   reload.h $(RECOG_H) hard-reg-set.h insn-config.h insn-codes.h $(REGS_H) \
    real.h toplev.h
-reload1.o : reload1.c $(CONFIG_H) system.h $(RTL_H) real.h flags.h expr.h \
-   reload.h regs.h hard-reg-set.h insn-config.h insn-flags.h insn-codes.h \
+reload1.o : reload1.c $(CONFIG_H) system.h $(RTL_H) real.h flags.h $(EXPR_H) \
+   reload.h $(REGS_H) hard-reg-set.h insn-config.h insn-flags.h insn-codes.h \
    $(BASIC_BLOCK_H) $(RECOG_H) output.h toplev.h
 caller-save.o : caller-save.c $(CONFIG_H) system.h $(RTL_H) flags.h \
-   regs.h hard-reg-set.h insn-codes.h insn-config.h $(BASIC_BLOCK_H) $(RECOG_H) \
-   reload.h expr.h
+   $(REGS_H) hard-reg-set.h insn-config.h $(BASIC_BLOCK_H) \
+   $(RECOG_H) reload.h $(EXPR_H) toplev.h
 reorg.o : reorg.c $(CONFIG_H) system.h $(RTL_H) conditions.h hard-reg-set.h \
-   $(BASIC_BLOCK_H) regs.h insn-config.h insn-codes.h insn-attr.h \
-   insn-flags.h $(RECOG_H) flags.h output.h expr.h
-alias.o : alias.c $(CONFIG_H) system.h $(RTL_H) flags.h hard-reg-set.h regs.h \
-   insn-codes.h
+   $(BASIC_BLOCK_H) $(REGS_H) insn-config.h insn-attr.h \
+   insn-flags.h $(RECOG_H) flags.h output.h $(EXPR_H)
+alias.o : alias.c $(CONFIG_H) system.h $(RTL_H) flags.h hard-reg-set.h \
+   $(REGS_H) toplev.h output.h $(EXPR_H) 
 regmove.o : regmove.c $(CONFIG_H) system.h $(RTL_H) insn-config.h \
-   insn-codes.h recog.h output.h reload.h regs.h hard-reg-set.h flags.h \
-   expr.h insn-flags.h $(BASIC_BLOCK_H)
+   $(RECOG_H) output.h reload.h $(REGS_H) hard-reg-set.h flags.h \
+   $(EXPR_H) insn-flags.h $(BASIC_BLOCK_H) toplev.h
 $(SCHED_PREFIX)sched.o : $(SCHED_PREFIX)sched.c $(CONFIG_H) system.h $(RTL_H) \
-   $(BASIC_BLOCK_H) regs.h hard-reg-set.h flags.h insn-config.h insn-attr.h \
-   toplev.h
-final.o : final.c $(CONFIG_H) system.h $(RTL_H) $(TREE_H) flags.h regs.h \
+   $(BASIC_BLOCK_H) $(REGS_H) hard-reg-set.h flags.h insn-config.h \
+   insn-attr.h toplev.h recog.h
+final.o : final.c $(CONFIG_H) system.h $(RTL_H) $(TREE_H) flags.h $(REGS_H) \
    $(RECOG_H) conditions.h insn-config.h insn-attr.h except.h real.h output.h \
    hard-reg-set.h insn-flags.h insn-codes.h gstab.h xcoffout.h defaults.h \
    toplev.h reload.h dwarfout.h dwarf2out.h sdbout.h dbxout.h
 recog.o : recog.c $(CONFIG_H) system.h $(RTL_H)  \
-   regs.h $(RECOG_H) hard-reg-set.h flags.h insn-config.h insn-attr.h \
-   insn-flags.h insn-codes.h real.h
+   $(REGS_H) $(RECOG_H) hard-reg-set.h flags.h insn-config.h insn-attr.h \
+   insn-flags.h insn-codes.h real.h toplev.h
 reg-stack.o : reg-stack.c $(CONFIG_H) system.h $(RTL_H) $(TREE_H) \
-   regs.h hard-reg-set.h flags.h insn-config.h insn-flags.h toplev.h
+   $(REGS_H) hard-reg-set.h flags.h insn-config.h insn-flags.h toplev.h
+dyn-string.o: dyn-string.c dyn-string.h $(CONFIG_H) system.h gansidecl.h
 
 $(out_object_file): $(out_file) $(CONFIG_H) $(TREE_H) \
-   $(RTL_H) regs.h hard-reg-set.h real.h insn-config.h conditions.h \
+   $(RTL_H) $(REGS_H) hard-reg-set.h real.h insn-config.h conditions.h \
    insn-flags.h output.h insn-attr.h insn-codes.h system.h toplev.h
        $(CC) -c $(ALL_CFLAGS) $(ALL_CPPFLAGS) $(INCLUDES) $(out_file)
 
@@ -1485,7 +1540,7 @@ $(out_object_file): $(out_file) $(CONFIG_H) $(TREE_H) \
 mips-tfile: mips-tfile.o version.o $(LIBDEPS)
        $(CC) $(CFLAGS) $(LDFLAGS) -o $@ mips-tfile.o version.o $(LIBS)
 
-mips-tfile.o : mips-tfile.c $(CONFIG_H) $(RTL_H) system.h
+mips-tfile.o : mips-tfile.c $(CONFIG_H) $(RTL_H) system.h machmode.h
 
 mips-tdump: mips-tdump.o version.o $(LIBDEPS)
        $(CC) $(CFLAGS) $(LDFLAGS) -o $@ mips-tdump.o version.o $(LIBS)
@@ -1498,9 +1553,11 @@ halfpic.o: halfpic.c $(CONFIG_H) $(RTL_H) $(TREE_H) system.h
 # Normally this target is not used; but it is used if you
 # define ALLOCA=alloca.o.  In that case, you must get a suitable alloca.c
 # from the GNU Emacs distribution.
-alloca.o:      alloca.c
+alloca.o:      $(srcdir)/../libiberty/alloca.c
+       rm -f alloca.c
+       $(LN_S) $(srcdir)/../libiberty/alloca.c alloca.c
        $(CC) $(ALL_CFLAGS) $(ALL_CPPFLAGS) $(INCLUDES) $(ALLOCA_FLAGS) \
-         -c `echo $(srcdir)/alloca.c | sed 's,^\./,,'`
+         -c `echo alloca.c | sed 's,^\./,,'`
        $(ALLOCA_FINISH)
 #\f
 # Generate header and source files from the machine description, 
@@ -1547,8 +1604,8 @@ s-codes : $(md_file) gencodes $(srcdir)/move-if-change
        $(srcdir)/move-if-change tmp-codes.h insn-codes.h
        touch s-codes
 
-insn-emit.o : insn-emit.c $(CONFIG_H) $(RTL_H) expr.h real.h output.h \
-  insn-config.h insn-flags.h insn-codes.h system.h
+insn-emit.o : insn-emit.c $(CONFIG_H) $(RTL_H) $(EXPR_H) real.h output.h \
+  insn-config.h insn-flags.h insn-codes.h system.h reload.h recog.h
        $(CC) $(ALL_CFLAGS) $(ALL_CPPFLAGS) $(INCLUDES) -c insn-emit.c
 
 insn-emit.c: s-emit ; @true
@@ -1568,7 +1625,7 @@ s-recog : $(md_file) genrecog $(srcdir)/move-if-change
        touch s-recog
 
 insn-opinit.o : insn-opinit.c $(CONFIG_H) $(RTL_H) insn-codes.h insn-flags.h \
-  insn-config.h flags.h $(RECOG_H) expr.h reload.h system.h
+  insn-config.h flags.h $(RECOG_H) $(EXPR_H) reload.h system.h
        $(CC) $(ALL_CFLAGS) $(ALL_CPPFLAGS) $(INCLUDES) -c insn-opinit.c
 
 insn-opinit.c: s-opinit ; @true
@@ -1577,7 +1634,8 @@ s-opinit : $(md_file) genopinit $(srcdir)/move-if-change
        $(srcdir)/move-if-change tmp-opinit.c insn-opinit.c
        touch s-opinit
 
-insn-extract.o : insn-extract.c $(CONFIG_H) $(RTL_H) system.h
+insn-extract.o : insn-extract.c $(CONFIG_H) $(RTL_H) system.h toplev.h \
+  insn-config.h recog.h
        $(CC) $(ALL_CFLAGS) $(ALL_CPPFLAGS) $(INCLUDES) -c insn-extract.c
 
 insn-extract.c: s-extract ; @true
@@ -1586,7 +1644,8 @@ s-extract : $(md_file) genextract $(srcdir)/move-if-change
        $(srcdir)/move-if-change tmp-extract.c insn-extract.c
        touch s-extract
 
-insn-peep.o : insn-peep.c $(CONFIG_H) $(RTL_H) regs.h output.h real.h system.h
+insn-peep.o : insn-peep.c $(CONFIG_H) $(RTL_H) $(REGS_H) output.h real.h \
+       system.h insn-config.h recog.h
        $(CC) $(ALL_CFLAGS) $(ALL_CPPFLAGS) $(INCLUDES) -c insn-peep.c
 
 insn-peep.c: s-peep ; @true
@@ -1595,8 +1654,8 @@ s-peep : $(md_file) genpeep $(srcdir)/move-if-change
        $(srcdir)/move-if-change tmp-peep.c insn-peep.c
        touch s-peep
 
-insn-attrtab.o : insn-attrtab.c $(CONFIG_H) $(RTL_H) regs.h real.h output.h \
-     insn-attr.h insn-config.h system.h
+insn-attrtab.o : insn-attrtab.c $(CONFIG_H) $(RTL_H) $(REGS_H) real.h \
+    output.h insn-attr.h insn-config.h system.h toplev.h
        $(CC) $(ALL_CFLAGS) $(ALL_CPPFLAGS) $(INCLUDES) -c insn-attrtab.c
 
 insn-attr.h: s-attr ; @true
@@ -1617,7 +1676,7 @@ s-attrtab : $(md_file) genattrtab $(srcdir)/move-if-change
        $(srcdir)/move-if-change tmp-attrtab.c insn-attrtab.c
        touch s-attrtab
 
-insn-output.o : insn-output.c $(CONFIG_H) $(RTL_H) regs.h real.h conditions.h \
+insn-output.o : insn-output.c $(CONFIG_H) $(RTL_H) $(REGS_H) real.h conditions.h \
     hard-reg-set.h insn-config.h insn-flags.h insn-attr.h output.h $(RECOG_H) \
     insn-codes.h system.h
        $(CC) $(ALL_CFLAGS) $(ALL_CPPFLAGS) $(INCLUDES) -c insn-output.c
@@ -1755,7 +1814,7 @@ $(HOST_PREFIX_1)print-rtl.o: $(srcdir)/print-rtl.c $(CONFIG_H) $(RTL_H)
        $(HOST_CC) -c $(HOST_CFLAGS) $(HOST_CPPFLAGS) $(INCLUDES) $(HOST_PREFIX)print-rtl.c
 
 $(HOST_PREFIX_1)bitmap.o: $(srcdir)/bitmap.c $(CONFIG_H) system.h $(RTL_H) \
-  flags.h $(BASIC_BLOCK_H) regs.h
+  flags.h $(BASIC_BLOCK_H) $(REGS_H)
        rm -f $(HOST_PREFIX)bitmap.c
        sed -e 's/config[.]h/hconfig.h/' $(srcdir)/bitmap.c > $(HOST_PREFIX)bitmap.c
        $(HOST_CC) -c $(HOST_CFLAGS) $(HOST_CPPFLAGS) $(INCLUDES) $(HOST_PREFIX)bitmap.c
@@ -1765,19 +1824,19 @@ $(HOST_PREFIX_1)rtlanal.o: $(srcdir)/rtlanal.c $(CONFIG_H) $(RTL_H)
        sed -e 's/config[.]h/hconfig.h/' $(srcdir)/rtlanal.c > $(HOST_PREFIX)rtlanal.c
        $(HOST_CC) -c $(HOST_CFLAGS) $(HOST_CPPFLAGS) $(INCLUDES) $(HOST_PREFIX)rtlanal.c
 
-$(HOST_PREFIX_1)alloca.o: alloca.c
+$(HOST_PREFIX_1)alloca.o: $(srcdir)/../libiberty/alloca.c
        rm -f $(HOST_PREFIX)alloca.c
-       cp $(srcdir)/alloca.c $(HOST_PREFIX)alloca.c
+       $(LN_S) $(srcdir)/../libiberty/alloca.c $(HOST_PREFIX)alloca.c
        $(HOST_CC) -c $(HOST_CFLAGS) $(HOST_CPPFLAGS) $(INCLUDES) $(HOST_PREFIX)alloca.c
 
-$(HOST_PREFIX_1)obstack.o: obstack.c
+$(HOST_PREFIX_1)obstack.o: $(srcdir)/../libiberty/obstack.c
        rm -f $(HOST_PREFIX)obstack.c
-       sed -e 's/config[.]h/hconfig.h/' $(srcdir)/obstack.c > $(HOST_PREFIX)obstack.c
+       sed -e 's/config[.]h/hconfig.h/' $(srcdir)/../libiberty/obstack.c > $(HOST_PREFIX)obstack.c
        $(HOST_CC) -c $(HOST_CFLAGS) $(HOST_CPPFLAGS) $(INCLUDES) $(HOST_PREFIX)obstack.c
 
-$(HOST_PREFIX_1)vfprintf.o: vfprintf.c
+$(HOST_PREFIX_1)vfprintf.o: $(srcdir)/../libiberty/vfprintf.c
        rm -f $(HOST_PREFIX)vfprintf.c
-       sed -e 's/config[.]h/hconfig.h/' $(srcdir)/vfprintf.c > $(HOST_PREFIX)vfprintf.c
+       sed -e 's/config[.]h/hconfig.h/' $(srcdir)/../libiberty/vfprintf.c > $(HOST_PREFIX)vfprintf.c
        $(HOST_CC) -c $(HOST_CFLAGS) $(HOST_CPPFLAGS) $(INCLUDES) $(HOST_PREFIX)vfprintf.c
 
 $(HOST_PREFIX_1)doprint.o: doprint.c
@@ -1802,28 +1861,35 @@ $(HOST_PREFIX_1):
 cpp$(exeext): $(CCCP)$(exeext)
        -rm -f cpp$(exeext)
        $(LN) $(CCCP)$(exeext) cpp$(exeext)
-cccp$(exeext): cccp.o cexp.o version.o prefix.o $(LIBDEPS)
-       $(CC) $(ALL_CFLAGS) $(LDFLAGS) -o $@ cccp.o cexp.o prefix.o \
-         version.o $(LIBS)
+cccp$(exeext): cccp.o cexp.o version.o prefix.o mbchar.o @extra_cpp_objs@ $(LIBDEPS)
+       $(CC) $(ALL_CFLAGS) $(LDFLAGS) -o $@ cccp.o cexp.o prefix.o mbchar.o \
+         version.o @extra_cpp_objs@ $(LIBS)
 cexp.o: $(srcdir)/cexp.c $(CONFIG_H) system.h gansidecl.h
        $(CC) $(ALL_CFLAGS) $(ALL_CPPFLAGS) $(INCLUDES) -c $(srcdir)/cexp.c
 $(srcdir)/cexp.c: $(srcdir)/cexp.y
        cd $(srcdir); $(BISON) -o cexp.c cexp.y
 
-cccp.o: cccp.c $(CONFIG_H) pcp.h version.c config.status system.h gansidecl.h
+# We use $(libsubdir)/$(unlibsubdir) to match the
+# -iprefix argument which gcc will pass if GCC_EXEC_PREFIX is used.
+cccp.o: cccp.c $(CONFIG_H) pcp.h version.c config.status system.h gansidecl.h \
+           mbchar.h
        $(CC) $(ALL_CFLAGS) $(ALL_CPPFLAGS) $(INCLUDES) \
          -DGCC_INCLUDE_DIR=\"$(libsubdir)/include\" \
          -DGPLUSPLUS_INCLUDE_DIR=\"$(gxx_include_dir)\" \
-         -DOLD_GPLUSPLUS_INCLUDE_DIR=\"$(old_gxx_include_dir)\" \
          -DLOCAL_INCLUDE_DIR=\"$(includedir)\" \
          -DCROSS_INCLUDE_DIR=\"$(tooldir)/sys-include\" \
          -DTOOL_INCLUDE_DIR=\"$(tooldir)/include\" \
          -c `echo $(srcdir)/cccp.c | sed 's,^\./,,'`
 
-cppmain$(exeext): cppmain.o cpplib.o cpphash.o cppalloc.o cpperror.o cppexp.o \
-  prefix.o version.o $(LIBDEPS)
-       $(CC) $(ALL_CFLAGS) $(LDFLAGS) -o $@ cppmain.o cpplib.o cpphash.o \
-         cppalloc.o cpperror.o cppexp.o prefix.o version.o $(LIBS)
+LIBCPP_OBJS =  cpplib.o cpphash.o cppalloc.o cpperror.o cppexp.o cppfiles.o \
+               cppulp.o prefix.o version.o mbchar.o @extra_cpp_objs@
+
+libcpp.a: $(LIBCPP_OBJS)
+       $(AR) $(ARFLAGS) libcpp.a $(LIBCPP_OBJS)
+
+cppmain$(exeext): cppmain.o libcpp.a $(LIBDEPS)
+       $(CC) $(ALL_CFLAGS) $(LDFLAGS) -o cppmain$(exeext) cppmain.o \
+       libcpp.a $(LIBS)
 
 cppmain.o: cppmain.c $(CONFIG_H) cpplib.h system.h gansidecl.h
 
@@ -1832,7 +1898,6 @@ cpplib.o: cpplib.c $(CONFIG_H) cpplib.h cpphash.h config.status system.h \
        $(CC) $(ALL_CFLAGS) $(ALL_CPPFLAGS) $(INCLUDES) \
          -DGCC_INCLUDE_DIR=\"$(libsubdir)/include\" \
          -DGPLUSPLUS_INCLUDE_DIR=\"$(gxx_include_dir)\" \
-         -DOLD_GPLUSPLUS_INCLUDE_DIR=\"$(old_gxx_include_dir)\" \
          -DLOCAL_INCLUDE_DIR=\"$(includedir)\" \
          -DCROSS_INCLUDE_DIR=\"$(tooldir)/sys-include\" \
          -DTOOL_INCLUDE_DIR=\"$(tooldir)/include\" \
@@ -1842,6 +1907,8 @@ cpperror.o: cpperror.c $(CONFIG_H) cpplib.h system.h gansidecl.h
 
 cppexp.o: cppexp.c $(CONFIG_H) cpplib.h system.h gansidecl.h
 
+cppfiles.o: cppfiles.c $(CONFIG_H) cpplib.h system.h gansidecl.h
+
 cpphash.o: cpphash.c cpplib.h cpphash.h $(CONFIG_H) system.h gansidecl.h
 
 cppalloc.o: cppalloc.c $(CONFIG_H) cpplib.h system.h gansidecl.h
@@ -1852,41 +1919,46 @@ cppalloc.o: cppalloc.c $(CONFIG_H) cpplib.h system.h gansidecl.h
 proto: config.status protoize$(exeext) unprotoize$(exeext) SYSCALLS.c.X
 
 protoize$(exeext): protoize.o getopt.o getopt1.o getpwd.o version.o \
-    pexecute.o choose-temp.o $(LIBDEPS)
+    pexecute.o choose-temp.o mkstemp.o $(LIBDEPS)
        $(CC) $(ALL_CFLAGS) $(LDFLAGS) -o $@ \
          protoize.o getopt.o getopt1.o getpwd.o version.o \
-         pexecute.o choose-temp.o $(LIBS)
+         pexecute.o choose-temp.o mkstemp.o $(LIBS)
 
 unprotoize$(exeext): unprotoize.o getopt.o getopt1.o getpwd.o version.o \
-    pexecute.o choose-temp.o $(LIBDEPS)
+    pexecute.o choose-temp.o mkstemp.o $(LIBDEPS)
        $(CC) $(ALL_CFLAGS) $(LDFLAGS) -o $@ \
          unprotoize.o getopt.o getopt1.o getpwd.o version.o \
-         pexecute.o choose-temp.o $(LIBS)
+         pexecute.o choose-temp.o mkstemp.o $(LIBS)
 
-protoize.o: protoize.c getopt.h $(CONFIG_H) system.h
+protoize.o: protoize.c $(srcdir)/../include/getopt.h $(CONFIG_H) system.h
        $(CC) -c $(ALL_CFLAGS) $(ALL_CPPFLAGS) $(INCLUDES) \
           -DGCC_INCLUDE_DIR=\"$(libsubdir)/include\" \
          -DGPLUSPLUS_INCLUDE_DIR=\"$(gxx_include_dir)\" \
-          -DCROSS_INCLUDE_DIR=\"$(tooldir)/sys-include\" \
+         -DCROSS_INCLUDE_DIR=\"$(tooldir)/sys-include\" \
          -DTOOL_INCLUDE_DIR=\"$(tooldir)/include\" \
          -DLOCAL_INCLUDE_DIR=\"$(includedir)\" \
          -DSTD_PROTO_DIR=\"$(libsubdir)\" \
          $(srcdir)/protoize.c
 
-unprotoize.o: unprotoize.c protoize.c getopt.h $(CONFIG_H) system.h
+unprotoize.o: unprotoize.c protoize.c $(srcdir)/../include/getopt.h $(CONFIG_H) system.h
        $(CC) -c $(ALL_CFLAGS) $(ALL_CPPFLAGS) $(INCLUDES) \
           -DGCC_INCLUDE_DIR=\"$(libsubdir)/include\" \
          -DGPLUSPLUS_INCLUDE_DIR=\"$(gxx_include_dir)\" \
-          -DCROSS_INCLUDE_DIR=\"$(tooldir)/sys-include\" \
+         -DCROSS_INCLUDE_DIR=\"$(tooldir)/sys-include\" \
          -DTOOL_INCLUDE_DIR=\"$(tooldir)/include\" \
          -DLOCAL_INCLUDE_DIR=\"$(includedir)\" \
          -DSTD_PROTO_DIR=\"$(libsubdir)\" \
          $(srcdir)/unprotoize.c
 
-getopt.o: getopt.c getopt.h
-       $(CC) -c $(ALL_CFLAGS) $(ALL_CPPFLAGS) $(INCLUDES) $(srcdir)/getopt.c
-getopt1.o: getopt1.c getopt.h
-       $(CC) -c $(ALL_CFLAGS) $(ALL_CPPFLAGS) $(INCLUDES) $(srcdir)/getopt1.c
+getopt.o: $(srcdir)/../libiberty/getopt.c $(srcdir)/../include/getopt.h
+       rm -f getopt.c
+       $(LN_S) $(srcdir)/../libiberty/getopt.c getopt.c
+       $(CC) -c $(ALL_CFLAGS) $(ALL_CPPFLAGS) $(INCLUDES) getopt.c
+
+getopt1.o: $(srcdir)/../libiberty/getopt1.c $(srcdir)/../include/getopt.h
+       rm -f getopt1.c
+       $(LN_S) $(srcdir)/../libiberty/getopt1.c getopt1.c
+       $(CC) -c $(ALL_CFLAGS) $(ALL_CPPFLAGS) $(INCLUDES) getopt1.c
 
 # This info describes the target machine, so compile with GCC just built.
 SYSCALLS.c.X: $(srcdir)/sys-types.h $(srcdir)/sys-protos.h $(GCC_PASSES) \
@@ -1988,9 +2060,12 @@ stmp-fixinc: $(FIXINCLUDES) gsyslimits.h
              $(SHELL) $(srcdir)/$(FIXINCLUDES) include $$dir; \
            else true; fi; \
          done; \
-         rm -f include/assert.h; \
-         cp $(srcdir)/assert.h include/assert.h; \
-         chmod a+r include/assert.h; \
+         if [ x$(INSTALL_ASSERT_H) != x ] ; \
+         then \
+           rm -f include/assert.h; \
+           cp $(srcdir)/assert.h include/assert.h; \
+           chmod a+r include/assert.h; \
+         fi \
        else true; \
        fi
        rm -f include/syslimits.h
@@ -2000,6 +2075,19 @@ stmp-fixinc: $(FIXINCLUDES) gsyslimits.h
          cp $(srcdir)/gsyslimits.h include/syslimits.h; \
        fi
        chmod a+r include/syslimits.h
+# If $(SYSTEM_HEADER_DIR) is $(tooldir)/sys-include, and
+# that directory exists, then make sure that $(libsubdir) exists.
+# This is because cpp is compiled to find $(tooldir)/include via
+# $(libsubdir)/$(unlibsubdir), which will only work if $(libsubdir)
+# exists.
+       if [ "$(SYSTEM_HEADER_DIR)" = "$(tooldir)/sys-include" ] \
+          && [ -d $(tooldir)/sys-include ]; then \
+         if [ -d $(libdir) ] ; then true ; else mkdir $(libdir) ; fi; \
+         if [ -d $(libdir)/gcc-lib ] ; then true ; else mkdir $(libdir)/gcc-lib; fi; \
+         if [ -d $(libdir)/gcc-lib/$(target_alias) ] ; then true ; else mkdir $(libdir)/gcc-lib/$(target_alias) ; fi; \
+         if [ -d $(libdir)/gcc-lib/$(target_alias)/$(version) ] ; then true ; else mkdir $(libdir)/gcc-lib/$(target_alias)/$(version) ; fi; \
+       else true; fi
+
        touch stmp-fixinc
 
 # Files related to the fixproto script.
@@ -2035,13 +2123,12 @@ xsys-protos.h: $(GCC_PASSES) $(srcdir)/sys-protos.h deduced.h gen-protos Makefil
        rm -rf fixtmp.c
 
 fix-header: fix-header.o scan-decls.o scan.o xsys-protos.h $(HOST_LIBDEPS) \
-   cpplib.o cpphash.o cppalloc.o cppexp.o cpperror.o prefix.o version.o
+           libcpp.a
        $(HOST_CC) $(HOST_CFLAGS) $(HOST_LDFLAGS) -o $@ fix-header.o \
-          scan-decls.o scan.o cpplib.o cpphash.o cppalloc.o prefix.o \
-          version.o cppexp.o $(HOST_LIBS)
+          scan-decls.o scan.o libcpp.a $(HOST_LIBS)
 
-fix-header.o: fix-header.c obstack.h scan.h xsys-protos.h $(build_xm_file) \
-       system.h cpplib.h cpphash.h
+fix-header.o: fix-header.c $(srcdir)/../include/obstack.h scan.h \
+       xsys-protos.h $(build_xm_file) system.h cpplib.h cpphash.h
        $(HOST_CC) -c $(HOST_CFLAGS) $(HOST_CPPFLAGS) $(INCLUDES) $(srcdir)/fix-header.c
 
 scan-decls.o: scan-decls.c scan.h cpplib.h $(build_xm_file) system.h gansidecl.h
@@ -2105,8 +2192,8 @@ cpp.dvi: $(srcdir)/cpp.texi
 
 
 INSTALL: $(srcdir)/install1.texi $(srcdir)/install.texi
-       $(MAKEINFO) -D INSTALLONLY --no-header --no-split -o INSTALL \
-       $(srcdir)/install1.texi 
+       cd $(srcdir); $(MAKEINFO) -D INSTALLONLY \
+               --no-split -o INSTALL install1.texi 
 #\f
 # Deletion of files made during compilation.
 # There are four levels of this:
@@ -2190,7 +2277,7 @@ distclean: clean lang.distclean
        -rm -f md cstamp-h
        -rm -f config.status config.run config.cache config.bak
        -rm -f Make-lang Make-hooks Make-host Make-target
-       -rm -f Makefile specs.h options.h *.oaux
+       -rm -f Makefile specs.h options.h gencheck.h *.oaux
        -rm -f gthr-default.h
        -rm -f */stage1 */stage2 */stage3 */stage4 */include
        -rm -f c-parse.output
@@ -2271,9 +2358,10 @@ installdirs:
        -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
-       -if [ -d $(libdir)/gcc-lib/$(target_alias) ] ; then true ; else mkdir $(libdir)/gcc-lib/$(target_alias) ; chmod a+rx $(libdir)/gcc-lib/$(target_alias) ; fi
-       -if [ -d $(libdir)/gcc-lib/$(target_alias)/$(version) ] ; then true ; else mkdir $(libdir)/gcc-lib/$(target_alias)/$(version) ; chmod a+rx $(libdir)/gcc-lib/$(target_alias)/$(version) ; fi
-       -if [ -d $(libdir)/gcc-lib/$(target_alias)/$(version)/include ] ; then true ; else mkdir $(libdir)/gcc-lib/$(target_alias)/$(version)/include ; chmod a+rx $(libdir)/gcc-lib/$(target_alias)/$(version)/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 ; \
+       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 $(tooldir) ] ; then true ; else mkdir $(tooldir) ; chmod a+rx $(tooldir) ; fi
@@ -2317,10 +2405,17 @@ install-common: native installdirs $(EXTRA_PARTS) lang.install-common
 # Install protoize if it was compiled.
        -if [ -f protoize$(exeext) ]; \
        then \
-           rm -f $(bindir)/protoize$(exeext); \
-           $(INSTALL_PROGRAM) protoize$(exeext) $(bindir)/protoize$(exeext); \
-           rm -f $(bindir)/unprotoize$(exeext); \
-           $(INSTALL_PROGRAM) unprotoize$(exeext) $(bindir)/unprotoize$(exeext); \
+           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); \
+           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); \
+           fi ; \
            rm -f $(libsubdir)/SYSCALLS.c.X; \
            $(INSTALL_DATA) SYSCALLS.c.X $(libsubdir)/SYSCALLS.c.X; \
            chmod a-x $(libsubdir)/SYSCALLS.c.X; \
@@ -2355,13 +2450,19 @@ install-driver: xgcc$(exeext)
 
 # Install the info files.
 # $(INSTALL_DATA) might be a relative pathname, so we can't cd into srcdir
-# to do the install.  The sed rule was copied from stmp-int-hdrs.
+# to do the install.
 install-info: doc installdirs lang.install-info
        -rm -f $(infodir)/cpp.info* $(infodir)/gcc.info*
        for f in cpp.info* gcc.info*; do \
-           realfile=`echo $$f | sed -e 's|.*/\([^/]*\)$$|\1|'`; \
-           $(INSTALL_DATA) $$f $(infodir)/$$realfile; \
+           $(INSTALL_DATA) $$f $(infodir)/$$f; \
        done
+       -if $(SHELL) -c 'install-info --version' >/dev/null 2>&1; then \
+         if [ -f $(infodir)/dir ] ; then \
+           for f in cpp.info gcc.info; do \
+               install-info --dir-file=$(infodir)/dir $(infodir)/$$f; \
+           done; \
+         else true; fi; \
+       else true; fi;
        -chmod a-x $(infodir)/cpp.info* $(infodir)/gcc.info*
 
 # Install the man pages.
@@ -2474,11 +2575,13 @@ uninstall: lang.uninstall
        -rm -rf $(bindir)/$(GCC_CROSS_NAME)$(exeext)
        -rm -rf $(bindir)/protoize$(exeext)
        -rm -rf $(bindir)/unprotoize$(exeext)
+       -rm -rf $(bindir)/gcov$(exeext)
        -rm -rf $(mandir)/$(GCC_INSTALL_NAME)$(manext)
        -rm -rf $(mandir)/$(GCC_CROSS_NAME)$(manext)
        -rm -rf $(mandir)/cccp$(manext)
        -rm -rf $(mandir)/protoize$(manext)
        -rm -rf $(mandir)/unprotoize$(manext)
+       -rm -f $(infodir)/cpp.info* $(infodir)/gcc.info*
 #\f
 # These targets are for the dejagnu testsuites. The file site.exp 
 # contains global variables that all the testsuites will use.
@@ -2532,7 +2635,7 @@ site.exp: ./config.status Makefile
                -e '1,/^## All variables above are.*##/ d' >> site.exp
        -@rm -f ./tmp?
 
-CHECK_TARGETS = check-gcc check-g++ check-g77
+CHECK_TARGETS = check-gcc check-g++ check-g77 check-objc
 
 check: $(CHECK_TARGETS)
 
@@ -2575,6 +2678,16 @@ check-g77: testsuite/site.exp
           export TCL_LIBRARY ; fi ; \
        $(RUNTEST) --tool g77 $(RUNTESTFLAGS)
 
+check-objc: testsuite/site.exp
+       -rootme=`pwd`; export rootme; \
+       srcdir=`cd ${srcdir}; pwd` ; export srcdir ; \
+       cd testsuite; \
+       EXPECT=${EXPECT} ; export EXPECT ; \
+       if [ -f $${rootme}/../expect/expect ] ; then  \
+          TCL_LIBRARY=$${srcdir}/../tcl/library ; \
+           export TCL_LIBRARY ; fi ; \
+       $(RUNTEST) --tool objc $(RUNTESTFLAGS)
+
 # These exist for maintenance purposes.
 
 # Update the tags table.
@@ -2596,7 +2709,7 @@ tmp-gcc.xtar: distdir
        tar -chf tmp-gcc.xtar gcc-$(version)
 
 distdir-cvs: force
-       if [ -d $(srcdir)/CVS ]; then cvs -r update; fi
+       if [ -d $(srcdir)/CVS ]; then cd $(srcdir) && cvs -r update; fi
 
 # This target exists to do the initial work before the language specific
 # stuff gets done.
@@ -2611,7 +2724,7 @@ distdir-start: doc $(srcdir)/INSTALL $(srcdir)/c-parse.y $(srcdir)/c-gperf.h \
        awk '$$1 " " $$2 " " $$3 == "This directory contains" \
                { $$6 = version; print $$0 } \
             $$1 " " $$2 " " $$3 != "This directory contains"' \
-         version=$(version) README > tmp.README
+         version=$(version) $(srcdir)/README > tmp.README
        mv tmp.README README
        -rm -rf gcc-$(version) tmp      
 # Put all the files in a temporary subdirectory
@@ -2619,31 +2732,33 @@ distdir-start: doc $(srcdir)/INSTALL $(srcdir)/c-parse.y $(srcdir)/c-gperf.h \
        mkdir tmp
        mkdir tmp/config
        mkdir tmp/ginclude
-       for file in *[0-9a-zA-Z+]; do \
-         $(LN) $$file tmp; \
+       mkdir tmp/objc
+       for file in `(cd $(srcdir) && echo *[0-9a-zA-Z+])`; do \
+         test -f $(srcdir)/$$file && $(LN_S) $(srcdir)/$$file tmp; \
        done
-       cd config; \
-       for file in *[0-9a-zA-Z+]; do \
-         if test -d $$file && test "$$file" != RCS && test "$$file" != CVS; then \
-           mkdir ../tmp/config/$$file; \
-           cd $$file; \
-           for subfile in *[0-9a-zA-Z+]; do \
-             $(LN) $$subfile ../../tmp/config/$$file; \
+       if test "$(srcdir)" != "." ; then \
+         for file in c-parse.c cexp.c ; do \
+           test -f ./$$file && $(LN_S) ../$$file tmp; \
+         done; \
+       fi
+       for file in `(cd $(srcdir)/config && echo *[0-9a-zA-Z+])`; do \
+         if test -d $(srcdir)/config/$$file \
+             && test "$$file" != RCS && test "$$file" != CVS; then \
+           mkdir tmp/config/$$file; \
+           for subfile in `(cd $(srcdir)/config/$$file && echo *[0-9a-zA-Z+])`; do \
+             $(LN_S) $(srcdir)/config/$$file/$$subfile tmp/config/$$file; \
            done; \
-           cd ..; \
          else \
-           $(LN) $$file ../tmp/config; \
+           $(LN_S) $(srcdir)/config/$$file tmp/config; \
          fi; \
        done
-       cd ginclude; \
-       for file in *[0-9a-zA-Z+]; do \
-         $(LN) $$file ../tmp/ginclude; \
+       for file in `(cd $(srcdir)/ginclude && echo *[0-9a-zA-Z+])`; do \
+         $(LN_S) $(srcdir)/ginclude/$$file tmp/ginclude; \
        done
-       cd objc; \
-       for file in *[0-9a-zA-Z+]; do \
-         $(LN) $$file ../tmp/objc; \
+       for file in `(cd $(srcdir)/objc && echo *[0-9a-zA-Z+])`; do \
+         $(LN_S) $(srcdir)/objc/$$file tmp/objc; \
        done
-       $(LN) .gdbinit tmp
+       $(LN_S) .gdbinit tmp
 
 # Finish making `distdir', after the languages have done their thing.
 distdir-finish:
@@ -2678,22 +2793,22 @@ bootstrap bootstrap-lean: force
 # To prevent `make install' from compiling alloca.o and then relinking cc1
 # because alloca.o is newer, we permit these recursive makes to compile
 # alloca.o.  Then cc1 is newer, so it won't have to be relinked.
-       $(MAKE) CC="stage1/xgcc$(exeext) -Bstage1/" CFLAGS="$(WARN_CFLAGS) $(BOOT_CFLAGS)" LDFLAGS="$(BOOT_LDFLAGS)" libdir=$(libdir) STAGE_PREFIX=stage1/ LANGUAGES="$(LANGUAGES)"
+       $(MAKE) CC="stage1/xgcc$(exeext) -Bstage1/ -B$(build_tooldir)/bin/" CFLAGS="$(WARN_CFLAGS) $(BOOT_CFLAGS)" LDFLAGS="$(BOOT_LDFLAGS)" libdir=$(libdir) STAGE_PREFIX=stage1/ LANGUAGES="$(LANGUAGES)"
        $(MAKE) stage2
        -if test $@ = bootstrap-lean; then rm -rf stage1; else true; fi
-       $(MAKE) CC="stage2/xgcc$(exeext) -Bstage2/" CFLAGS="$(WARN_CFLAGS) $(BOOT_CFLAGS)" LDFLAGS="$(BOOT_LDFLAGS)" libdir=$(libdir) STAGE_PREFIX=stage2/ LANGUAGES="$(LANGUAGES)"
+       $(MAKE) CC="stage2/xgcc$(exeext) -Bstage2/ -B$(build_tooldir)/bin/" CFLAGS="$(WARN_CFLAGS) $(BOOT_CFLAGS)" LDFLAGS="$(BOOT_LDFLAGS)" libdir=$(libdir) STAGE_PREFIX=stage2/ LANGUAGES="$(LANGUAGES)"
 
 bootstrap2 bootstrap2-lean: force
-       $(MAKE) CC="stage1/xgcc$(exeext) -Bstage1/" CFLAGS="$(WARN_CFLAGS) $(BOOT_CFLAGS)" LDFLAGS="$(BOOT_LDFLAGS)" libdir=$(libdir) STAGE_PREFIX=stage1/ LANGUAGES="$(LANGUAGES)"
+       $(MAKE) CC="stage1/xgcc$(exeext) -Bstage1/ -B$(build_tooldir)/bin/" CFLAGS="$(WARN_CFLAGS) $(BOOT_CFLAGS)" LDFLAGS="$(BOOT_LDFLAGS)" libdir=$(libdir) STAGE_PREFIX=stage1/ LANGUAGES="$(LANGUAGES)"
        $(MAKE) stage2
        -if test $@ = bootstrap2-lean; then rm -rf stage1; else true; fi
-       $(MAKE) CC="stage2/xgcc$(exeext) -Bstage2/" CFLAGS="$(WARN_CFLAGS) $(BOOT_CFLAGS)" LDFLAGS="$(BOOT_LDFLAGS)" libdir=$(libdir) STAGE_PREFIX=stage2/ LANGUAGES="$(LANGUAGES)"
+       $(MAKE) CC="stage2/xgcc$(exeext) -Bstage2/ -B$(build_tooldir)/bin/" CFLAGS="$(WARN_CFLAGS) $(BOOT_CFLAGS)" LDFLAGS="$(BOOT_LDFLAGS)" libdir=$(libdir) STAGE_PREFIX=stage2/ LANGUAGES="$(LANGUAGES)"
 
 bootstrap3 bootstrap3-lean: force
-       $(MAKE) CC="stage2/xgcc$(exeext) -Bstage2/" CFLAGS="$(WARN_CFLAGS) $(BOOT_CFLAGS)" LDFLAGS="$(BOOT_LDFLAGS)" libdir=$(libdir) STAGE_PREFIX=stage2/ LANGUAGES="$(LANGUAGES)"
+       $(MAKE) CC="stage2/xgcc$(exeext) -Bstage2/ -B$(build_tooldir)/bin/" CFLAGS="$(WARN_CFLAGS) $(BOOT_CFLAGS)" LDFLAGS="$(BOOT_LDFLAGS)" libdir=$(libdir) STAGE_PREFIX=stage2/ LANGUAGES="$(LANGUAGES)"
 
 bootstrap4 bootstrap4-lean: force
-       $(MAKE) CC="stage3/xgcc$(exeext) -Bstage3/" CFLAGS="$(WARN_CFLAGS) $(BOOT_CFLAGS)" LDFLAGS="$(BOOT_LDFLAGS)" libdir=$(libdir) STAGE_PREFIX=stage3/ LANGUAGES="$(LANGUAGES)"
+       $(MAKE) CC="stage3/xgcc$(exeext) -Bstage3/ -B$(build_tooldir)/bin/" CFLAGS="$(WARN_CFLAGS) $(BOOT_CFLAGS)" LDFLAGS="$(BOOT_LDFLAGS)" libdir=$(libdir) STAGE_PREFIX=stage3/ LANGUAGES="$(LANGUAGES)"
 
 # Compare the object files in the current directory with those in the
 # stage2 directory.