Modify

Opened 9 years ago

Closed 9 years ago

#2244 closed Bugs (fixed)

build error in regex icu on AIX 5.3 with IBM Visual Age 9

Reported by: michael.hufer@… Owned by: John Maddock
Milestone: Boost 1.37.0 Component: regex
Version: Boost 1.36.0 Severity: Problem
Keywords: AIX vacpp regex Cc: michael.hufer@…

Description

I get the following compile error when compiling the regex library with the Visual Age 9 compiler on AIX 5.3:

acpp.compile.c++ /home/mhufer/xgen-externals/boost/AIX-5.3/boost/bin.v2/libs/regex/build/vacpp/release/address-model-32/link-static/optimization-space/threading-multi/icu.o
"./boost/regex/icu.hpp", line 359.17: 1540-0403 (S) "boost::make_u32regex(const UChar *, boost::regex_constants::syntax_option_type)" is already defined.
"./boost/regex/icu.hpp", line 353.17: 1540-0425 (I) "make_u32regex" is defined on line 353 of "./boost/regex/icu.hpp".
"./boost/regex/icu.hpp", line 459.13: 1540-0403 (S) "boost::u32regex_match(const wchar_t *, match_results<const wchar_t *,std::allocator<boost::sub_match<const wchar_t *> > > &, const u32regex &, match_flag_type)" is already defined.
"./boost/regex/icu.hpp", line 451.13: 1540-0425 (I) "u32regex_match" is defined on line 451 of "./boost/regex/icu.hpp".
"./boost/regex/icu.hpp", line 523.13: 1540-0403 (S) "boost::u32regex_match(const wchar_t *, const u32regex &, match_flag_type)" is already defined.
"./boost/regex/icu.hpp", line 515.13: 1540-0425 (I) "u32regex_match" is defined on line 515 of "./boost/regex/icu.hpp".
"./boost/regex/icu.hpp", line 644.13: 1540-0403 (S) "boost::u32regex_search(const wchar_t *, match_results<const wchar_t *,std::allocator<boost::sub_match<const wchar_t *> > > &, const u32regex &, match_flag_type)" is already defined.
"./boost/regex/icu.hpp", line 636.13: 1540-0425 (I) "u32regex_search" is defined on line 636 of "./boost/regex/icu.hpp".
"./boost/regex/icu.hpp", line 705.13: 1540-0403 (S) "boost::u32regex_search(const wchar_t *, const u32regex &, match_flag_type)" is already defined.
"./boost/regex/icu.hpp", line 697.13: 1540-0425 (I) "u32regex_search" is defined on line 697 of "./boost/regex/icu.hpp".
"./boost/regex/v4/u32regex_iterator.hpp", line 170.40: 1540-0403 (S) "boost::make_u32regex_iterator(const UChar *, const u32regex &, regex_constants::match_flag_type)" is already defined.
"./boost/regex/v4/u32regex_iterator.hpp", line 164.42: 1540-0425 (I) "make_u32regex_iterator" is defined on line 164 of "./boost/regex/v4/u32regex_iterator.hpp".
"./boost/regex/v4/u32regex_token_iterator.hpp", line 286.46: 1540-0403 (S) "boost::make_u32regex_token_iterator(const UChar *, const u32regex &, int, regex_constants::match_flag_type)" is already defined.
"./boost/regex/v4/u32regex_token_iterator.hpp", line 280.48: 1540-0425 (I) "make_u32regex_token_iterator" is defined on line 280 of "./boost/regex/v4/u32regex_token_iterator.hpp".
"./boost/regex/v4/u32regex_token_iterator.hpp", line 318.46: 1540-0403 (S) "template <std::size_t N> boost::make_u32regex_token_iterator(const UChar *, const u32regex &, const int (&)[N], regex_constants::match_flag_type)" is already defined.
"./boost/regex/v4/u32regex_token_iterator.hpp", line 311.48: 1540-0425 (I) "make_u32regex_token_iterator" is defined on line 311 of "./boost/regex/v4/u32regex_token_iterator.hpp".
"./boost/regex/v4/u32regex_token_iterator.hpp", line 348.46: 1540-0403 (S) "boost::make_u32regex_token_iterator(const UChar *, const u32regex &, const vector<int,std::allocator<int> > &, regex_constants::match_flag_type)" is already defined.
"./boost/regex/v4/u32regex_token_iterator.hpp", line 342.48: 1540-0425 (I) "make_u32regex_token_iterator" is defined on line 342 of "./boost/regex/v4/u32regex_token_iterator.hpp".

    xlC_r -c   -DBOOST_ALL_NO_LIB=1 -DBOOST_HAS_ICU=1 -DNDEBUG -qcpluscmt -O2 -qcompact -qfuncsect -qeh -qrtti -I"." -I"/home/mhufer/xgen-externals/install/AIX-5.3/icu-3.8.1/include"  -o "/home/mhufer/xgen-externals/boost/AIX-5.3/boost/bin.v2/libs/regex/build/vacpp/release/address-model-32/link-static/optimization-space/threading-multi/icu.o" "libs/regex/src/../src/icu.cpp"

...failed vacpp.compile.c++ /home/mhufer/xgen-externals/boost/AIX-5.3/boost/bin.v2/libs/regex/build/vacpp/release/address-model-32/link-static/optimization-space/threading-multi/icu.o...

It seems that for this compiler either BOOST_NO_WREGEX or U_WCHAR_IS_UTF16 must be defined in the regex/config.hpp. I opted for the latter and added the following lines in boost/config.hpp:

#ifdef __IBMCPP__
#  define U_WCHAR_IS_UTF16
#endif

Note: I only use the V9 compiler and don't know whether defining this is necessary with older versions of the Visual Age compiler. So a "#if (IBMCPP >= 900 )" might actually be better...

Attachments (0)

Change History (3)

comment:1 Changed 9 years ago by John Maddock

Status: newassigned

Tentatively I hope I have this fixed: it's a question of picking up on ICU's configuration macros correctly, can you try applying this changeset: http://svn.boost.org/trac/boost/changeset/48312/trunk and let me know if it fixes things?

Thanks, John Maddock.

comment:2 Changed 9 years ago by John Maddock

Cc: michael.hufer@… added

comment:3 Changed 9 years ago by John Maddock

Resolution: fixed
Status: assignedclosed

No reply, so assume fixed.

Modify Ticket

Change Properties
Set your email in Preferences
Action
as closed The owner will remain John Maddock.
The resolution will be deleted.

Add Comment


E-mail address and name can be saved in the Preferences.

 
Note: See TracTickets for help on using tickets.