OSDN Git Service

* tree-sra.c (generate_element_init): Remove any useless conversions.
[pf3gnuchains/gcc-fork.git] / Makefile.tpl
index e81d036..014aa87 100644 (file)
@@ -68,6 +68,8 @@ INSTALL = @INSTALL@
 INSTALL_PROGRAM = @INSTALL_PROGRAM@
 INSTALL_SCRIPT = @INSTALL_SCRIPT@
 INSTALL_DATA = @INSTALL_DATA@
+LN = @LN@
+LN_S = @LN_S@
 
 # -------------------------------------------------
 # Miscellaneous non-standard autoconf-set variables
@@ -111,11 +113,23 @@ BUILD_SUBDIR = @build_subdir@
 # This is set by the configure script to the arguments to use when configuring
 # directories built for the build system.
 BUILD_CONFIGARGS = @build_configargs@
+
+# This is the list of variables to export in the environment when
+# configuring any subdirectory.  It must also be exported whenever
+# recursing into a build directory in case that directory's Makefile
+# re-runs configure.
+BASE_EXPORTS = \
+       FLEX="$(FLEX)"; export FLEX; \
+       LEX="$(LEX)"; export LEX; \
+       BISON="$(BISON)"; export BISON; \
+       YACC="$(YACC)"; export YACC; \
+       M4="$(M4)"; export M4; \
+       MAKEINFO="$(MAKEINFO)"; export MAKEINFO;
+
 # This is the list of variables to export in the environment when
-# configuring subdirectories for the build system.  It must also be
-# exported whenever recursing into a build directory in case that
-# directory's Makefile re-runs configure.
+# configuring subdirectories for the build system.
 BUILD_EXPORTS = \
+       $(BASE_EXPORTS) \
        AR="$(AR_FOR_BUILD)"; export AR; \
        AS="$(AS_FOR_BUILD)"; export AS; \
        CC="$(CC_FOR_BUILD)"; export CC; \
@@ -138,10 +152,9 @@ SUBDIRS = @configdirs@
 # directories built for the host system.
 HOST_CONFIGARGS = @host_configargs@
 # This is the list of variables to export in the environment when
-# configuring subdirectories for the host system.  It must also be
-# exported whenever recursing into a host directory in case that
-# directory's Makefile re-runs configure.
+# configuring subdirectories for the host system.
 HOST_EXPORTS = \
+       $(BASE_EXPORTS) \
        CC="$(CC)"; export CC; \
        CFLAGS="$(CFLAGS)"; export CFLAGS; \
        CONFIG_SHELL="$(SHELL)"; export CONFIG_SHELL; \
@@ -157,18 +170,14 @@ HOST_EXPORTS = \
        RANLIB="$(RANLIB)"; export RANLIB; \
        WINDRES="$(WINDRES)"; export WINDRES; \
        OBJCOPY="$(OBJCOPY)"; export OBJCOPY; \
-       OBJDUMP="$(OBJDUMP)"; export OBJDUMP;
-
-# Similar, for the gcc directory.
-GCC_HOST_EXPORTS = \
-       $(HOST_EXPORTS) \
+       OBJDUMP="$(OBJDUMP)"; export OBJDUMP; \
        TOPLEVEL_CONFIGURE_ARGUMENTS="$(TOPLEVEL_CONFIGURE_ARGUMENTS)"; export TOPLEVEL_CONFIGURE_ARGUMENTS; \
        GMPLIBS="$(HOST_GMPLIBS)"; export GMPLIBS; \
        GMPINC="$(HOST_GMPINC)"; export GMPINC;
 
 # Similar, for later GCC stages.
 STAGE_HOST_EXPORTS = \
-       $(GCC_HOST_EXPORTS) \
+       $(HOST_EXPORTS) \
        CC="$(STAGE_CC_WRAPPER) $$r/prev-gcc/xgcc$(exeext) -B$$r/prev-gcc/ -B$(build_tooldir)/bin/"; export CC; \
        CC_FOR_BUILD="$(STAGE_CC_WRAPPER) $$r/prev-gcc/xgcc$(exeext) -B$$r/prev-gcc/ -B$(build_tooldir)/bin/"; export CC_FOR_BUILD;
 
@@ -181,10 +190,9 @@ TARGET_SUBDIR = @target_subdir@
 # directories built for the target.
 TARGET_CONFIGARGS = @target_configargs@
 # This is the list of variables to export in the environment when
-# configuring subdirectories for the host system.  It must also be
-# exported whenever recursing into a host directory in case that
-# directory's Makefile re-runs configure.
+# configuring subdirectories for the host system.
 BASE_TARGET_EXPORTS = \
+       $(BASE_EXPORTS) \
        AR="$(AR_FOR_TARGET)"; export AR; \
        AS="$(AS_FOR_TARGET)"; export AS; \
        CC="$(CC_FOR_TARGET)"; export CC; \
@@ -235,47 +243,55 @@ CFLAGS_FOR_BUILD = @CFLAGS_FOR_BUILD@
 
 CXX_FOR_BUILD = $(CXX)
 
+# Path to the build directory for a Canadian cross, empty otherwise.
+BUILD_DIR_PREFIX = @BUILD_DIR_PREFIX@
+
 # Special variables passed down in EXTRA_GCC_FLAGS.  They are defined
 # here so that they can be overridden by Makefile fragments.
 BUILD_PREFIX = @BUILD_PREFIX@
 BUILD_PREFIX_1 = @BUILD_PREFIX_1@
 
-BISON=@BISON@
-USUAL_BISON = `if [ -f $$r/bison/bison ] ; then \
-           echo $$r/bison/bison -L $$s/bison/ ; \
+CONFIGURED_BISON = @CONFIGURED_BISON@
+BISON = `if [ -f $$r/$(BUILD_DIR_PREFIX)/bison/bison ] ; then \
+           echo $$r/$(BUILD_DIR_PREFIX)/bison/bison -L $$s/bison/ ; \
         else \
-           echo bison ; \
+           echo ${CONFIGURED_BISON} ; \
         fi`
 
-DEFAULT_YACC = @DEFAULT_YACC@
-YACC=@YACC@
-USUAL_YACC = `if [ -f $$r/bison/bison ] ; then \
-           echo $$r/bison/bison -y -L $$s/bison/ ; \
-       elif [ -f $$r/byacc/byacc ] ; then \
-           echo $$r/byacc/byacc ; \
+CONFIGURED_YACC = @CONFIGURED_YACC@
+YACC = `if [ -f $$s/$(BUILD_DIR_PREFIX)/bison/bison ] ; then \
+           echo $$r/$(BUILD_DIR_PREFIX)/bison/bison -y -L $$s/bison/ ; \
+       elif [ -f $$s/$(BUILD_DIR_PREFIX)/byacc/byacc ] ; then \
+           echo $$r/$(BUILD_DIR_PREFIX)/byacc/byacc ; \
        else \
-           echo ${DEFAULT_YACC} ; \
+           echo ${CONFIGURED_YACC} ; \
        fi`
 
-DEFAULT_LEX = @DEFAULT_LEX@
-LEX=@LEX@
-USUAL_LEX = `if [ -f $$r/flex/flex ] ; \
-       then echo $$r/flex/flex ; \
-       else echo ${DEFAULT_LEX} ; fi`
+CONFIGURED_FLEX = @CONFIGURED_FLEX@
+FLEX = `if [ -f $$r/$(BUILD_DIR_PREFIX)/flex/flex ] ; \
+       then echo $$r/$(BUILD_DIR_PREFIX)/flex/flex ; \
+       else echo ${CONFIGURED_FLEX} ; fi`
 
-DEFAULT_M4 = @DEFAULT_M4@
-M4 = `if [ -f $$r/m4/m4 ] ; \
-       then echo $$r/m4/m4 ; \
-       else echo ${DEFAULT_M4} ; fi`
+CONFIGURED_LEX = @CONFIGURED_LEX@
+LEX = `if [ -f $$r/$(BUILD_DIR_PREFIX)/flex/flex ] ; \
+       then echo $$r/$(BUILD_DIR_PREFIX)/flex/flex ; \
+       else echo ${CONFIGURED_LEX} ; fi`
+
+CONFIGURED_M4 = @CONFIGURED_M4@
+M4 = `if [ -f $$r/$(BUILD_DIR_PREFIX)/m4/m4 ] ; \
+       then echo $$r/$(BUILD_DIR_PREFIX)/m4/m4 ; \
+       else echo ${CONFIGURED_M4} ; fi`
 
 # For an installed makeinfo, we require it to be from texinfo 4.2 or
-# higher, else we use the "missing" dummy.
-MAKEINFO=@MAKEINFO@
-USUAL_MAKEINFO = `if [ -f $$r/texinfo/makeinfo/makeinfo ] ; \
-       then echo $$r/texinfo/makeinfo/makeinfo ; \
-       else if (makeinfo --version \
+# higher, else we use the "missing" dummy.  We also pass the subdirectory
+# makeinfo even if only the Makefile is there, because Texinfo builds its
+# manual when made, and it requires its own version.
+CONFIGURED_MAKEINFO = @CONFIGURED_MAKEINFO@
+MAKEINFO = `if [ -f $$r/$(BUILD_DIR_PREFIX)/texinfo/makeinfo/Makefile ] ; \
+       then echo $$r/$(BUILD_DIR_PREFIX)/texinfo/makeinfo/makeinfo ; \
+       else if (${CONFIGURED_MAKEINFO} --version \
          | egrep 'texinfo[^0-9]*([1-3][0-9]|4\.[2-9]|[5-9])') >/dev/null 2>&1; \
-        then echo makeinfo; else echo $$s/missing makeinfo; fi; fi`
+        then echo ${CONFIGURED_MAKEINFO}; else echo $$s/missing makeinfo; fi; fi`
 
 # This just becomes part of the MAKEINFO definition passed down to
 # sub-makes.  It lets flags be given on the command line while still
@@ -494,6 +510,8 @@ RECURSE_FLAGS = \
        CXX_FOR_TARGET='$(CXX_FOR_TARGET_FOR_RECURSIVE_MAKE)' \
        RAW_CXX_FOR_TARGET='$(RAW_CXX_FOR_TARGET_FOR_RECURSIVE_MAKE)' \
 
+RECURSE_FLAGS_TO_PASS = $(BASE_FLAGS_TO_PASS) $(RECURSE_FLAGS)
+
 # Flags to pass down to most sub-makes, in which we're building with
 # the host environment.
 EXTRA_HOST_FLAGS = \
@@ -577,8 +595,13 @@ configure-target: [+
 
 # The target built for a native non-bootstrap build.
 .PHONY: all
-all: @all_build_modules@ all-host all-target
+all: all-build all-host all-target
 
+.PHONY: all-build
+all-build: [+
+  FOR build_modules +] \
+    maybe-all-build-[+module+][+
+  ENDFOR build_modules +]
 .PHONY: all-host
 all-host: maybe-all-gcc [+
   FOR host_modules +] \
@@ -731,7 +754,7 @@ install.all: install-no-fixedincludes
        @if [ -f ./gcc/Makefile ] ; then \
                r=`${PWD_COMMAND}` ; export r ; \
                $(SET_LIB_PATH) \
-               $(GCC_HOST_EXPORTS) \
+               $(HOST_EXPORTS) \
                (cd ./gcc && \
                $(MAKE) $(FLAGS_TO_PASS) install-headers) ; \
        else \
@@ -826,7 +849,7 @@ configure-build-[+module+]:
        rm -f no-such-file || : ; \
        CONFIG_SITE=no-such-file $(SHELL) $${libsrcdir}/configure \
          $(BUILD_CONFIGARGS) $${srcdiroption} \
-         --with-build-subdir="$(BUILD_SUBDIR)" \
+         --with-build-subdir="$(BUILD_SUBDIR)" [+extra_configure_flags+] \
          || exit 1
 @endif build-[+module+]
 
@@ -838,7 +861,7 @@ all-build-[+module+]: configure-build-[+module+]
        @r=`${PWD_COMMAND}`; export r; \
        s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \
        $(BUILD_EXPORTS) \
-       (cd $(BUILD_SUBDIR)/[+module+] && $(MAKE) all)
+       (cd $(BUILD_SUBDIR)/[+module+] && $(MAKE) [+extra_make_flags+] all)
 @endif build-[+module+]
 [+ ENDFOR build_modules +]
 
@@ -870,7 +893,7 @@ configure-[+module+]:
            libsrcdir="$$s/[+module+]";; \
        esac; \
        $(SHELL) $${libsrcdir}/configure \
-         $(HOST_CONFIGARGS) $${srcdiroption} \
+         $(HOST_CONFIGARGS) $${srcdiroption} [+extra_configure_flags+] \
          || exit 1
 @endif [+module+]
 
@@ -886,7 +909,7 @@ all-[+module+]: configure-[+module+]
        (cd [+module+] && $(MAKE) $(FLAGS_TO_PASS)[+ 
          IF with_x 
            +] $(X11_FLAGS_TO_PASS)[+ 
-         ENDIF with_x +] all)
+         ENDIF with_x +] [+extra_make_flags+] all)
 @endif [+module+]
 
 .PHONY: check-[+module+] maybe-check-[+module+]
@@ -906,7 +929,7 @@ check-[+module+]:
          (cd [+module+] && $(MAKE) $(FLAGS_TO_PASS)[+ 
            IF with_x 
              +] $(X11_FLAGS_TO_PASS)[+ 
-           ENDIF with_x +] check); \
+           ENDIF with_x +] [+extra_make_flags+] check); \
        fi
 [+ ELSE check +]
 check-[+module+]:
@@ -917,7 +940,7 @@ check-[+module+]:
        (cd [+module+] && $(MAKE) $(FLAGS_TO_PASS)[+ 
          IF with_x 
            +] $(X11_FLAGS_TO_PASS)[+ 
-         ENDIF with_x +] check)
+         ENDIF with_x +] [+extra_make_flags+] check)
 [+ ENDIF no_check +]
 @endif [+module+]
 
@@ -936,7 +959,7 @@ install-[+module+]: installdirs
        (cd [+module+] && $(MAKE) $(FLAGS_TO_PASS)[+ 
          IF with_x 
            +] $(X11_FLAGS_TO_PASS)[+ 
-         ENDIF with_x +] install)
+         ENDIF with_x +] [+extra_make_flags+] install)
 [+ ENDIF no_install +]
 @endif [+module+]
 
@@ -968,7 +991,7 @@ maybe-[+make_target+]-[+module+]: [+make_target+]-[+module+]
                  "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \
                  "RANLIB=$${RANLIB}" \
                  "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" \
-                 [+make_target+]) \
+                 [+extra_make_flags+] [+make_target+]) \
          || exit 1
 [+ ENDIF +]
 @endif [+module+]
@@ -1039,7 +1062,7 @@ ENDIF raw_cxx +]
        rm -f no-such-file || : ; \
        CONFIG_SITE=no-such-file $(SHELL) $${libsrcdir}/configure \
          $(TARGET_CONFIGARGS) $${srcdiroption} \
-         --with-target-subdir="$(TARGET_SUBDIR)" \
+         --with-target-subdir="$(TARGET_SUBDIR)" [+extra_configure_flags+] \
          || exit 1
 @endif target-[+module+]
 
@@ -1061,7 +1084,7 @@ ENDIF raw_cxx +]
            IF raw_cxx 
          +] 'CXX=$$(RAW_CXX_FOR_TARGET)' 'CXX_FOR_TARGET=$$(RAW_CXX_FOR_TARGET)' [+ 
            ENDIF raw_cxx 
-         +] all)
+         +] [+extra_make_flags+] all)
 @endif target-[+module+]
 
 .PHONY: check-target-[+module+] maybe-check-target-[+module+]
@@ -1086,7 +1109,7 @@ ENDIF raw_cxx +]
            IF raw_cxx 
              +] 'CXX=$$(RAW_CXX_FOR_TARGET)' 'CXX_FOR_TARGET=$$(RAW_CXX_FOR_TARGET)' [+ 
            ENDIF raw_cxx 
-         +] check)
+         +] [+extra_make_flags+] check)
 [+ ENDIF no_check +]
 @endif target-[+module+]
 
@@ -1108,7 +1131,7 @@ ELSE normal_cxx +]
        $(NORMAL_TARGET_EXPORTS) \[+
 ENDIF raw_cxx +]
        (cd $(TARGET_SUBDIR)/[+module+] && \
-         $(MAKE) $(TARGET_FLAGS_TO_PASS) install)
+         $(MAKE) $(TARGET_FLAGS_TO_PASS) [+extra_make_flags+] install)
 [+ ENDIF no_install +]
 @endif target-[+module+]
 
@@ -1144,7 +1167,7 @@ ENDIF raw_cxx +]
                  "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \
                  "RANLIB=$${RANLIB}" \
                  "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" \
-                 [+make_target+]) \
+                 [+extra_make_flags+] [+make_target+]) \
          || exit 1
 [+ ENDIF +]
 @endif target-[+module+]
@@ -1176,7 +1199,7 @@ configure-gcc:
        [ -d gcc ] || mkdir gcc; \
        r=`${PWD_COMMAND}`; export r; \
        s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \
-       $(GCC_HOST_EXPORTS) \
+       $(HOST_EXPORTS) \
        echo Configuring in gcc; \
        cd gcc || exit 1; \
        case $(srcdir) in \
@@ -1208,7 +1231,7 @@ all-gcc: configure-gcc
        r=`${PWD_COMMAND}`; export r; \
        s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \
        $(SET_LIB_PATH) \
-       $(GCC_HOST_EXPORTS) \
+       $(HOST_EXPORTS) \
        if [ -f gcc/stage_last ] ; then \
          (cd gcc && $(MAKE) $(GCC_FLAGS_TO_PASS) quickstrap); \
        else \
@@ -1231,7 +1254,7 @@ $(GCC_STRAP_TARGETS): all-bootstrap configure-gcc
        @r=`${PWD_COMMAND}`; export r; \
        s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \
        $(SET_LIB_PATH) \
-       $(GCC_HOST_EXPORTS) \
+       $(HOST_EXPORTS) \
        echo "Bootstrapping the compiler"; \
        cd gcc && $(MAKE) $(GCC_FLAGS_TO_PASS) $@
        @r=`${PWD_COMMAND}`; export r; \
@@ -1251,31 +1274,31 @@ $(GCC_STRAP_TARGETS): all-bootstrap configure-gcc
            compare=compare ;; \
        esac; \
        $(SET_LIB_PATH) \
-       $(GCC_HOST_EXPORTS) \
+       $(HOST_EXPORTS) \
        echo "$$msg"; \
        cd gcc && $(MAKE) $(GCC_FLAGS_TO_PASS) $$compare
        @r=`${PWD_COMMAND}`; export r; \
        s=`cd $(srcdir); ${PWD_COMMAND}` ; export s; \
        $(SET_LIB_PATH) \
        echo "Building runtime libraries"; \
-       $(MAKE) $(BASE_FLAGS_TO_PASS) $(RECURSE_FLAGS) all
+       $(MAKE) $(RECURSE_FLAGS_TO_PASS) all
 
 profiledbootstrap: all-bootstrap configure-gcc
        @r=`${PWD_COMMAND}`; export r; \
        s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \
        $(SET_LIB_PATH) \
-       $(GCC_HOST_EXPORTS) \
+       $(HOST_EXPORTS) \
        echo "Bootstrapping the compiler"; \
        cd gcc && $(MAKE) $(GCC_FLAGS_TO_PASS) stageprofile_build
        @r=`${PWD_COMMAND}`; export r; \
        s=`cd $(srcdir); ${PWD_COMMAND}` ; export s; \
        $(SET_LIB_PATH) \
        echo "Building runtime libraries and training compiler"; \
-       $(MAKE) $(BASE_FLAGS_TO_PASS) $(RECURSE_FLAGS) all
+       $(MAKE) $(RECURSE_FLAGS_TO_PASS) all
        @r=`${PWD_COMMAND}`; export r; \
        s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \
        $(SET_LIB_PATH) \
-       $(GCC_HOST_EXPORTS) \
+       $(HOST_EXPORTS) \
        echo "Building feedback based compiler"; \
        cd gcc && $(MAKE) $(GCC_FLAGS_TO_PASS) stagefeedback_build
 
@@ -1284,15 +1307,14 @@ cross: all-texinfo all-bison all-byacc all-binutils all-gas all-ld
        @r=`${PWD_COMMAND}`; export r; \
        s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \
        $(SET_LIB_PATH) \
-       $(GCC_HOST_EXPORTS) \
+       $(HOST_EXPORTS) \
        echo "Building the C and C++ compiler"; \
        cd gcc && $(MAKE) $(GCC_FLAGS_TO_PASS) LANGUAGES="c c++"
        @r=`${PWD_COMMAND}`; export r; \
        s=`cd $(srcdir); ${PWD_COMMAND}` ; export s; \
        $(SET_LIB_PATH) \
        echo "Building runtime libraries"; \
-       $(MAKE) $(BASE_FLAGS_TO_PASS) $(RECURSE_FLAGS) \
-               LANGUAGES="c c++" all
+       $(MAKE) $(RECURSE_FLAGS_TO_PASS) LANGUAGES="c c++" all
 @endif gcc-no-bootstrap
 
 .PHONY: check-gcc maybe-check-gcc
@@ -1304,7 +1326,7 @@ check-gcc:
          r=`${PWD_COMMAND}`; export r; \
          s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \
          $(SET_LIB_PATH) \
-         $(GCC_HOST_EXPORTS) \
+         $(HOST_EXPORTS) \
          (cd gcc && $(MAKE) $(GCC_FLAGS_TO_PASS) check); \
        else \
          true; \
@@ -1316,7 +1338,7 @@ check-gcc-c++:
          r=`${PWD_COMMAND}`; export r; \
          s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \
          $(SET_LIB_PATH) \
-         $(GCC_HOST_EXPORTS) \
+         $(HOST_EXPORTS) \
          (cd gcc && $(MAKE) $(GCC_FLAGS_TO_PASS) check-c++); \
        else \
          true; \
@@ -1335,7 +1357,7 @@ install-gcc:
          r=`${PWD_COMMAND}`; export r; \
          s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \
          $(SET_LIB_PATH) \
-         $(GCC_HOST_EXPORTS) \
+         $(HOST_EXPORTS) \
          (cd gcc && $(MAKE) $(GCC_FLAGS_TO_PASS) install); \
        else \
          true; \
@@ -1357,7 +1379,7 @@ gcc-no-fixedincludes:
          r=`${PWD_COMMAND}`; export r; \
          s=`cd $(srcdir); ${PWD_COMMAND}` ; export s; \
          $(SET_LIB_PATH) \
-         $(GCC_HOST_EXPORTS) \
+         $(HOST_EXPORTS) \
          (cd ./gcc && \
           $(MAKE) $(GCC_FLAGS_TO_PASS) install); \
          rm -rf gcc/include; \
@@ -1381,7 +1403,7 @@ maybe-[+make_target+]-gcc: [+make_target+]-gcc
        for flag in $(EXTRA_GCC_FLAGS); do \
          eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \
        done; \
-       $(GCC_HOST_EXPORTS) \
+       $(HOST_EXPORTS) \
        echo "Doing [+make_target+] in gcc" ; \
        (cd gcc && \
          $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \
@@ -1440,12 +1462,14 @@ objext = .o
 # Real targets act phony if they depend on phony targets; this hack
 # prevents gratuitous rebuilding of stage 1.
 prebootstrap:
-       $(MAKE) $(BASE_FLAGS_TO_PASS) $(RECURSE_FLAGS) all-bootstrap
+       $(MAKE) $(RECURSE_FLAGS_TO_PASS) all-bootstrap
        $(STAMP) prebootstrap
 
 # Flags to pass to stage2 and later makes.
 BOOT_CFLAGS= -g -O2
 POSTSTAGE1_FLAGS_TO_PASS = \
+       CC="$${CC}" CC_FOR_BUILD="$${CC_FOR_BUILD}" \
+       STAGE_PREFIX=$$r/stage[+prev+]-gcc/ \
        CFLAGS="$(BOOT_CFLAGS)" \
        ADAC="\$$(CC)"
 
@@ -1461,14 +1485,14 @@ POSTSTAGE1_FLAGS_TO_PASS = \
 [+ FOR bootstrap-stage +]
 .PHONY: stage[+id+]-start stage[+id+]-end
 
-stage[+id+]-start:
+stage[+id+]-start::
        [ -f stage_last ] && $(MAKE) `cat stage_last`-end || :
        echo stage[+id+] > stage_last ; \
        [ -d stage[+id+]-gcc ] || mkdir stage[+id+]-gcc; \
        set stage[+id+]-gcc gcc ; @CREATE_LINK_TO_DIR@ [+ IF prev +] ; \
        set stage[+prev+]-gcc prev-gcc ; @CREATE_LINK_TO_DIR@ [+ ENDIF prev +]
 
-stage[+id+]-end:
+stage[+id+]-end::
        rm -f stage_last ; \
        set gcc stage[+id+]-gcc ; @UNDO_LINK_TO_DIR@ [+ IF prev +] ; \
        set prev-gcc stage[+prev+]-gcc ; @UNDO_LINK_TO_DIR@ [+ ENDIF prev +]
@@ -1477,18 +1501,19 @@ stage[+id+]-end:
 # are remade, but not reconfigured.  The next stage (if any) will not
 # be reconfigured as well.
 .PHONY: stage[+id+]-bubble
-stage[+id+]-bubble: [+ IF prev +]stage[+prev+]-bubble[+ ENDIF +]
+stage[+id+]-bubble:: [+ IF prev +]stage[+prev+]-bubble[+ ENDIF +]
        @if [ -f all-stage[+id+]-gcc ] ; then \
          echo Remaking stage [+id+] ; \
          rm -f all-stage[+id+]-gcc ; \
-         $(MAKE) $(BASE_FLAGS_TO_PASS) $(RECURSE_FLAGS) \
-           all-stage[+id+]-gcc [+ IF next +] && \
-         if [ -f configure-stage[+next+]-gcc ] ; then \
-           $(STAMP) configure-stage[+next+]-gcc ; \
-         fi [+ ENDIF next +]; \
-       else \
-         $(MAKE) $(BASE_FLAGS_TO_PASS) $(RECURSE_FLAGS) all-stage[+id+]-gcc ; \
+       fi ; \
+       $(MAKE) $(RECURSE_FLAGS_TO_PASS) all-stage[+id+]-gcc
+
+[+ IF prev +]
+stage[+prev+]-bubble::
+       @if [ -f configure-stage[+id+]-gcc ] ; then \
+         $(STAMP) configure-stage[+id+]-gcc ; \
        fi
+[+ ENDIF prev +]
 
 configure-stage[+id+]-gcc: [+ IF prev +] all-stage[+prev+]-gcc [+
          ELSE +] prebootstrap [+ ENDIF prev +]
@@ -1502,7 +1527,7 @@ configure-stage[+id+]-gcc: [+ IF prev +] all-stage[+prev+]-gcc [+
        r=`${PWD_COMMAND}`; export r; \
        s=`cd $(srcdir); ${PWD_COMMAND}`; export s; [+ IF prev +] \
        $(STAGE_HOST_EXPORTS) [+ ELSE prev +] \
-       $(GCC_HOST_EXPORTS) [+ ENDIF prev +] \
+       $(HOST_EXPORTS) [+ ENDIF prev +] \
        echo Configuring stage [+id+] in gcc ; \
        cd gcc || exit 1; \
        case $(srcdir) in \
@@ -1526,11 +1551,10 @@ all-stage[+id+]-gcc: configure-stage[+id+]-gcc
        @r=`${PWD_COMMAND}`; export r; \
        s=`cd $(srcdir); ${PWD_COMMAND}`; export s; [+ IF prev +] \
        $(STAGE_HOST_EXPORTS) [+ ELSE prev +] \
-       $(GCC_HOST_EXPORTS) [+ ENDIF prev +] \
+       $(HOST_EXPORTS) [+ ENDIF prev +] \
        cd gcc && \
        $(MAKE) $(GCC_FLAGS_TO_PASS) [+ IF prev +] \
-               CC="$${CC}" CC_FOR_BUILD="${CC_FOR_BUILD}" \
-               STAGE_PREFIX=$$r/stage[+prev+]-gcc/ [+ ENDIF prev +] \
+               $(POSTSTAGE1_FLAGS_TO_PASS) [+ ENDIF prev +] \
                [+extra_make_flags+] && $(STAMP) ../all-stage[+id+]-gcc
 
 [+ IF compare-target +]
@@ -1560,23 +1584,38 @@ all-stage[+id+]-gcc: configure-stage[+id+]-gcc
 [+ IF bootstrap-target +]
 .PHONY: [+bootstrap-target+]
 [+bootstrap-target+]:
-       $(MAKE) $(BASE_FLAGS_TO_PASS) $(RECURSE_FLAGS) stage[+id+]-bubble [+
+       $(MAKE) $(RECURSE_FLAGS_TO_PASS) stage[+id+]-bubble [+
          IF compare-target +] [+compare-target+] [+
          ENDIF compare-target +] \
          stage[+id+]-start all stage[+id+]-end 
 [+ ENDIF bootstrap-target +]
 
-.PHONY: restage[+id+] distclean-stage[+id+]
+.PHONY: restage[+id+] touch-stage[+id+] distclean-stage[+id+]
 
-distclean-stage[+id+]: [+ IF next +] distclean-stage[+next+] [+ ENDIF next +]
+# Rules to wipe a stage and all the following ones, used for cleanstrap
+[+ IF prev +]distclean-stage[+prev+]:: distclean-stage[+id+] [+ ENDIF prev +]
+distclean-stage[+id+]::
        [ -f stage_last ] && $(MAKE) `cat stage_last`-end || :
        rm -rf configure-stage[+id+]-gcc all-stage[+id+]-gcc stage[+id+]-gcc [+
          IF compare-target +][+compare-target+] [+ ENDIF compare-target +]
 
-restage[+id+]: [+ IF next +] distclean-stage[+next+] [+ ENDIF next +]
+# Rules to renew the timestamp on a stage and all the following ones
+[+ IF prev +]touch-stage[+prev+]:: touch-stage[+id+] [+ ENDIF prev +]
+touch-stage[+id+]::
+       @[ -f configure-stage[+id+]-gcc ] && \
+         echo '$(STAMP) configure-stage[+id+]-gcc' && \
+         $(STAMP) configure-stage[+id+]-gcc; \
+       [ -f all-stage[+id+]-gcc ] && \
+         echo '$(STAMP) all-stage[+id+]-gcc' && \
+         $(STAMP) all-stage[+id+]-gcc; \
+       :
+
+# After building a stage, touch the following ones
+[+ IF prev +]restage[+prev+]:: touch-stage[+id+] [+ ENDIF prev +]
+restage[+id+]::
        rm -rf all-stage[+id+]-gcc [+
          IF compare-target +][+compare-target+] [+ ENDIF compare-target +]
-       $(MAKE) $(BASE_FLAGS_TO_PASS) $(RECURSE_FLAGS) [+
+       $(MAKE) $(RECURSE_FLAGS_TO_PASS) [+
          IF compare-target +][+compare-target+] [+
          ELSE +] all-stage[+id+]-gcc [+ ENDIF compare-target +]
 
@@ -1586,6 +1625,33 @@ restage[+id+]: [+ IF next +] distclean-stage[+next+] [+ ENDIF next +]
 [+ ENDIF cleanstrap-target +]
 
 [+ ENDFOR bootstrap-stage +]
+
+stagefeedback-start::
+       @r=`${PWD_COMMAND}`; export r; \
+       s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \
+       cd stageprofile-gcc && \
+         { find . -type d | sort | sed 's,.*,$(SHELL) '"$$s"'/mkinstalldirs "../gcc/&",' | $(SHELL); } && \
+         { find . -name '*.*da' | sed 's,.*,$(LN) -f "&" "../gcc/&",' | $(SHELL); }
+
+profiledbootstrap: all-bootstrap configure-gcc
+       @r=`${PWD_COMMAND}`; export r; \
+       s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \
+       $(SET_LIB_PATH) \
+       $(HOST_EXPORTS) \
+       echo "Bootstrapping the compiler"; \
+       $(MAKE) stageprofile-bubble distclean-stagefeedback stageprofile-start
+       @r=`${PWD_COMMAND}`; export r; \
+       s=`cd $(srcdir); ${PWD_COMMAND}` ; export s; \
+       $(SET_LIB_PATH) \
+       echo "Building runtime libraries and training compiler"; \
+       $(MAKE) $(BASE_FLAGS_TO_PASS) $(RECURSE_FLAGS) all
+       @r=`${PWD_COMMAND}`; export r; \
+       s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \
+       $(SET_LIB_PATH) \
+       $(HOST_EXPORTS) \
+       echo "Building feedback based compiler"; \
+       $(MAKE) stagefeedback-bubble stagefeedback-end
+
 @endif gcc-bootstrap
 
 # --------------------------------------
@@ -1599,6 +1665,12 @@ restage[+id+]: [+ IF next +] distclean-stage[+next+] [+ ENDIF next +]
 # are specified by depending on a 'maybe-' target.  If you're not sure,
 # it's safer to use a soft dependency.
 
+# Build modules
+all-build-bison: maybe-all-build-texinfo
+all-build-flex: maybe-all-build-texinfo
+all-build-libiberty: maybe-all-build-texinfo
+all-build-m4: maybe-all-build-libiberty maybe-all-build-texinfo
+
 # Host modules specific to gcc.
 # GCC needs to identify certain tools.
 # GCC also needs the information exported by the intl configure script.