Bug 45144

Summary: xaw3d.pc is missing -DXAW_INTERNATIONALIZATION when compiled with --enable-internationalization
Product: xorg Reporter: Samuli Suominen <ssuominen>
Component: Lib/Xaw3DAssignee: Xorg Project Team <xorg-team>
Status: RESOLVED FIXED QA Contact: Xorg Project Team <xorg-team>
Severity: normal    
Priority: medium CC: galtgendo, mattst88, memsize
Version: unspecified   
Hardware: Other   
OS: All   
Whiteboard:
i915 platform: i915 features:

Description Samuli Suominen 2012-01-23 11:58:59 UTC
libXaw3d-1.6 installs /usr/include/X11/Xaw3d/SimpleP.h only when it's ./configured with --enable-internationalization

and SimpleP.h has #ifdef block for XAW_INTERNATIONALIZATION

Then GV ( http://www.gnu.org/software/gv/ ) has configure.in check for SimpleP.h, and it needs this piece of code from it:

#ifdef XAW_INTERNATIONALIZATION
    Boolean     international;
#endif

And that check fails, because nothing is exporting the -DXAW_INTERNATIONALIZATION flag.

In order to resolve this issue, I'd propose the following:

If libXaw3d is ./configured with --enable-internationalization, it should add -DXAW_INTERNATIONALIZATION to Cflags: line of xaw3d.pc

Then GV can be ported to use xaw3d.pc to get the flag
Comment 1 Matt Turner 2012-01-23 15:04:39 UTC
Patch sent.
Comment 2 Gaetan Nadon 2012-01-24 09:59:32 UTC
(In reply to comment #0)
> libXaw3d-1.6 installs /usr/include/X11/Xaw3d/SimpleP.h only when it's
> ./configured with --enable-internationalization
I cannot reproduce this problem. The SimpleP.h header file is installed and uninstalled properly. These are conditionally installed:
if XAW_INTERNATIONALIZATION
I18N_HDRS = \
       X11/Xaw3d/MultiSrc.h \
       X11/Xaw3d/MultiSrcP.h \
       X11/Xaw3d/MultiSink.h \
       X11/Xaw3d/MultiSinkP.h \
       X11/Xaw3d/VendorEP.h \
       X11/Xaw3d/XawImP.h
endif

Can you check this again?
> 
> and SimpleP.h has #ifdef block for XAW_INTERNATIONALIZATION
> 
> Then GV ( http://www.gnu.org/software/gv/ ) has configure.in check for
> SimpleP.h, and it needs this piece of code from it:
> 
> #ifdef XAW_INTERNATIONALIZATION
>     Boolean     international;
> #endif
> 
It's ok for gv to have decided to use the i18n feature of libXaw3d.

> And that check fails, because nothing is exporting the
> -DXAW_INTERNATIONALIZATION flag.
> 
> In order to resolve this issue, I'd propose the following:
> 
> If libXaw3d is ./configured with --enable-internationalization, it should add
> -DXAW_INTERNATIONALIZATION to Cflags: line of xaw3d.pc
> 
> Then GV can be ported to use xaw3d.pc to get the flag

That seems to be the right thing to do. The Cflags is provided for those clients using libXaw3d.
Comment 3 Samuli Suominen 2012-01-24 10:48:49 UTC
(In reply to comment #2)
> (In reply to comment #0)
> > libXaw3d-1.6 installs /usr/include/X11/Xaw3d/SimpleP.h only when it's
> > ./configured with --enable-internationalization
> I cannot reproduce this problem. The SimpleP.h header file is installed and
> uninstalled properly. These are conditionally installed:
> if XAW_INTERNATIONALIZATION
> I18N_HDRS = \
>        X11/Xaw3d/MultiSrc.h \
>        X11/Xaw3d/MultiSrcP.h \
>        X11/Xaw3d/MultiSink.h \
>        X11/Xaw3d/MultiSinkP.h \
>        X11/Xaw3d/VendorEP.h \
>        X11/Xaw3d/XawImP.h
> endif
> 
> Can you check this again?

wow, I can't believe I typed it that wrong, sorry

I meant XawImP.h and the problem was with xterm,

ssuominen@null ~ $ cd /tmp/xterm-278/
ssuominen@null /tmp/xterm-278 $ grep Xaw.*h aclocal.m4 configure.in 
aclocal.m4:#include <X11/Xaw/XawImP.h>
Comment 4 Gaetan Nadon 2012-01-24 11:31:01 UTC
(In reply to comment #3)
> (In reply to comment #2)
> > (In reply to comment #0)
> > > libXaw3d-1.6 installs /usr/include/X11/Xaw3d/SimpleP.h only when it's
> > > ./configured with --enable-internationalization
> > I cannot reproduce this problem. The SimpleP.h header file is installed and
> > uninstalled properly. These are conditionally installed:
> > if XAW_INTERNATIONALIZATION
> > I18N_HDRS = \
> >        X11/Xaw3d/MultiSrc.h \
> >        X11/Xaw3d/MultiSrcP.h \
> >        X11/Xaw3d/MultiSink.h \
> >        X11/Xaw3d/MultiSinkP.h \
> >        X11/Xaw3d/VendorEP.h \
> >        X11/Xaw3d/XawImP.h
> > endif
> > 
> > Can you check this again?
> 
> wow, I can't believe I typed it that wrong, sorry
> 
> I meant XawImP.h and the problem was with xterm,
> 
> ssuominen@null ~ $ cd /tmp/xterm-278/
> ssuominen@null /tmp/xterm-278 $ grep Xaw.*h aclocal.m4 configure.in 
> aclocal.m4:#include <X11/Xaw/XawImP.h>

Thanks fo verifying this.

Many headers in include/X11/Xaw3d have ifdef XAW_INTERNATIONALIZATION and not only those who appear to be private, so the -DXAW_INTERNATIONALIZATION should be in Cflags.
Comment 5 Rafał Mużyło 2012-01-25 03:06:50 UTC
Matt, do you remember one of my first mails on "Wed, 3 Aug 2011 01:20:27 +0200" ?
Back then, I wrote:
"Well, but we're not done yet - those four defines need to be added in a
private header (at least it seems so), so the build time settings are
preserved for installed lib. I've yet to come up with an idea what would
be the most convenient way to do it.".

I've never got to it, but it seems neither did anyone else.

Use of freedesktop.org services, including Bugzilla, is subject to our Code of Conduct. How we collect and use information is described in our Privacy Policy.