OSDN Git Service

(objc_condition_{,de}allocate): New functions.
[pf3gnuchains/gcc-fork.git] / gcc / Makefile.in
index ece08a6..7fcfc01 100644 (file)
@@ -1,5 +1,5 @@
 # Makefile for GNU C compiler.
-#   Copyright (C) 1987, 88, 90-95, 1996 Free Software Foundation, Inc.
+#   Copyright (C) 1987, 88, 90-96, 1997 Free Software Foundation, Inc.
 
 #This file is part of GNU CC.
 
@@ -37,6 +37,10 @@ SUBDIRS =
 # This is overridden by configure.
 LANGUAGES = c objective-c proto
 
+# Selection of languages to be made during stage1 build.
+# This is overridden by configure.
+BOOT_LANGUAGES = c
+
 ALLOCA =
 ALLOCA_FLAGS =
 ALLOCA_FINISH = true
@@ -115,7 +119,8 @@ USER_H = $(srcdir)/ginclude/stdarg.h $(srcdir)/ginclude/stddef.h \
     $(srcdir)/ginclude/va-pyr.h $(srcdir)/ginclude/va-sparc.h \
     $(srcdir)/ginclude/va-clipper.h $(srcdir)/ginclude/va-spur.h \
     $(srcdir)/ginclude/iso646.h $(srcdir)/ginclude/va-ppc.h \
-    $(srcdir)/ginclude/proto.h $(srcdir)/ginclude/va-sh.h $(EXTRA_HEADERS)
+    $(srcdir)/ginclude/proto.h $(srcdir)/ginclude/va-sh.h $(EXTRA_HEADERS) \
+    $(LANG_EXTRA_HEADERS)
 
 # Target to use whe installing assert.h.  Some systems may
 # want to set this empty.
@@ -138,7 +143,7 @@ ENQUIRE_LDFLAGS = $(LDFLAGS)
 
 # Sed command to transform gcc to installed name.  Overwritten by configure.
 program_transform_name = -e s,x,x,
-program_transform_cross_name = -e s,^,$(target)-,
+program_transform_cross_name = -e s,^,$(target_alias)-,
 
 # Tools to use when building a cross-compiler.
 # These are used because `configure' appends `cross-make'
@@ -167,6 +172,7 @@ PREMADE_ATTRTAB_MD = Makefile  # Guaranteed not to cmp equal to md.
 PREMADE_ATTRTAB = 
 
 target= ... `configure' substitutes actual target name here.
+target_alias= ... `configure' substitutes specified target name here.
 xmake_file= ... `configure' substitutes actual x- file name here.
 tmake_file= ... `configure' substitutes actual t- file name here.
 out_file= ... `configure' substitutes actual out file name here.
@@ -177,6 +183,7 @@ build_xm_file= ... `configure' substitutes actual build xm- file name here.
 host_xm_file= ... `configure' substitutes actual host xm- file name here.
 lang_specs_files= ... `configure' substitutes actual lang spec file names here.
 lang_options_files= ... `configure' puts actual lang options file names here.
+OBJC_THREAD_FILE= ... `configure' puts actual objc thread file name here.
 version=`sed -e 's/.*\"\([^ \"]*\)[ \"].*/\1/' < $(srcdir)/version.c`
 mainversion=`sed -e 's/.*\"\([0-9]*\.[0-9]*\).*/\1/' < $(srcdir)/version.c`
 
@@ -197,7 +204,7 @@ bindir = $(exec_prefix)/bin
 # Directory in which to put the directories used by the compiler.
 libdir = $(exec_prefix)/lib
 # Directory in which the compiler finds executables, libraries, etc.
-libsubdir = $(libdir)/gcc-lib/$(target)/$(version)
+libsubdir = $(libdir)/gcc-lib/$(target_alias)/$(version)
 # Directory in which the compiler finds g++ includes.
 gxx_include_dir= $(prefix)/include/g++
 # Directory in which the old g++ header files may be found.
@@ -218,7 +225,7 @@ exeext =
 mandir = $(prefix)/man/man1
 # Directory in which to find other cross-compilation tools and headers.
 # Used in install-cross.
-tooldir = $(exec_prefix)/$(target)
+tooldir = $(exec_prefix)/$(target_alias)
 # Dir for temp files.
 tmpdir = /tmp
 
@@ -334,7 +341,7 @@ OTHER_FIXINCLUDES_DIRS=
 
 # List of things which should already be built whenever we try to use xgcc
 # to compile anything (without linking).
-GCC_PASSES=xgcc cc1 cpp $(EXTRA_PASSES)
+GCC_PASSES=xgcc$(exeext) cc1$(exeext) cpp$(exeext) $(EXTRA_PASSES)
 
 # List of things which should already be built whenever we try to use xgcc
 # to link anything.
@@ -470,6 +477,8 @@ INCLUDES = -I. -I$(srcdir) -I$(srcdir)/config
 LANG_MAKEFILES =
 LANG_STAGESTUFF =
 LANG_DIFF_EXCLUDES =
+LANG_LIB2FUNCS =
+LANG_EXTRA_HEADERS =
 
 # Flags to pass to recursive makes.
 # CC is set by configure.  Hosts without symlinks need special handling
@@ -483,6 +492,7 @@ FLAGS_TO_PASS = \
        "BISONFLAGS=$(BISONFLAGS)" \
        "CC=set-by-configure" \
        "CFLAGS=$(CFLAGS)" \
+       "CLIB=$(CLIB)" \
        "GCC_FOR_TARGET=$(GCC_FOR_TARGET)" \
        "LDFLAGS=$(LDFLAGS)" \
        "LEX=$(LEX)" \
@@ -492,6 +502,7 @@ FLAGS_TO_PASS = \
        "RANLIB_FOR_TARGET=$(RANLIB_FOR_TARGET)" \
        "RANLIB_TEST_FOR_TARGET=$(RANLIB_TEST_FOR_TARGET)" \
        "SHELL=$(SHELL)" \
+       "STAGE_PREFIX=set-by-configure" \
        "exeext=$(exeext)" \
        "objext=$(objext)" \
        "exec_prefix=$(exec_prefix)" \
@@ -522,9 +533,9 @@ BC_ALL = bc-arity.h bc-opcode.h bc-opname.h
 
 # Language-independent object files.
 OBJS = toplev.o version.o tree.o print-tree.o stor-layout.o fold-const.o \
- function.o stmt.o expr.o calls.o expmed.o explow.o optabs.o varasm.o \
- rtl.o print-rtl.o rtlanal.o emit-rtl.o real.o \
- dbxout.o sdbout.o dwarfout.o xcoffout.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 real.o \
+ dbxout.o sdbout.o dwarfout.o dwarf2out.o xcoffout.o \
  integrate.o jump.o cse.o loop.o unroll.o flow.o stupid.o combine.o \
  regclass.o local-alloc.o global.o reload.o reload1.o caller-save.o \
  insn-peep.o reorg.o sched.o final.o recog.o reg-stack.o \
@@ -544,7 +555,7 @@ CCCP=cccp
 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 \
- stamp-flags stamp-config stamp-codes \
+ stamp-flags stamp-config stamp-codes stamp-mlib \
  stamp-output stamp-recog stamp-emit stamp-extract stamp-peep \
  stamp-attr stamp-attrtab stamp-opinit stamp-proto stamp-crt stamp-crtS stamp-crt0 \
  genemit$(exeext) genoutput$(exeext) genrecog$(exeext) genextract$(exeext) \
@@ -593,6 +604,9 @@ CONFIG_H =
 RTL_H = rtl.h rtl.def machmode.h machmode.def
 TREE_H = tree.h real.h tree.def machmode.h machmode.def
 BYTECODE_H = bytecode.h bc-emit.h bc-optab.h
+
+# "t" or nothing, for building multilibbed versions of, say, crtbegin.o.
+T =
 \f
 # Language makefile fragments.
 
@@ -620,7 +634,7 @@ BYTECODE_H = bytecode.h bc-emit.h bc-optab.h
 .SUFFIXES: .in .def
 
 Makefile: $(srcdir)/Makefile.in $(srcdir)/configure $(srcdir)/version.c \
-   $(srcdir)/config/$(xmake_file) $(srcdir)/config/$(tmake_file) \
+   $(xmake_file) $(tmake_file) \
    $(LANG_MAKEFILES)
        cp config.status config.run
        $(SHELL) config.run
@@ -681,15 +695,15 @@ compilations: ${OBJS}
 
 # Create a list of the language-independent object files so the language
 # subdirectories needn't mention their names explicitly.
-stamp-objlist: Makefile $(OBJS) $(BC_OBJS)
-       echo " $(OBJS) $(BC_OBJS)" | sed -e 's, \([a-z]\), ../\1,g' -e 's/\.o/$(objext)/g' >stamp-objlist
+stamp-objlist: $(OBJS) $(BC_OBJS)
+       echo " $(OBJS) $(BC_OBJS)" | sed -e 's, \([a-z0-9]\), ../\1,g' -e 's/\.o/$(objext)/g' >stamp-objlist
 
 # We call this executable `xgcc' rather than `gcc'
 # 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: gcc.o version.o choose-temp.o $(LIBDEPS) $(EXTRA_GCC_OBJS)
-       $(CC) $(ALL_CFLAGS) $(LDFLAGS) -o $@ gcc.o version.o choose-temp.o \
-         $(EXTRA_GCC_OBJS) $(LIBS)
+xgcc: gcc.o version.o choose-temp.o pexecute.o $(LIBDEPS) $(EXTRA_GCC_OBJS)
+       $(CC) $(ALL_CFLAGS) $(LDFLAGS) -o $@ gcc.o version.o \
+         choose-temp.o pexecute.o $(EXTRA_GCC_OBJS) $(LIBS)
 
 # Dump a specs file to make -B./ read these specs over installed ones.
 specs: xgcc
@@ -877,7 +891,7 @@ libgcc2.ready: $(GCC_PASSES) $(LIBGCC2_DEPS) stmp-int-hdrs
        fi
 
 libgcc2.a: libgcc2.c libgcc2.ready $(CONFIG_H) $(LIB2FUNCS_EXTRA) \
-   machmode.h longlong.h gbl-ctors.h config.status
+   $(LANG_LIB2FUNCS) machmode.h longlong.h gbl-ctors.h config.status
 # Actually build it in tmplibgcc2.a, then rename at end,
 # so that libgcc2.a itself remains nonexistent if compilation is aborted.
        -rm -f tmplibgcc2.a
@@ -902,19 +916,32 @@ libgcc2.a: libgcc2.c libgcc2.ready $(CONFIG_H) $(LIB2FUNCS_EXTRA) \
 # We don't use -e here because there are if statements
 # that should not make the command give up when the if condition is false.
 # Instead, we test for failure after each command where it matters.
-       for file in .. $(LIB2FUNCS_EXTRA); \
+       for file in .. $(LIB2FUNCS_EXTRA) $(LANG_LIB2FUNCS); \
        do \
          if [ x$${file} != x.. ]; then \
-           name=`echo $${file} | sed -e 's/[.][cS]$$//' -e 's/[.]asm$$//'`; \
+           name=`echo $${file} | sed -e 's/[.][cSo]$$//' -e 's/[.]asm$$//' -e 's/[.]txt$$//'`; \
            oname=` echo $${name} | sed -e 's,.*/,,'`; \
-           echo $${name}; \
-           if [ $${name}.asm = $${file} ]; then \
-             cp $${file} $${name}.s || exit 1; file=$${name}.s; \
-           else true; fi; \
-           $(GCC_FOR_TARGET) $(LIBGCC2_CFLAGS) $(INCLUDES) -c $${file}; \
-           if [ $$? -eq 0 ] ; then true; else exit 1; fi; \
-           $(AR) $(AR_FLAGS) tmplibgcc2.a $${oname}$(objext); \
-           rm -f $${name}.s $${oname}$(objext); \
+           if [ $${name}.txt = $${file} ]; then \
+             for f in .. `cat $${file}`; do if [ x$${f} != x.. ]; then \
+               $(MAKE) GCC_FOR_TARGET="$(GCC_FOR_TARGET)" \
+                 AR="$(AR)" AR_FLAGS="$(AR_FLAGS)" CC="$(CC)" \
+                 CFLAGS="$(CFLAGS)" HOST_PREFIX="$(HOST_PREFIX)" \
+                 HOST_PREFIX_1="$(HOST_PREFIX_1)" \
+                 LIBGCC2_CFLAGS="$(LIBGCC2_CFLAGS)" $${f}; \
+               if [ $$? -eq 0 ] ; then true; else exit 1; fi; \
+               $(AR) $(AR_FLAGS) tmplibgcc2.a $${f}; \
+               rm -f $${f}; \
+             fi; done; \
+           else \
+             echo $${name}; \
+             if [ $${name}.asm = $${file} ]; then \
+               cp $${file} $${name}.s || exit 1; file=$${name}.s; \
+             else true; fi; \
+             $(GCC_FOR_TARGET) $(LIBGCC2_CFLAGS) $(INCLUDES) -c $${file}; \
+             if [ $$? -eq 0 ] ; then true; else exit 1; fi; \
+             $(AR) $(AR_FLAGS) tmplibgcc2.a $${oname}$(objext); \
+             rm -f $${name}.s $${oname}$(objext); \
+           fi; \
          else true; \
          fi; \
        done
@@ -949,13 +976,21 @@ libgcc.a: $(LIBGCC1) $(LIBGCC2)
 # Use the genmultilib shell script to generate the information the gcc
 # driver program needs to select the library directory based on the
 # switches.
-multilib.h: $(srcdir)/genmultilib Makefile
-       $(SHELL) $(srcdir)/genmultilib "$(MULTILIB_OPTIONS)" \
-         "$(MULTILIB_DIRNAMES)" "$(MULTILIB_MATCHES)" "$(MULTILIB_EXCEPTIONS)" > multilib.h
+multilib.h: stamp-mlib; @true
+stamp-mlib: $(srcdir)/genmultilib Makefile
+       $(SHELL) $(srcdir)/genmultilib \
+         "$(MULTILIB_OPTIONS)" \
+         "$(MULTILIB_DIRNAMES)" \
+         "$(MULTILIB_MATCHES)" \
+         "$(MULTILIB_EXCEPTIONS)" \
+         "$(MULTILIB_EXTRA_OPTS)" > tmp-mlib.h
+       $(srcdir)/move-if-change tmp-mlib.h multilib.h
+       touch stamp-mlib
 
 # Build multiple copies of libgcc.a, one for each target switch.
 stmp-multilib: $(LIBGCC1) libgcc2.c libgcc2.ready $(CONFIG_H) \
-   $(LIB2FUNCS_EXTRA) machmode.h longlong.h gbl-ctors.h config.status
+   $(LIB2FUNCS_EXTRA) $(LANG_LIB2FUNCS) machmode.h longlong.h gbl-ctors.h \
+   config.status
        for i in `$(GCC_FOR_TARGET) --print-multi-lib`; do \
          dir=`echo $$i | sed -e 's/;.*$$//'`; \
          flags=`echo $$i | sed -e 's/^[^;]*;//' -e 's/@/ -/g'`; \
@@ -964,6 +999,7 @@ stmp-multilib: $(LIBGCC1) libgcc2.c libgcc2.ready $(CONFIG_H) \
            RANLIB="$(RANLIB)" RANLIB_TEST="$(RANLIB_TEST)" \
            HOST_PREFIX="$(HOST_PREFIX)" HOST_PREFIX_1="$(HOST_PREFIX_1)" \
            LIBGCC2_CFLAGS="$(LIBGCC2_CFLAGS) $${flags}" \
+           MULTILIB_CFLAGS="$${flags}" \
            LIBGCC1="$(LIBGCC1)" LIBGCC2="$(LIBGCC2)" \
            dir="$${dir}" stmp-multilib-sub; \
          if [ $$? -eq 0 ] ; then true; else exit 1; fi; \
@@ -972,7 +1008,11 @@ stmp-multilib: $(LIBGCC1) libgcc2.c libgcc2.ready $(CONFIG_H) \
 
 # Subroutine of stmp-multilib so make -n works.
 stmp-multilib-sub:
-       rm -f $(dir)/libgcc.a $(LIBGCC2)
+       rm -f $(LIBGCC2)
+       if [ -d $(dir) ]; then \
+         cd $(dir); \
+         rm -f libgcc.a $(EXTRA_MULTILIB_PARTS); \
+       fi
        $(MAKE) GCC_FOR_TARGET="$(GCC_FOR_TARGET)" \
          AR="$(AR)" AR_FLAGS="$(AR_FLAGS)" CC="$(CC)" CFLAGS="$(CFLAGS)" \
          HOST_PREFIX="$(HOST_PREFIX)" HOST_PREFIX_1="$(HOST_PREFIX_1)" \
@@ -1001,11 +1041,18 @@ stmp-multilib-sub:
        if $(RANLIB_TEST) ; then $(RANLIB) tmplibgcc.a; else true; fi
        if [ -d $(dir) ]; then true; else mkdir $(dir); fi
        mv tmplibgcc.a $(dir)/libgcc.a
+       for f in .. $(EXTRA_MULTILIB_PARTS); do if [ x$${f} != x.. ]; then \
+         $(MAKE) GCC_FOR_TARGET="$(GCC_FOR_TARGET)" \
+           AR="$(AR)" AR_FLAGS="$(AR_FLAGS)" CC="$(CC)" CFLAGS="$(CFLAGS)" \
+           HOST_PREFIX="$(HOST_PREFIX)" HOST_PREFIX_1="$(HOST_PREFIX_1)" \
+           MULTILIB_CFLAGS="$(MULTILIB_CFLAGS)" T="t" t$${f}; \
+         mv t$${f} $(dir)/$${f}; \
+       fi; done
 
 objc-runtime: libobjc.a
 
 # Build the Objective C runtime library.
-libobjc.a: cc1obj stmp-int-hdrs libgcc2.ready $(USE_COLLECT2) $(EXTRA_PARTS)
+libobjc.a: cc1obj specs stmp-int-hdrs libgcc2.ready $(USE_COLLECT2) $(EXTRA_PARTS)
        if [ -d objc ]; then true; else mkdir objc; fi
        thisdir1=`pwd`; \
        srcdir1=`cd $(srcdir); pwd`; \
@@ -1013,36 +1060,33 @@ libobjc.a: cc1obj stmp-int-hdrs libgcc2.ready $(USE_COLLECT2) $(EXTRA_PARTS)
        $(MAKE) -f $${srcdir1}/objc/Makefile libobjc.a \
          srcdir=$${srcdir1} tooldir=$(tooldir) AR="$(AR)" AR_FLAGS="$(AR_FLAGS)" \
          GCC_FOR_TARGET="$${thisdir1}/xgcc -B$${thisdir1}/" \
-         GCC_CFLAGS="$(GCC_CFLAGS)"
+         GCC_CFLAGS="$(GCC_CFLAGS)" OBJC_THREAD_FILE="$(OBJC_THREAD_FILE)"
        -rm -f libobjc.a
        ln objc/libobjc.a . >/dev/null 2>&1 || cp objc/libobjc.a .
        -if $(RANLIB_TEST) ; then $(RANLIB) libobjc.a; else true; fi
 
 # This is used by objc/Makefile if the user runs that directly.
-sublibobjc.a: cc1obj stmp-int-hdrs libgcc2.ready
+sublibobjc.a: cc1obj specs stmp-int-hdrs libgcc2.ready
        thisdir1=`pwd`; \
        srcdir1=`cd $(srcdir); pwd`; \
        cd objc; \
        $(MAKE) -f $$srcdir1/objc/Makefile libobjc.a \
          srcdir=$$srcdir1 tooldir=$(tooldir) AR="$(AR)" AR_FLAGS="$(AR_FLAGS)" \
          GCC_FOR_TARGET="$$thisdir1/xgcc -B$$thisdir1/" \
-         GCC_CFLAGS="$(GCC_CFLAGS)"
+         GCC_CFLAGS="$(GCC_CFLAGS)" OBJC_THREAD_FILE="$(OBJC_THREAD_FILE)"
 
 # Compile two additional files that are linked with every program
 # linked using GCC on systems using COFF or ELF, for the sake of C++
 # constructors.
-crtbegin.o: stamp-crt ; @true
-crtend.o: stamp-crt; @true
+$(T)crtbegin.o: crtstuff.c $(GCC_PASSES) $(CONFIG_H) gbl-ctors.h
+       $(GCC_FOR_TARGET) $(GCC_CFLAGS) $(INCLUDES) $(MULTILIB_CFLAGS) -g0 \
+         -finhibit-size-directive -fno-inline-functions $(CRTSTUFF_T_CFLAGS) \
+         -c $(srcdir)/crtstuff.c -DCRT_BEGIN -o $(T)crtbegin$(objext)
 
-stamp-crt:     crtstuff.c $(GCC_PASSES) $(CONFIG_H) gbl-ctors.h
-       $(GCC_FOR_TARGET) $(GCC_CFLAGS) $(INCLUDES) $(CRTSTUFF_T_CFLAGS) \
-         -DCRT_BEGIN -finhibit-size-directive -fno-inline-functions \
-         -g0 -c $(srcdir)/crtstuff.c
-       mv crtstuff$(objext) crtbegin$(objext)
-       $(GCC_FOR_TARGET) $(GCC_CFLAGS) $(INCLUDES) $(CRTSTUFF_T_CFLAGS) \
-         -DCRT_END -finhibit-size-directive -fno-inline-functions \
-         -g0 -c $(srcdir)/crtstuff.c -o crtend$(objext)
-       touch stamp-crt
+$(T)crtend.o: crtstuff.c $(GCC_PASSES) $(CONFIG_H) gbl-ctors.h
+       $(GCC_FOR_TARGET) $(GCC_CFLAGS) $(INCLUDES) $(MULTILIB_CFLAGS) -g0 \
+         -finhibit-size-directive -fno-inline-functions $(CRTSTUFF_T_CFLAGS) \
+         -c $(srcdir)/crtstuff.c -DCRT_END -o $(T)crtend$(objext)
 
 # On some systems we also want to install versions of these files
 # compiled using PIC for use in shared libraries.
@@ -1101,7 +1145,8 @@ c-lex.o : c-lex.c $(CONFIG_H) $(TREE_H) c-lex.h c-tree.h $(srcdir)/c-parse.h \
     input.h flags.h $(srcdir)/c-gperf.h c-pragma.h
 c-aux-info.o : c-aux-info.c  $(CONFIG_H) $(TREE_H) c-tree.h flags.h
 c-convert.o : c-convert.c $(CONFIG_H) $(TREE_H) flags.h
-c-pragma.o: c-pragma.c $(CONFIG_H) $(TREE_H) c-pragma.h
+c-pragma.o: c-pragma.c $(CONFIG_H) $(TREE_H) except.h function.h \
+    defaults.h c-pragma.h
 c-iterate.o: c-iterate.c $(CONFIG_H) $(TREE_H) $(RTL_H) c-tree.h flags.h
 
 # To make a configuration always use collect2, set USE_COLLECT2 to ld.
@@ -1119,7 +1164,7 @@ collect2 : collect2.o cplus-dem.o underscore.o version.o \
 
 collect2.o : collect2.c $(CONFIG_H) gstab.h obstack.h demangle.h
        $(CC) $(ALL_CFLAGS) $(ALL_CPPFLAGS) $(INCLUDES)  \
-       -DTARGET_MACHINE=\"$(target)\" $(MAYBE_USE_COLLECT2) \
+       -DTARGET_MACHINE=\"$(target_alias)\" $(MAYBE_USE_COLLECT2) \
        -c `echo $(srcdir)/collect2.c | sed 's,^\./,,'`
 
 cplus-dem.o: cplus-dem.c demangle.h
@@ -1147,7 +1192,7 @@ objc-parse.o : $(srcdir)/objc-parse.c $(CONFIG_H) $(TREE_H) c-lex.h \
 $(srcdir)/objc-parse.c : $(srcdir)/objc-parse.y
        cd $(srcdir); $(BISON) $(BISONFLAGS) objc-parse.y -o objc-parse.c
 $(srcdir)/objc-parse.y: $(srcdir)/c-parse.in
-       echo '/*WARNING: This file is automatically generated!*/' >tmp-c-parse.y
+       echo '/*WARNING: This file is automatically generated!*/' >tmp-objc-prs.y
        sed -e "/^ifc$$/,/^end ifc$$/d" \
          -e "/^ifobjc$$/d" -e "/^end ifobjc$$/d" \
          $(srcdir)/c-parse.in >>tmp-objc-prs.y
@@ -1162,14 +1207,15 @@ c-common.o : c-common.c $(CONFIG_H) $(TREE_H) c-tree.h c-lex.h flags.h
 
 # Language-independent files.
 
-gcc.o: gcc.c $(CONFIG_H) multilib.h config.status $(lang_specs_files)
-       $(CC) $(ALL_CFLAGS) $(ALL_CPPFLAGS) $(INCLUDES) \
+DRIVER_DEFINES = \
   -DSTANDARD_STARTFILE_PREFIX=\"$(libdir)/\" \
   -DSTANDARD_EXEC_PREFIX=\"$(libdir)/gcc-lib/\" \
   -DDEFAULT_TARGET_VERSION=\"$(version)\" \
-  -DDEFAULT_TARGET_MACHINE=\"$(target)\" \
-  -DTOOLDIR_BASE_PREFIX=\"$(exec_prefix)/\" \
-  $(MAYBE_TARGET_DEFAULT) \
+  -DDEFAULT_TARGET_MACHINE=\"$(target_alias)\" \
+  -DTOOLDIR_BASE_PREFIX=\"$(exec_prefix)/\"
+gcc.o: gcc.c $(CONFIG_H) multilib.h config.status $(lang_specs_files)
+       $(CC) $(ALL_CFLAGS) $(ALL_CPPFLAGS) $(INCLUDES) \
+  $(DRIVER_DEFINES) \
   -c `echo $(srcdir)/gcc.c | sed 's,^\./,,'`
 
 dumpvers: dumpvers.c
@@ -1177,6 +1223,7 @@ dumpvers: dumpvers.c
 version.o: version.c
 obstack.o: obstack.c
 choose-temp.o: choose-temp.c
+pexecute.o: pexecute.c
 
 convert.o: convert.c $(CONFIG_H) $(TREE_H) flags.h convert.h
 
@@ -1187,8 +1234,8 @@ fold-const.o : fold-const.c $(CONFIG_H) $(TREE_H) flags.h
 toplev.o : toplev.c $(CONFIG_H) $(TREE_H) $(RTL_H) bytecode.h bc-emit.h \
    flags.h input.h insn-attr.h xcoffout.h defaults.h output.h \
    $(lang_options_files)
-       $(CC) $(ALL_CFLAGS) $(ALL_CPPFLAGS) $(INCLUDES) \
-         $(MAYBE_TARGET_DEFAULT) $(MAYBE_USE_COLLECT2) \
+       $(CC) $(ALL_CFLAGS) $(ALL_CPPFLAGS) $(INCLUDES) $(MAYBE_USE_COLLECT2) \
+         -DTARGET_NAME=\"$(target_alias)\" \
          -c `echo $(srcdir)/toplev.c | sed 's,^\./,,'`
 
 rtl.o : rtl.c $(CONFIG_H) $(RTL_H)
@@ -1201,11 +1248,14 @@ varasm.o : varasm.c $(CONFIG_H) $(TREE_H) $(RTL_H) flags.h function.h \
    output.h bytecode.h c-pragma.h
 function.o : function.c $(CONFIG_H) $(RTL_H) $(TREE_H) flags.h function.h  \
    insn-flags.h insn-codes.h expr.h regs.h hard-reg-set.h insn-config.h \
-   recog.h output.h bytecode.h
+   recog.h output.h bytecode.h bc-emit.h
 stmt.o : stmt.c $(CONFIG_H) $(RTL_H) $(TREE_H) flags.h function.h  \
-   insn-flags.h insn-config.h insn-codes.h hard-reg-set.h expr.h loop.h \
-   recog.h bytecode.h bc-typecd.h bc-typecd.def bc-opcode.h bc-optab.h \
-   bc-emit.h
+   insn-flags.h insn-config.h insn-codes.h hard-reg-set.h expr.h except.h \
+   loop.h recog.h bytecode.h bc-typecd.h bc-typecd.def bc-opcode.h \
+   bc-optab.h bc-emit.h
+except.o : except.c $(CONFIG_H) $(RTL_H) $(TREE_H) flags.h function.h  \
+   insn-flags.h insn-codes.h expr.h regs.h hard-reg-set.h insn-config.h \
+   recog.h output.h except.h
 expr.o : expr.c $(CONFIG_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 \
    typeclass.h bytecode.h bc-opcode.h bc-typecd.h bc-typecd.def bc-optab.h \
@@ -1220,10 +1270,13 @@ optabs.o : optabs.c $(CONFIG_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) $(TREE_H) $(RTL_H) flags.h regs.h \
    insn-config.h reload.h gstab.h xcoffout.h defaults.h output.h
-sdbout.o : sdbout.c $(CONFIG_H) $(TREE_H) $(RTL_H) gsyms.h flags.h \
-   insn-config.h reload.h
+sdbout.o : sdbout.c $(CONFIG_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 \
+   bytecode.h obstack.h xcoffout.h c-pragma.h
 dwarfout.o : dwarfout.c $(CONFIG_H) $(TREE_H) $(RTL_H) dwarf.h flags.h \
    insn-config.h reload.h output.h defaults.h
+dwarf2out.o : dwarf2out.c $(CONFIG_H) $(TREE_H) $(RTL_H) dwarf2.h flags.h \
+   insn-config.h reload.h output.h defaults.h hard-reg-set.h regs.h
 xcoffout.o : xcoffout.c $(CONFIG_H) $(TREE_H) $(RTL_H) xcoffout.h flags.h
 emit-rtl.o : emit-rtl.c $(CONFIG_H) $(RTL_H) $(TREE_H) flags.h \
    function.h regs.h insn-config.h insn-codes.h real.h expr.h bytecode.h \
@@ -1271,19 +1324,18 @@ reorg.o : reorg.c $(CONFIG_H) $(RTL_H) conditions.h hard-reg-set.h \
 sched.o : sched.c $(CONFIG_H) $(RTL_H) basic-block.h regs.h hard-reg-set.h \
    flags.h insn-config.h insn-attr.h
 final.o : final.c $(CONFIG_H) $(RTL_H) $(TREE_H) flags.h regs.h \
-   recog.h conditions.h insn-config.h insn-attr.h real.h output.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
 recog.o : recog.c $(CONFIG_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
 reg-stack.o : reg-stack.c $(CONFIG_H) $(RTL_H) $(TREE_H) \
-   regs.h hard-reg-set.h flags.h insn-config.h
+   regs.h hard-reg-set.h flags.h insn-config.h insn-flags.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 \
    insn-flags.h output.h insn-attr.h insn-codes.h
-       $(CC) -c $(ALL_CFLAGS) $(ALL_CPPFLAGS) $(INCLUDES) \
-         $(MAYBE_TARGET_DEFAULT) $(out_file)
+       $(CC) -c $(ALL_CFLAGS) $(ALL_CPPFLAGS) $(INCLUDES) $(out_file)
 
 # Build auxiliary files that support ecoff format.
 mips-tfile: mips-tfile.o version.o $(LIBDEPS)
@@ -1665,6 +1717,8 @@ cppmain: cppmain.o cpplib.o cpphash.o cppalloc.o cpperror.o cppexp.o \
        $(CC) $(ALL_CFLAGS) $(LDFLAGS) -o $@ cppmain.o cpplib.o cpphash.o \
          cppalloc.o cpperror.o cppexp.o version.o $(LIBS)
 
+cppmain.o: cppmain.c $(CONFIG_H) cpplib.h
+
 cpplib.o: cpplib.c $(CONFIG_H) cpplib.h cpphash.h config.status
        $(CC) $(ALL_CFLAGS) $(ALL_CPPFLAGS) $(INCLUDES) \
          -DGCC_INCLUDE_DIR=\"$(libsubdir)/include\" \
@@ -1688,14 +1742,18 @@ cppalloc.o: cppalloc.c $(CONFIG_H)
 
 proto: config.status protoize unprotoize SYSCALLS.c.X
 
-protoize: protoize.o getopt.o getopt1.o getpwd.o version.o $(LIBDEPS)
+protoize: protoize.o getopt.o getopt1.o getpwd.o version.o \
+    pexecute.o choose-temp.o $(LIBDEPS)
        $(CC) $(ALL_CFLAGS) $(LDFLAGS) -o $@ \
-         protoize.o getopt.o getopt1.o getpwd.o version.o $(LIBS)
+         protoize.o getopt.o getopt1.o getpwd.o version.o \
+         pexecute.o choose-temp.o $(LIBS)
 protoize.o: stamp-proto ; @true
 
-unprotoize: unprotoize.o getopt.o getopt1.o getpwd.o version.o $(LIBDEPS)
+unprotoize: unprotoize.o getopt.o getopt1.o getpwd.o version.o \
+    pexecute.o choose-temp.o $(LIBDEPS)
        $(CC) $(ALL_CFLAGS) $(LDFLAGS) -o $@ \
-         unprotoize.o getopt.o getopt1.o getpwd.o version.o $(LIBS)
+         unprotoize.o getopt.o getopt1.o getpwd.o version.o \
+         pexecute.o choose-temp.o $(LIBS)
 unprotoize.o:  stamp-proto ; @true
 
 stamp-proto: protoize.c getopt.h $(CONFIG_H)
@@ -1769,14 +1827,12 @@ stmp-int-hdrs: stmp-fixinc $(USER_H) xlimits.h objc-headers
 # The sed command gets just the last file name component;
 # this is necessary because VPATH could add a dirname.
 # Using basename would be simpler, but some systems don't have it.
-       objdir=`pwd`; \
-       cd $(srcdir); \
        for file in .. $(USER_H); do \
          if [ X$$file != X.. ]; then \
            realfile=`echo $$file | sed -e 's|.*/\([^/]*\)$$|\1|'`; \
-           rm -f $$objdir/include/$$realfile; \
-           cp ginclude/$$realfile $$objdir/include; \
-           chmod a+r $$objdir/include/$$realfile; \
+           rm -f include/$$realfile; \
+           cp $$file include; \
+           chmod a+r include/$$realfile; \
          fi; \
        done
        rm -f include/limits.h
@@ -1825,10 +1881,12 @@ objc-headers: stmp-fixinc
        thisdir1=`pwd`; \
        srcdir1=`cd $(srcdir); pwd`; \
        cd objc; \
-       $(MAKE) -f $${srcdir1}/objc/Makefile copy-headers \
-       srcdir=$${srcdir1} tooldir=$(tooldir) AR="$(AR)" AR_FLAGS="$(AR_FLAGS)" \
-       GCC_FOR_TARGET="$${thisdir1}/xgcc -B$${thisdir1}/" \
-       GCC_CFLAGS="$(GCC_CFLAGS)" incinstalldir=$${thisdir1}/include
+       if [ -f $${srcdir1}/objc/Makefile ]; then \
+         $(MAKE) -f $${srcdir1}/objc/Makefile copy-headers \
+         srcdir=$${srcdir1} tooldir=$(tooldir) AR="$(AR)" AR_FLAGS="$(AR_FLAGS)" \
+         GCC_FOR_TARGET="$${thisdir1}/xgcc -B$${thisdir1}/" \
+         GCC_CFLAGS="$(GCC_CFLAGS)" incinstalldir=$${thisdir1}/include; \
+       fi
        touch objc-headers
 
 # Files related to the fixproto script.
@@ -2071,7 +2129,7 @@ install-cross-rest: install-float-h-cross
 
 # Install float.h for cross compiler.
 # Run this on the target machine!
-install-float-h-cross: install-dir
+install-float-h-cross: installdirs
 #      if [ -f enquire ] ; then true; else false; fi
 # Note: don't use -.  We should fail right away if enquire was not made.
        ./enquire -f > $(tmpdir)/float.h
@@ -2080,15 +2138,17 @@ install-float-h-cross: install-dir
        -rm -f $(tmpdir)/float.h
        chmod a-x $(libsubdir)/include/float.h
 
-# Create the installation directory.
-install-dir:
+# Create the installation directories.
+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
-       -if [ -d $(libdir)/gcc-lib/$(target) ] ; then true ; else mkdir $(libdir)/gcc-lib/$(target) ; chmod a+rx $(libdir)/gcc-lib/$(target) ; fi
-       -if [ -d $(libdir)/gcc-lib/$(target)/$(version) ] ; then true ; else mkdir $(libdir)/gcc-lib/$(target)/$(version) ; chmod a+rx $(libdir)/gcc-lib/$(target)/$(version) ; fi
-       -if [ -d $(libdir)/gcc-lib/$(target)/$(version)/include ] ; then true ; else mkdir $(libdir)/gcc-lib/$(target)/$(version)/include ; chmod a+rx $(libdir)/gcc-lib/$(target)/$(version)/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
        -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
@@ -2102,7 +2162,7 @@ install-dir:
        -if [ -d $(mandir) ] ; then true ; else mkdir $(mandir) ; chmod a+rx $(mandir) ; fi
 
 # Install the compiler executables built during cross compilation.
-install-common: native install-dir $(EXTRA_PARTS) lang.install-common
+install-common: native installdirs $(EXTRA_PARTS) lang.install-common
        for file in $(COMPILERS); do \
          if [ -f $$file ] ; then \
            rm -f $(libsubdir)/$$file; \
@@ -2141,7 +2201,7 @@ install-common: native install-dir $(EXTRA_PARTS) lang.install-common
        -rm -f $(libsubdir)/cpp$(exeext)
        $(INSTALL_PROGRAM) cpp$(exeext) $(libsubdir)/cpp$(exeext)
 
-# Install the driver program as $(target)-gcc
+# Install the driver program as $(target_alias)-gcc
 # and also as either gcc (if native) or $(tooldir)/bin/gcc.
 install-driver: xgcc
        -if [ -f gcc-cross$(exeext) ] ; then \
@@ -2154,22 +2214,22 @@ install-driver: xgcc
        else \
          rm -f $(bindir)/$(GCC_INSTALL_NAME)$(exeext); \
          $(INSTALL_PROGRAM) xgcc$(exeext) $(bindir)/$(GCC_INSTALL_NAME)$(exeext); \
-         rm -f $(bindir)/$(target)-gcc-1$(exeext); \
-         ln $(bindir)/$(GCC_INSTALL_NAME)$(exeext) $(bindir)/$(target)-gcc-1$(exeext) \
+         rm -f $(bindir)/$(target_alias)-gcc-1$(exeext); \
+         ln $(bindir)/$(GCC_INSTALL_NAME)$(exeext) $(bindir)/$(target_alias)-gcc-1$(exeext) \
            > /dev/null 2>&1 \
-           || cp $(bindir)/$(GCC_INSTALL_NAME)$(exeext) $(bindir)/$(target)-gcc-1$(exeext); \
-         mv $(bindir)/$(target)-gcc-1$(exeext) $(bindir)/$(target)-gcc$(exeext); \
+           || cp $(bindir)/$(GCC_INSTALL_NAME)$(exeext) $(bindir)/$(target_alias)-gcc-1$(exeext); \
+         mv $(bindir)/$(target_alias)-gcc-1$(exeext) $(bindir)/$(target_alias)-gcc$(exeext); \
        fi
 
 # Install the info files.
-install-info: doc install-dir lang.install-info
+install-info: doc installdirs lang.install-info
        -rm -f $(infodir)/cpp.info* $(infodir)/gcc.info*
        cd $(srcdir); for f in cpp.info* gcc.info*; \
        do $(INSTALL_DATA) $$f $(infodir)/$$f; done
        -chmod a-x $(infodir)/cpp.info* $(infodir)/gcc.info*
 
 # Install the man pages.
-install-man: install-dir $(srcdir)/gcc.1 $(srcdir)/cccp.1 lang.install-man
+install-man: installdirs $(srcdir)/gcc.1 $(srcdir)/cccp.1 lang.install-man
        -if [ -f gcc-cross ] ; then \
          rm -f $(mandir)/$(GCC_CROSS_NAME)$(manext); \
          $(INSTALL_DATA) $(srcdir)/gcc.1 $(mandir)/$(GCC_CROSS_NAME)$(manext); \
@@ -2184,7 +2244,7 @@ install-man: install-dir $(srcdir)/gcc.1 $(srcdir)/cccp.1 lang.install-man
        -chmod a-x $(mandir)/cccp$(manext)
 
 # Install the library.
-install-libgcc: libgcc.a install-dir
+install-libgcc: libgcc.a installdirs
        -if [ -f libgcc.a ] ; then \
          rm -f $(libsubdir)/libgcc.a; \
          $(INSTALL_DATA) libgcc.a $(libsubdir)/libgcc.a; \
@@ -2194,19 +2254,21 @@ install-libgcc: libgcc.a install-dir
        else true; fi
 
 # Install multiple versions of libgcc.a.
-install-multilib: stmp-multilib install-dir
+install-multilib: stmp-multilib installdirs
        for i in `$(GCC_FOR_TARGET) --print-multi-lib`; do \
          dir=`echo $$i | sed -e 's/;.*$$//'`; \
          if [ -d $(libsubdir)/$${dir} ]; then true; else mkdir $(libsubdir)/$${dir}; fi; \
-         rm -f $(libsubdir)/$${dir}/libgcc.a; \
-         $(INSTALL_DATA) $${dir}/libgcc.a $(libsubdir)/$${dir}/libgcc.a; \
+         for f in libgcc.a $(EXTRA_MULTILIB_PARTS); do \
+           rm -f $(libsubdir)/$${dir}/$${f}; \
+           $(INSTALL_DATA) $${dir}/$${f} $(libsubdir)/$${dir}/$${f}; \
+         done; \
          if $(RANLIB_TEST); then \
            (cd $(libsubdir)/$${dir}; $(RANLIB) libgcc.a); else true; fi; \
          chmod a-x $(libsubdir)/$${dir}/libgcc.a; \
        done
 
 # Install the objc run time library.
-install-libobjc: install-dir
+install-libobjc: installdirs
        -if [ -f libobjc.a ] ; then \
          rm -f $(libsubdir)/libobjc.a; \
          $(INSTALL_DATA) libobjc.a $(libsubdir)/libobjc.a; \
@@ -2232,7 +2294,7 @@ install-headers: install-include-dir $(INSTALL_HEADERS_DIR) $(INSTALL_ASSERT_H)
        fi
 
 # Create or recreate the gcc private include file directory.
-install-include-dir: install-dir
+install-include-dir: installdirs
        -rm -rf $(libsubdir)/include
        mkdir $(libsubdir)/include
        -chmod a+rx $(libsubdir)/include
@@ -2256,7 +2318,7 @@ install-headers-cpio: stmp-headers $(STMP_FIXPROTO) install-include-dir
 ## Don't replace the assert.h already there if it is not from GCC.
 ## This code would be simpler if it tested for -f ... && ! grep ...
 ## but supposedly the ! operator is missing in sh on some systems.
-install-assert-h: assert.h install-dir
+install-assert-h: assert.h installdirs
        if [ -f $(assertdir)/assert.h ]; \
        then \
          if grep "__eprintf" $(assertdir)/assert.h >/dev/null; \
@@ -2273,7 +2335,7 @@ install-assert-h: assert.h install-dir
        fi
 
 # Use this target to install the program `collect2' under the name `ld'.
-install-collect2: collect2 install-dir
+install-collect2: collect2 installdirs
        $(INSTALL_PROGRAM) collect2$(exeext) $(libsubdir)/ld$(exeext)
 # Install the driver program as $(libsubdir)/gcc for collect2.
        $(INSTALL_PROGRAM) xgcc$(exeext) $(libsubdir)/gcc$(exeext)
@@ -2395,7 +2457,7 @@ bootstrap: force
 # Only build the C compiler for stage1, because that is the only one that
 # we can guarantee will build with the native compiler, and also it is the
 # only thing useful for building stage2.
-       $(MAKE) CC="$(CC)" libdir=$(libdir) LANGUAGES=c
+       $(MAKE) CC="$(CC)" libdir=$(libdir) LANGUAGES="$(BOOT_LANGUAGES)"
        $(MAKE) stage1
 # This used to define ALLOCA as empty, but that would lead to bad results
 # for a subsequent `make install' since that would not have ALLOCA empty.
@@ -2498,6 +2560,9 @@ stage1-start:
        -rm -f stage1/libgcc.a
        -cp libgcc.a stage1
        -if $(RANLIB_TEST) ; then $(RANLIB) stage1/libgcc.a; else true; fi
+       -for f in .. $(EXTRA_MULTILIB_PARTS); do if [ x$${f} != x.. ]; then \
+         cp stage1/$${f} . ; \
+       fi; done
 stage1: force stage1-start lang.stage1
 
 stage2-start:
@@ -2515,6 +2580,9 @@ stage2-start:
        -rm -f stage2/libgcc.a
        -cp libgcc.a stage2
        -if $(RANLIB_TEST) ; then $(RANLIB) stage2/libgcc.a; else true; fi
+       -for f in .. $(EXTRA_MULTILIB_PARTS); do if [ x$${f} != x.. ]; then \
+         cp stage2/$${f} . ; \
+       fi; done
 stage2: force stage2-start lang.stage2
 
 stage3-start:
@@ -2532,6 +2600,9 @@ stage3-start:
        -rm -f stage3/libgcc.a
        -cp libgcc.a stage3
        -if $(RANLIB_TEST) ; then $(RANLIB) stage3/libgcc.a; else true; fi
+       -for f in .. $(EXTRA_MULTILIB_PARTS); do if [ x$${f} != x.. ]; then \
+         cp stage3/$${f} . ; \
+       fi; done
 stage3: force stage3-start lang.stage3
 
 stage4-start:
@@ -2549,6 +2620,9 @@ stage4-start:
        -rm -f stage4/libgcc.a
        -cp libgcc.a stage4
        -if $(RANLIB_TEST) ; then $(RANLIB) stage4/libgcc.a; else true; fi
+       -for f in .. $(EXTRA_MULTILIB_PARTS); do if [ x$${f} != x.. ]; then \
+         cp stage4/$${f} . ; \
+       fi; done
 stage4: force stage4-start lang.stage4
 
 # Copy just the executable files from a particular stage into a subdirectory,