Ping on go part.

On Tue, Dec 16, 2025 at 09:50:19AM +0100, Stefan Schulze Frielinghaus wrote:
> 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
> > 

Reply via email to