* fix libcc1 dependencies in toplevel Makefile
@ 2017-06-13 12:58 Olivier Hainque
2017-06-14 11:39 ` Nathan Sidwell
2017-06-22 12:13 ` Alexandre Oliva
0 siblings, 2 replies; 16+ messages in thread
From: Olivier Hainque @ 2017-06-13 12:58 UTC (permalink / raw)
To: GCC Patches; +Cc: Nicolas Roche
[-- Attachment #1: Type: text/plain, Size: 2050 bytes --]
Hello,
During highly parallel builds on fast hosts, we have experienced
sporadic bootstrap failures on libquadmath like
In file included from ../../../src/libquadmath/printf/printf_fp.c:39:0:
../../../src/libquadmath/printf/quadmath-printf.h:24:20: fatal error: .../build/./gcc/include-fixed/limits.h: No such file or directory
#include <limits.h>
A pretty clear sign of a race condition caused by some inaccuracy in the
dependency statements.
Investigation led us to suspect this piece in the toplevel Makefile.in:
all-libcc1: maybe-all-gcc
which differs from all the other dependencies on maybe-all-gcc in that it's
unconditional whereas the other ones are conditioned on @if gcc-no-bootstrap.
(Thanks to Nico Roche, cc'ed for the worked involved in finding this out)
Our understanding is that it's incorrect to have dependencies on maybe-all-gcc
in the bootstrap case; that this should be a dependency on stage_current
instead.
This patch is a proposal to address this by first removing the following
statement in Makefile.def:
dependencies = { module=all-libcc1; on=all-gcc; };
(which emits the dependency unconditionally), then refining the expansion
of "all" targets in Makefile.tpl so they include a possible dep conditioned by
gcc-no-bootstrap, on demand for "host_module"s that ask for it by way of a new
"depgcc" parameter.
We have been using this in-house for months now. The sporadic failures
have disappeared since then and we haven't observed any related fallout
so far.
Bootstrapped and regression tested on x86_64-linux.
OK to commit ?
Thanks in advance for your feedback,
With Kind Regards,
Olivier
2017-06-13 Olivier Hainque <hainque@adacore.com>
* Makefile.def (host_modules): Set depgcc to true for libcc1,
meaning need of a dep on stage_current if gcc-bootstrap and on
maybe-all-gcc otherwise.
(dependencies) Remove unconditional dependency on all-gcc.
* Makefile.tpl ("all" targets): Handle depgcc.
* Makefile.in: Regenerate
[-- Attachment #2: libcc1-deps.diff --]
[-- Type: application/octet-stream, Size: 17138 bytes --]
diff --git a/Makefile.def b/Makefile.def
index abfa9ef..0bc3ccf 100644
--- a/Makefile.def
+++ b/Makefile.def
@@ -126,7 +126,7 @@ host_modules= { module= gnattools; };
host_modules= { module= lto-plugin; bootstrap=true;
extra_configure_flags='--enable-shared @extra_linker_plugin_flags@ @extra_linker_plugin_configure_flags@';
extra_make_flags='@extra_linker_plugin_flags@'; };
-host_modules= { module= libcc1; extra_configure_flags=--enable-shared; };
+host_modules= { module= libcc1; extra_configure_flags=--enable-shared; depgcc=true; };
host_modules= { module= gotools; };
target_modules = { module= libstdc++-v3;
@@ -373,7 +373,6 @@ dependencies = { module=all-lto-plugin; on=all-libiberty; };
dependencies = { module=all-lto-plugin; on=all-libiberty-linker-plugin; };
dependencies = { module=configure-libcc1; on=configure-gcc; };
-dependencies = { module=all-libcc1; on=all-gcc; };
dependencies = { module=all-gotools; on=all-target-libgo; };
diff --git a/Makefile.in b/Makefile.in
index b824e0a..5007f9d 100644
--- a/Makefile.in
+++ b/Makefile.in
@@ -2808,6 +2808,7 @@ maybe-all-build-libiberty:
@if gcc-bootstrap
all-build-libiberty: stage_current
@endif gcc-bootstrap
+
@if build-libiberty
TARGET-build-libiberty=all
maybe-all-build-libiberty: all-build-libiberty
@@ -2865,6 +2866,7 @@ maybe-all-build-bison:
@if gcc-bootstrap
all-build-bison: stage_current
@endif gcc-bootstrap
+
@if build-bison
TARGET-build-bison=all
maybe-all-build-bison: all-build-bison
@@ -2922,6 +2924,7 @@ maybe-all-build-flex:
@if gcc-bootstrap
all-build-flex: stage_current
@endif gcc-bootstrap
+
@if build-flex
TARGET-build-flex=all
maybe-all-build-flex: all-build-flex
@@ -2979,6 +2982,7 @@ maybe-all-build-m4:
@if gcc-bootstrap
all-build-m4: stage_current
@endif gcc-bootstrap
+
@if build-m4
TARGET-build-m4=all
maybe-all-build-m4: all-build-m4
@@ -3036,6 +3040,7 @@ maybe-all-build-texinfo:
@if gcc-bootstrap
all-build-texinfo: stage_current
@endif gcc-bootstrap
+
@if build-texinfo
TARGET-build-texinfo=all
maybe-all-build-texinfo: all-build-texinfo
@@ -3093,6 +3098,7 @@ maybe-all-build-fixincludes:
@if gcc-bootstrap
all-build-fixincludes: stage_current
@endif gcc-bootstrap
+
@if build-fixincludes
TARGET-build-fixincludes=all
maybe-all-build-fixincludes: all-build-fixincludes
@@ -3150,6 +3156,7 @@ maybe-all-build-libcpp:
@if gcc-bootstrap
all-build-libcpp: stage_current
@endif gcc-bootstrap
+
@if build-libcpp
TARGET-build-libcpp=all
maybe-all-build-libcpp: all-build-libcpp
@@ -3475,6 +3482,7 @@ maybe-all-bfd:
@if gcc-bootstrap
all-bfd: stage_current
@endif gcc-bootstrap
+
@if bfd
TARGET-bfd=all
maybe-all-bfd: all-bfd
@@ -4505,6 +4513,7 @@ maybe-all-opcodes:
@if gcc-bootstrap
all-opcodes: stage_current
@endif gcc-bootstrap
+
@if opcodes
TARGET-opcodes=all
maybe-all-opcodes: all-opcodes
@@ -5535,6 +5544,7 @@ maybe-all-binutils:
@if gcc-bootstrap
all-binutils: stage_current
@endif gcc-bootstrap
+
@if binutils
TARGET-binutils=all
maybe-all-binutils: all-binutils
@@ -6301,6 +6311,7 @@ maybe-all-bison:
@if gcc-bootstrap
all-bison: stage_current
@endif gcc-bootstrap
+
@if bison
TARGET-bison=all
maybe-all-bison: all-bison
@@ -6745,6 +6756,7 @@ maybe-all-cgen:
@if gcc-bootstrap
all-cgen: stage_current
@endif gcc-bootstrap
+
@if cgen
TARGET-cgen=all
maybe-all-cgen: all-cgen
@@ -7186,6 +7198,7 @@ maybe-all-dejagnu:
@if gcc-bootstrap
all-dejagnu: stage_current
@endif gcc-bootstrap
+
@if dejagnu
TARGET-dejagnu=all
maybe-all-dejagnu: all-dejagnu
@@ -7627,6 +7640,7 @@ maybe-all-etc:
@if gcc-bootstrap
all-etc: stage_current
@endif gcc-bootstrap
+
@if etc
TARGET-etc=all
maybe-all-etc: all-etc
@@ -8068,6 +8082,7 @@ maybe-all-fastjar:
@if gcc-bootstrap
all-fastjar: stage_current
@endif gcc-bootstrap
+
@if fastjar
TARGET-fastjar=all
maybe-all-fastjar: all-fastjar
@@ -8776,6 +8791,7 @@ maybe-all-fixincludes:
@if gcc-bootstrap
all-fixincludes: stage_current
@endif gcc-bootstrap
+
@if fixincludes
TARGET-fixincludes=all
maybe-all-fixincludes: all-fixincludes
@@ -9527,6 +9543,7 @@ maybe-all-flex:
@if gcc-bootstrap
all-flex: stage_current
@endif gcc-bootstrap
+
@if flex
TARGET-flex=all
maybe-all-flex: all-flex
@@ -10235,6 +10252,7 @@ maybe-all-gas:
@if gcc-bootstrap
all-gas: stage_current
@endif gcc-bootstrap
+
@if gas
TARGET-gas=all
maybe-all-gas: all-gas
@@ -11265,6 +11283,7 @@ maybe-all-gcc:
@if gcc-bootstrap
all-gcc: stage_current
@endif gcc-bootstrap
+
@if gcc
TARGET-gcc=all
maybe-all-gcc: all-gcc
@@ -12303,6 +12322,7 @@ maybe-all-gmp:
@if gcc-bootstrap
all-gmp: stage_current
@endif gcc-bootstrap
+
@if gmp
TARGET-gmp=all
maybe-all-gmp: all-gmp
@@ -13329,6 +13349,7 @@ maybe-all-mpfr:
@if gcc-bootstrap
all-mpfr: stage_current
@endif gcc-bootstrap
+
@if mpfr
TARGET-mpfr=all
maybe-all-mpfr: all-mpfr
@@ -14355,6 +14376,7 @@ maybe-all-mpc:
@if gcc-bootstrap
all-mpc: stage_current
@endif gcc-bootstrap
+
@if mpc
TARGET-mpc=all
maybe-all-mpc: all-mpc
@@ -15381,6 +15403,7 @@ maybe-all-isl:
@if gcc-bootstrap
all-isl: stage_current
@endif gcc-bootstrap
+
@if isl
TARGET-isl=all
maybe-all-isl: all-isl
@@ -16407,6 +16430,7 @@ maybe-all-libelf:
@if gcc-bootstrap
all-libelf: stage_current
@endif gcc-bootstrap
+
@if libelf
TARGET-libelf=all
maybe-all-libelf: all-libelf
@@ -17425,6 +17449,7 @@ maybe-all-gold:
@if gcc-bootstrap
all-gold: stage_current
@endif gcc-bootstrap
+
@if gold
TARGET-gold=all
maybe-all-gold: all-gold
@@ -18191,6 +18216,7 @@ maybe-all-gprof:
@if gcc-bootstrap
all-gprof: stage_current
@endif gcc-bootstrap
+
@if gprof
TARGET-gprof=all
maybe-all-gprof: all-gprof
@@ -18896,6 +18922,7 @@ maybe-all-intl:
@if gcc-bootstrap
all-intl: stage_current
@endif gcc-bootstrap
+
@if intl
TARGET-intl=all
maybe-all-intl: all-intl
@@ -19662,6 +19689,7 @@ maybe-all-tcl:
@if gcc-bootstrap
all-tcl: stage_current
@endif gcc-bootstrap
+
@if tcl
TARGET-tcl=all
maybe-all-tcl: all-tcl
@@ -20088,6 +20116,7 @@ maybe-all-itcl:
@if gcc-bootstrap
all-itcl: stage_current
@endif gcc-bootstrap
+
@if itcl
TARGET-itcl=all
maybe-all-itcl: all-itcl
@@ -20793,6 +20822,7 @@ maybe-all-ld:
@if gcc-bootstrap
all-ld: stage_current
@endif gcc-bootstrap
+
@if ld
TARGET-ld=all
maybe-all-ld: all-ld
@@ -21823,6 +21853,7 @@ maybe-all-libbacktrace:
@if gcc-bootstrap
all-libbacktrace: stage_current
@endif gcc-bootstrap
+
@if libbacktrace
TARGET-libbacktrace=all
maybe-all-libbacktrace: all-libbacktrace
@@ -22853,6 +22884,7 @@ maybe-all-libcpp:
@if gcc-bootstrap
all-libcpp: stage_current
@endif gcc-bootstrap
+
@if libcpp
TARGET-libcpp=all
maybe-all-libcpp: all-libcpp
@@ -23883,6 +23915,7 @@ maybe-all-libdecnumber:
@if gcc-bootstrap
all-libdecnumber: stage_current
@endif gcc-bootstrap
+
@if libdecnumber
TARGET-libdecnumber=all
maybe-all-libdecnumber: all-libdecnumber
@@ -24649,6 +24682,7 @@ maybe-all-libgui:
@if gcc-bootstrap
all-libgui: stage_current
@endif gcc-bootstrap
+
@if libgui
TARGET-libgui=all
maybe-all-libgui: all-libgui
@@ -25362,6 +25396,7 @@ maybe-all-libiberty:
@if gcc-bootstrap
all-libiberty: stage_current
@endif gcc-bootstrap
+
@if libiberty
TARGET-libiberty=all
maybe-all-libiberty: all-libiberty
@@ -26400,6 +26435,7 @@ maybe-all-libiberty-linker-plugin:
@if gcc-bootstrap
all-libiberty-linker-plugin: stage_current
@endif gcc-bootstrap
+
@if libiberty-linker-plugin
TARGET-libiberty-linker-plugin=all
maybe-all-libiberty-linker-plugin: all-libiberty-linker-plugin
@@ -27438,6 +27474,7 @@ maybe-all-libiconv:
@if gcc-bootstrap
all-libiconv: stage_current
@endif gcc-bootstrap
+
@if libiconv
TARGET-libiconv=all
maybe-all-libiconv: all-libiconv
@@ -28099,6 +28136,7 @@ maybe-all-m4:
@if gcc-bootstrap
all-m4: stage_current
@endif gcc-bootstrap
+
@if m4
TARGET-m4=all
maybe-all-m4: all-m4
@@ -28540,6 +28578,7 @@ maybe-all-readline:
@if gcc-bootstrap
all-readline: stage_current
@endif gcc-bootstrap
+
@if readline
TARGET-readline=all
maybe-all-readline: all-readline
@@ -28981,6 +29020,7 @@ maybe-all-sid:
@if gcc-bootstrap
all-sid: stage_current
@endif gcc-bootstrap
+
@if sid
TARGET-sid=all
maybe-all-sid: all-sid
@@ -29422,6 +29462,7 @@ maybe-all-sim:
@if gcc-bootstrap
all-sim: stage_current
@endif gcc-bootstrap
+
@if sim
TARGET-sim=all
maybe-all-sim: all-sim
@@ -29863,6 +29904,7 @@ maybe-all-texinfo:
@if gcc-bootstrap
all-texinfo: stage_current
@endif gcc-bootstrap
+
@if texinfo
TARGET-texinfo=all
maybe-all-texinfo: all-texinfo
@@ -30564,6 +30606,7 @@ maybe-all-zlib:
@if gcc-bootstrap
all-zlib: stage_current
@endif gcc-bootstrap
+
@if zlib
TARGET-zlib=all
maybe-all-zlib: all-zlib
@@ -31312,6 +31355,7 @@ maybe-all-gdb:
@if gcc-bootstrap
all-gdb: stage_current
@endif gcc-bootstrap
+
@if gdb
TARGET-gdb=all
maybe-all-gdb: all-gdb
@@ -31753,6 +31797,7 @@ maybe-all-expect:
@if gcc-bootstrap
all-expect: stage_current
@endif gcc-bootstrap
+
@if expect
TARGET-expect=all
maybe-all-expect: all-expect
@@ -32194,6 +32239,7 @@ maybe-all-guile:
@if gcc-bootstrap
all-guile: stage_current
@endif gcc-bootstrap
+
@if guile
TARGET-guile=all
maybe-all-guile: all-guile
@@ -32635,6 +32681,7 @@ maybe-all-tk:
@if gcc-bootstrap
all-tk: stage_current
@endif gcc-bootstrap
+
@if tk
TARGET-tk=all
maybe-all-tk: all-tk
@@ -33076,6 +33123,7 @@ maybe-all-libtermcap:
@if gcc-bootstrap
all-libtermcap: stage_current
@endif gcc-bootstrap
+
@if libtermcap
TARGET-libtermcap=all
maybe-all-libtermcap: all-libtermcap
@@ -33451,6 +33499,7 @@ maybe-all-utils:
@if gcc-bootstrap
all-utils: stage_current
@endif gcc-bootstrap
+
@if utils
TARGET-utils=all
maybe-all-utils: all-utils
@@ -33886,6 +33935,7 @@ maybe-all-gnattools:
@if gcc-bootstrap
all-gnattools: stage_current
@endif gcc-bootstrap
+
@if gnattools
TARGET-gnattools=all
maybe-all-gnattools: all-gnattools
@@ -34599,6 +34649,7 @@ maybe-all-lto-plugin:
@if gcc-bootstrap
all-lto-plugin: stage_current
@endif gcc-bootstrap
+
@if lto-plugin
TARGET-lto-plugin=all
maybe-all-lto-plugin: all-lto-plugin
@@ -35365,6 +35416,11 @@ maybe-all-libcc1:
@if gcc-bootstrap
all-libcc1: stage_current
@endif gcc-bootstrap
+
+@if gcc-no-bootstrap
+all-libcc1: maybe-all-gcc
+@endif gcc-no-bootstrap
+
@if libcc1
TARGET-libcc1=all
maybe-all-libcc1: all-libcc1
@@ -35806,6 +35862,7 @@ maybe-all-gotools:
@if gcc-bootstrap
all-gotools: stage_current
@endif gcc-bootstrap
+
@if gotools
TARGET-gotools=all
maybe-all-gotools: all-gotools
@@ -36628,6 +36685,7 @@ maybe-all-target-libstdc++-v3:
@if gcc-bootstrap
all-target-libstdc++-v3: stage_current
@endif gcc-bootstrap
+
@if target-libstdc++-v3
TARGET-target-libstdc++-v3=all
maybe-all-target-libstdc++-v3: all-target-libstdc++-v3
@@ -37784,6 +37842,7 @@ maybe-all-target-libsanitizer:
@if gcc-bootstrap
all-target-libsanitizer: stage_current
@endif gcc-bootstrap
+
@if target-libsanitizer
TARGET-target-libsanitizer=all
maybe-all-target-libsanitizer: all-target-libsanitizer
@@ -38940,6 +38999,7 @@ maybe-all-target-libmpx:
@if gcc-bootstrap
all-target-libmpx: stage_current
@endif gcc-bootstrap
+
@if target-libmpx
TARGET-target-libmpx=all
maybe-all-target-libmpx: all-target-libmpx
@@ -40096,6 +40156,7 @@ maybe-all-target-libvtv:
@if gcc-bootstrap
all-target-libvtv: stage_current
@endif gcc-bootstrap
+
@if target-libvtv
TARGET-target-libvtv=all
maybe-all-target-libvtv: all-target-libvtv
@@ -40892,6 +40953,7 @@ maybe-all-target-libcilkrts:
@if gcc-bootstrap
all-target-libcilkrts: stage_current
@endif gcc-bootstrap
+
@if target-libcilkrts
TARGET-target-libcilkrts=all
maybe-all-target-libcilkrts: all-target-libcilkrts
@@ -41350,6 +41412,7 @@ maybe-all-target-liboffloadmic:
@if gcc-bootstrap
all-target-liboffloadmic: stage_current
@endif gcc-bootstrap
+
@if target-liboffloadmic
TARGET-target-liboffloadmic=all
maybe-all-target-liboffloadmic: all-target-liboffloadmic
@@ -41808,6 +41871,7 @@ maybe-all-target-libssp:
@if gcc-bootstrap
all-target-libssp: stage_current
@endif gcc-bootstrap
+
@if target-libssp
TARGET-target-libssp=all
maybe-all-target-libssp: all-target-libssp
@@ -42266,6 +42330,7 @@ maybe-all-target-newlib:
@if gcc-bootstrap
all-target-newlib: stage_current
@endif gcc-bootstrap
+
@if target-newlib
TARGET-target-newlib=all
maybe-all-target-newlib: all-target-newlib
@@ -43084,6 +43149,7 @@ maybe-all-target-libgcc:
@if gcc-bootstrap
all-target-libgcc: stage_current
@endif gcc-bootstrap
+
@if target-libgcc
TARGET-target-libgcc=all
maybe-all-target-libgcc: all-target-libgcc
@@ -43875,6 +43941,7 @@ maybe-all-target-libbacktrace:
@if gcc-bootstrap
all-target-libbacktrace: stage_current
@endif gcc-bootstrap
+
@if target-libbacktrace
TARGET-target-libbacktrace=all
maybe-all-target-libbacktrace: all-target-libbacktrace
@@ -44333,6 +44400,7 @@ maybe-all-target-libquadmath:
@if gcc-bootstrap
all-target-libquadmath: stage_current
@endif gcc-bootstrap
+
@if target-libquadmath
TARGET-target-libquadmath=all
maybe-all-target-libquadmath: all-target-libquadmath
@@ -44791,6 +44859,7 @@ maybe-all-target-libgfortran:
@if gcc-bootstrap
all-target-libgfortran: stage_current
@endif gcc-bootstrap
+
@if target-libgfortran
TARGET-target-libgfortran=all
maybe-all-target-libgfortran: all-target-libgfortran
@@ -45249,6 +45318,7 @@ maybe-all-target-libobjc:
@if gcc-bootstrap
all-target-libobjc: stage_current
@endif gcc-bootstrap
+
@if target-libobjc
TARGET-target-libobjc=all
maybe-all-target-libobjc: all-target-libobjc
@@ -45707,6 +45777,7 @@ maybe-all-target-libgo:
@if gcc-bootstrap
all-target-libgo: stage_current
@endif gcc-bootstrap
+
@if target-libgo
TARGET-target-libgo=all
maybe-all-target-libgo: all-target-libgo
@@ -46165,6 +46236,7 @@ maybe-all-target-libhsail-rt:
@if gcc-bootstrap
all-target-libhsail-rt: stage_current
@endif gcc-bootstrap
+
@if target-libhsail-rt
TARGET-target-libhsail-rt=all
maybe-all-target-libhsail-rt: all-target-libhsail-rt
@@ -46623,6 +46695,7 @@ maybe-all-target-libtermcap:
@if gcc-bootstrap
all-target-libtermcap: stage_current
@endif gcc-bootstrap
+
@if target-libtermcap
TARGET-target-libtermcap=all
maybe-all-target-libtermcap: all-target-libtermcap
@@ -47016,6 +47089,7 @@ maybe-all-target-winsup:
@if gcc-bootstrap
all-target-winsup: stage_current
@endif gcc-bootstrap
+
@if target-winsup
TARGET-target-winsup=all
maybe-all-target-winsup: all-target-winsup
@@ -47474,6 +47548,7 @@ maybe-all-target-libgloss:
@if gcc-bootstrap
all-target-libgloss: stage_current
@endif gcc-bootstrap
+
@if target-libgloss
TARGET-target-libgloss=all
maybe-all-target-libgloss: all-target-libgloss
@@ -47927,6 +48002,7 @@ maybe-all-target-libffi:
@if gcc-bootstrap
all-target-libffi: stage_current
@endif gcc-bootstrap
+
@if target-libffi
TARGET-target-libffi=all
maybe-all-target-libffi: all-target-libffi
@@ -48375,6 +48451,7 @@ maybe-all-target-zlib:
@if gcc-bootstrap
all-target-zlib: stage_current
@endif gcc-bootstrap
+
@if target-zlib
TARGET-target-zlib=all
maybe-all-target-zlib: all-target-zlib
@@ -48833,6 +48910,7 @@ maybe-all-target-rda:
@if gcc-bootstrap
all-target-rda: stage_current
@endif gcc-bootstrap
+
@if target-rda
TARGET-target-rda=all
maybe-all-target-rda: all-target-rda
@@ -49291,6 +49369,7 @@ maybe-all-target-libada:
@if gcc-bootstrap
all-target-libada: stage_current
@endif gcc-bootstrap
+
@if target-libada
TARGET-target-libada=all
maybe-all-target-libada: all-target-libada
@@ -50109,6 +50188,7 @@ maybe-all-target-libgomp:
@if gcc-bootstrap
all-target-libgomp: stage_current
@endif gcc-bootstrap
+
@if target-libgomp
TARGET-target-libgomp=all
maybe-all-target-libgomp: all-target-libgomp
@@ -50905,6 +50985,7 @@ maybe-all-target-libitm:
@if gcc-bootstrap
all-target-libitm: stage_current
@endif gcc-bootstrap
+
@if target-libitm
TARGET-target-libitm=all
maybe-all-target-libitm: all-target-libitm
@@ -51363,6 +51444,7 @@ maybe-all-target-libatomic:
@if gcc-bootstrap
all-target-libatomic: stage_current
@endif gcc-bootstrap
+
@if target-libatomic
TARGET-target-libatomic=all
maybe-all-target-libatomic: all-target-libatomic
@@ -55262,7 +55344,6 @@ all-stagefeedback-lto-plugin: maybe-all-stagefeedback-libiberty-linker-plugin
all-stageautoprofile-lto-plugin: maybe-all-stageautoprofile-libiberty-linker-plugin
all-stageautofeedback-lto-plugin: maybe-all-stageautofeedback-libiberty-linker-plugin
configure-libcc1: maybe-configure-gcc
-all-libcc1: maybe-all-gcc
all-gotools: maybe-all-target-libgo
all-utils: maybe-all-libiberty
configure-intl: maybe-all-libiconv
diff --git a/Makefile.tpl b/Makefile.tpl
index d0fa070..8ea0d69 100644
--- a/Makefile.tpl
+++ b/Makefile.tpl
@@ -1115,6 +1115,11 @@ maybe-all-[+prefix+][+module+]:
@if gcc-bootstrap
all-[+prefix+][+module+]: stage_current
@endif gcc-bootstrap
+[+ IF depgcc +]
+@if gcc-no-bootstrap
+all-[+prefix+][+module+]: maybe-all-gcc
+@endif gcc-no-bootstrap
+[+ ENDIF depgcc +]
@if [+prefix+][+module+]
TARGET-[+prefix+][+module+]=[+
IF all_target +][+all_target+][+ ELSE +]all[+ ENDIF all_target +]
^ permalink raw reply [flat|nested] 16+ messages in thread
* Re: fix libcc1 dependencies in toplevel Makefile
2017-06-13 12:58 fix libcc1 dependencies in toplevel Makefile Olivier Hainque
@ 2017-06-14 11:39 ` Nathan Sidwell
2017-06-14 21:11 ` Olivier Hainque
2017-06-22 12:13 ` Alexandre Oliva
1 sibling, 1 reply; 16+ messages in thread
From: Nathan Sidwell @ 2017-06-14 11:39 UTC (permalink / raw)
To: gcc-patches
Olivier,
> During highly parallel builds on fast hosts, we have experienced
> sporadic bootstrap failures on libquadmath like
I have encountered such a bootstrap problem too. I guessed dependency
race condition, but -j21 was a simpler fix :)
I'm happy to try the patch.
nathan
--
Nathan Sidwell
^ permalink raw reply [flat|nested] 16+ messages in thread
* Re: fix libcc1 dependencies in toplevel Makefile
2017-06-14 11:39 ` Nathan Sidwell
@ 2017-06-14 21:11 ` Olivier Hainque
2017-06-15 12:03 ` Nathan Sidwell
0 siblings, 1 reply; 16+ messages in thread
From: Olivier Hainque @ 2017-06-14 21:11 UTC (permalink / raw)
To: Nathan Sidwell; +Cc: Olivier Hainque, gcc-patches
> On Jun 14, 2017, at 13:39 , Nathan Sidwell <nathan@acm.org> wrote:
>
> Olivier,
>> During highly parallel builds on fast hosts, we have experienced
>> sporadic bootstrap failures on libquadmath like
>
> I have encountered such a bootstrap problem too. I guessed dependency race condition, but -j21 was a simpler fix :)
I see :)
> I'm happy to try the patch.
That would bring useful extra datapoints, Thanks!
The patch might be more complex than it needs to be.
The logic is very simple: I wasn't sure whether I could
add
@if gcc-no-bootstrap
all-[+prefix+][+module+]: maybe-all-gcc
@endif gcc-no-bootstrap
to all "all" targets after the dependency to stage_current
@if gcc-bootstrap (in Makefile.tpl).
The "depgcc" boolean is simply a mechanism to do that
only for cases where we were adding a extra explicit dependency
to maybe-all-gcc before, that is, only for libcc1.
Olivier
^ permalink raw reply [flat|nested] 16+ messages in thread
* Re: fix libcc1 dependencies in toplevel Makefile
2017-06-14 21:11 ` Olivier Hainque
@ 2017-06-15 12:03 ` Nathan Sidwell
2017-06-15 12:29 ` Olivier Hainque
0 siblings, 1 reply; 16+ messages in thread
From: Nathan Sidwell @ 2017-06-15 12:03 UTC (permalink / raw)
To: Olivier Hainque; +Cc: gcc-patches
On 06/14/2017 01:24 PM, Olivier Hainque wrote:
>> I'm happy to try the patch.
>
> That would bring useful extra datapoints, Thanks!
I now seem unable to trigger the race with an unpatched source. Sorry
--
Nathan Sidwell
^ permalink raw reply [flat|nested] 16+ messages in thread
* Re: fix libcc1 dependencies in toplevel Makefile
2017-06-15 12:03 ` Nathan Sidwell
@ 2017-06-15 12:29 ` Olivier Hainque
0 siblings, 0 replies; 16+ messages in thread
From: Olivier Hainque @ 2017-06-15 12:29 UTC (permalink / raw)
To: Nathan Sidwell; +Cc: gcc-patches
> On 15 Jun 2017, at 14:03, Nathan Sidwell <nathan@acm.org> wrote:
>
> On 06/14/2017 01:24 PM, Olivier Hainque wrote:
>
>>> I'm happy to try the patch.
>> That would bring useful extra datapoints, Thanks!
>
> I now seem unable to trigger the race with an unpatched source. Sorry
No pb. Thanks for trying.
We were seeing the failures only in pretty specific circumstances (particular
machine & load conditions etc)
The patch remains worth considering IMO. At least, it would be interesting to
get feedback from a build-system maintainer on the correctness of the current
dependencies.
Our understanding is that it is incorrect to have libcc1 depend on
maybe-all-gcc in a bootstrapping setup because it can trigger rebuilds of gcc/
components in parallel with ongoing processing of target components (with
pre-requisites on stage_current only).
^ permalink raw reply [flat|nested] 16+ messages in thread
* Re: fix libcc1 dependencies in toplevel Makefile
2017-06-13 12:58 fix libcc1 dependencies in toplevel Makefile Olivier Hainque
2017-06-14 11:39 ` Nathan Sidwell
@ 2017-06-22 12:13 ` Alexandre Oliva
2017-06-26 7:41 ` Olivier Hainque
1 sibling, 1 reply; 16+ messages in thread
From: Alexandre Oliva @ 2017-06-22 12:13 UTC (permalink / raw)
To: Olivier Hainque; +Cc: GCC Patches, Nicolas Roche
On Jun 13, 2017, Olivier Hainque <hainque@adacore.com> wrote:
> 2017-06-13 Olivier Hainque <hainque@adacore.com>
> * Makefile.def (host_modules): Set depgcc to true for libcc1,
> meaning need of a dep on stage_current if gcc-bootstrap and on
> maybe-all-gcc otherwise.
> (dependencies) Remove unconditional dependency on all-gcc.
> * Makefile.tpl ("all" targets): Handle depgcc.
> * Makefile.in: Regenerate
This looks reasonable to me. libcc1 is weird. It's not a target
library, it doesn't use the current stage tools for building. It might
as well not have any deps on the current stage's gcc, if it weren't for
the fact that it includes headers from the current stage's gcc and links
with current stage's host libraries, and even its configure reads from
files created in current stage's gcc configuration.
So, it needs to be built after gcc and its host deps are built, and it
needs to be configured after gcc is configured. However, it is not part
of the bootstrap, and we avoid building it more than once even in a
bootstrap build. That's what makes it special and tricky.
Your patch takes care of the build dependencies of libcc1, which should
avoid some scenarios that might lead to concurrency between staged and
non-staged builds. However, I don't see that it ensures libcc1 will be
built after GCC in bootstrap scenarios; it might do so under 'make
bootstrap', but probably not under 'make all-libcc1'. I think we may
need some additional bootstrap-only explicit dependency for that to work
properly.
Furthermore, the patch does not take care of the configure dependencies
of libcc1, so I think there might still be room for trouble, depending
on what make targets are concurrently requested. I'm not entirely sure
this is true, though.
I'd like to understand better what the concurrency problem is with the
current build machinery, before we proceed with this change. If you
manage to trigger the problem again, could you try to further analyze
build logs to check for e.g. concurrent activation of all-gcc in both
the top-level Makefile and the recursed-into-for-stage1 Makefile, or
somesuch? Something else worth considering is what the make targets
specified in the command line were.
All this said, I do agree that explicit deps on maybe-all-gcc are a
likely source of trouble; AFAICT all other host modules that are to be
built after gcc depend on some target lib too. Perhaps that brings some
dep that libcc1 should have too...
--
Alexandre Oliva, freedom fighter http://FSFLA.org/~lxoliva/
You must be the change you wish to see in the world. -- Gandhi
Be Free! -- http://FSFLA.org/ FSF Latin America board member
Free Software Evangelist|Red Hat Brasil GNU Toolchain Engineer
^ permalink raw reply [flat|nested] 16+ messages in thread
* Re: fix libcc1 dependencies in toplevel Makefile
2017-06-22 12:13 ` Alexandre Oliva
@ 2017-06-26 7:41 ` Olivier Hainque
2017-06-27 16:32 ` Olivier Hainque
2017-06-27 19:53 ` Alexandre Oliva
0 siblings, 2 replies; 16+ messages in thread
From: Olivier Hainque @ 2017-06-26 7:41 UTC (permalink / raw)
To: Alexandre Oliva; +Cc: Olivier Hainque, GCC Patches, Nicolas Roche
Hello Alex,
Thanks for the review and for the extensive comments on this,
much appreciated :)
> On Jun 22, 2017, at 14:12 , Alexandre Oliva <aoliva@redhat.com> wrote:
>
> On Jun 13, 2017, Olivier Hainque <hainque@adacore.com> wrote:
>
>> 2017-06-13 Olivier Hainque <hainque@adacore.com>
>
>> * Makefile.def (host_modules): Set depgcc to true for libcc1,
>> meaning need of a dep on stage_current if gcc-bootstrap and on
>> maybe-all-gcc otherwise.
>> (dependencies) Remove unconditional dependency on all-gcc.
>
>> * Makefile.tpl ("all" targets): Handle depgcc.
>> * Makefile.in: Regenerate
>
> This looks reasonable to me. libcc1 is weird. It's not a target
> library, it doesn't use the current stage tools for building. It might
> as well not have any deps on the current stage's gcc, if it weren't for
> the fact that it includes headers from the current stage's gcc and links
> with current stage's host libraries, and even its configure reads from
> files created in current stage's gcc configuration.
>
> So, it needs to be built after gcc and its host deps are built, and it
> needs to be configured after gcc is configured. However, it is not part
> of the bootstrap, and we avoid building it more than once even in a
> bootstrap build. That's what makes it special and tricky.
OK, thanks for summarizing the areas of intricacy.
> Your patch takes care of the build dependencies of libcc1, which should
> avoid some scenarios that might lead to concurrency between staged and
> non-staged builds. However, I don't see that it ensures libcc1 will be
> built after GCC in bootstrap scenarios; it might do so under 'make
> bootstrap', but probably not under 'make all-libcc1'. I think we may
> need some additional bootstrap-only explicit dependency for that to work
> properly.
I don't quite understand this: we're using the same prerequisite as target
libraries, e.g. all-target-libstdc++-v3 or all-target-libbacktrace, and I
don't see other deps for these either.
I don't see why the sequencing constraints for libcc1 should be tighter
than those for the target libraries.
I certainly don't grasp all the ramifications of the particularities you
outlined above, though.
> Furthermore, the patch does not take care of the configure dependencies
> of libcc1, so I think there might still be room for trouble, depending
> on what make targets are concurrently requested. I'm not entirely sure
> this is true, though.
To my knowledge, we have never observed a problem in this area, assuming
our understanding of the problems we saw was correct :)
> I'd like to understand better what the concurrency problem is with the
> current build machinery, before we proceed with this change. If you
> manage to trigger the problem again, could you try to further analyze
> build logs to check for e.g. concurrent activation of all-gcc in both
> the top-level Makefile and the recursed-into-for-stage1 Makefile, or
> somesuch? Something else worth considering is what the make targets
> specified in the command line were.
The problems were showing pretty rarely, only on certain hosts, in
certain load conditions. We should still have the logs around and I'll
look into this. They are regular logs, without -d. I can almost for sure
fetch the exact "make" command line involved.
We had performed some analysis of what was happening, to our understanding.
I'll dig this out as well.
> All this said, I do agree that explicit deps on maybe-all-gcc are a
> likely source of trouble;
OK
> AFAICT all other host modules that are to be
> built after gcc depend on some target lib too. Perhaps that brings some
> dep that libcc1 should have too...
This relates to the comments above. I guess I don't understand
what libcc1 might need that target libs wouldn't need.
Olivier
^ permalink raw reply [flat|nested] 16+ messages in thread
* Re: fix libcc1 dependencies in toplevel Makefile
2017-06-26 7:41 ` Olivier Hainque
@ 2017-06-27 16:32 ` Olivier Hainque
2017-06-27 19:53 ` Alexandre Oliva
1 sibling, 0 replies; 16+ messages in thread
From: Olivier Hainque @ 2017-06-27 16:32 UTC (permalink / raw)
To: Alexandre Oliva; +Cc: Olivier Hainque, GCC Patches, Nicolas Roche
Hi Alex,
> On Jun 26, 2017, at 09:16 , Olivier Hainque <hainque@adacore.com> wrote:
>
>> I'd like to understand better what the concurrency problem is with the
>> current build machinery, before we proceed with this change. If you
>> manage to trigger the problem again, could you try to further analyze
>> build logs to check for e.g. concurrent activation of all-gcc in both
>> the top-level Makefile and the recursed-into-for-stage1 Makefile, or
>> somesuch? Something else worth considering is what the make targets
>> specified in the command line were.
>
> The problems were showing pretty rarely, only on certain hosts, in
> certain load conditions. We should still have the logs around and I'll
> look into this. They are regular logs, without -d. I can almost for sure
> fetch the exact "make" command line involved.
This was:
make -j 32 BOOT_LDFLAGS=-Wl,--stack=0x2000000 CC=gcc 'ADAFLAGS=-W -Wall -gnatpg -gnata -gnatws -gnatU -gnatyN' CXXFLAGS=-O2 BOOT_CFLAGS=-O2 CFLAGS=-O2 'LN_S=cp -p' 'BOOT_ADAFLAGS=-gnatpgn -gnatU' 'STAGE1_CFLAGS=-O2 -O0 -g' bootstrap
From the logs of discussions we tracked, the understanding
of the dependency issue was that we *had* (before the patch),
possibilities to have stage_current and maybe-all-gcc targets
built concurrently, via
> configure-target-libquadmath: stage_current
> all-target-libquadmath: configure-target-libquadmath
> maybe-all-target-libquadmath: all-target-libquadmath
> all-target: maybe-all-target-libquadmath
on the one hand,
> all-libcc1: maybe-all-gcc
> maybe-all-libcc1: all-libcc1
> all-host: maybe-all-libcc1
on the other hand.
Does that make sense ?
Thanks for your feedback!
(Note that I'll be away from tomorrow to Monday)
Olivier
^ permalink raw reply [flat|nested] 16+ messages in thread
* Re: fix libcc1 dependencies in toplevel Makefile
2017-06-26 7:41 ` Olivier Hainque
2017-06-27 16:32 ` Olivier Hainque
@ 2017-06-27 19:53 ` Alexandre Oliva
2017-07-03 21:05 ` Olivier Hainque
2018-06-03 19:13 ` Alexandre Oliva
1 sibling, 2 replies; 16+ messages in thread
From: Alexandre Oliva @ 2017-06-27 19:53 UTC (permalink / raw)
To: Olivier Hainque; +Cc: GCC Patches, Nicolas Roche
On Jun 26, 2017, Olivier Hainque <hainque@adacore.com> wrote:
> On Jun 22, 2017, at 14:12 , Alexandre Oliva <aoliva@redhat.com> wrote:
>> Your patch takes care of the build dependencies of libcc1, which should
>> avoid some scenarios that might lead to concurrency between staged and
>> non-staged builds. However, I don't see that it ensures libcc1 will be
>> built after GCC in bootstrap scenarios; it might do so under 'make
>> bootstrap', but probably not under 'make all-libcc1'. I think we may
>> need some additional bootstrap-only explicit dependency for that to work
>> properly.
> I don't quite understand this: we're using the same prerequisite as target
> libraries, e.g. all-target-libstdc++-v3 or all-target-libbacktrace
Not quite. Target libraries have deps on e.g. target-libgcc, look below
the following comments in Makefile.in:
# Dependencies for target modules on other target modules are
# described by lang_env_dependencies; the defaults apply to anything
# not mentioned there.
plus, maybe-configure*-target-libgcc depend on maybe-all*-gcc (see above
those comments). The precise deps vary per bootstrap level, or
non-bootstrap.
But after the proposed patch there are no such deps for libcc1 in the
bootstrap case, so we might very well attempt to build libcc1 in
parallel with gcc. We shouldn't do that.
But then, it all works out because we only build all-host after
bootstrap is complete; all-stage* doesn't depend on libcc1 at all.
> and I don't see other deps for these either.
> I don't see why the sequencing constraints for libcc1 should be tighter
> than those for the target libraries.
It was not about making them tighter, just about making them present.
Right now, in the bootstrap case, they're entirely implicit, by the fact
that we complete bootstrap first, then proceed to build all-host
all-target. This deserves at least a comment somewhere, perhaps next to
libcc1 in Makefile.def, or next to depgcc.
Something to the effect that depgcc brings in a necessary dependency
that is implicit in the bootstrap case by the fact that we firt
bootstrap, then proceed to build all-host all-target.
Perhaps instead of depgcc=true, we should have a new flag in
dependencies that indicates the dep should be non-bootstrap only. Or
maybe the code that implements dependencies could figure it out on its
own, when it sees a dep between a non-bootstrap module and a bootstrap
one, and generate the deps within @if gcc-no-bootstrap/@endif.
I think this would get us the behavior we want in both bootstrap and
non-bootstrap cases, including the libcc1 configure dep that, as it is,
might cause GCC to be configured in parallel given the right (or rather
wrong) conditions.
On Jun 27, 2017, Olivier Hainque <hainque@adacore.com> wrote:
>> On Jun 26, 2017, at 09:16 , Olivier Hainque <hainque@adacore.com> wrote:
> make -j 32 BOOT_LDFLAGS=-Wl,--stack=0x2000000 CC=gcc 'ADAFLAGS=-W
> -Wall -gnatpg -gnata -gnatws -gnatU -gnatyN' CXXFLAGS=-O2
> BOOT_CFLAGS=-O2 CFLAGS=-O2 'LN_S=cp -p' 'BOOT_ADAFLAGS=-gnatpgn
> -gnatU' 'STAGE1_CFLAGS=-O2 -O0 -g' bootstrap
Thanks. Given that 'bootstrap' is the only requested make target, we
can be assured that something iffy took place. What I can't figure out
is how we even tried to build libcc1 during bootstrap, under that
configuration, because the current Makefile would only do that with
all-host, after bootstrap is complete.
> From the logs of discussions we tracked, the understanding
> of the dependency issue was that we *had* (before the patch),
> possibilities to have stage_current and maybe-all-gcc targets
> built concurrently, via
>> configure-target-libquadmath: stage_current
>> all-target-libquadmath: configure-target-libquadmath
>> maybe-all-target-libquadmath: all-target-libquadmath
>> all-target: maybe-all-target-libquadmath
> on the one hand,
>> all-libcc1: maybe-all-gcc
>> maybe-all-libcc1: all-libcc1
>> all-host: maybe-all-libcc1
> on the other hand.
> Does that make sense ?
Yeah. Running all-gcc While unstage does its directory-moving dance
can't be good. We can't have them both.
So, would you like to give the automatic figuring out of
non-bootstrap-on-bootstrap deps in dependencies, and guard them between
@if gcc-no-bootstrap and @endif (then both configure- and all- libcc1
deps would be adjusted this way)? (I'm not saying it should be trivial
to do or anything like that; I'm not all that familiar with it and I'd
have to figure it out myself if I were to do it, but I think that would
be better than adding yet another means of introducing dependencies,
while leaving another risky dep in place)
Thanks,
--
Alexandre Oliva, freedom fighter http://FSFLA.org/~lxoliva/
You must be the change you wish to see in the world. -- Gandhi
Be Free! -- http://FSFLA.org/ FSF Latin America board member
Free Software Evangelist|Red Hat Brasil GNU Toolchain Engineer
^ permalink raw reply [flat|nested] 16+ messages in thread
* Re: fix libcc1 dependencies in toplevel Makefile
2017-06-27 19:53 ` Alexandre Oliva
@ 2017-07-03 21:05 ` Olivier Hainque
2018-06-03 19:13 ` Alexandre Oliva
1 sibling, 0 replies; 16+ messages in thread
From: Olivier Hainque @ 2017-07-03 21:05 UTC (permalink / raw)
To: Alexandre Oliva; +Cc: GCC Patches, Nicolas Roche
Hi Alex,
(Back from a few days away)
> On 27 Jun 2017, at 21:50, Alexandre Oliva <aoliva@redhat.com> wrote:
>
>> I don't quite understand this: we're using the same prerequisite as target
>> libraries, e.g. all-target-libstdc++-v3 or all-target-libbacktrace
>
> Not quite. Target libraries have deps on e.g. target-libgcc, look below
> the following comments in Makefile.in:
>
> # Dependencies for target modules on other target modules are
> # described by lang_env_dependencies; the defaults apply to anything
> # not mentioned there.
>
> plus, maybe-configure*-target-libgcc depend on maybe-all*-gcc (see above
> those comments). The precise deps vary per bootstrap level, or
> non-bootstrap.
>
> But after the proposed patch there are no such deps for libcc1 in the
> bootstrap case, so we might very well attempt to build libcc1 in
> parallel with gcc. We shouldn't do that.
>
> But then, it all works out because we only build all-host after
> bootstrap is complete; all-stage* doesn't depend on libcc1 at all.
I think I see.
[...]
> So, would you like to give the automatic figuring out of
> non-bootstrap-on-bootstrap deps in dependencies, and guard them between
> @if gcc-no-bootstrap and @endif (then both configure- and all- libcc1
> deps would be adjusted this way)? (I'm not saying it should be trivial
> to do or anything like that; I'm not all that familiar with it and I'd
> have to figure it out myself if I were to do it, but I think that would
> be better than adding yet another means of introducing dependencies,
> while leaving another risky dep in place)
I'm willing to study this more and see what can be done
to improve things further. There are still a few details I don't
quite grasp so it'll just take a bit of time.
Thanks a lot for the additional set of extensive comments!
With Kind Regards,
Olivier
^ permalink raw reply [flat|nested] 16+ messages in thread
* Re: fix libcc1 dependencies in toplevel Makefile
2017-06-27 19:53 ` Alexandre Oliva
2017-07-03 21:05 ` Olivier Hainque
@ 2018-06-03 19:13 ` Alexandre Oliva
2018-06-12 2:50 ` Alexandre Oliva
1 sibling, 1 reply; 16+ messages in thread
From: Alexandre Oliva @ 2018-06-03 19:13 UTC (permalink / raw)
To: Olivier Hainque; +Cc: GCC Patches, Nicolas Roche
On Jun 27, 2017, Alexandre Oliva <aoliva@redhat.com> wrote:
> On Jun 26, 2017, Olivier Hainque <hainque@adacore.com> wrote:
>> On Jun 22, 2017, at 14:12 , Alexandre Oliva <aoliva@redhat.com> wrote:
>>> Your patch takes care of the build dependencies of libcc1, which should
>>> avoid some scenarios that might lead to concurrency between staged and
>>> non-staged builds. However, I don't see that it ensures libcc1 will be
>>> built after GCC in bootstrap scenarios; it might do so under 'make
>>> bootstrap', but probably not under 'make all-libcc1'. I think we may
>>> need some additional bootstrap-only explicit dependency for that to work
>>> properly.
> On Jun 27, 2017, Olivier Hainque <hainque@adacore.com> wrote:
>>> On Jun 26, 2017, at 09:16 , Olivier Hainque <hainque@adacore.com> wrote:
>> make -j 32 BOOT_LDFLAGS=-Wl,--stack=0x2000000 CC=gcc 'ADAFLAGS=-W
>> -Wall -gnatpg -gnata -gnatws -gnatU -gnatyN' CXXFLAGS=-O2
>> BOOT_CFLAGS=-O2 CFLAGS=-O2 'LN_S=cp -p' 'BOOT_ADAFLAGS=-gnatpgn
>> -gnatU' 'STAGE1_CFLAGS=-O2 -O0 -g' bootstrap
> Thanks. Given that 'bootstrap' is the only requested make target, we
> can be assured that something iffy took place. What I can't figure out
> is how we even tried to build libcc1 during bootstrap, under that
> configuration, because the current Makefile would only do that with
> all-host, after bootstrap is complete.
I have extensively studied the dependencies, and I still don't see how
all-libcc1, that is only activated as a target during the post-bootstrap
all-host build, might have been activated concurrently with
staging/unstaging. By the time we get to all-host, we've sequentially
completed bootstrap, compare, and unstage.
The only possibilities I see of something going wrong as described is a
parallel build that has bootstrap and postbootstrap targets in the
command line, or some patch that changes the dependencies so that such
targets are considered in parallel.
I could definitely use the build logs from back then, if still
available, to try to make sense of the problem.
> Yeah. Running all-gcc While unstage does its directory-moving dance
> can't be good. We can't have them both.
But then, again, I don't see anything that would ever attempt to build
these in parallel.
We do have other non-bootstrap targets that depend on bootstrap targets,
and that would presumably trigger the same problem, if there is one
indeed.
> So, would you like to give the automatic figuring out of
> non-bootstrap-on-bootstrap deps in dependencies, and guard them between
> @if gcc-no-bootstrap and @endif (then both configure- and all- libcc1
> deps would be adjusted this way)?
The patch below introduces this, but... without understanding how the
problem comes about, it's hard to tell whether it would actually fix
anything. Really, I don't really think it would fix anything: if there
is something that activates all-libcc1 (or any other non-bootstrap
target) in parallel with bootstrap, we will likely get parallel build
errors, with or without the patch. The patch might make such failures
more visible, which might be a good thing, but I'm not sure it's worth
the trouble: it will annoy maintainers of other tools who use uberbaum
trees, because if they don't --disable-bootstrap at configure time,
their tools (e.g. gdb) will build all of GCC stage1 before starting the
GDB build.
It is a bit fragile, too. For example, it could be improved (and
perhaps actually reduce the likelihood of triggering parallel builds of
postbootstrap and bootstrap targets) by first detecting all
postbootstrap targets, and then mapping *all* of their dependencies on
non-postbootstrap targets to stage_last. As it is, there is a
possibility of direct dependencies of postbootstrap on prebootstrap
targets, which makes room for the prebootstrap targets to be activated
in parallel with (rather than just as part of) the bootstrap build.
It wouldn't be hard to do that, and I'd get to it if I thought it would
actually improve something, which would require a better understanding
of the observed failures. As it is, I'm posting this just for the
record, because I don't think it's really of any use :-(
The sad news is that there really isn't any way (AFAICT) to catch
situations that are known to get us in trouble, namely, when parallel
builds are started with both bootstrap and postbootstrap targets. I
think we'd need all of the bootstrap logic to be encoded in a
single-level Makefile (i.e., not recursive makes) to avoid problems with
such builds, and that in turn would require postbootstrap targets to
depend on the last stage. That would require a lot of Makefile
reworking, for very little benefit.
Introduce postbootstrap Makefile targets
This patch turns dependencies of non-bootstrap targets on bootstrap
targets for bootstrap builds into dependencies on stage_last.
for ChangeLog
* Makefile.tpl (dep-kind): Return postbootstrap in some cases.
(make-postboot-dep, postboot-targets): New.
(dependencies): Do not output postbootstrap dependencies at
first. Output them changed to depend on stage_last within
gcc-bootstrap, and the original deps within gcc-no-bootstrap.
* Makefile.in: Rebuilt.
---
Makefile.in | 189 ++++++++++++++++++----------------------------------------
Makefile.tpl | 52 +++++++++++++---
2 files changed, 101 insertions(+), 140 deletions(-)
diff --git a/Makefile.in b/Makefile.in
index 2bf83b722651..2ac62ca7ca45 100644
--- a/Makefile.in
+++ b/Makefile.in
@@ -56867,7 +56867,6 @@ all-build-m4: maybe-all-build-texinfo
all-build-fixincludes: maybe-all-build-libiberty
all-build-libcpp: maybe-all-build-libiberty
configure-gcc: maybe-configure-intl
-
configure-stage1-gcc: maybe-configure-stage1-intl
configure-stage2-gcc: maybe-configure-stage2-intl
configure-stage3-gcc: maybe-configure-stage3-intl
@@ -56878,7 +56877,6 @@ configure-stagefeedback-gcc: maybe-configure-stagefeedback-intl
configure-stageautoprofile-gcc: maybe-configure-stageautoprofile-intl
configure-stageautofeedback-gcc: maybe-configure-stageautofeedback-intl
configure-gcc: maybe-all-gmp
-
configure-stage1-gcc: maybe-all-stage1-gmp
configure-stage2-gcc: maybe-all-stage2-gmp
configure-stage3-gcc: maybe-all-stage3-gmp
@@ -56889,7 +56887,6 @@ configure-stagefeedback-gcc: maybe-all-stagefeedback-gmp
configure-stageautoprofile-gcc: maybe-all-stageautoprofile-gmp
configure-stageautofeedback-gcc: maybe-all-stageautofeedback-gmp
configure-gcc: maybe-all-mpfr
-
configure-stage1-gcc: maybe-all-stage1-mpfr
configure-stage2-gcc: maybe-all-stage2-mpfr
configure-stage3-gcc: maybe-all-stage3-mpfr
@@ -56900,7 +56897,6 @@ configure-stagefeedback-gcc: maybe-all-stagefeedback-mpfr
configure-stageautoprofile-gcc: maybe-all-stageautoprofile-mpfr
configure-stageautofeedback-gcc: maybe-all-stageautofeedback-mpfr
configure-gcc: maybe-all-mpc
-
configure-stage1-gcc: maybe-all-stage1-mpc
configure-stage2-gcc: maybe-all-stage2-mpc
configure-stage3-gcc: maybe-all-stage3-mpc
@@ -56911,7 +56907,6 @@ configure-stagefeedback-gcc: maybe-all-stagefeedback-mpc
configure-stageautoprofile-gcc: maybe-all-stageautoprofile-mpc
configure-stageautofeedback-gcc: maybe-all-stageautofeedback-mpc
configure-gcc: maybe-all-isl
-
configure-stage1-gcc: maybe-all-stage1-isl
configure-stage2-gcc: maybe-all-stage2-isl
configure-stage3-gcc: maybe-all-stage3-isl
@@ -56922,7 +56917,6 @@ configure-stagefeedback-gcc: maybe-all-stagefeedback-isl
configure-stageautoprofile-gcc: maybe-all-stageautoprofile-isl
configure-stageautofeedback-gcc: maybe-all-stageautofeedback-isl
configure-gcc: maybe-all-lto-plugin
-
configure-stage1-gcc: maybe-all-stage1-lto-plugin
configure-stage2-gcc: maybe-all-stage2-lto-plugin
configure-stage3-gcc: maybe-all-stage3-lto-plugin
@@ -56933,7 +56927,6 @@ configure-stagefeedback-gcc: maybe-all-stagefeedback-lto-plugin
configure-stageautoprofile-gcc: maybe-all-stageautoprofile-lto-plugin
configure-stageautofeedback-gcc: maybe-all-stageautofeedback-lto-plugin
configure-gcc: maybe-all-binutils
-
configure-stage1-gcc: maybe-all-stage1-binutils
configure-stage2-gcc: maybe-all-stage2-binutils
configure-stage3-gcc: maybe-all-stage3-binutils
@@ -56944,7 +56937,6 @@ configure-stagefeedback-gcc: maybe-all-stagefeedback-binutils
configure-stageautoprofile-gcc: maybe-all-stageautoprofile-binutils
configure-stageautofeedback-gcc: maybe-all-stageautofeedback-binutils
configure-gcc: maybe-all-gas
-
configure-stage1-gcc: maybe-all-stage1-gas
configure-stage2-gcc: maybe-all-stage2-gas
configure-stage3-gcc: maybe-all-stage3-gas
@@ -56955,7 +56947,6 @@ configure-stagefeedback-gcc: maybe-all-stagefeedback-gas
configure-stageautoprofile-gcc: maybe-all-stageautoprofile-gas
configure-stageautofeedback-gcc: maybe-all-stageautofeedback-gas
configure-gcc: maybe-all-ld
-
configure-stage1-gcc: maybe-all-stage1-ld
configure-stage2-gcc: maybe-all-stage2-ld
configure-stage3-gcc: maybe-all-stage3-ld
@@ -56966,7 +56957,6 @@ configure-stagefeedback-gcc: maybe-all-stagefeedback-ld
configure-stageautoprofile-gcc: maybe-all-stageautoprofile-ld
configure-stageautofeedback-gcc: maybe-all-stageautofeedback-ld
configure-gcc: maybe-all-gold
-
configure-stage1-gcc: maybe-all-stage1-gold
configure-stage2-gcc: maybe-all-stage2-gold
configure-stage3-gcc: maybe-all-stage3-gold
@@ -56977,7 +56967,6 @@ configure-stagefeedback-gcc: maybe-all-stagefeedback-gold
configure-stageautoprofile-gcc: maybe-all-stageautoprofile-gold
configure-stageautofeedback-gcc: maybe-all-stageautofeedback-gold
configure-gcc: maybe-all-libelf
-
configure-stage1-gcc: maybe-all-stage1-libelf
configure-stage2-gcc: maybe-all-stage2-libelf
configure-stage3-gcc: maybe-all-stage3-libelf
@@ -56988,7 +56977,6 @@ configure-stagefeedback-gcc: maybe-all-stagefeedback-libelf
configure-stageautoprofile-gcc: maybe-all-stageautoprofile-libelf
configure-stageautofeedback-gcc: maybe-all-stageautofeedback-libelf
configure-gcc: maybe-all-libiconv
-
configure-stage1-gcc: maybe-all-stage1-libiconv
configure-stage2-gcc: maybe-all-stage2-libiconv
configure-stage3-gcc: maybe-all-stage3-libiconv
@@ -56999,7 +56987,6 @@ configure-stagefeedback-gcc: maybe-all-stagefeedback-libiconv
configure-stageautoprofile-gcc: maybe-all-stageautoprofile-libiconv
configure-stageautofeedback-gcc: maybe-all-stageautofeedback-libiconv
all-gcc: all-libiberty
-
all-stage1-gcc: all-stage1-libiberty
all-stage2-gcc: all-stage2-libiberty
all-stage3-gcc: all-stage3-libiberty
@@ -57010,7 +56997,6 @@ all-stagefeedback-gcc: all-stagefeedback-libiberty
all-stageautoprofile-gcc: all-stageautoprofile-libiberty
all-stageautofeedback-gcc: all-stageautofeedback-libiberty
all-gcc: maybe-all-intl
-
all-stage1-gcc: maybe-all-stage1-intl
all-stage2-gcc: maybe-all-stage2-intl
all-stage3-gcc: maybe-all-stage3-intl
@@ -57021,7 +57007,6 @@ all-stagefeedback-gcc: maybe-all-stagefeedback-intl
all-stageautoprofile-gcc: maybe-all-stageautoprofile-intl
all-stageautofeedback-gcc: maybe-all-stageautofeedback-intl
all-gcc: maybe-all-mpfr
-
all-stage1-gcc: maybe-all-stage1-mpfr
all-stage2-gcc: maybe-all-stage2-mpfr
all-stage3-gcc: maybe-all-stage3-mpfr
@@ -57032,7 +57017,6 @@ all-stagefeedback-gcc: maybe-all-stagefeedback-mpfr
all-stageautoprofile-gcc: maybe-all-stageautoprofile-mpfr
all-stageautofeedback-gcc: maybe-all-stageautofeedback-mpfr
all-gcc: maybe-all-mpc
-
all-stage1-gcc: maybe-all-stage1-mpc
all-stage2-gcc: maybe-all-stage2-mpc
all-stage3-gcc: maybe-all-stage3-mpc
@@ -57043,7 +57027,6 @@ all-stagefeedback-gcc: maybe-all-stagefeedback-mpc
all-stageautoprofile-gcc: maybe-all-stageautoprofile-mpc
all-stageautofeedback-gcc: maybe-all-stageautofeedback-mpc
all-gcc: maybe-all-isl
-
all-stage1-gcc: maybe-all-stage1-isl
all-stage2-gcc: maybe-all-stage2-isl
all-stage3-gcc: maybe-all-stage3-isl
@@ -57054,7 +57037,6 @@ all-stagefeedback-gcc: maybe-all-stagefeedback-isl
all-stageautoprofile-gcc: maybe-all-stageautoprofile-isl
all-stageautofeedback-gcc: maybe-all-stageautofeedback-isl
all-gcc: maybe-all-build-texinfo
-
all-stage1-gcc: maybe-all-build-texinfo
all-stage2-gcc: maybe-all-build-texinfo
all-stage3-gcc: maybe-all-build-texinfo
@@ -57065,7 +57047,6 @@ all-stagefeedback-gcc: maybe-all-build-texinfo
all-stageautoprofile-gcc: maybe-all-build-texinfo
all-stageautofeedback-gcc: maybe-all-build-texinfo
all-gcc: maybe-all-build-bison
-
all-stage1-gcc: maybe-all-build-bison
all-stage2-gcc: maybe-all-build-bison
all-stage3-gcc: maybe-all-build-bison
@@ -57076,7 +57057,6 @@ all-stagefeedback-gcc: maybe-all-build-bison
all-stageautoprofile-gcc: maybe-all-build-bison
all-stageautofeedback-gcc: maybe-all-build-bison
all-gcc: maybe-all-build-flex
-
all-stage1-gcc: maybe-all-build-flex
all-stage2-gcc: maybe-all-build-flex
all-stage3-gcc: maybe-all-build-flex
@@ -57087,7 +57067,6 @@ all-stagefeedback-gcc: maybe-all-build-flex
all-stageautoprofile-gcc: maybe-all-build-flex
all-stageautofeedback-gcc: maybe-all-build-flex
all-gcc: maybe-all-build-libiberty
-
all-stage1-gcc: maybe-all-build-libiberty
all-stage2-gcc: maybe-all-build-libiberty
all-stage3-gcc: maybe-all-build-libiberty
@@ -57098,7 +57077,6 @@ all-stagefeedback-gcc: maybe-all-build-libiberty
all-stageautoprofile-gcc: maybe-all-build-libiberty
all-stageautofeedback-gcc: maybe-all-build-libiberty
all-gcc: maybe-all-build-fixincludes
-
all-stage1-gcc: maybe-all-build-fixincludes
all-stage2-gcc: maybe-all-build-fixincludes
all-stage3-gcc: maybe-all-build-fixincludes
@@ -57109,7 +57087,6 @@ all-stagefeedback-gcc: maybe-all-build-fixincludes
all-stageautoprofile-gcc: maybe-all-build-fixincludes
all-stageautofeedback-gcc: maybe-all-build-fixincludes
all-gcc: maybe-all-build-libcpp
-
all-stage1-gcc: maybe-all-build-libcpp
all-stage2-gcc: maybe-all-build-libcpp
all-stage3-gcc: maybe-all-build-libcpp
@@ -57120,7 +57097,6 @@ all-stagefeedback-gcc: maybe-all-build-libcpp
all-stageautoprofile-gcc: maybe-all-build-libcpp
all-stageautofeedback-gcc: maybe-all-build-libcpp
all-gcc: maybe-all-zlib
-
all-stage1-gcc: maybe-all-stage1-zlib
all-stage2-gcc: maybe-all-stage2-zlib
all-stage3-gcc: maybe-all-stage3-zlib
@@ -57131,7 +57107,6 @@ all-stagefeedback-gcc: maybe-all-stagefeedback-zlib
all-stageautoprofile-gcc: maybe-all-stageautoprofile-zlib
all-stageautofeedback-gcc: maybe-all-stageautofeedback-zlib
all-gcc: all-libbacktrace
-
all-stage1-gcc: all-stage1-libbacktrace
all-stage2-gcc: all-stage2-libbacktrace
all-stage3-gcc: all-stage3-libbacktrace
@@ -57142,7 +57117,6 @@ all-stagefeedback-gcc: all-stagefeedback-libbacktrace
all-stageautoprofile-gcc: all-stageautoprofile-libbacktrace
all-stageautofeedback-gcc: all-stageautofeedback-libbacktrace
all-gcc: all-libcpp
-
all-stage1-gcc: all-stage1-libcpp
all-stage2-gcc: all-stage2-libcpp
all-stage3-gcc: all-stage3-libcpp
@@ -57153,7 +57127,6 @@ all-stagefeedback-gcc: all-stagefeedback-libcpp
all-stageautoprofile-gcc: all-stageautoprofile-libcpp
all-stageautofeedback-gcc: all-stageautofeedback-libcpp
all-gcc: all-libdecnumber
-
all-stage1-gcc: all-stage1-libdecnumber
all-stage2-gcc: all-stage2-libdecnumber
all-stage3-gcc: all-stage3-libdecnumber
@@ -57164,7 +57137,6 @@ all-stagefeedback-gcc: all-stagefeedback-libdecnumber
all-stageautoprofile-gcc: all-stageautoprofile-libdecnumber
all-stageautofeedback-gcc: all-stageautofeedback-libdecnumber
all-gcc: maybe-all-libiberty
-
all-stage1-gcc: maybe-all-stage1-libiberty
all-stage2-gcc: maybe-all-stage2-libiberty
all-stage3-gcc: maybe-all-stage3-libiberty
@@ -57175,7 +57147,6 @@ all-stagefeedback-gcc: maybe-all-stagefeedback-libiberty
all-stageautoprofile-gcc: maybe-all-stageautoprofile-libiberty
all-stageautofeedback-gcc: maybe-all-stageautofeedback-libiberty
all-gcc: maybe-all-fixincludes
-
all-stage1-gcc: maybe-all-stage1-fixincludes
all-stage2-gcc: maybe-all-stage2-fixincludes
all-stage3-gcc: maybe-all-stage3-fixincludes
@@ -57186,7 +57157,6 @@ all-stagefeedback-gcc: maybe-all-stagefeedback-fixincludes
all-stageautoprofile-gcc: maybe-all-stageautoprofile-fixincludes
all-stageautofeedback-gcc: maybe-all-stageautofeedback-fixincludes
all-gcc: maybe-all-lto-plugin
-
all-stage1-gcc: maybe-all-stage1-lto-plugin
all-stage2-gcc: maybe-all-stage2-lto-plugin
all-stage3-gcc: maybe-all-stage3-lto-plugin
@@ -57197,7 +57167,6 @@ all-stagefeedback-gcc: maybe-all-stagefeedback-lto-plugin
all-stageautoprofile-gcc: maybe-all-stageautoprofile-lto-plugin
all-stageautofeedback-gcc: maybe-all-stageautofeedback-lto-plugin
all-gcc: maybe-all-libiconv
-
all-stage1-gcc: maybe-all-stage1-libiconv
all-stage2-gcc: maybe-all-stage2-libiconv
all-stage3-gcc: maybe-all-stage3-libiconv
@@ -57208,7 +57177,6 @@ all-stagefeedback-gcc: maybe-all-stagefeedback-libiconv
all-stageautoprofile-gcc: maybe-all-stageautoprofile-libiconv
all-stageautofeedback-gcc: maybe-all-stageautofeedback-libiconv
info-gcc: maybe-all-build-libiberty
-
info-stage1-gcc: maybe-all-build-libiberty
info-stage2-gcc: maybe-all-build-libiberty
info-stage3-gcc: maybe-all-build-libiberty
@@ -57219,7 +57187,6 @@ info-stagefeedback-gcc: maybe-all-build-libiberty
info-stageautoprofile-gcc: maybe-all-build-libiberty
info-stageautofeedback-gcc: maybe-all-build-libiberty
dvi-gcc: maybe-all-build-libiberty
-
dvi-stage1-gcc: maybe-all-build-libiberty
dvi-stage2-gcc: maybe-all-build-libiberty
dvi-stage3-gcc: maybe-all-build-libiberty
@@ -57230,7 +57197,6 @@ dvi-stagefeedback-gcc: maybe-all-build-libiberty
dvi-stageautoprofile-gcc: maybe-all-build-libiberty
dvi-stageautofeedback-gcc: maybe-all-build-libiberty
pdf-gcc: maybe-all-build-libiberty
-
pdf-stage1-gcc: maybe-all-build-libiberty
pdf-stage2-gcc: maybe-all-build-libiberty
pdf-stage3-gcc: maybe-all-build-libiberty
@@ -57241,7 +57207,6 @@ pdf-stagefeedback-gcc: maybe-all-build-libiberty
pdf-stageautoprofile-gcc: maybe-all-build-libiberty
pdf-stageautofeedback-gcc: maybe-all-build-libiberty
html-gcc: maybe-all-build-libiberty
-
html-stage1-gcc: maybe-all-build-libiberty
html-stage2-gcc: maybe-all-build-libiberty
html-stage3-gcc: maybe-all-build-libiberty
@@ -57256,7 +57221,6 @@ install-gcc: maybe-install-lto-plugin
install-strip-gcc: maybe-install-strip-fixincludes
install-strip-gcc: maybe-install-strip-lto-plugin
configure-libcpp: configure-libiberty
-
configure-stage1-libcpp: configure-stage1-libiberty
configure-stage2-libcpp: configure-stage2-libiberty
configure-stage3-libcpp: configure-stage3-libiberty
@@ -57267,7 +57231,6 @@ configure-stagefeedback-libcpp: configure-stagefeedback-libiberty
configure-stageautoprofile-libcpp: configure-stageautoprofile-libiberty
configure-stageautofeedback-libcpp: configure-stageautofeedback-libiberty
configure-libcpp: maybe-configure-intl
-
configure-stage1-libcpp: maybe-configure-stage1-intl
configure-stage2-libcpp: maybe-configure-stage2-intl
configure-stage3-libcpp: maybe-configure-stage3-intl
@@ -57278,7 +57241,6 @@ configure-stagefeedback-libcpp: maybe-configure-stagefeedback-intl
configure-stageautoprofile-libcpp: maybe-configure-stageautoprofile-intl
configure-stageautofeedback-libcpp: maybe-configure-stageautofeedback-intl
configure-libcpp: maybe-all-libiconv
-
configure-stage1-libcpp: maybe-all-stage1-libiconv
configure-stage2-libcpp: maybe-all-stage2-libiconv
configure-stage3-libcpp: maybe-all-stage3-libiconv
@@ -57289,7 +57251,6 @@ configure-stagefeedback-libcpp: maybe-all-stagefeedback-libiconv
configure-stageautoprofile-libcpp: maybe-all-stageautoprofile-libiconv
configure-stageautofeedback-libcpp: maybe-all-stageautofeedback-libiconv
all-libcpp: all-libiberty
-
all-stage1-libcpp: all-stage1-libiberty
all-stage2-libcpp: all-stage2-libiberty
all-stage3-libcpp: all-stage3-libiberty
@@ -57300,7 +57261,6 @@ all-stagefeedback-libcpp: all-stagefeedback-libiberty
all-stageautoprofile-libcpp: all-stageautoprofile-libiberty
all-stageautofeedback-libcpp: all-stageautofeedback-libiberty
all-libcpp: maybe-all-intl
-
all-stage1-libcpp: maybe-all-stage1-intl
all-stage2-libcpp: maybe-all-stage2-intl
all-stage3-libcpp: maybe-all-stage3-intl
@@ -57311,7 +57271,6 @@ all-stagefeedback-libcpp: maybe-all-stagefeedback-intl
all-stageautoprofile-libcpp: maybe-all-stageautoprofile-intl
all-stageautofeedback-libcpp: maybe-all-stageautofeedback-intl
all-libcpp: maybe-all-libiconv
-
all-stage1-libcpp: maybe-all-stage1-libiconv
all-stage2-libcpp: maybe-all-stage2-libiconv
all-stage3-libcpp: maybe-all-stage3-libiconv
@@ -57322,7 +57281,6 @@ all-stagefeedback-libcpp: maybe-all-stagefeedback-libiconv
all-stageautoprofile-libcpp: maybe-all-stageautoprofile-libiconv
all-stageautofeedback-libcpp: maybe-all-stageautofeedback-libiconv
all-fixincludes: maybe-all-libiberty
-
all-stage1-fixincludes: maybe-all-stage1-libiberty
all-stage2-fixincludes: maybe-all-stage2-libiberty
all-stage3-fixincludes: maybe-all-stage3-libiberty
@@ -57333,9 +57291,7 @@ all-stagefeedback-fixincludes: maybe-all-stagefeedback-libiberty
all-stageautoprofile-fixincludes: maybe-all-stageautoprofile-libiberty
all-stageautofeedback-fixincludes: maybe-all-stageautofeedback-libiberty
all-gnattools: maybe-all-target-libada
-all-gnattools: maybe-all-target-libstdc++-v3
all-lto-plugin: maybe-all-libiberty
-
all-stage1-lto-plugin: maybe-all-stage1-libiberty
all-stage2-lto-plugin: maybe-all-stage2-libiberty
all-stage3-lto-plugin: maybe-all-stage3-libiberty
@@ -57346,7 +57302,6 @@ all-stagefeedback-lto-plugin: maybe-all-stagefeedback-libiberty
all-stageautoprofile-lto-plugin: maybe-all-stageautoprofile-libiberty
all-stageautofeedback-lto-plugin: maybe-all-stageautofeedback-libiberty
all-lto-plugin: maybe-all-libiberty-linker-plugin
-
all-stage1-lto-plugin: maybe-all-stage1-libiberty-linker-plugin
all-stage2-lto-plugin: maybe-all-stage2-libiberty-linker-plugin
all-stage3-lto-plugin: maybe-all-stage3-libiberty-linker-plugin
@@ -57356,12 +57311,8 @@ all-stagetrain-lto-plugin: maybe-all-stagetrain-libiberty-linker-plugin
all-stagefeedback-lto-plugin: maybe-all-stagefeedback-libiberty-linker-plugin
all-stageautoprofile-lto-plugin: maybe-all-stageautoprofile-libiberty-linker-plugin
all-stageautofeedback-lto-plugin: maybe-all-stageautofeedback-libiberty-linker-plugin
-configure-libcc1: maybe-configure-gcc
-all-libcc1: maybe-all-gcc
all-gotools: maybe-all-target-libgo
-all-utils: maybe-all-libiberty
configure-intl: maybe-all-libiconv
-
configure-stage1-intl: maybe-all-stage1-libiconv
configure-stage2-intl: maybe-all-stage2-libiconv
configure-stage3-intl: maybe-all-stage3-libiconv
@@ -57372,7 +57323,6 @@ configure-stagefeedback-intl: maybe-all-stagefeedback-libiconv
configure-stageautoprofile-intl: maybe-all-stageautoprofile-libiconv
configure-stageautofeedback-intl: maybe-all-stageautofeedback-libiconv
configure-mpfr: maybe-all-gmp
-
configure-stage1-mpfr: maybe-all-stage1-gmp
configure-stage2-mpfr: maybe-all-stage2-gmp
configure-stage3-mpfr: maybe-all-stage3-gmp
@@ -57383,7 +57333,6 @@ configure-stagefeedback-mpfr: maybe-all-stagefeedback-gmp
configure-stageautoprofile-mpfr: maybe-all-stageautoprofile-gmp
configure-stageautofeedback-mpfr: maybe-all-stageautofeedback-gmp
configure-mpc: maybe-all-mpfr
-
configure-stage1-mpc: maybe-all-stage1-mpfr
configure-stage2-mpc: maybe-all-stage2-mpfr
configure-stage3-mpc: maybe-all-stage3-mpfr
@@ -57394,7 +57343,6 @@ configure-stagefeedback-mpc: maybe-all-stagefeedback-mpfr
configure-stageautoprofile-mpc: maybe-all-stageautoprofile-mpfr
configure-stageautofeedback-mpc: maybe-all-stageautofeedback-mpfr
configure-isl: maybe-all-gmp
-
configure-stage1-isl: maybe-all-stage1-gmp
configure-stage2-isl: maybe-all-stage2-gmp
configure-stage3-isl: maybe-all-stage3-gmp
@@ -57405,7 +57353,6 @@ configure-stagefeedback-isl: maybe-all-stagefeedback-gmp
configure-stageautoprofile-isl: maybe-all-stageautoprofile-gmp
configure-stageautofeedback-isl: maybe-all-stageautofeedback-gmp
all-intl: maybe-all-libiconv
-
all-stage1-intl: maybe-all-stage1-libiconv
all-stage2-intl: maybe-all-stage2-libiconv
all-stage3-intl: maybe-all-stage3-libiconv
@@ -57415,17 +57362,10 @@ all-stagetrain-intl: maybe-all-stagetrain-libiconv
all-stagefeedback-intl: maybe-all-stagefeedback-libiconv
all-stageautoprofile-intl: maybe-all-stageautoprofile-libiconv
all-stageautofeedback-intl: maybe-all-stageautofeedback-libiconv
-configure-gdb: maybe-all-intl
configure-gdb: maybe-configure-sim
-configure-gdb: maybe-all-bfd
-configure-gdb: maybe-all-libiconv
-all-gdb: maybe-all-libiberty
-all-gdb: maybe-all-libiconv
-all-gdb: maybe-all-opcodes
all-gdb: maybe-all-readline
all-gdb: maybe-all-build-bison
all-gdb: maybe-all-sim
-all-gdb: maybe-all-libdecnumber
all-gdb: maybe-all-libtermcap
configure-libgui: maybe-configure-tcl
configure-libgui: maybe-configure-tk
@@ -57433,7 +57373,6 @@ all-libgui: maybe-all-tcl
all-libgui: maybe-all-tk
all-libgui: maybe-all-itcl
configure-bfd: configure-libiberty
-
configure-stage1-bfd: configure-stage1-libiberty
configure-stage2-bfd: configure-stage2-libiberty
configure-stage3-bfd: configure-stage3-libiberty
@@ -57444,7 +57383,6 @@ configure-stagefeedback-bfd: configure-stagefeedback-libiberty
configure-stageautoprofile-bfd: configure-stageautoprofile-libiberty
configure-stageautofeedback-bfd: configure-stageautofeedback-libiberty
configure-bfd: maybe-configure-intl
-
configure-stage1-bfd: maybe-configure-stage1-intl
configure-stage2-bfd: maybe-configure-stage2-intl
configure-stage3-bfd: maybe-configure-stage3-intl
@@ -57455,7 +57393,6 @@ configure-stagefeedback-bfd: maybe-configure-stagefeedback-intl
configure-stageautoprofile-bfd: maybe-configure-stageautoprofile-intl
configure-stageautofeedback-bfd: maybe-configure-stageautofeedback-intl
all-bfd: maybe-all-libiberty
-
all-stage1-bfd: maybe-all-stage1-libiberty
all-stage2-bfd: maybe-all-stage2-libiberty
all-stage3-bfd: maybe-all-stage3-libiberty
@@ -57466,7 +57403,6 @@ all-stagefeedback-bfd: maybe-all-stagefeedback-libiberty
all-stageautoprofile-bfd: maybe-all-stageautoprofile-libiberty
all-stageautofeedback-bfd: maybe-all-stageautofeedback-libiberty
all-bfd: maybe-all-intl
-
all-stage1-bfd: maybe-all-stage1-intl
all-stage2-bfd: maybe-all-stage2-intl
all-stage3-bfd: maybe-all-stage3-intl
@@ -57477,7 +57413,6 @@ all-stagefeedback-bfd: maybe-all-stagefeedback-intl
all-stageautoprofile-bfd: maybe-all-stageautoprofile-intl
all-stageautofeedback-bfd: maybe-all-stageautofeedback-intl
all-bfd: maybe-all-zlib
-
all-stage1-bfd: maybe-all-stage1-zlib
all-stage2-bfd: maybe-all-stage2-zlib
all-stage3-bfd: maybe-all-stage3-zlib
@@ -57488,7 +57423,6 @@ all-stagefeedback-bfd: maybe-all-stagefeedback-zlib
all-stageautoprofile-bfd: maybe-all-stageautoprofile-zlib
all-stageautofeedback-bfd: maybe-all-stageautofeedback-zlib
configure-opcodes: configure-libiberty
-
configure-stage1-opcodes: configure-stage1-libiberty
configure-stage2-opcodes: configure-stage2-libiberty
configure-stage3-opcodes: configure-stage3-libiberty
@@ -57499,7 +57433,6 @@ configure-stagefeedback-opcodes: configure-stagefeedback-libiberty
configure-stageautoprofile-opcodes: configure-stageautoprofile-libiberty
configure-stageautofeedback-opcodes: configure-stageautofeedback-libiberty
all-opcodes: maybe-all-libiberty
-
all-stage1-opcodes: maybe-all-stage1-libiberty
all-stage2-opcodes: maybe-all-stage2-libiberty
all-stage3-opcodes: maybe-all-stage3-libiberty
@@ -57510,7 +57443,6 @@ all-stagefeedback-opcodes: maybe-all-stagefeedback-libiberty
all-stageautoprofile-opcodes: maybe-all-stageautoprofile-libiberty
all-stageautofeedback-opcodes: maybe-all-stageautofeedback-libiberty
configure-binutils: maybe-configure-intl
-
configure-stage1-binutils: maybe-configure-stage1-intl
configure-stage2-binutils: maybe-configure-stage2-intl
configure-stage3-binutils: maybe-configure-stage3-intl
@@ -57521,7 +57453,6 @@ configure-stagefeedback-binutils: maybe-configure-stagefeedback-intl
configure-stageautoprofile-binutils: maybe-configure-stageautoprofile-intl
configure-stageautofeedback-binutils: maybe-configure-stageautofeedback-intl
all-binutils: maybe-all-libiberty
-
all-stage1-binutils: maybe-all-stage1-libiberty
all-stage2-binutils: maybe-all-stage2-libiberty
all-stage3-binutils: maybe-all-stage3-libiberty
@@ -57532,7 +57463,6 @@ all-stagefeedback-binutils: maybe-all-stagefeedback-libiberty
all-stageautoprofile-binutils: maybe-all-stageautoprofile-libiberty
all-stageautofeedback-binutils: maybe-all-stageautofeedback-libiberty
all-binutils: maybe-all-opcodes
-
all-stage1-binutils: maybe-all-stage1-opcodes
all-stage2-binutils: maybe-all-stage2-opcodes
all-stage3-binutils: maybe-all-stage3-opcodes
@@ -57543,7 +57473,6 @@ all-stagefeedback-binutils: maybe-all-stagefeedback-opcodes
all-stageautoprofile-binutils: maybe-all-stageautoprofile-opcodes
all-stageautofeedback-binutils: maybe-all-stageautofeedback-opcodes
all-binutils: maybe-all-bfd
-
all-stage1-binutils: maybe-all-stage1-bfd
all-stage2-binutils: maybe-all-stage2-bfd
all-stage3-binutils: maybe-all-stage3-bfd
@@ -57554,7 +57483,6 @@ all-stagefeedback-binutils: maybe-all-stagefeedback-bfd
all-stageautoprofile-binutils: maybe-all-stageautoprofile-bfd
all-stageautofeedback-binutils: maybe-all-stageautofeedback-bfd
all-binutils: maybe-all-build-flex
-
all-stage1-binutils: maybe-all-build-flex
all-stage2-binutils: maybe-all-build-flex
all-stage3-binutils: maybe-all-build-flex
@@ -57565,7 +57493,6 @@ all-stagefeedback-binutils: maybe-all-build-flex
all-stageautoprofile-binutils: maybe-all-build-flex
all-stageautofeedback-binutils: maybe-all-build-flex
all-binutils: maybe-all-build-bison
-
all-stage1-binutils: maybe-all-build-bison
all-stage2-binutils: maybe-all-build-bison
all-stage3-binutils: maybe-all-build-bison
@@ -57576,7 +57503,6 @@ all-stagefeedback-binutils: maybe-all-build-bison
all-stageautoprofile-binutils: maybe-all-build-bison
all-stageautofeedback-binutils: maybe-all-build-bison
all-binutils: maybe-all-intl
-
all-stage1-binutils: maybe-all-stage1-intl
all-stage2-binutils: maybe-all-stage2-intl
all-stage3-binutils: maybe-all-stage3-intl
@@ -57587,7 +57513,6 @@ all-stagefeedback-binutils: maybe-all-stagefeedback-intl
all-stageautoprofile-binutils: maybe-all-stageautoprofile-intl
all-stageautofeedback-binutils: maybe-all-stageautofeedback-intl
all-binutils: maybe-all-gas
-
all-stage1-binutils: maybe-all-stage1-gas
all-stage2-binutils: maybe-all-stage2-gas
all-stage3-binutils: maybe-all-stage3-gas
@@ -57602,7 +57527,6 @@ install-strip-binutils: maybe-install-strip-opcodes
install-opcodes: maybe-install-bfd
install-strip-opcodes: maybe-install-strip-bfd
configure-gas: maybe-configure-intl
-
configure-stage1-gas: maybe-configure-stage1-intl
configure-stage2-gas: maybe-configure-stage2-intl
configure-stage3-gas: maybe-configure-stage3-intl
@@ -57613,7 +57537,6 @@ configure-stagefeedback-gas: maybe-configure-stagefeedback-intl
configure-stageautoprofile-gas: maybe-configure-stageautoprofile-intl
configure-stageautofeedback-gas: maybe-configure-stageautofeedback-intl
all-gas: maybe-all-libiberty
-
all-stage1-gas: maybe-all-stage1-libiberty
all-stage2-gas: maybe-all-stage2-libiberty
all-stage3-gas: maybe-all-stage3-libiberty
@@ -57624,7 +57547,6 @@ all-stagefeedback-gas: maybe-all-stagefeedback-libiberty
all-stageautoprofile-gas: maybe-all-stageautoprofile-libiberty
all-stageautofeedback-gas: maybe-all-stageautofeedback-libiberty
all-gas: maybe-all-opcodes
-
all-stage1-gas: maybe-all-stage1-opcodes
all-stage2-gas: maybe-all-stage2-opcodes
all-stage3-gas: maybe-all-stage3-opcodes
@@ -57635,7 +57557,6 @@ all-stagefeedback-gas: maybe-all-stagefeedback-opcodes
all-stageautoprofile-gas: maybe-all-stageautoprofile-opcodes
all-stageautofeedback-gas: maybe-all-stageautofeedback-opcodes
all-gas: maybe-all-bfd
-
all-stage1-gas: maybe-all-stage1-bfd
all-stage2-gas: maybe-all-stage2-bfd
all-stage3-gas: maybe-all-stage3-bfd
@@ -57646,7 +57567,6 @@ all-stagefeedback-gas: maybe-all-stagefeedback-bfd
all-stageautoprofile-gas: maybe-all-stageautoprofile-bfd
all-stageautofeedback-gas: maybe-all-stageautofeedback-bfd
all-gas: maybe-all-intl
-
all-stage1-gas: maybe-all-stage1-intl
all-stage2-gas: maybe-all-stage2-intl
all-stage3-gas: maybe-all-stage3-intl
@@ -57656,14 +57576,7 @@ all-stagetrain-gas: maybe-all-stagetrain-intl
all-stagefeedback-gas: maybe-all-stagefeedback-intl
all-stageautoprofile-gas: maybe-all-stageautoprofile-intl
all-stageautofeedback-gas: maybe-all-stageautofeedback-intl
-configure-gprof: maybe-configure-intl
-all-gprof: maybe-all-libiberty
-all-gprof: maybe-all-bfd
-all-gprof: maybe-all-opcodes
-all-gprof: maybe-all-intl
-all-gprof: maybe-all-gas
configure-ld: maybe-configure-intl
-
configure-stage1-ld: maybe-configure-stage1-intl
configure-stage2-ld: maybe-configure-stage2-intl
configure-stage3-ld: maybe-configure-stage3-intl
@@ -57674,7 +57587,6 @@ configure-stagefeedback-ld: maybe-configure-stagefeedback-intl
configure-stageautoprofile-ld: maybe-configure-stageautoprofile-intl
configure-stageautofeedback-ld: maybe-configure-stageautofeedback-intl
all-ld: maybe-all-libiberty
-
all-stage1-ld: maybe-all-stage1-libiberty
all-stage2-ld: maybe-all-stage2-libiberty
all-stage3-ld: maybe-all-stage3-libiberty
@@ -57685,7 +57597,6 @@ all-stagefeedback-ld: maybe-all-stagefeedback-libiberty
all-stageautoprofile-ld: maybe-all-stageautoprofile-libiberty
all-stageautofeedback-ld: maybe-all-stageautofeedback-libiberty
all-ld: maybe-all-bfd
-
all-stage1-ld: maybe-all-stage1-bfd
all-stage2-ld: maybe-all-stage2-bfd
all-stage3-ld: maybe-all-stage3-bfd
@@ -57696,7 +57607,6 @@ all-stagefeedback-ld: maybe-all-stagefeedback-bfd
all-stageautoprofile-ld: maybe-all-stageautoprofile-bfd
all-stageautofeedback-ld: maybe-all-stageautofeedback-bfd
all-ld: maybe-all-opcodes
-
all-stage1-ld: maybe-all-stage1-opcodes
all-stage2-ld: maybe-all-stage2-opcodes
all-stage3-ld: maybe-all-stage3-opcodes
@@ -57707,7 +57617,6 @@ all-stagefeedback-ld: maybe-all-stagefeedback-opcodes
all-stageautoprofile-ld: maybe-all-stageautoprofile-opcodes
all-stageautofeedback-ld: maybe-all-stageautofeedback-opcodes
all-ld: maybe-all-build-bison
-
all-stage1-ld: maybe-all-build-bison
all-stage2-ld: maybe-all-build-bison
all-stage3-ld: maybe-all-build-bison
@@ -57718,7 +57627,6 @@ all-stagefeedback-ld: maybe-all-build-bison
all-stageautoprofile-ld: maybe-all-build-bison
all-stageautofeedback-ld: maybe-all-build-bison
all-ld: maybe-all-build-flex
-
all-stage1-ld: maybe-all-build-flex
all-stage2-ld: maybe-all-build-flex
all-stage3-ld: maybe-all-build-flex
@@ -57729,7 +57637,6 @@ all-stagefeedback-ld: maybe-all-build-flex
all-stageautoprofile-ld: maybe-all-build-flex
all-stageautofeedback-ld: maybe-all-build-flex
all-ld: maybe-all-intl
-
all-stage1-ld: maybe-all-stage1-intl
all-stage2-ld: maybe-all-stage2-intl
all-stage3-ld: maybe-all-stage3-intl
@@ -57740,7 +57647,6 @@ all-stagefeedback-ld: maybe-all-stagefeedback-intl
all-stageautoprofile-ld: maybe-all-stageautoprofile-intl
all-stageautofeedback-ld: maybe-all-stageautofeedback-intl
all-ld: maybe-all-gas
-
all-stage1-ld: maybe-all-stage1-gas
all-stage2-ld: maybe-all-stage2-gas
all-stage3-ld: maybe-all-stage3-gas
@@ -57751,7 +57657,6 @@ all-stagefeedback-ld: maybe-all-stagefeedback-gas
all-stageautoprofile-ld: maybe-all-stageautoprofile-gas
all-stageautofeedback-ld: maybe-all-stageautofeedback-gas
all-ld: maybe-all-binutils
-
all-stage1-ld: maybe-all-stage1-binutils
all-stage2-ld: maybe-all-stage2-binutils
all-stage3-ld: maybe-all-stage3-binutils
@@ -57764,7 +57669,6 @@ all-stageautofeedback-ld: maybe-all-stageautofeedback-binutils
install-ld: maybe-install-gold
install-strip-ld: maybe-install-strip-gold
configure-gold: maybe-configure-intl
-
configure-stage1-gold: maybe-configure-stage1-intl
configure-stage2-gold: maybe-configure-stage2-intl
configure-stage3-gold: maybe-configure-stage3-intl
@@ -57775,7 +57679,6 @@ configure-stagefeedback-gold: maybe-configure-stagefeedback-intl
configure-stageautoprofile-gold: maybe-configure-stageautoprofile-intl
configure-stageautofeedback-gold: maybe-configure-stageautofeedback-intl
all-gold: maybe-all-libiberty
-
all-stage1-gold: maybe-all-stage1-libiberty
all-stage2-gold: maybe-all-stage2-libiberty
all-stage3-gold: maybe-all-stage3-libiberty
@@ -57786,7 +57689,6 @@ all-stagefeedback-gold: maybe-all-stagefeedback-libiberty
all-stageautoprofile-gold: maybe-all-stageautoprofile-libiberty
all-stageautofeedback-gold: maybe-all-stageautofeedback-libiberty
all-gold: maybe-all-intl
-
all-stage1-gold: maybe-all-stage1-intl
all-stage2-gold: maybe-all-stage2-intl
all-stage3-gold: maybe-all-stage3-intl
@@ -57797,7 +57699,6 @@ all-stagefeedback-gold: maybe-all-stagefeedback-intl
all-stageautoprofile-gold: maybe-all-stageautoprofile-intl
all-stageautofeedback-gold: maybe-all-stageautofeedback-intl
all-gold: maybe-all-bfd
-
all-stage1-gold: maybe-all-stage1-bfd
all-stage2-gold: maybe-all-stage2-bfd
all-stage3-gold: maybe-all-stage3-bfd
@@ -57808,7 +57709,6 @@ all-stagefeedback-gold: maybe-all-stagefeedback-bfd
all-stageautoprofile-gold: maybe-all-stageautoprofile-bfd
all-stageautofeedback-gold: maybe-all-stageautofeedback-bfd
all-gold: maybe-all-build-bison
-
all-stage1-gold: maybe-all-build-bison
all-stage2-gold: maybe-all-build-bison
all-stage3-gold: maybe-all-build-bison
@@ -57819,7 +57719,6 @@ all-stagefeedback-gold: maybe-all-build-bison
all-stageautoprofile-gold: maybe-all-build-bison
all-stageautofeedback-gold: maybe-all-build-bison
all-gold: maybe-all-gas
-
all-stage1-gold: maybe-all-stage1-gas
all-stage2-gold: maybe-all-stage2-gas
all-stage3-gold: maybe-all-stage3-gas
@@ -57830,7 +57729,6 @@ all-stagefeedback-gold: maybe-all-stagefeedback-gas
all-stageautoprofile-gold: maybe-all-stageautoprofile-gas
all-stageautofeedback-gold: maybe-all-stageautofeedback-gas
check-gold: maybe-all-binutils
-
check-stage1-gold: maybe-all-stage1-binutils
check-stage2-gold: maybe-all-stage2-binutils
check-stage3-gold: maybe-all-stage3-binutils
@@ -57841,7 +57739,6 @@ check-stagefeedback-gold: maybe-all-stagefeedback-binutils
check-stageautoprofile-gold: maybe-all-stageautoprofile-binutils
check-stageautofeedback-gold: maybe-all-stageautofeedback-binutils
check-gold: maybe-all-gas
-
check-stage1-gold: maybe-all-stage1-gas
check-stage2-gold: maybe-all-stage2-gas
check-stage3-gold: maybe-all-stage3-gas
@@ -57852,7 +57749,6 @@ check-stagefeedback-gold: maybe-all-stagefeedback-gas
check-stageautoprofile-gold: maybe-all-stageautoprofile-gas
check-stageautofeedback-gold: maybe-all-stageautofeedback-gas
configure-opcodes: maybe-configure-intl
-
configure-stage1-opcodes: maybe-configure-stage1-intl
configure-stage2-opcodes: maybe-configure-stage2-intl
configure-stage3-opcodes: maybe-configure-stage3-intl
@@ -57863,7 +57759,6 @@ configure-stagefeedback-opcodes: maybe-configure-stagefeedback-intl
configure-stageautoprofile-opcodes: maybe-configure-stageautoprofile-intl
configure-stageautofeedback-opcodes: maybe-configure-stageautofeedback-intl
all-opcodes: maybe-all-bfd
-
all-stage1-opcodes: maybe-all-stage1-bfd
all-stage2-opcodes: maybe-all-stage2-bfd
all-stage3-opcodes: maybe-all-stage3-bfd
@@ -57874,7 +57769,6 @@ all-stagefeedback-opcodes: maybe-all-stagefeedback-bfd
all-stageautoprofile-opcodes: maybe-all-stageautoprofile-bfd
all-stageautofeedback-opcodes: maybe-all-stageautofeedback-bfd
all-opcodes: maybe-all-libiberty
-
all-stage1-opcodes: maybe-all-stage1-libiberty
all-stage2-opcodes: maybe-all-stage2-libiberty
all-stage3-opcodes: maybe-all-stage3-libiberty
@@ -57885,7 +57779,6 @@ all-stagefeedback-opcodes: maybe-all-stagefeedback-libiberty
all-stageautoprofile-opcodes: maybe-all-stageautoprofile-libiberty
all-stageautofeedback-opcodes: maybe-all-stageautofeedback-libiberty
all-opcodes: maybe-all-intl
-
all-stage1-opcodes: maybe-all-stage1-intl
all-stage2-opcodes: maybe-all-stage2-intl
all-stage3-opcodes: maybe-all-stage3-intl
@@ -57910,42 +57803,27 @@ install-itcl: maybe-install-tcl
install-strip-itcl: maybe-install-strip-tcl
configure-tk: maybe-configure-tcl
all-tk: maybe-all-tcl
-all-sid: maybe-all-libiberty
-all-sid: maybe-all-bfd
-all-sid: maybe-all-opcodes
all-sid: maybe-all-tcl
all-sid: maybe-all-tk
install-sid: maybe-install-tcl
install-strip-sid: maybe-install-strip-tcl
install-sid: maybe-install-tk
install-strip-sid: maybe-install-strip-tk
-configure-sim: maybe-configure-intl
-all-sim: maybe-all-intl
-all-sim: maybe-all-libiberty
-all-sim: maybe-all-bfd
-all-sim: maybe-all-opcodes
all-sim: maybe-all-readline
all-sim: maybe-configure-gdb
-all-fastjar: maybe-all-zlib
all-fastjar: maybe-all-build-texinfo
-all-fastjar: maybe-all-libiberty
-all-bison: maybe-all-intl
all-bison: maybe-all-build-texinfo
all-flex: maybe-all-build-bison
-all-flex: maybe-all-intl
all-flex: maybe-all-m4
all-flex: maybe-all-build-texinfo
-all-m4: maybe-all-intl
all-m4: maybe-all-build-texinfo
configure-target-fastjar: maybe-configure-target-zlib
all-target-fastjar: maybe-all-target-zlib
configure-target-libgo: maybe-configure-target-libffi
-configure-target-libgo: maybe-all-target-libstdc++-v3
all-target-libgo: maybe-all-target-libbacktrace
all-target-libgo: maybe-all-target-libffi
all-target-libgo: maybe-all-target-libatomic
configure-target-libstdc++-v3: maybe-configure-target-libgomp
-
configure-stage1-target-libstdc++-v3: maybe-configure-stage1-target-libgomp
configure-stage2-target-libstdc++-v3: maybe-configure-stage2-target-libgomp
configure-stage3-target-libstdc++-v3: maybe-configure-stage3-target-libgomp
@@ -57955,9 +57833,7 @@ configure-stagetrain-target-libstdc++-v3: maybe-configure-stagetrain-target-libg
configure-stagefeedback-target-libstdc++-v3: maybe-configure-stagefeedback-target-libgomp
configure-stageautoprofile-target-libstdc++-v3: maybe-configure-stageautoprofile-target-libgomp
configure-stageautofeedback-target-libstdc++-v3: maybe-configure-stageautofeedback-target-libgomp
-configure-target-liboffloadmic: maybe-configure-target-libgomp
configure-target-libsanitizer: maybe-all-target-libstdc++-v3
-
configure-stage1-target-libsanitizer: maybe-all-stage1-target-libstdc++-v3
configure-stage2-target-libsanitizer: maybe-all-stage2-target-libstdc++-v3
configure-stage3-target-libsanitizer: maybe-all-stage3-target-libstdc++-v3
@@ -57968,7 +57844,6 @@ configure-stagefeedback-target-libsanitizer: maybe-all-stagefeedback-target-libs
configure-stageautoprofile-target-libsanitizer: maybe-all-stageautoprofile-target-libstdc++-v3
configure-stageautofeedback-target-libsanitizer: maybe-all-stageautofeedback-target-libstdc++-v3
configure-target-libvtv: maybe-all-target-libstdc++-v3
-
configure-stage1-target-libvtv: maybe-all-stage1-target-libstdc++-v3
configure-stage2-target-libvtv: maybe-all-stage2-target-libstdc++-v3
configure-stage3-target-libvtv: maybe-all-stage3-target-libstdc++-v3
@@ -57979,7 +57854,6 @@ configure-stagefeedback-target-libvtv: maybe-all-stagefeedback-target-libstdc++-
configure-stageautoprofile-target-libvtv: maybe-all-stageautoprofile-target-libstdc++-v3
configure-stageautofeedback-target-libvtv: maybe-all-stageautofeedback-target-libstdc++-v3
all-target-libstdc++-v3: maybe-configure-target-libgomp
-
all-stage1-target-libstdc++-v3: maybe-configure-stage1-target-libgomp
all-stage2-target-libstdc++-v3: maybe-configure-stage2-target-libgomp
all-stage3-target-libstdc++-v3: maybe-configure-stage3-target-libgomp
@@ -57989,7 +57863,6 @@ all-stagetrain-target-libstdc++-v3: maybe-configure-stagetrain-target-libgomp
all-stagefeedback-target-libstdc++-v3: maybe-configure-stagefeedback-target-libgomp
all-stageautoprofile-target-libstdc++-v3: maybe-configure-stageautoprofile-target-libgomp
all-stageautofeedback-target-libstdc++-v3: maybe-configure-stageautofeedback-target-libgomp
-all-target-liboffloadmic: maybe-all-target-libgomp
install-target-libgo: maybe-install-target-libatomic
install-target-libgfortran: maybe-install-target-libquadmath
install-target-libgfortran: maybe-install-target-libgcc
@@ -58004,12 +57877,70 @@ install-target-libobjc: maybe-install-target-libgcc
install-target-libstdc++-v3: maybe-install-target-libgcc
all-target-libgloss: maybe-all-target-newlib
all-target-winsup: maybe-all-target-libtermcap
-configure-target-newlib: maybe-all-binutils
-configure-target-newlib: maybe-all-ld
configure-target-libgfortran: maybe-all-target-libquadmath
configure-target-libgfortran: maybe-all-target-libbacktrace
+@if gcc-bootstrap
+all-gnattools: stage_last
+configure-libcc1: stage_last
+all-libcc1: stage_last
+all-utils: stage_last
+configure-gdb: stage_last
+all-gdb: stage_last
+configure-gprof: stage_last
+all-gprof: stage_last
+all-sid: stage_last
+configure-sim: stage_last
+all-sim: stage_last
+all-fastjar: stage_last
+all-bison: stage_last
+all-flex: stage_last
+all-m4: stage_last
+configure-target-libgo: stage_last
+configure-target-liboffloadmic: stage_last
+all-target-liboffloadmic: stage_last
+configure-target-newlib: stage_last
+@endif gcc-bootstrap
+
+@if gcc-no-bootstrap
+all-gnattools: maybe-all-target-libstdc++-v3
+configure-libcc1: maybe-configure-gcc
+all-libcc1: maybe-all-gcc
+all-utils: maybe-all-libiberty
+configure-gdb: maybe-all-intl
+configure-gdb: maybe-all-bfd
+configure-gdb: maybe-all-libiconv
+all-gdb: maybe-all-libiberty
+all-gdb: maybe-all-libiconv
+all-gdb: maybe-all-opcodes
+all-gdb: maybe-all-libdecnumber
+configure-gprof: maybe-configure-intl
+all-gprof: maybe-all-libiberty
+all-gprof: maybe-all-bfd
+all-gprof: maybe-all-opcodes
+all-gprof: maybe-all-intl
+all-gprof: maybe-all-gas
+all-sid: maybe-all-libiberty
+all-sid: maybe-all-bfd
+all-sid: maybe-all-opcodes
+configure-sim: maybe-configure-intl
+all-sim: maybe-all-intl
+all-sim: maybe-all-libiberty
+all-sim: maybe-all-bfd
+all-sim: maybe-all-opcodes
+all-fastjar: maybe-all-zlib
+all-fastjar: maybe-all-libiberty
+all-bison: maybe-all-intl
+all-flex: maybe-all-intl
+all-m4: maybe-all-intl
+configure-target-libgo: maybe-all-target-libstdc++-v3
+configure-target-liboffloadmic: maybe-configure-target-libgomp
+all-target-liboffloadmic: maybe-all-target-libgomp
+configure-target-newlib: maybe-all-binutils
+configure-target-newlib: maybe-all-ld
+@endif gcc-no-bootstrap
+
# Dependencies for target modules on other target modules are
# described by lang_env_dependencies; the defaults apply to anything
# not mentioned there.
diff --git a/Makefile.tpl b/Makefile.tpl
index abd2bc2fb897..476a0586808a 100644
--- a/Makefile.tpl
+++ b/Makefile.tpl
@@ -1824,12 +1824,15 @@ configure-target-[+module+]: maybe-all-gcc[+
(define dep-maybe (lambda ()
(if (exist? "hard") "" "maybe-")))
- ;; 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
- ;; is only necessary for host modules.
+ ;; dep-kind returns "normal" if the dependency is on an "install"
+ ;; target, if neither module is bootstrapped, or if the dependence
+ ;; module is not bootstrapped; otherwise, if the dependent module
+ ;; is not bootstrapped but the dependence is, it returns
+ ;; "postbootstrap". . 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 is only necessary for host modules.
(define dep-kind (lambda ()
(if (and (hash-ref boot-modules (dep-module "module"))
(=* (dep-module "on") "build-"))
@@ -1838,11 +1841,24 @@ configure-target-[+module+]: maybe-all-gcc[+
(if (or (= (dep-subtarget "on") "install-")
(not (hash-ref boot-modules (dep-module "module")))
(not (hash-ref boot-modules (dep-module "on"))))
- "normal"
+
+ (if (and (not (= (dep-subtarget "on") "install-"))
+ (not (hash-ref boot-modules (dep-module "module")))
+ (hash-ref boot-modules (dep-module "on")))
+ "postbootstrap"
+ "normal")
+
"bootstrap"))))
+ (define make-postboot-dep (lambda (target dep)
+ (if (not (= (hash-ref postboot-targets target) dep))
+ (let ()
+ (hash-create-handle! postboot-targets target dep)
+ (string-append target ": " dep "\n")))))
+
;; We now build the hash table that is used by dep-kind.
(define boot-modules (make-hash-table 113))
+ (define postboot-targets (make-hash-table 113))
+]
[+ FOR host_modules +][+
@@ -1859,19 +1875,33 @@ configure-target-[+module+]: maybe-all-gcc[+
# to check for bootstrap/prebootstrap dependencies. To resolve
# prebootstrap dependencies, prebootstrap modules are gathered in
# a hash table.
-[+ FOR dependencies +][+ (make-dep "" "") +]
-[+ CASE (dep-kind) +]
+[+ FOR dependencies +][+ CASE (dep-kind) +]
[+ == "prebootstrap"
- +][+ FOR bootstrap_stage +]
+ +][+ (make-dep "" "") +][+ FOR bootstrap_stage +]
[+ (make-dep (dep-stage) "") +][+
ENDFOR bootstrap_stage +]
[+ == "bootstrap"
- +][+ FOR bootstrap_stage +]
+ +][+ (make-dep "" "") +][+ FOR bootstrap_stage +]
[+ (make-dep (dep-stage) (dep-stage)) +][+
ENDFOR bootstrap_stage +]
+[+ == "normal"
+ +][+ (make-dep "" "") +]
[+ ESAC +][+
ENDFOR dependencies +]
+@if gcc-bootstrap
+[+ FOR dependencies +][+ CASE (dep-kind) +]
+[+ == "postbootstrap"
+ +][+ (make-postboot-dep (get "module") "stage_last") +][+ ESAC +][+
+ENDFOR dependencies +]@endif gcc-bootstrap
+
+@if gcc-no-bootstrap
+[+ FOR dependencies +][+ CASE (dep-kind) +]
+[+ == "postbootstrap"
+ +][+ (make-dep "" "") +]
+[+ ESAC +][+
+ENDFOR dependencies +]@endif gcc-no-bootstrap
+
# Dependencies for target modules on other target modules are
# described by lang_env_dependencies; the defaults apply to anything
# not mentioned there.
--
Alexandre Oliva, freedom fighter https://FSFLA.org/blogs/lxo
Be the change, be Free! FSF Latin America board member
GNU Toolchain Engineer Free Software Evangelist
^ permalink raw reply [flat|nested] 16+ messages in thread
* Re: fix libcc1 dependencies in toplevel Makefile
2018-06-03 19:13 ` Alexandre Oliva
@ 2018-06-12 2:50 ` Alexandre Oliva
2018-06-12 8:57 ` Olivier Hainque
` (2 more replies)
0 siblings, 3 replies; 16+ messages in thread
From: Alexandre Oliva @ 2018-06-12 2:50 UTC (permalink / raw)
To: Olivier Hainque; +Cc: GCC Patches, Nicolas Roche
On Jun 3, 2018, Alexandre Oliva <oliva@gnu.org> wrote:
> On Jun 27, 2017, Alexandre Oliva <aoliva@redhat.com> wrote:
>> configuration, because the current Makefile would only do that with
>> all-host, after bootstrap is complete.
> I have extensively studied the dependencies, and I still don't see how
> all-libcc1, that is only activated as a target during the post-bootstrap
> all-host build, might have been activated concurrently with
> staging/unstaging. By the time we get to all-host, we've sequentially
> completed bootstrap, compare, and unstage.
> The only possibilities I see of something going wrong as described is a
> parallel build that has bootstrap and postbootstrap targets in the
> command line, or some patch that changes the dependencies so that such
> targets are considered in parallel.
> I could definitely use the build logs from back then, if still
> available, to try to make sense of the problem.
I was missing one possibility: that the problem occurred during the
post-bootstrap all-host all-target build. As far as I can tell from
Nicolas' analysis, this was indeed the case. I still don't see how any
staging or unstaging might have taken place, but I can now see that we
do reenter the gcc dir before building all-libcc1. If that reentering
rebuilds anything, particularly headers, that may be enough to explain
the reported symptoms.
Now, I do vaguely recall build output within the gcc subdir that
possibly recreated the gcc/include subtree, which might explain the
observed errors.
The good news is that the patch I posted the other day actually
addresses this problem: the dep on stage_last is not enough to trigger a
rebuild of gcc, so a post-bootstrap all-host all-target build will not
reenter the bootstrapped dirs, but that dep does trigger an initial
build of gcc if one has not gone through bootstrapping yet.
So I see two possible ways to go from now:
1. address the previously-mentioned fragility in the patch I posted, to
catch all cases of postbootstrap targets and their deps on
non-postbootstrap targets.
2. revamp the bootstrap/non-bootstrap dependencies, using GNU make
conditionals rather than configure-time enable/disable-bootstrap, so
that we can have a different set of dependencies while running the
bootstrap proper, having non-stage dependencies activated by default
when any of the all-* targets are named in the command line, and also
when building post-bootstrap all-host all-target. This might seem to
bring the problem back, but rather by having the full dependency set,
we'd avoid the race not by refraining from reentering dirs, but rather
by having them entered or reentered according to the full dependencies,
without mixing stage and non-stage dependencies. I'm not yet sure this
is actually doable, but it seems to me that if it is, it would be more
robust than what we have now.
--
Alexandre Oliva, freedom fighter https://FSFLA.org/blogs/lxo
Be the change, be Free! FSF Latin America board member
GNU Toolchain Engineer Free Software Evangelist
^ permalink raw reply [flat|nested] 16+ messages in thread
* Re: fix libcc1 dependencies in toplevel Makefile
2018-06-12 2:50 ` Alexandre Oliva
@ 2018-06-12 8:57 ` Olivier Hainque
2018-06-12 15:31 ` Jeff Law
2018-06-26 5:39 ` Alexandre Oliva
2 siblings, 0 replies; 16+ messages in thread
From: Olivier Hainque @ 2018-06-12 8:57 UTC (permalink / raw)
To: Alexandre Oliva; +Cc: Olivier Hainque, GCC Patches, Nicolas Roche
Hi Alex,
Thanks for your feedback and help looking into this.
> On 12 Jun 2018, at 04:50, Alexandre Oliva <oliva@gnu.org> wrote:
>
> I was missing one possibility: that the problem occurred during the
> post-bootstrap all-host all-target build. As far as I can tell from
> Nicolas' analysis, this was indeed the case.
Yes, indeed. I intended to convey this in the
opening message of this thread by referring to concurrency
between libcc1 and libquadmath. That was admittedly
too implicit :)
> I still don't see how any
> staging or unstaging might have taken place, but I can now see that we
> do reenter the gcc dir before building all-libcc1. If that reentering
> rebuilds anything, particularly headers, that may be enough to explain
> the reported symptoms.
Right.
> Now, I do vaguely recall build output within the gcc subdir that
> possibly recreated the gcc/include subtree, which might explain the
> observed errors.
That's consistent at least, as the problem we had was the compilation
of a libquadmath source not finding limits.h.
> The good news is that the patch I posted the other day actually
> addresses this problem: the dep on stage_last is not enough to trigger a
> rebuild of gcc, so a post-bootstrap all-host all-target build will not
> reenter the bootstrapped dirs,
Nice :-)
> but that dep does trigger an initial
> build of gcc if one has not gone through bootstrapping yet.
>
> So I see two possible ways to go from now:
>
> 1. address the previously-mentioned fragility in the patch I posted, to
> catch all cases of postbootstrap targets and their deps on
> non-postbootstrap targets.
>
> 2. revamp the bootstrap/non-bootstrap dependencies, using GNU make
> conditionals rather than configure-time enable/disable-bootstrap, so
> that we can have a different set of dependencies while running the
> bootstrap proper, having non-stage dependencies activated by default
> when any of the all-* targets are named in the command line, and also
> when building post-bootstrap all-host all-target. This might seem to
> bring the problem back, but rather by having the full dependency set,
> we'd avoid the race not by refraining from reentering dirs, but rather
> by having them entered or reentered according to the full dependencies,
> without mixing stage and non-stage dependencies. I'm not yet sure this
> is actually doable, but it seems to me that if it is, it would be more
> robust than what we have now.
I'm really not familiar enough with the dependencies organization
to provide informed input here.
Maybe a reasonable effort on 1 would be good enough in practice and
we can get to 2 only as a second step if we still observe failures.
Or start with a reasonable effort on 2 to evaluate feasibility and
get a rough guesstimate of the effort it would take to get there, then
reassess.
For sure, I'm happy to try any patch in our development (!production)
builds and see where this leads.
Thanks again for your help on this!
With Kind Regards,
Olivier
^ permalink raw reply [flat|nested] 16+ messages in thread
* Re: fix libcc1 dependencies in toplevel Makefile
2018-06-12 2:50 ` Alexandre Oliva
2018-06-12 8:57 ` Olivier Hainque
@ 2018-06-12 15:31 ` Jeff Law
2018-06-26 5:39 ` Alexandre Oliva
2 siblings, 0 replies; 16+ messages in thread
From: Jeff Law @ 2018-06-12 15:31 UTC (permalink / raw)
To: Alexandre Oliva, Olivier Hainque; +Cc: GCC Patches, Nicolas Roche
On 06/11/2018 08:50 PM, Alexandre Oliva wrote:
> So I see two possible ways to go from now:
>
> 1. address the previously-mentioned fragility in the patch I posted, to
> catch all cases of postbootstrap targets and their deps on
> non-postbootstrap targets.
>
>
> 2. revamp the bootstrap/non-bootstrap dependencies, using GNU make
> conditionals rather than configure-time enable/disable-bootstrap, so
> that we can have a different set of dependencies while running the
> bootstrap proper, having non-stage dependencies activated by default
> when any of the all-* targets are named in the command line, and also
> when building post-bootstrap all-host all-target. This might seem to
> bring the problem back, but rather by having the full dependency set,
> we'd avoid the race not by refraining from reentering dirs, but rather
> by having them entered or reentered according to the full dependencies,
> without mixing stage and non-stage dependencies. I'm not yet sure this
> is actually doable, but it seems to me that if it is, it would be more
> robust than what we have now.
Your call. I've wanted the build system revamped for 20+ years, but
it's nontrivial and the most serious problems were addressed as we
continued to pull the runtime bits out of gcc/
Jeff
^ permalink raw reply [flat|nested] 16+ messages in thread
* Re: fix libcc1 dependencies in toplevel Makefile
2018-06-12 2:50 ` Alexandre Oliva
2018-06-12 8:57 ` Olivier Hainque
2018-06-12 15:31 ` Jeff Law
@ 2018-06-26 5:39 ` Alexandre Oliva
2018-06-27 19:53 ` Olivier Hainque
2 siblings, 1 reply; 16+ messages in thread
From: Alexandre Oliva @ 2018-06-26 5:39 UTC (permalink / raw)
To: Olivier Hainque; +Cc: GCC Patches, Nicolas Roche, binutils, gdb-patches, newlib
On Jun 11, 2018, Alexandre Oliva <oliva@gnu.org> wrote:
> On Jun 3, 2018, Alexandre Oliva <oliva@gnu.org> wrote:
>> On Jun 27, 2017, Alexandre Oliva <aoliva@redhat.com> wrote:
> 1. address the previously-mentioned fragility in the patch I posted, to
> catch all cases of postbootstrap targets and their deps on
> non-postbootstrap targets.
This turned out to just require some thinking to convince myself it
wouldn't come up.
There was a major problem in the earlier patch, however: @if/@endif
gcc-no-bootstrap wasn't quite what we needed to enclose the preexisting
deps, because that works for cases in which gcc is built but not
bootstrapped, but not cases in which gcc is not built. I had to
introduce @unless/@endunless to express the desired semantics.
Here's the patch I'll install if nobody objects in the next few days.
Tested on x86_64-linux-gnu with a gcc bootstrap tree, a gcc
non-bootstrap tree, and a binutils+gdb tree.
In the patch below, I've omitted hunks with only whitespace changes to
Makefile.in, so that people can more easily identify how rules are
changing.
Introduce @unless/@endunless and postbootstrap Makefile targets
From: Alexandre Oliva <oliva@adacore.com>
This patch turns dependencies of non-bootstrap targets on bootstrap
targets for bootstrap builds into dependencies on stage_last. This
arrangement gets stage1-bubble to run from stage_last if we haven't
started a bootstrap yet, and to use the current stage otherwise. This
was already the case of target libs, just not of non-bootstrapped host
modules.
In order to retain preexisting dependencies in non-bootstrap builds,
or in gcc-less builds, this introduces support for @unless/@endunless
pairs in Makefile.in.
There is a remaining possibility of problem if activating, in a tree
configured for bootstrap, a parallel build of two or more modules, at
least one bootstrapped and one not. In this case, make might decide
to build stage_current and stage_last in parallel, the latter will
start a submake to build stage1 while the initial make, having
satisfied stage_current, proceeds to build the bootstrapped module in
non-bootstrapped configurations. The two builds will overlap and will
likely conflict. This situation does NOT arise in normal settings,
however: a post-bootstrap build of all-host all-target will indeed
activate such targets concurrently, but only after building all
bootstrapped modules successfully, and it will have both stage_last
and stage_current targets already satisfied, so the potential race
between builds will not arise.
Another remaining problem, that is slightly expanded with this patch,
is that of an interrupted build in a tree configured for bootstrap,
continued with a non-bootstrapped target. Target modules that were
not bootstrapped would already fail to complete the current stage when
activated explicitly in the command line for a retry; host modules,
however, would attempt to build their bootstrapped dependencies, which
is what led to the problem of concurrent builds addressed with this
patch. An interrupted or failed build might still recover correctly,
if the non-bootstrapped target is activated in both builds, because
then make will remove stage_last when its build command is
interrupted, so that it will attempt to recreate it with stage1-bubble
in the second try. A bootstrap build, however, will not be attempting
to build stage_last, so the file will remain and the retry won't go
through stage1-bubble. We have lived with that for target modules, so
we can probably live with that for host modules too.
Another undesirable consequence of this change is that non-boostrapped
host modules, in a tree configured for bootstrap, when activated as
make all-<module>, will build all of stage1 instead of only the
module's usual dependencies. This is intentional and necessary to fix
the parallel-build problem. If it's not desirable, disabling the
unnecessary bootstrap configuration will suffice to restore the
original set of dependencies.
for ChangeLog
* configure.ac: Introduce support for @unless/@endunless.
* Makefile.tpl (dep-kind): Rewrite with cond; return
postbootstrap in some cases.
(make-postboot-dep, postboot-targets): New.
(dependencies): Do not output postbootstrap dependencies at
first. Output non-target ones changed for configure to depend
on stage_last @if gcc-bootstrap, and the original deps @unless
gcc-bootstrap.
* configure.in, Makefile.in: Rebuilt.
---
Makefile.in | 181 +++++++++++++++++-----------------------------------------
Makefile.tpl | 78 +++++++++++++++++--------
configure | 20 +++++-
configure.ac | 20 +++++-
4 files changed, 134 insertions(+), 165 deletions(-)
diff --git a/Makefile.in b/Makefile.in
index 32a92a6bcd17..e0dfad337a6c 100644
--- a/Makefile.in
+++ b/Makefile.in
@@ -56060,9 +56018,7 @@ all-stagefeedback-fixincludes: maybe-all-stagefeedback-libiberty
all-stageautoprofile-fixincludes: maybe-all-stageautoprofile-libiberty
all-stageautofeedback-fixincludes: maybe-all-stageautofeedback-libiberty
all-gnattools: maybe-all-target-libada
-all-gnattools: maybe-all-target-libstdc++-v3
all-lto-plugin: maybe-all-libiberty
-
all-stage1-lto-plugin: maybe-all-stage1-libiberty
all-stage2-lto-plugin: maybe-all-stage2-libiberty
all-stage3-lto-plugin: maybe-all-stage3-libiberty
@@ -56083,12 +56038,8 @@ all-stagetrain-lto-plugin: maybe-all-stagetrain-libiberty-linker-plugin
all-stagefeedback-lto-plugin: maybe-all-stagefeedback-libiberty-linker-plugin
all-stageautoprofile-lto-plugin: maybe-all-stageautoprofile-libiberty-linker-plugin
all-stageautofeedback-lto-plugin: maybe-all-stageautofeedback-libiberty-linker-plugin
-configure-libcc1: maybe-configure-gcc
-all-libcc1: maybe-all-gcc
all-gotools: maybe-all-target-libgo
-all-utils: maybe-all-libiberty
configure-intl: maybe-all-libiconv
-
configure-stage1-intl: maybe-all-stage1-libiconv
configure-stage2-intl: maybe-all-stage2-libiconv
configure-stage3-intl: maybe-all-stage3-libiconv
@@ -56142,17 +56089,10 @@ all-stagetrain-intl: maybe-all-stagetrain-libiconv
all-stagefeedback-intl: maybe-all-stagefeedback-libiconv
all-stageautoprofile-intl: maybe-all-stageautoprofile-libiconv
all-stageautofeedback-intl: maybe-all-stageautofeedback-libiconv
-configure-gdb: maybe-all-intl
configure-gdb: maybe-configure-sim
-configure-gdb: maybe-all-bfd
-configure-gdb: maybe-all-libiconv
-all-gdb: maybe-all-libiberty
-all-gdb: maybe-all-libiconv
-all-gdb: maybe-all-opcodes
all-gdb: maybe-all-readline
all-gdb: maybe-all-build-bison
all-gdb: maybe-all-sim
-all-gdb: maybe-all-libdecnumber
all-gdb: maybe-all-libtermcap
configure-libgui: maybe-configure-tcl
configure-libgui: maybe-configure-tk
@@ -56383,14 +56303,7 @@ all-stagetrain-gas: maybe-all-stagetrain-intl
all-stagefeedback-gas: maybe-all-stagefeedback-intl
all-stageautoprofile-gas: maybe-all-stageautoprofile-intl
all-stageautofeedback-gas: maybe-all-stageautofeedback-intl
-configure-gprof: maybe-configure-intl
-all-gprof: maybe-all-libiberty
-all-gprof: maybe-all-bfd
-all-gprof: maybe-all-opcodes
-all-gprof: maybe-all-intl
-all-gprof: maybe-all-gas
configure-ld: maybe-configure-intl
-
configure-stage1-ld: maybe-configure-stage1-intl
configure-stage2-ld: maybe-configure-stage2-intl
configure-stage3-ld: maybe-configure-stage3-intl
@@ -56637,42 +56530,27 @@ install-itcl: maybe-install-tcl
install-strip-itcl: maybe-install-strip-tcl
configure-tk: maybe-configure-tcl
all-tk: maybe-all-tcl
-all-sid: maybe-all-libiberty
-all-sid: maybe-all-bfd
-all-sid: maybe-all-opcodes
all-sid: maybe-all-tcl
all-sid: maybe-all-tk
install-sid: maybe-install-tcl
install-strip-sid: maybe-install-strip-tcl
install-sid: maybe-install-tk
install-strip-sid: maybe-install-strip-tk
-configure-sim: maybe-configure-intl
-all-sim: maybe-all-intl
-all-sim: maybe-all-libiberty
-all-sim: maybe-all-bfd
-all-sim: maybe-all-opcodes
all-sim: maybe-all-readline
all-sim: maybe-configure-gdb
-all-fastjar: maybe-all-zlib
all-fastjar: maybe-all-build-texinfo
-all-fastjar: maybe-all-libiberty
-all-bison: maybe-all-intl
all-bison: maybe-all-build-texinfo
all-flex: maybe-all-build-bison
-all-flex: maybe-all-intl
all-flex: maybe-all-m4
all-flex: maybe-all-build-texinfo
-all-m4: maybe-all-intl
all-m4: maybe-all-build-texinfo
configure-target-fastjar: maybe-configure-target-zlib
all-target-fastjar: maybe-all-target-zlib
configure-target-libgo: maybe-configure-target-libffi
-configure-target-libgo: maybe-all-target-libstdc++-v3
all-target-libgo: maybe-all-target-libbacktrace
all-target-libgo: maybe-all-target-libffi
all-target-libgo: maybe-all-target-libatomic
configure-target-libstdc++-v3: maybe-configure-target-libgomp
-
configure-stage1-target-libstdc++-v3: maybe-configure-stage1-target-libgomp
configure-stage2-target-libstdc++-v3: maybe-configure-stage2-target-libgomp
configure-stage3-target-libstdc++-v3: maybe-configure-stage3-target-libgomp
@@ -56682,9 +56560,7 @@ configure-stagetrain-target-libstdc++-v3: maybe-configure-stagetrain-target-libg
configure-stagefeedback-target-libstdc++-v3: maybe-configure-stagefeedback-target-libgomp
configure-stageautoprofile-target-libstdc++-v3: maybe-configure-stageautoprofile-target-libgomp
configure-stageautofeedback-target-libstdc++-v3: maybe-configure-stageautofeedback-target-libgomp
-configure-target-liboffloadmic: maybe-configure-target-libgomp
configure-target-libsanitizer: maybe-all-target-libstdc++-v3
-
configure-stage1-target-libsanitizer: maybe-all-stage1-target-libstdc++-v3
configure-stage2-target-libsanitizer: maybe-all-stage2-target-libstdc++-v3
configure-stage3-target-libsanitizer: maybe-all-stage3-target-libstdc++-v3
@@ -56716,7 +56590,6 @@ all-stagetrain-target-libstdc++-v3: maybe-configure-stagetrain-target-libgomp
all-stagefeedback-target-libstdc++-v3: maybe-configure-stagefeedback-target-libgomp
all-stageautoprofile-target-libstdc++-v3: maybe-configure-stageautoprofile-target-libgomp
all-stageautofeedback-target-libstdc++-v3: maybe-configure-stageautofeedback-target-libgomp
-all-target-liboffloadmic: maybe-all-target-libgomp
install-target-libgo: maybe-install-target-libatomic
install-target-libgfortran: maybe-install-target-libquadmath
install-target-libgfortran: maybe-install-target-libgcc
@@ -56731,12 +56604,62 @@ install-target-libobjc: maybe-install-target-libgcc
install-target-libstdc++-v3: maybe-install-target-libgcc
all-target-libgloss: maybe-all-target-newlib
all-target-winsup: maybe-all-target-libtermcap
-configure-target-newlib: maybe-all-binutils
-configure-target-newlib: maybe-all-ld
configure-target-libgfortran: maybe-all-target-libquadmath
configure-target-libgfortran: maybe-all-target-libbacktrace
+@if gcc-bootstrap
+configure-gnattools: stage_last
+configure-libcc1: stage_last
+configure-utils: stage_last
+configure-gdb: stage_last
+configure-gprof: stage_last
+configure-sid: stage_last
+configure-sim: stage_last
+configure-fastjar: stage_last
+configure-bison: stage_last
+configure-flex: stage_last
+configure-m4: stage_last
+@endif gcc-bootstrap
+
+@unless gcc-bootstrap
+all-gnattools: maybe-all-target-libstdc++-v3
+configure-libcc1: maybe-configure-gcc
+all-libcc1: maybe-all-gcc
+all-utils: maybe-all-libiberty
+configure-gdb: maybe-all-intl
+configure-gdb: maybe-all-bfd
+configure-gdb: maybe-all-libiconv
+all-gdb: maybe-all-libiberty
+all-gdb: maybe-all-libiconv
+all-gdb: maybe-all-opcodes
+all-gdb: maybe-all-libdecnumber
+configure-gprof: maybe-configure-intl
+all-gprof: maybe-all-libiberty
+all-gprof: maybe-all-bfd
+all-gprof: maybe-all-opcodes
+all-gprof: maybe-all-intl
+all-gprof: maybe-all-gas
+all-sid: maybe-all-libiberty
+all-sid: maybe-all-bfd
+all-sid: maybe-all-opcodes
+configure-sim: maybe-configure-intl
+all-sim: maybe-all-intl
+all-sim: maybe-all-libiberty
+all-sim: maybe-all-bfd
+all-sim: maybe-all-opcodes
+all-fastjar: maybe-all-zlib
+all-fastjar: maybe-all-libiberty
+all-bison: maybe-all-intl
+all-flex: maybe-all-intl
+all-m4: maybe-all-intl
+configure-target-libgo: maybe-all-target-libstdc++-v3
+configure-target-liboffloadmic: maybe-configure-target-libgomp
+all-target-liboffloadmic: maybe-all-target-libgomp
+configure-target-newlib: maybe-all-binutils
+configure-target-newlib: maybe-all-ld
+@endunless gcc-bootstrap
+
# Dependencies for target modules on other target modules are
# described by lang_env_dependencies; the defaults apply to anything
# not mentioned there.
diff --git a/Makefile.tpl b/Makefile.tpl
index b6077c9f125c..447d324595fe 100644
--- a/Makefile.tpl
+++ b/Makefile.tpl
@@ -1828,25 +1828,46 @@ configure-target-[+module+]: maybe-all-gcc[+
(define dep-maybe (lambda ()
(if (exist? "hard") "" "maybe-")))
- ;; 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
- ;; is only necessary for host modules.
+ ;; dep-kind returns returns "prebootstrap" for configure or build
+ ;; dependencies of bootstrapped modules on a build module
+ ;; (e.g. all-gcc on all-build-bison); "normal" if the dependency is
+ ;; on an "install" target, or if the dependence module is not
+ ;; bootstrapped; otherwise, it returns "bootstrap" or
+ ;; "postbootstrap" depending on whether the dependent module is
+ ;; bootstrapped. All this is only necessary for host and target
+ ;; modules. It might seem like, in order to avoid build races, we
+ ;; might need more elaborate detection between prebootstrap and
+ ;; postbootstrap modules, but there are no host prebootstrap
+ ;; modules. If there were any non-bootstrap host modules that
+ ;; bootstrap modules depended on, we'd get unsatisfied per-stage
+ ;; dependencies on them, which would be immediately noticed.
(define dep-kind (lambda ()
- (if (and (hash-ref boot-modules (dep-module "module"))
- (=* (dep-module "on") "build-"))
- "prebootstrap"
+ (cond
+ ((and (hash-ref boot-modules (dep-module "module"))
+ (=* (dep-module "on") "build-"))
+ "prebootstrap")
- (if (or (= (dep-subtarget "on") "install-")
- (not (hash-ref boot-modules (dep-module "module")))
- (not (hash-ref boot-modules (dep-module "on"))))
- "normal"
- "bootstrap"))))
+ ((or (= (dep-subtarget "on") "install-")
+ (not (hash-ref boot-modules (dep-module "on"))))
+ "normal")
+
+ ((hash-ref boot-modules (dep-module "module"))
+ "bootstrap")
+
+ (1 "postbootstrap"))))
+
+ (define make-postboot-dep (lambda ()
+ (let ((target (dep-module "module")) (dep "stage_last"))
+ (unless (= (hash-ref postboot-targets target) dep)
+ (hash-create-handle! postboot-targets target dep)
+ ;; All non-bootstrap modules' configure target already
+ ;; depend on dep.
+ (unless (=* target "target-")
+ (string-append "configure-" target ": " dep "\n"))))))
;; We now build the hash table that is used by dep-kind.
(define boot-modules (make-hash-table 113))
+ (define postboot-targets (make-hash-table 113))
+]
[+ FOR host_modules +][+
@@ -1863,18 +1884,23 @@ configure-target-[+module+]: maybe-all-gcc[+
# to check for bootstrap/prebootstrap dependencies. To resolve
# prebootstrap dependencies, prebootstrap modules are gathered in
# a hash table.
-[+ FOR dependencies +][+ (make-dep "" "") +]
-[+ CASE (dep-kind) +]
-[+ == "prebootstrap"
- +][+ FOR bootstrap_stage +]
-[+ (make-dep (dep-stage) "") +][+
- ENDFOR bootstrap_stage +]
-[+ == "bootstrap"
- +][+ FOR bootstrap_stage +]
-[+ (make-dep (dep-stage) (dep-stage)) +][+
- ENDFOR bootstrap_stage +]
-[+ ESAC +][+
-ENDFOR dependencies +]
+[+ FOR dependencies +][+ CASE (dep-kind) +]
+[+ == "prebootstrap" +][+ (make-dep "" "") +][+ FOR bootstrap_stage +]
+[+ (make-dep (dep-stage) "") +][+ ENDFOR bootstrap_stage +]
+[+ == "bootstrap" +][+ (make-dep "" "") +][+ FOR bootstrap_stage +]
+[+ (make-dep (dep-stage) (dep-stage)) +][+ ENDFOR bootstrap_stage +]
+[+ == "normal" +][+ (make-dep "" "") +]
+[+ ESAC +][+ ENDFOR dependencies +]
+
+@if gcc-bootstrap
+[+ FOR dependencies +][+ CASE (dep-kind) +]
+[+ == "postbootstrap" +][+ (make-postboot-dep) +][+ ESAC +][+
+ENDFOR dependencies +]@endif gcc-bootstrap
+
+@unless gcc-bootstrap
+[+ FOR dependencies +][+ CASE (dep-kind) +]
+[+ == "postbootstrap" +][+ (make-dep "" "") +]
+[+ ESAC +][+ ENDFOR dependencies +]@endunless gcc-bootstrap
# Dependencies for target modules on other target modules are
# described by lang_env_dependencies; the defaults apply to anything
diff --git a/configure b/configure
index fe8e0f63410c..dd9fbe4d3229 100755
--- a/configure
+++ b/configure
@@ -7130,7 +7130,9 @@ INSTALL_GDB_TK=`echo ${GDB_TK} | sed s/-all-/-install-/g`
# extrasub-{build,host,target} not because there is any reason to split
# the substitutions up that way, but only to remain below the limit of
# 99 commands in a script, for HP-UX sed.
-# Do not nest @if/@endif pairs, because configure will not warn you at all.
+
+# Do not nest @if/@endif or @unless/@endunless pairs, because
+# configure will not warn you at all.
case "$enable_bootstrap:$ENABLE_GOLD: $configdirs :,$stage1_languages," in
yes:yes:*\ gold\ *:*,c++,*) ;;
@@ -7149,8 +7151,10 @@ for module in ${build_configdirs} ; do
extrasub_build="$extrasub_build
/^@if build-$module\$/d
/^@endif build-$module\$/d
+/^@unless build-$module\$/,/^@endunless build-$module\$/d
/^@if build-$module-$bootstrap_suffix\$/d
-/^@endif build-$module-$bootstrap_suffix\$/d"
+/^@endif build-$module-$bootstrap_suffix\$/d
+/^@unless build-$module-$bootstrap_suffix\$/,/^@endunless build-$module-$bootstrap_suffix\$/d"
done
extrasub_host=
for module in ${configdirs} ; do
@@ -7169,8 +7173,10 @@ for module in ${configdirs} ; do
extrasub_host="$extrasub_host
/^@if $module\$/d
/^@endif $module\$/d
+/^@unless $module\$/,/^@endunless $module\$/d
/^@if $module-$host_bootstrap_suffix\$/d
-/^@endif $module-$host_bootstrap_suffix\$/d"
+/^@endif $module-$host_bootstrap_suffix\$/d
+/^@unless $module-$host_bootstrap_suffix\$/,/^@endunless $module-$host_bootstrap_suffix\$/d"
done
extrasub_target=
for module in ${target_configdirs} ; do
@@ -7189,13 +7195,17 @@ for module in ${target_configdirs} ; do
extrasub_target="$extrasub_target
/^@if target-$module\$/d
/^@endif target-$module\$/d
+/^@unless target-$module\$/,/^@endunless target-$module\$/d
/^@if target-$module-$target_bootstrap_suffix\$/d
-/^@endif target-$module-$target_bootstrap_suffix\$/d"
+/^@endif target-$module-$target_bootstrap_suffix\$/d
+/^@unless target-$module-$target_bootstrap_suffix\$/,/^@endunless target-$module-$target_bootstrap_suffix\$/d"
done
# Do the final fixup along with target modules.
extrasub_target="$extrasub_target
-/^@if /,/^@endif /d"
+/^@if /,/^@endif /d
+/^@unless /d
+/^@endunless /d"
# Create the serialization dependencies. This uses a temporary file.
diff --git a/configure.ac b/configure.ac
index 28155a0e5938..a0b0917dd556 100644
--- a/configure.ac
+++ b/configure.ac
@@ -2719,7 +2719,9 @@ INSTALL_GDB_TK=`echo ${GDB_TK} | sed s/-all-/-install-/g`
# extrasub-{build,host,target} not because there is any reason to split
# the substitutions up that way, but only to remain below the limit of
# 99 commands in a script, for HP-UX sed.
-# Do not nest @if/@endif pairs, because configure will not warn you at all.
+
+# Do not nest @if/@endif or @unless/@endunless pairs, because
+# configure will not warn you at all.
case "$enable_bootstrap:$ENABLE_GOLD: $configdirs :,$stage1_languages," in
yes:yes:*\ gold\ *:*,c++,*) ;;
@@ -2738,8 +2740,10 @@ for module in ${build_configdirs} ; do
extrasub_build="$extrasub_build
/^@if build-$module\$/d
/^@endif build-$module\$/d
+/^@unless build-$module\$/,/^@endunless build-$module\$/d
/^@if build-$module-$bootstrap_suffix\$/d
-/^@endif build-$module-$bootstrap_suffix\$/d"
+/^@endif build-$module-$bootstrap_suffix\$/d
+/^@unless build-$module-$bootstrap_suffix\$/,/^@endunless build-$module-$bootstrap_suffix\$/d"
done
extrasub_host=
for module in ${configdirs} ; do
@@ -2758,8 +2762,10 @@ for module in ${configdirs} ; do
extrasub_host="$extrasub_host
/^@if $module\$/d
/^@endif $module\$/d
+/^@unless $module\$/,/^@endunless $module\$/d
/^@if $module-$host_bootstrap_suffix\$/d
-/^@endif $module-$host_bootstrap_suffix\$/d"
+/^@endif $module-$host_bootstrap_suffix\$/d
+/^@unless $module-$host_bootstrap_suffix\$/,/^@endunless $module-$host_bootstrap_suffix\$/d"
done
extrasub_target=
for module in ${target_configdirs} ; do
@@ -2778,13 +2784,17 @@ for module in ${target_configdirs} ; do
extrasub_target="$extrasub_target
/^@if target-$module\$/d
/^@endif target-$module\$/d
+/^@unless target-$module\$/,/^@endunless target-$module\$/d
/^@if target-$module-$target_bootstrap_suffix\$/d
-/^@endif target-$module-$target_bootstrap_suffix\$/d"
+/^@endif target-$module-$target_bootstrap_suffix\$/d
+/^@unless target-$module-$target_bootstrap_suffix\$/,/^@endunless target-$module-$target_bootstrap_suffix\$/d"
done
# Do the final fixup along with target modules.
extrasub_target="$extrasub_target
-/^@if /,/^@endif /d"
+/^@if /,/^@endif /d
+/^@unless /d
+/^@endunless /d"
# Create the serialization dependencies. This uses a temporary file.
--
Alexandre Oliva, freedom fighter https://FSFLA.org/blogs/lxo
Be the change, be Free! FSF Latin America board member
GNU Toolchain Engineer Free Software Evangelist
^ permalink raw reply [flat|nested] 16+ messages in thread
* Re: fix libcc1 dependencies in toplevel Makefile
2018-06-26 5:39 ` Alexandre Oliva
@ 2018-06-27 19:53 ` Olivier Hainque
0 siblings, 0 replies; 16+ messages in thread
From: Olivier Hainque @ 2018-06-27 19:53 UTC (permalink / raw)
To: Alexandre Oliva
Cc: Olivier Hainque, GCC Patches, Nicolas Roche, binutils,
gdb-patches, newlib
> On 26 Jun 2018, at 07:38, Alexandre Oliva <oliva@gnu.org> wrote:
>
> Here's the patch I'll install if nobody objects in the next few days.
> Tested on x86_64-linux-gnu with a gcc bootstrap tree, a gcc
> non-bootstrap tree, and a binutils+gdb tree.
Thanks a lot for this Alex!
^ permalink raw reply [flat|nested] 16+ messages in thread
end of thread, other threads:[~2018-06-27 19:53 UTC | newest]
Thread overview: 16+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2017-06-13 12:58 fix libcc1 dependencies in toplevel Makefile Olivier Hainque
2017-06-14 11:39 ` Nathan Sidwell
2017-06-14 21:11 ` Olivier Hainque
2017-06-15 12:03 ` Nathan Sidwell
2017-06-15 12:29 ` Olivier Hainque
2017-06-22 12:13 ` Alexandre Oliva
2017-06-26 7:41 ` Olivier Hainque
2017-06-27 16:32 ` Olivier Hainque
2017-06-27 19:53 ` Alexandre Oliva
2017-07-03 21:05 ` Olivier Hainque
2018-06-03 19:13 ` Alexandre Oliva
2018-06-12 2:50 ` Alexandre Oliva
2018-06-12 8:57 ` Olivier Hainque
2018-06-12 15:31 ` Jeff Law
2018-06-26 5:39 ` Alexandre Oliva
2018-06-27 19:53 ` Olivier Hainque
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).