On Sat, Nov 15, 2025 at 07:17:49PM +0000, Gavin Smith wrote:
> On Thu, Nov 13, 2025 at 07:25:13PM +0000, Gavin Smith wrote:
>  
> > You can see that the -I/opt/csw/include option is given on the first
> > run of "cc".  On this system, this directory contains a GNU "libintl.h"
> > file which appears to redefine "gettext" as "libintl_gettext".  This flag
> > appears to come from the Perl configuration values:
> > 
> > perl_conf_CFLAGS='-D_REENTRANT -xO3 -m32 -xarch=pentium_pro 
> > -xchip=pentium_pro -I/opt/csw/bdb48/include -I/opt/csw/include 
> > -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -DPERL_USE_SAFE_PUTENV -KPIC'
> > 
> > But this is not used for the tests in tta/configure.ac.  Code to use this
> > value in the value of CFLAGS is commented out:

I had a look at the texinfo-solaris11-sparc opencsw logs, and the error
is
Undefined                       first referenced
 symbol                             in file
libintl_dcngettext                  ctexi2any-texi2any.o
libintl_gettext                     ctexi2any-texi2any.o
libintl_dcgettext                   ctexi2any-texi2any.o
ld: fatal: symbol referencing errors

But when I look at the ctexi2any-texi2any.o compilation, it is:
/opt/SUNWspro/bin/cc -DHAVE_CONFIG_H -I.  -I./parsetexi -I./convert -I./main 
-I./structuring_transfo -I. -DDATADIR=\"/usr/local/share\" 
-DSYSCONFDIR=\"/usr/local/etc\" -I../gnulib/lib -I../gnulib/lib -D_REENTRANT 
-xO3 -m32 -xarch=sparc -I/opt/csw/bdb48/include -I/opt/csw/include 
-D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -DPERL_USE_SAFE_PUTENV  
-I/opt/csw/lib/perl/5.10.1/CORE  -DPATH_SEP=\":\" -DEMBED_PERL    -c -o 
ctexi2any-texi2any.o `test -f 'texi2any.c' || echo './'`texi2any.c

So, there is -I/opt/csw/include.  The reason why there is -I/opt/csw/include
could be because there is
  CFLAGS=-I/opt/csw/include
in the environment for the ./configure call.

But there is also -I/opt/csw/lib/perl/5.10.1/CORE, because there is
$(PERL_EXTUTILS_EMBED_ccopts) on ctexi2any_CPPFLAGS.  I have no way to
check the headers, but it could be possible that there is a mixup
precisely because there is are both the Perl includes and non-Perl
includes.  The reason why they are there is explained in a comment in
tta/C/Makefile.am:

# NOTE it is important to use PERL_EXTUTILS_EMBED_ccopts here to match
# with PERL_EXTUTILS_EMBED_ldopts used for linking, or in some platforms where
# the compiling and linking flags must match there will be a failure to
# build (for example AlmaLinux).
# This is not a perfect situation, though, as it means that we mix Perl
# and Gnulib cflags.  It may not be such an issue, as we do not actually
# include the Perl headers.

I will try to remove PERL_EXTUTILS_EMBED_ccopts to see if it builds in
opencsw without this.

-- 
Pat

Reply via email to