stdcxx-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Nicole Willson <will...@roguewave.com>
Subject RE: Any ideas on these StdLib build errors?
Date Mon, 13 Feb 2006 23:12:36 GMT
Maybe I should not need to add -D_RWSTD_NO_IMPLICIT_INCLUSION, but when I do
it compiles, when I don't it fails.  -qtemplateregistry does not work -
stdlib fails to compile for the same reason as -qnotempinc.

However, -qtempinc seems to work.  Now the question becomes how do you get
it to choose -qtempinc rather than -qnotempinc?  Although I guess that is
more a question for the RCB forum.

Nicole Willson
Consulting Engineer
Rogue Wave Software, Inc.
A Division of Quovadx
303-545-3210


-----Original Message-----
From: Martin Sebor [mailto:sebor@roguewave.com] 
Sent: Monday, February 13, 2006 1:26 PM
To: stdcxx-dev@incubator.apache.org
Subject: Re: Any ideas on these StdLib build errors?

Nicole Willson wrote:
> Well, I have stdlib compiling without errors.  My compile line is:
> 
> xlC -F ${VACCFG} -qarch=ppc64 -q64 -D_RWSTD_NO_IMPLICIT_INCLUSION
> -D_RWCONFIG=std64rd -I./../../../include -I./../../.. -I.. -I.
> -D_RWBUILD_std -qpic -qrtti -g -qsuppress=1540-0152:1540-2908:1500-029
> -qnotempinc -c ../various_files.cpp
> 
> As you can see, I had to add _RWSTD_NO_IMPLICIT_INCLUSION. 

You should not need to do that. The -qnotempinc option is supposed
to cause the XLC++ __TEMPINC__ macro to be #undefined. rw/_config.h
looks at the XLC++ macro and overrides _RWSTD_NO_IMPLICIT_INCLUSION
accordingly. See below.

More important, though, is that you shouldn't be using -qnotempinc
at all. It's an inferior template instantiation model that causes
all kinds of problems, including code bloat and ODR violations.
The recommended mode is -qtemplateregistry (which doesn't solve all
the problems but it's better and the hope is that eventually it will).
If you feel like experimenting (since you are using an untested mode
:) you could give -qtempinc a try. That mode, while old and not really
enhanced by IBM anymore, gave the best overall results with prior
release of the compiler on AIX.

Here's the _config.h magic:

    // VisualAge for C++ version >= 5.0.2.0, when the tempinc model
    // (which makes use of implicit inclusion) is in effect (i.e.,
    // when neither of -qtemplateregistry or -qnotempinc is specified
    // on the command line) the compiler defines the macro __TEMPINC__
#  if __IBMCPP__ < 502 || !defined (__TEMPINC__)
      // override the autodetected setting of the macro
#    undef  _RWSTD_NO_IMPLICIT_INCLUSION
#    define _RWSTD_NO_IMPLICIT_INCLUSION
#  endif

#  if __IBMCPP__ >=  502 && defined (__TEMPINC__)
      // override the autodetected setting of the macro
#    undef _RWSTD_NO_IMPLICIT_INCLUSION
#  endif   // VAC++ >= 5.0.2 && __TEMPINC__

Martin

Mime
View raw message