Ping on go part.
On Wed, Dec 03, 2025 at 03:03:56PM +0100, Stefan Schulze Frielinghaus wrote: > From: Stefan Schulze Frielinghaus <[email protected]> > > While experimenting with a new warning, I was running into build errors > for libphobos as e.g. > > libtool: compile: mv -f "atomic.o" "core/.libs/atomic.o" > mv: cannot stat 'atomic.o': No such file or directory > > or when building libgo like > > libtool: compile: mv -f "tables.o" ".libs/unicode.o" > mv: cannot stat 'tables.o': No such file or directory > > These boil down to the fact that test _LT_COMPILER_C_O evaluates to "no" > for those, i.e., we have > > lt_cv_prog_compiler_c_o=yes > lt_cv_prog_compiler_c_o_D=no > > likewise > > lt_cv_prog_compiler_c_o=yes > lt_cv_prog_compiler_c_o_GO=no > > and at the same time _LT_ENABLE_LOCK/need_locks evaluates to "no" which > breaks parallel builds due to races on those files. Although I think > for a parallel build need_locks should be rather set to "yes" in case > _LT_COMPILER_C_O evaluates to "no", this patch enables a parallel build > without the need of locks. > > _LT_COMPILER_C_O evaluates to "no" in the first place because > boilerplate is computed with a different CC when it is compared to. > When boilerplate is computed, CC equals xgcc which means we emit > warnings of the form > > xgcc: warning: ... > d21: warning: ... > > whereas when we compute _LT_COMPILER_C_O, CC is changed shortly before > to gdc so we end up with warnings of the form > > gdc: warning: ... > d21: warning: ... > > which ultimately means the check whether the warning is expected fails > and we do not set _LT_COMPILER_C_O to "yes". > > Fixed by moving the computation of boilerplate after setting CC to > gdc/gccgo. > > PR d/122794 > > ChangeLog: > > * libgo/config/libtool.m4: Move _LT_COMPILER_BOILERPLATE and > _LT_LINKER_BOILERPLATE after setting CC. > * libgo/configure: Regenerate. > > libphobos/ChangeLog: > > * configure: Regenerate. > * m4/libtool.m4: Move _LT_COMPILER_BOILERPLATE and > _LT_LINKER_BOILERPLATE after setting CC. > --- > Note, for the sake of completeness in libgo/config/libtool.m4 I have moved > the boilerplate computation not only for _LT_LANG_GO_CONFIG but also for > _LT_LANG_{CXX,F77,FC,GCJ,RC}_CONFIG. > > Successfully bootstrapped and regtested on x86_64. Ok for mainline? > > libgo/config/libtool.m4 | 49 +++++++++++++++++++++-------------------- > libgo/configure | 28 +++++++++++------------ > libphobos/configure | 28 +++++++++++------------ > libphobos/m4/libtool.m4 | 8 +++---- > 4 files changed, 57 insertions(+), 56 deletions(-) > > diff --git a/libgo/config/libtool.m4 b/libgo/config/libtool.m4 > index 4ca90ee71bc..4d27d86b63b 100644 > --- a/libgo/config/libtool.m4 > +++ b/libgo/config/libtool.m4 > @@ -5476,10 +5476,6 @@ if test "$_lt_caught_CXX_error" != yes; then > # ltmain only uses $CC for tagged configurations so make sure $CC is set. > _LT_TAG_COMPILER > > - # save warnings/boilerplate of simple test code > - _LT_COMPILER_BOILERPLATE > - _LT_LINKER_BOILERPLATE > - > # Allow CC to be a program name with arguments. > lt_save_CC=$CC > lt_save_LD=$LD > @@ -5503,6 +5499,10 @@ if test "$_lt_caught_CXX_error" != yes; then > _LT_TAGVAR(compiler, $1)=$CC > _LT_CC_BASENAME([$compiler]) > > + # save warnings/boilerplate of simple test code > + _LT_COMPILER_BOILERPLATE > + _LT_LINKER_BOILERPLATE > + > if test -n "$compiler"; then > # We don't want -fno-exception when compiling C++ code, so set the > # no_builtin_flag separately > @@ -6727,10 +6727,6 @@ if test "$_lt_disable_F77" != yes; then > # ltmain only uses $CC for tagged configurations so make sure $CC is set. > _LT_TAG_COMPILER > > - # save warnings/boilerplate of simple test code > - _LT_COMPILER_BOILERPLATE > - _LT_LINKER_BOILERPLATE > - > # Allow CC to be a program name with arguments. > lt_save_CC="$CC" > lt_save_GCC=$GCC > @@ -6739,6 +6735,11 @@ if test "$_lt_disable_F77" != yes; then > _LT_TAGVAR(compiler, $1)=$CC > _LT_CC_BASENAME([$compiler]) > GCC=$G77 > + > + # save warnings/boilerplate of simple test code > + _LT_COMPILER_BOILERPLATE > + _LT_LINKER_BOILERPLATE > + > if test -n "$compiler"; then > AC_MSG_CHECKING([if libtool supports shared libraries]) > AC_MSG_RESULT([$can_build_shared]) > @@ -6857,10 +6858,6 @@ if test "$_lt_disable_FC" != yes; then > # ltmain only uses $CC for tagged configurations so make sure $CC is set. > _LT_TAG_COMPILER > > - # save warnings/boilerplate of simple test code > - _LT_COMPILER_BOILERPLATE > - _LT_LINKER_BOILERPLATE > - > # Allow CC to be a program name with arguments. > lt_save_CC="$CC" > lt_save_GCC=$GCC > @@ -6868,6 +6865,10 @@ if test "$_lt_disable_FC" != yes; then > compiler=$CC > GCC=$ac_cv_fc_compiler_gnu > > + # save warnings/boilerplate of simple test code > + _LT_COMPILER_BOILERPLATE > + _LT_LINKER_BOILERPLATE > + > _LT_TAGVAR(compiler, $1)=$CC > _LT_CC_BASENAME([$compiler]) > > @@ -6952,10 +6953,6 @@ lt_simple_link_test_code='public class conftest { > public static void main(String > # ltmain only uses $CC for tagged configurations so make sure $CC is set. > _LT_TAG_COMPILER > > -# save warnings/boilerplate of simple test code > -_LT_COMPILER_BOILERPLATE > -_LT_LINKER_BOILERPLATE > - > # Allow CC to be a program name with arguments. > lt_save_CC="$CC" > lt_save_GCC=$GCC > @@ -6973,6 +6970,10 @@ _LT_TAGVAR(old_archive_cmds, $1)=$old_archive_cmds > _LT_TAGVAR(reload_flag, $1)=$reload_flag > _LT_TAGVAR(reload_cmds, $1)=$reload_cmds > > +# save warnings/boilerplate of simple test code > +_LT_COMPILER_BOILERPLATE > +_LT_LINKER_BOILERPLATE > + > ## CAVEAT EMPTOR: > ## There is no encapsulation within the following macros, do not change > ## the running order or otherwise move them around unless you know exactly > @@ -7019,10 +7020,6 @@ lt_simple_link_test_code='package main; func main() { > }' > # ltmain only uses $CC for tagged configurations so make sure $CC is set. > _LT_TAG_COMPILER > > -# save warnings/boilerplate of simple test code > -_LT_COMPILER_BOILERPLATE > -_LT_LINKER_BOILERPLATE > - > # Allow CC to be a program name with arguments. > lt_save_CC="$CC" > lt_save_GCC="$GCC" > @@ -7033,6 +7030,10 @@ _LT_TAGVAR(compiler, $1)=$CC > _LT_TAGVAR(LD, $1)="$LD" > _LT_CC_BASENAME([$compiler]) > > +# save warnings/boilerplate of simple test code > +_LT_COMPILER_BOILERPLATE > +_LT_LINKER_BOILERPLATE > + > # Go did not exist at the time GCC didn't implicitly link libc in. > _LT_TAGVAR(archive_cmds_need_lc, $1)=no > > @@ -7085,10 +7086,6 @@ lt_simple_link_test_code="$lt_simple_compile_test_code" > # ltmain only uses $CC for tagged configurations so make sure $CC is set. > _LT_TAG_COMPILER > > -# save warnings/boilerplate of simple test code > -_LT_COMPILER_BOILERPLATE > -_LT_LINKER_BOILERPLATE > - > # Allow CC to be a program name with arguments. > lt_save_CC="$CC" > lt_save_GCC=$GCC > @@ -7099,6 +7096,10 @@ _LT_TAGVAR(compiler, $1)=$CC > _LT_CC_BASENAME([$compiler]) > _LT_TAGVAR(lt_cv_prog_compiler_c_o, $1)=yes > > +# save warnings/boilerplate of simple test code > +_LT_COMPILER_BOILERPLATE > +_LT_LINKER_BOILERPLATE > + > if test -n "$compiler"; then > : > _LT_CONFIG($1) > diff --git a/libgo/configure b/libgo/configure > index b1a2228fa1b..79b2f8d5cae 100755 > --- a/libgo/configure > +++ b/libgo/configure > @@ -11912,20 +11912,6 @@ LTCFLAGS=${LTCFLAGS-"$CFLAGS"} > compiler=$CC > > > -# save warnings/boilerplate of simple test code > -ac_outfile=conftest.$ac_objext > -echo "$lt_simple_compile_test_code" >conftest.$ac_ext > -eval "$ac_compile" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err > -_lt_compiler_boilerplate=`cat conftest.err` > -$RM conftest* > - > -ac_outfile=conftest.$ac_objext > -echo "$lt_simple_link_test_code" >conftest.$ac_ext > -eval "$ac_link" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err > -_lt_linker_boilerplate=`cat conftest.err` > -$RM -r conftest* > - > - > # Allow CC to be a program name with arguments. > lt_save_CC="$CC" > lt_save_GCC="$GCC" > @@ -11945,6 +11931,20 @@ done > cc_basename=`$ECHO "$cc_temp" | $SED "s%.*/%%; s%^$host_alias-%%"` > > > +# save warnings/boilerplate of simple test code > +ac_outfile=conftest.$ac_objext > +echo "$lt_simple_compile_test_code" >conftest.$ac_ext > +eval "$ac_compile" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err > +_lt_compiler_boilerplate=`cat conftest.err` > +$RM conftest* > + > +ac_outfile=conftest.$ac_objext > +echo "$lt_simple_link_test_code" >conftest.$ac_ext > +eval "$ac_link" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err > +_lt_linker_boilerplate=`cat conftest.err` > +$RM -r conftest* > + > + > # Go did not exist at the time GCC didn't implicitly link libc in. > archive_cmds_need_lc_GO=no > > diff --git a/libphobos/configure b/libphobos/configure > index 1b540662073..b533f1c6947 100755 > --- a/libphobos/configure > +++ b/libphobos/configure > @@ -12624,20 +12624,6 @@ LTCFLAGS=${LTCFLAGS-"$CFLAGS"} > compiler=$CC > > > -# save warnings/boilerplate of simple test code > -ac_outfile=conftest.$ac_objext > -echo "$lt_simple_compile_test_code" >conftest.$ac_ext > -eval "$ac_compile" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err > -_lt_compiler_boilerplate=`cat conftest.err` > -$RM conftest* > - > -ac_outfile=conftest.$ac_objext > -echo "$lt_simple_link_test_code" >conftest.$ac_ext > -eval "$ac_link" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err > -_lt_linker_boilerplate=`cat conftest.err` > -$RM -r conftest* > - > - > # Allow CC to be a program name with arguments. > lt_save_CC=$CC > lt_save_CFLAGS=$CFLAGS > @@ -12659,6 +12645,20 @@ done > cc_basename=`$ECHO "$cc_temp" | $SED "s%.*/%%; s%^$host_alias-%%"` > > > +# save warnings/boilerplate of simple test code > +ac_outfile=conftest.$ac_objext > +echo "$lt_simple_compile_test_code" >conftest.$ac_ext > +eval "$ac_compile" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err > +_lt_compiler_boilerplate=`cat conftest.err` > +$RM conftest* > + > +ac_outfile=conftest.$ac_objext > +echo "$lt_simple_link_test_code" >conftest.$ac_ext > +eval "$ac_link" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err > +_lt_linker_boilerplate=`cat conftest.err` > +$RM -r conftest* > + > + > # GDC did not exist at the time GCC didn't implicitly link libc in. > archive_cmds_need_lc_D=no > > diff --git a/libphobos/m4/libtool.m4 b/libphobos/m4/libtool.m4 > index 0263a530cf0..6d7a6f95863 100644 > --- a/libphobos/m4/libtool.m4 > +++ b/libphobos/m4/libtool.m4 > @@ -34,10 +34,6 @@ lt_simple_link_test_code="\ > # ltmain only uses $CC for tagged configurations so make sure $CC is set. > _LT_TAG_COMPILER > > -# save warnings/boilerplate of simple test code > -_LT_COMPILER_BOILERPLATE > -_LT_LINKER_BOILERPLATE > - > # Allow CC to be a program name with arguments. > lt_save_CC=$CC > lt_save_CFLAGS=$CFLAGS > @@ -50,6 +46,10 @@ _LT_TAGVAR(compiler, $1)=$CC > _LT_TAGVAR(LD, $1)=$CC > _LT_CC_BASENAME([$compiler]) > > +# save warnings/boilerplate of simple test code > +_LT_COMPILER_BOILERPLATE > +_LT_LINKER_BOILERPLATE > + > # GDC did not exist at the time GCC didn't implicitly link libc in. > _LT_TAGVAR(archive_cmds_need_lc, $1)=no > > -- > 2.49.0 >
