OSDN Git Service

* diagnostic.c (default_diagnostic_finalizer): Fix use of attribute.
[pf3gnuchains/gcc-fork.git] / Makefile.tpl
index 27ab1fb..597cb80 100644 (file)
@@ -104,10 +104,11 @@ SET_LIB_PATH = @SET_LIB_PATH@
 # Some platforms don't like blank entries, so we remove duplicate,
 # leading and trailing colons.
 REALLY_SET_LIB_PATH = \
+  @SET_GCC_LIB_PATH@ \
   $(RPATH_ENVVAR)=`echo "$(HOST_LIB_PATH):$(TARGET_LIB_PATH):$$$(RPATH_ENVVAR)" | sed 's,::*,:,g;s,^:*,,;s,:*$$,,'`; export $(RPATH_ENVVAR);
 
 # This is the list of directories to be built for the build system.
-BUILD_CONFIGDIRS = libiberty libbanshee
+BUILD_CONFIGDIRS = libiberty
 # Build programs are put under this directory.
 BUILD_SUBDIR = @build_subdir@
 # This is set by the configure script to the arguments to use when configuring
@@ -173,7 +174,9 @@ 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;
+       GMPINC="$(HOST_GMPINC)"; export GMPINC; \
+       SET_GCC_LIB_PATH_CMD="@SET_GCC_LIB_PATH@"; export SET_GCC_LIB_PATH_CMD; \
+       @SET_GCC_LIB_PATH@
 
 # Similar, for later GCC stages.
 STAGE_HOST_EXPORTS = \
@@ -198,7 +201,7 @@ BASE_TARGET_EXPORTS = \
        CC="$(CC_FOR_TARGET)"; export CC; \
        CFLAGS="$(CFLAGS_FOR_TARGET)"; export CFLAGS; \
        CONFIG_SHELL="$(SHELL)"; export CONFIG_SHELL; \
-       CPPFLAGS="$(CFLAGS_FOR_TARGET)"; export CPPFLAGS; \
+       CPPFLAGS="$(CPPFLAGS_FOR_TARGET)"; export CPPFLAGS; \
        CXXFLAGS="$(CXXFLAGS_FOR_TARGET)"; export CXXFLAGS; \
        GCJ="$(GCJ_FOR_TARGET)"; export GCJ; \
        GFORTRAN="$(GFORTRAN_FOR_TARGET)"; export GFORTRAN; \
@@ -207,7 +210,9 @@ BASE_TARGET_EXPORTS = \
        LDFLAGS="$(LDFLAGS_FOR_TARGET)"; export LDFLAGS; \
        NM="$(NM_FOR_TARGET)"; export NM; \
        RANLIB="$(RANLIB_FOR_TARGET)"; export RANLIB; \
-       WINDRES="$(WINDRES_FOR_TARGET)"; export WINDRES;
+       WINDRES="$(WINDRES_FOR_TARGET)"; export WINDRES; \
+       SET_GCC_LIB_PATH_CMD="@SET_GCC_LIB_PATH@"; export SET_GCC_LIB_PATH_CMD; \
+       @SET_GCC_LIB_PATH@
 
 RAW_CXX_TARGET_EXPORTS = \
        $(BASE_TARGET_EXPORTS) \
@@ -248,6 +253,10 @@ CXX_FOR_BUILD = $(CXX)
 BUILD_PREFIX = @BUILD_PREFIX@
 BUILD_PREFIX_1 = @BUILD_PREFIX_1@
 
+# Flags to pass to stage2 and later makes.  They are defined
+# here so that they can be overridden by Makefile fragments.
+BOOT_CFLAGS= -g -O2
+
 CONFIGURED_BISON = @CONFIGURED_BISON@
 BISON = `if [ -f $$r/$(BUILD_SUBDIR)/bison/tests/bison ] ; then \
            echo $$r/$(BUILD_SUBDIR)/bison/tests/bison ; \
@@ -481,14 +490,6 @@ PICFLAG_FOR_TARGET =
 # Miscellaneous targets and flag lists
 # ------------------------------------
 
-@if gcc-bootstrap
-# Let's leave this as the first rule in the file until toplevel
-# bootstrap is fleshed out completely.
-sorry:
-       @echo Toplevel bootstrap temporarily out of commission.
-       @echo Please reconfigure without --enable-bootstrap
-@endif gcc-bootstrap
-
 # The first rule in the file had better be this one.  Don't put any above it.
 # This lives here to allow makefile fragments to contain dependencies.
 @default_target@:
@@ -641,12 +642,13 @@ do-[+make_target+]: unstage [+make_target+]-host [+make_target+]-target stage
 
 # Here are the targets which correspond to the do-X targets.
 
-.PHONY: info installcheck dvi install-info
+.PHONY: info installcheck dvi html install-info
 .PHONY: clean distclean mostlyclean maintainer-clean realclean
 .PHONY: local-clean local-distclean local-maintainer-clean
 info: do-info
 installcheck: do-installcheck
 dvi: do-dvi
+html: do-html
 
 # Make sure makeinfo is built before we do a `make info', if we're
 # in fact building texinfo.
@@ -692,6 +694,7 @@ clean-target-libgcc:
        (cd gcc/libgcc && find . -type d -print) | \
        while read d; do rm -f gcc/$$d/libgcc.a || : ; done
        -rm -rf gcc/libgcc
+       -rm -f gcc/stmp-dirs
 
 # Check target.
 
@@ -908,6 +911,7 @@ configure-[+module+]:
 .PHONY: all-[+module+] maybe-all-[+module+]
 maybe-all-[+module+]:
 @if [+module+]
+TARGET-[+module+]=[+ IF target +][+target+][+ ELSE +]all[+ ENDIF target +]
 maybe-all-[+module+]: all-[+module+]
 all-[+module+]: configure-[+module+]
        @[+ IF bootstrap +]test -f stage_last && exit 0; \
@@ -915,13 +919,8 @@ all-[+module+]: configure-[+module+]
        s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \
        $(SET_LIB_PATH) \
        $(HOST_EXPORTS) \
-       (cd [+module+] && $(MAKE) $(FLAGS_TO_PASS)[+ 
-         IF with_x 
-           +] $(X11_FLAGS_TO_PASS)[+ 
-         ENDIF with_x +] [+extra_make_flags+] [+
-         IF (== (get "module") "gcc") +] \
-           `if [ -f gcc/stage_last ]; then echo quickstrap ; else echo all; fi` [+
-         ELSE +]all[+ ENDIF +])
+       (cd [+module+] && $(MAKE) $(FLAGS_TO_PASS) [+extra_make_flags+] \
+         $(TARGET-[+module+]))
 @endif [+module+]
 
 .PHONY: check-[+module+] maybe-check-[+module+]
@@ -1338,7 +1337,9 @@ stage:
 # (both in a combined tree, or separately).  This however requires some
 # change to the gcc driver, again in order to avoid comparison failures.
 
-# Bugs: This is almost certainly not parallel-make safe.
+# Bugs: This is crippled when doing parallel make, the `make all-host'
+# and `make all-target' phases can be parallelized.
+
 
 # 'touch' doesn't work right on some platforms.
 STAMP = echo timestamp > 
@@ -1356,7 +1357,6 @@ STAGE1_LANGUAGES=@stage1_languages@
 objext = .o
 
 # 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/ \
@@ -1376,19 +1376,19 @@ POSTSTAGE1_FLAGS_TO_PASS = \
 .PHONY: stage[+id+]-start stage[+id+]-end
 
 stage[+id+]-start::
-       [ -f stage_current ] && $(MAKE) `cat stage_current`-end || :
+       @[ -f stage_current ] && $(MAKE) `cat stage_current`-end || : ; \
        echo stage[+id+] > stage_current ; \
        echo stage[+id+] > stage_last[+ FOR host_modules +][+ IF bootstrap +]
 @if [+ module +]
-       [ -d stage[+id+]-[+module+] ] || mkdir stage[+id+]-[+module+]; \
+       @[ -d stage[+id+]-[+module+] ] || mkdir stage[+id+]-[+module+]; \
        set stage[+id+]-[+module+] [+module+] ; @CREATE_LINK_TO_DIR@ [+ IF prev +] ; \
        set stage[+prev+]-[+module+] prev-[+module+] ; @CREATE_LINK_TO_DIR@ [+ ENDIF prev +]
 @endif [+ module +][+ ENDIF bootstrap +][+ ENDFOR host_modules +]
 
 stage[+id+]-end::
-       rm -f stage_current[+ FOR host_modules +][+ IF bootstrap +]
+       @rm -f stage_current[+ FOR host_modules +][+ IF bootstrap +]
 @if [+ module +]
-       set [+module+] stage[+id+]-[+module+] ; @UNDO_LINK_TO_DIR@ [+ IF prev +] ; \
+       @set [+module+] stage[+id+]-[+module+] ; @UNDO_LINK_TO_DIR@ [+ IF prev +] ; \
        set prev-[+module+] stage[+prev+]-[+module+] ; @UNDO_LINK_TO_DIR@ [+ ENDIF prev +]
 @endif [+ module +][+ ENDIF bootstrap +][+ ENDFOR host_modules +]
 
@@ -1396,32 +1396,39 @@ 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 +]
-       @case `echo all-stage[+id+]-*` in \
-         'all-stage[+id+]-*') ;; \
-         *) echo Remaking stage [+id+] ; rm -f all-stage[+id+]-* ;; \
-       esac ; \
-       $(MAKE) $(RECURSE_FLAGS_TO_PASS) all-stage[+id+]
-
-.PHONY: all-stage[+id+]
+stage[+id+]-bubble:: [+ IF prev +]stage[+prev+]-bubble[+ ENDIF +][+IF lean +]
+       @bootstrap_lean@-rm -rf stage[+lean+]-* ; $(STAMP) stage[+lean+]-lean[+ ENDIF lean +]
+       @if test -f stage[+id+]-lean [+
+         IF prev +]|| test -f stage[+prev+]-lean [+ ENDIF prev +] ; then \
+         echo Skipping rebuild of stage[+id+] ; \
+       else \
+         $(MAKE) $(RECURSE_FLAGS_TO_PASS) NOTPARALLEL= all-stage[+id+]; \
+       fi
+
+.PHONY: all-stage[+id+] clean-stage[+id+]
 all-stage[+id+]: [+ FOR host_modules +][+ IF bootstrap +]\
   maybe-all-stage[+id+]-[+module+][+
 ENDIF bootstrap+] [+ ENDFOR host_modules +]
 
+do-clean: clean-stage[+id+]
+clean-stage[+id+]: [+ FOR host_modules +][+ IF bootstrap +]\
+  maybe-clean-stage[+id+]-[+module+][+
+ENDIF bootstrap+] [+ ENDFOR host_modules +]
+
 [+ FOR host_modules +][+ IF bootstrap +]
+.PHONY: configure-stage[+id+]-[+module+] maybe-configure-stage[+id+]-[+module+]
+.PHONY: all-stage[+id+]-[+module+] maybe-all-stage[+id+]-[+module+]
+.PHONY: clean-stage[+id+]-[+module+] maybe-clean-stage[+id+]-[+module+]
+
 maybe-configure-stage[+id+]-[+module+]:
 maybe-all-stage[+id+]-[+module+]:
+maybe-clean-stage[+id+]-[+module+]:
 
 @if [+module+]-bootstrap
 maybe-configure-stage[+id+]-[+module+]: configure-stage[+id+]-[+module+]
-configure-stage[+id+]-[+module+]: [+ IF prev +] maybe-all-stage[+prev+]-[+module+] [+ ENDIF prev +]
-       $(MAKE) stage[+id+]-start
-       @if [ -f stage[+id+]-[+module+]/Makefile ] ; then \
-         $(STAMP) configure-stage[+id+]-[+module+] ; \
-         exit 0; \
-       else \
-         true ; \
-       fi ; \
+configure-stage[+id+]-[+module+]:
+       @$(MAKE) stage[+id+]-start
+       @[ -f [+module+]/Makefile ] && exit 0 || : ; \
        r=`${PWD_COMMAND}`; export r; \
        s=`cd $(srcdir); ${PWD_COMMAND}`; export s; [+ IF prev +] \
        $(STAGE_HOST_EXPORTS) [+ ELSE prev +] \
@@ -1441,12 +1448,11 @@ configure-stage[+id+]-[+module+]: [+ IF prev +] maybe-all-stage[+prev+]-[+module
        esac; \
        $(SHELL) $${libsrcdir}/configure \
          $(HOST_CONFIGARGS) $${srcdiroption} \
-         [+stage_configure_flags+] [+extra_configure_flags+] && \
-         $(STAMP) ../configure-stage[+id+]-[+module+]
+         [+stage_configure_flags+] [+extra_configure_flags+]
 
 maybe-all-stage[+id+]-[+module+]: all-stage[+id+]-[+module+]
 all-stage[+id+]-[+module+]: configure-stage[+id+]-[+module+]
-       $(MAKE) stage[+id+]-start
+       @$(MAKE) stage[+id+]-start
        @r=`${PWD_COMMAND}`; export r; \
        s=`cd $(srcdir); ${PWD_COMMAND}`; export s; [+ IF prev +] \
        $(STAGE_HOST_EXPORTS) [+ ELSE prev +] \
@@ -1454,17 +1460,31 @@ all-stage[+id+]-[+module+]: configure-stage[+id+]-[+module+]
        cd [+module+] && \
        $(MAKE) $(FLAGS_TO_PASS) [+ IF prev +] \
                $(POSTSTAGE1_FLAGS_TO_PASS) [+ ENDIF prev +] \
-               [+stage_make_flags+] [+extra_make_flags+] && \
-       $(STAMP) ../all-stage[+id+]-[+module+]
+               [+stage_make_flags+] [+extra_make_flags+]
+
+maybe-clean-stage[+id+]-[+module+]: clean-stage[+id+]-[+module+]
+clean-stage[+id+]-[+module+]:
+       @[ -f [+module+]/Makefile ] || [ -f stage[+id+]-[+module+]/Makefile ] \
+         || exit 0 ; \
+       [ -f [+module+]/Makefile ] || $(MAKE) stage[+id+]-start ; \
+       cd [+module+] && \
+       $(MAKE) $(FLAGS_TO_PASS) [+ IF prev +] \
+               $(POSTSTAGE1_FLAGS_TO_PASS) [+ ENDIF prev +] \
+               [+stage_make_flags+] [+extra_make_flags+] clean
 @endif [+module+]-bootstrap
+
 [+ ENDIF bootstrap +][+ ENDFOR host_modules +]
 
 # FIXME: Will not need to be conditional when toplevel bootstrap is the
 # only possibility, but now it conflicts with no-bootstrap rules
 @if gcc-bootstrap
 [+ IF compare-target +]
-[+compare-target+]: all-stage[+id+]-gcc
-       [ -f stage_current ] && $(MAKE) `cat stage_current`-end || :
+[+compare-target+]:
+       @if test -f stage[+prev+]-lean; then \
+         echo Cannot compare object files as stage [+prev+] was deleted. ; \
+         exit 0 ; \
+       fi; \
+       [ -f stage_current ] && $(MAKE) `cat stage_current`-end || : ; \
        @r=`${PWD_COMMAND}`; export r; \
        s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \
        rm -f .bad_compare ; \
@@ -1483,53 +1503,26 @@ all-stage[+id+]-[+module+]: configure-stage[+id+]-[+module+]
        else \
          true; \
        fi ; \
-       $(STAMP) [+compare-target+]
+       $(STAMP) [+compare-target+][+ IF prev +]
+       @bootstrap_lean@-rm -rf stage[+prev+]-* ; $(STAMP) stage[+prev+]-lean[+ ENDIF prev +]
 [+ ENDIF compare-target +]
 
 [+ IF bootstrap-target +]
 .PHONY: [+bootstrap-target+]
-[+bootstrap-target+]: stage[+id+]-bubble [+
-         IF compare-target +] [+compare-target+] [+
-         ENDIF compare-target +] all
+[+bootstrap-target+]: stage[+id+]-bubble [+compare-target+] all
 [+ ENDIF bootstrap-target +]
 
-.PHONY: restage[+id+] touch-stage[+id+] distclean-stage[+id+]
-
-# Rules to wipe a stage and all the following ones, used for cleanstrap
+# Rules to wipe a stage and all the following ones, also used for cleanstrap
 [+ IF prev +]distclean-stage[+prev+]:: distclean-stage[+id+] [+ ENDIF prev +]
+.PHONY: distclean-stage[+id+]
 distclean-stage[+id+]::
        [ -f stage_current ] && $(MAKE) `cat stage_current`-end || :
-       rm -rf configure-stage[+id+]-* all-stage[+id+]-* stage[+id+]-* [+
-         IF compare-target +][+compare-target+] [+ ENDIF compare-target +]
-
-# 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+]::
-       @case `echo configure-stage[+id+]-*` in \
-         'configure-stage[+id+]-*') ;; \
-         *) \
-           echo '$(STAMP)' configure-stage[+id+]-* && \
-           $(STAMP) configure-stage[+id+]-* ;; \
-       esac ; \
-       case `echo all-stage[+id+]-*` in \
-         'all-stage[+id+]-*') ;; \
-         *) \
-           echo '$(STAMP)' all-stage[+id+]-* && \
-           $(STAMP) all-stage[+id+]-* ;; \
-       esac
-
-# After building a stage, touch the following ones
-[+ IF prev +]restage[+prev+]:: touch-stage[+id+] [+ ENDIF prev +]
-restage[+id+]::
-       rm -rf all-stage[+id+]-* [+
+       rm -rf stage[+id+]-* [+
          IF compare-target +][+compare-target+] [+ ENDIF compare-target +]
-       $(MAKE) $(RECURSE_FLAGS_TO_PASS) [+
-         IF compare-target +][+compare-target+] [+
-         ELSE +] all-stage[+id+] [+ ENDIF compare-target +]
 
 [+ IF cleanstrap-target +]
 .PHONY: [+cleanstrap-target+]
-[+cleanstrap-target+]: distclean-stage1 [+bootstrap-target+]
+[+cleanstrap-target+]: distclean [+bootstrap-target+]
 [+ ENDIF cleanstrap-target +]
 @endif gcc-bootstrap
 
@@ -1565,6 +1558,12 @@ profiledbootstrap:
        $(MAKE) stagefeedback-bubble stagefeedback-end
 @endif gcc-bootstrap
 
+@if gcc-bootstrap
+NOTPARALLEL = .NOTPARALLEL
+$(NOTPARALLEL):
+do-distclean: distclean-stage1
+@endif gcc-bootstrap
+
 # --------------------------------------
 # Dependencies between different modules
 # --------------------------------------
@@ -1626,8 +1625,8 @@ configure-target-[+module+]: maybe-all-target-newlib maybe-all-target-libgloss
    (define dep-maybe (lambda ()
       (if (exist? "hard") "" "maybe-")))
 
-   ;; dep-kind returns "normal" is the dependency is on an "install" target,
-   ;; or if the LHS module is not bootstrapped.  It returns "bootstrap" for
+   ;; dep-kind returns "normal" if the dependency is on an "install" target,
+   ;; or if either module is not bootstrapped.  It returns "bootstrap" for
    ;; configure or build dependencies between bootstrapped modules; it returns
    ;; "prebootstrap" for configure or build dependencies of bootstrapped
    ;; modules on a build module (e.g. all-gcc on all-build-bison).  All this
@@ -1639,7 +1638,8 @@ configure-target-[+module+]: maybe-all-target-newlib maybe-all-target-libgloss
 
          (if (or (= (dep-subtarget "on") "install-")
                  (=* (dep-module "on") "target-")
-                 (not (hash-ref boot-modules (dep-module "module"))))
+                 (not (hash-ref boot-modules (dep-module "module")))
+                 (not (hash-ref boot-modules (dep-module "on"))))
               "normal"
              "bootstrap"))))