
John Maddock wrote:
Yes the ICU binary is always a dll, linked to the shared runtime. However, the regex binary could be a static lib as long as links to the same shared runtime as the ICU dll.
OK, I have checked in this:
Testing on Win32 checks out OK, but on Linux I see some errors, first off:
john@john-laptop:~/boost/trunk$ bjam stage --with-regex -sHAVE_ICU=1 --build-type=complete Note: Building Boost.Regex with Unicode/ICU support enabled Using ICU in warning: forcing runtime-link=shared for Boost.Regex warning: this is required when using the ICU library /home/john/boost/trunk/tools/build/v2/build/virtual-target.jam:1056: in virtual-target.register-actual-name from module virtual-target error: Duplicate name of actual target: <pstage/lib>libboost_regex.a error: previous virtual target { common%common.copy-libboost_regex.a.STATIC_LIB { gcc%gcc.archive-libboost_regex.a.STATIC_LIB { gcc%gcc.compile.c++-c_regex_traits.o.OBJ { ../src/c_regex_traits.cpp.CPP } } { gcc%gcc.compile.c++-cpp_regex_traits.o.OBJ { ../src/cpp_regex_traits.cpp.CPP } } { gcc%gcc.compile.c++-cregex.o.OBJ { ../src/cregex.cpp.CPP } } { gcc%gcc.compile.c++-fileiter.o.OBJ { ../src/fileiter.cpp.CPP } } { gcc%gcc.compile.c++-icu.o.OBJ { ../src/icu.cpp.CPP } } { gcc%gcc.compile.c++-instances.o.OBJ { ../src/instances.cpp.CPP } } { gcc%gcc.compile.c++-posix_api.o.OBJ { ../src/posix_api.cpp.CPP } } { gcc%gcc.compile.c++-regex.o.OBJ { ../src/regex.cpp.CPP } } { gcc%gcc.compile.c++-regex_debug.o.OBJ { ../src/regex_debug.cpp.CPP } } { gcc%gcc.compile.c++-regex_raw_buffer.o.OBJ { ../src/regex_raw_buffer.cpp.CPP } } { gcc%gcc.compile.c++-regex_traits_defaults.o.OBJ { ../src/regex_traits_defaults.cpp.CPP } } { gcc%gcc.compile.c++-static_mutex.o.OBJ { ../src/static_mutex.cpp.CPP } } { gcc%gcc.compile.c++-w32_regex_traits.o.OBJ { ../src/w32_regex_traits.cpp.CPP } } { gcc%gcc.compile.c++-wc_regex_traits.o.OBJ { ../src/wc_regex_traits.cpp.CPP } } { gcc%gcc.compile.c++-wide_posix_api.o.OBJ { ../src/wide_posix_api.cpp.CPP } } { gcc%gcc.compile.c++-winstances.o.OBJ { ../src/winstances.cpp.CPP } } { gcc%gcc.compile.c++-usinstances.o.OBJ { ../src/usinstances.cpp.CPP } } } } error: created from ./stage-proper error: another virtual target { common%common.copy-libboost_regex.a.STATIC_LIB { gcc%gcc.archive-libboost_regex.a.STATIC_LIB { gcc%gcc.compile.c++-c_regex_traits.o.OBJ { ../src/c_regex_traits.cpp.CPP } } { gcc%gcc.compile.c++-cpp_regex_traits.o.OBJ { ../src/cpp_regex_traits.cpp.CPP } } { gcc%gcc.compile.c++-cregex.o.OBJ { ../src/cregex.cpp.CPP } } { gcc%gcc.compile.c++-fileiter.o.OBJ { ../src/fileiter.cpp.CPP } } { gcc%gcc.compile.c++-icu.o.OBJ { ../src/icu.cpp.CPP } } { gcc%gcc.compile.c++-instances.o.OBJ { ../src/instances.cpp.CPP } } { gcc%gcc.compile.c++-posix_api.o.OBJ { ../src/posix_api.cpp.CPP } } { gcc%gcc.compile.c++-regex.o.OBJ { ../src/regex.cpp.CPP } } { gcc%gcc.compile.c++-regex_debug.o.OBJ { ../src/regex_debug.cpp.CPP } } { gcc%gcc.compile.c++-regex_raw_buffer.o.OBJ { ../src/regex_raw_buffer.cpp.CPP } } { gcc%gcc.compile.c++-regex_traits_defaults.o.OBJ { ../src/regex_traits_defaults.cpp.CPP } } { gcc%gcc.compile.c++-static_mutex.o.OBJ { ../src/static_mutex.cpp.CPP } } { gcc%gcc.compile.c++-w32_regex_traits.o.OBJ { ../src/w32_regex_traits.cpp.CPP } } { gcc%gcc.compile.c++-wc_regex_traits.o.OBJ { ../src/wc_regex_traits.cpp.CPP } } { gcc%gcc.compile.c++-wide_posix_api.o.OBJ { ../src/wide_posix_api.cpp.CPP } } { gcc%gcc.compile.c++-winstances.o.OBJ { ../src/winstances.cpp.CPP } } { gcc%gcc.compile.c++-usinstances.o.OBJ { ../src/usinstances.cpp.CPP } } } } error: created from ./stage-proper error: added properties: <debug-symbols>off <define>NDEBUG <inlining>full <optimization>speed <runtime-debugging>off <variant>release error: removed properties: <debug-symbols>on <inlining>off <optimization>off <runtime-debugging>on <variant>debug /home/john/boost/trunk/tools/build/v2/build/virtual-target.jam:480: in actualize-no-scanner from module object(file-target)@1216 /home/john/boost/trunk/tools/build/v2/build/virtual-target.jam:130: in object(file-target)@1216.actualize from module object(file-target)@1216 /home/john/boost/trunk/tools/build/v2/build-system.jam:713: in load from module build-system /home/john/boost/trunk/tools/build/v2/kernel/modules.jam:283: in import from module modules /home/john/boost/trunk/tools/build/v2/kernel/bootstrap.jam:142: in boost-build from module /home/john/boost/trunk/boost-build.jam:17: in module scope from module
Am I doing something wrong here? Is this due to the lib names not being mangled anymore? If so can we please have a better error message :-)
Apparently I've missed this part of your email as well :-( Anyway, I've added code to say this: error: Cannot use --layout=system with --build-type complete. error: Please used either --layout=versioned or --layout=tagged error: if you wish to build multiple variants. error: Note that --layout=system is default on Unix starting with Boost 1.40. This is on trunk now. Because this is essentially changing one error message to another, I'll merge this to release branch momentary. - Volodya