Hello, I'm having a hard time compiling boost on AIX using xlC. 1) My general question, is what steps have people taken to compile boost on AIX using xlC? - did you modify makefiles, and use gmake ? - did you use bjam instead ? - what changes are needed to various makefiles, etc., to compile on AIX with xlC ? - did you use gnu compatible xlc ? 2) Currently I'm attempting to build regex right now on AIX with xlC I could compile it easily using gcc: gmake -fgcc.mak But I can't using xlC. I've modified generic.mak, to use xlC as the compiler, and it doesn't get that far. I'm using this within the */regex/build directory. Warning messages that I've encountered so far include the following: (these are just snippets) The incomplete class "gcc_3_2_wknd" must not be used as a qualifier. A non-type template parameter cannot have type "const bool" After the warning messages are printed out, gmake returns Error 1: gmake: *** [xlC/boost_regex-xlC-1_33_1/cregex.o] Error 1 Thanks for any help. Don
on Tue Jun 05 2007, dx
Hello,
I'm having a hard time compiling boost on AIX using xlC.
Things will be better shortly, for 1.34.1: http://svn.boost.org/trac/boost/ticket/583 -- Dave Abrahams Boost Consulting http://www.boost-consulting.com
David Abrahams wrote:
on Tue Jun 05 2007, dx
wrote: Hello,
I'm having a hard time compiling boost on AIX using xlC.
Things will be better shortly, for 1.34.1:
Dave, thanks for the information. Does this mean that in the past, compiling using xlC was very difficult, and needed many hacks to the makefiles and other files? When 1.34.1 is released, will this result in xlC being added to the list of supported toolsets? (listed in 5.2.2 Identify Your Toolset, section of the Boost Getting Started on Unix Variants doc) Thanks. Don
dx wrote:
The incomplete class "gcc_3_2_wknd" must not be used as a qualifier.
A non-type template parameter cannot have type "const bool"
That indicates a problem with Boost.MPL and that compiler. Are you using an up to date version of xlc because I believe Boost.Regex does/should build fine with that compiler. John.
John Maddock wrote:
That indicates a problem with Boost.MPL and that compiler. Are you using an up to date version of xlc because I believe Boost.Regex does/should build fine with that compiler.
John, 1) xlC -qversion returns the following: IBM XL C/C++ Enterprise Edition V7.0 Version: 07.00.0000.0005 2) As mentioned previously, I have done nothing special to the makefile for regex, other than pointing to xlC for the compiler. (and xlC/ as the target output dir) It is possible I need to make major modifications to the makefile to get this to work. I am not an expert user of xlC, and just recently attempted to use it with Boost. 3) If someone has actually gone through the process, and can provide me the information , of modifying the generic makefiles to use with xlC on AIX, and building Boost.regex successfully, then that is what I'm really looking for. I still haven't heard that anyone has actually compiled Boost.Regex with xlC on AIX. Thanks, Don
dx wrote:
John Maddock wrote:
That indicates a problem with Boost.MPL and that compiler. Are you using an up to date version of xlc because I believe Boost.Regex does/should build fine with that compiler.
John,
1) xlC -qversion returns the following: IBM XL C/C++ Enterprise Edition V7.0 Version: 07.00.0000.0005
I'm not familiar with AIX so I can't tell if that's up to date or not.
2) As mentioned previously, I have done nothing special to the makefile for regex, other than pointing to xlC for the compiler. (and xlC/ as the target output dir)
It is possible I need to make major modifications to the makefile to get this to work.
No, it should just work: BTW the regex lib is "just a bunch of sources", so you could equally just add the sources to your IDE or whatever if you have one.
I am not an expert user of xlC, and just recently attempted to use it with Boost.
3) If someone has actually gone through the process, and can provide me the information , of modifying the generic makefiles to use with xlC on AIX, and building Boost.regex successfully, then that is what I'm really looking for.
I still haven't heard that anyone has actually compiled Boost.Regex with xlC on AIX.
I know that the IBM compiler team regularly build/test boost with their compiler releases, so this all should just plain work. That's what made me wonder if you were using an older compiler version: the error message you were seeing is due to the compiler choking on Boost.MPL, which Regex depends on. Are there any std comformity compiler flags you can turn on? John.
John Maddock wrote:
I still haven't heard that anyone has actually compiled Boost.Regex with xlC on AIX.
I know that the IBM compiler team regularly build/test boost with their compiler releases, so this all should just plain work. That's what made me wonder if you were using an older compiler version: the error message you were seeing is due to the compiler choking on Boost.MPL, which Regex depends on. Are there any std comformity compiler flags you can turn on?
John.
John, This is probably the best hint. After reading your email I visited the IBM XL C/C++ compiler site, searched for boost, and there is information related to modifications to Boost for Xlc (v8), etc. When I have figured this out I'll post what I learnt back to the message board. Thanks, Don
On Jun 6, 2007, at 10:23 AM, John Maddock wrote:
dx wrote:
The incomplete class "gcc_3_2_wknd" must not be used as a qualifier.
A non-type template parameter cannot have type "const bool"
That indicates a problem with Boost.MPL and that compiler. Are you using an up to date version of xlc because I believe Boost.Regex does/should build fine with that compiler.
that sounds like a very familiar problem on AIX that I believe I have found a workaround for a while ago. I'll try to find it. Matthias
I can now compile regex (Boost v1.33) using xlC v8.0, without any modifications to any Boost src code, except for the generic.mak found within the regex build area. ------- here are the details -------- I am now able to compile regex (Boost v1.33) using the following version of xlC: (version info returned by the command xlC_r -qversion) IBM XL C/C++ Enterprise Edition V8.0 for AIX Version: 8.00.0000.0012 (As mentioned previously I had been using V7.0 and I could not get it to work.) I compiled it within the directory: $BOOST_ROOT/libs/regex/build I modified generic.mak as needed, using xlC_r as the compiler, and ran gmake. **I did not need to make any modifications to any of the Boost source code, as this process was defined on the IBM website for use with Boost V1.32 and I was compiling Boost V1.33** Note that I have not yet tried to compile any other parts of Boost with xlC V8.0. Thanks for all of your input. John Maddock wrote:
dx wrote:
The incomplete class "gcc_3_2_wknd" must not be used as a qualifier.
A non-type template parameter cannot have type "const bool"
That indicates a problem with Boost.MPL and that compiler. Are you using an up to date version of xlc because I believe Boost.Regex does/should build fine with that compiler.
John.
On Jun 5, 2007, at 8:34 PM, dx wrote:
The incomplete class "gcc_3_2_wknd" must not be used as a qualifier.
This patch on boost/mpl/has_xxx.hpp helped for Boost 1.33.1: I moved
the gcc_3_2_wknd struct outside the class scope.
Matthias
--- boost/mpl/has_xxx.hpp 2005-06-15 12:43:23.000000000 +0200
+++ /Users/troyer/Desktop/has_xxx.hpp 2007-06-12 10:36:42.000000000
+0200
@@ -1,7 +1,6 @@
#ifndef BOOST_MPL_HAS_XXX_HPP_INCLUDED
#define BOOST_MPL_HAS_XXX_HPP_INCLUDED
-
// Copyright Aleksey Gurtovoy 2002-2004
// Copyright David Abrahams 2002-2003
//
@@ -183,21 +182,21 @@
# else // other SFINAE-capable compilers
+ struct gcc_3_2_wknd
+ {
+ template< typename U >
+ static boost::mpl::aux::yes_tag test(
+ boost::mpl::aux::type_wrapper<U> const volatile*
+ , boost::mpl::aux::type_wrapper
Hi Matthias, Thanks for this information. I will try some of this with xlC v7.0, but note that I was able to compile regex v1.33 without any modification to the code using xlC v8. (I just sent a detailed email regarding this). Matthias Troyer wrote:
On Jun 5, 2007, at 8:34 PM, dx wrote:
The incomplete class "gcc_3_2_wknd" must not be used as a qualifier.
This patch on boost/mpl/has_xxx.hpp helped for Boost 1.33.1: I moved the gcc_3_2_wknd struct outside the class scope.
Matthias
--- boost/mpl/has_xxx.hpp 2005-06-15 12:43:23.000000000 +0200 +++ /Users/troyer/Desktop/has_xxx.hpp 2007-06-12 10:36:42.000000000 +0200 @@ -1,7 +1,6 @@ #ifndef BOOST_MPL_HAS_XXX_HPP_INCLUDED #define BOOST_MPL_HAS_XXX_HPP_INCLUDED - // Copyright Aleksey Gurtovoy 2002-2004 // Copyright David Abrahams 2002-2003 // @@ -183,21 +182,21 @@ # else // other SFINAE-capable compilers + struct gcc_3_2_wknd + { + template< typename U > + static boost::mpl::aux::yes_tag test( + boost::mpl::aux::type_wrapper<U> const volatile* + , boost::mpl::aux::type_wrapper
* = 0 + ); + + static boost::mpl::aux::no_tag test(...); + }; + # define BOOST_MPL_HAS_XXX_TRAIT_NAMED_DEF(trait, name, default_) \ template< typename T, typename fallback_ = boost::mpl::bool_ > \ struct trait \ { \ - struct gcc_3_2_wknd \ - { \ - template< typename U > \ - static boost::mpl::aux::yes_tag test( \ - boost::mpl::aux::type_wrapper<U> const volatile* \ - , boost::mpl::aux::type_wrapper * = 0 \ - ); \ - \ - static boost::mpl::aux::no_tag test(...); \ - }; \ - \ typedef boost::mpl::aux::type_wrapper<T> t_; \ BOOST_STATIC_CONSTANT(bool, value = \ sizeof(gcc_3_2_wknd::test(static_cast (0))) \ _______________________________________________ Boost-users mailing list Boost-users@lists.boost.org http://lists.boost.org/mailman/listinfo.cgi/boost-users
Yes, I can confirm that also we did not need any modifications for xlC 8, but some machines still have xlC 7. Boost 1.34 unfortunately causes a lot of problems. We are trying to get regression tests for xlC started since it will be an important platform for our codes in the future. Matthias On 15 Jun 2007, at 15:19, dx wrote:
Hi Matthias,
Thanks for this information.
I will try some of this with xlC v7.0, but note that I was able to compile regex v1.33 without any modification to the code using xlC v8. (I just sent a detailed email regarding this).
Matthias Troyer wrote:
On Jun 5, 2007, at 8:34 PM, dx wrote:
The incomplete class "gcc_3_2_wknd" must not be used as a qualifier.
This patch on boost/mpl/has_xxx.hpp helped for Boost 1.33.1: I moved the gcc_3_2_wknd struct outside the class scope.
Matthias
--- boost/mpl/has_xxx.hpp 2005-06-15 12:43:23.000000000 +0200 +++ /Users/troyer/Desktop/has_xxx.hpp 2007-06-12 10:36:42.000000000 +0200 @@ -1,7 +1,6 @@ #ifndef BOOST_MPL_HAS_XXX_HPP_INCLUDED #define BOOST_MPL_HAS_XXX_HPP_INCLUDED - // Copyright Aleksey Gurtovoy 2002-2004 // Copyright David Abrahams 2002-2003 // @@ -183,21 +182,21 @@ # else // other SFINAE-capable compilers + struct gcc_3_2_wknd + { + template< typename U > + static boost::mpl::aux::yes_tag test( + boost::mpl::aux::type_wrapper const volatile* + , boost::mpl::aux::type_wrapper* = 0 + ); + + static boost::mpl::aux::no_tag test(...); + }; + # define BOOST_MPL_HAS_XXX_TRAIT_NAMED_DEF(trait, name, default_) \ template< typename T, typename fallback_ = boost::mpl::bool_ > \ struct trait \ { \ - struct gcc_3_2_wknd \ - { \ - template< typename U > \ - static boost::mpl::aux::yes_tag test( \ - boost::mpl::aux::type_wrapper const volatile* \ - , boost::mpl::aux::type_wrapper* = 0 \ - ); \ - \ - static boost::mpl::aux::no_tag test(...); \ - }; \ - \ typedef boost::mpl::aux::type_wrapper t_; \ BOOST_STATIC_CONSTANT(bool, value = \ sizeof(gcc_3_2_wknd::test(static_cast(0))) \
_______________________________________________ Boost-users mailing list Boost-users@lists.boost.org http://lists.boost.org/mailman/listinfo.cgi/boost-users
_______________________________________________ Boost-users mailing list Boost-users@lists.boost.org http://lists.boost.org/mailman/listinfo.cgi/boost-users
participants (4)
-
David Abrahams
-
dx
-
John Maddock
-
Matthias Troyer