From f7f4f2fafbfa099abe59ee23b7d49d464600b5fe Mon Sep 17 00:00:00 2001 From: John Maddock Date: Thu, 11 Jan 2007 17:21:37 +0000 Subject: [PATCH] Update bbv2 instructions. Update Jamfile support for ICU. [SVN r36689] --- build/Jamfile.v2 | 159 ++++++++++++++++++++++++++--------------- doc/Attic/install.html | 8 ++- doc/install.html | 8 ++- 3 files changed, 114 insertions(+), 61 deletions(-) diff --git a/build/Jamfile.v2 b/build/Jamfile.v2 index 03ecb634..8276d9d0 100644 --- a/build/Jamfile.v2 +++ b/build/Jamfile.v2 @@ -14,65 +14,110 @@ local ICU_PATH = [ modules.peek : ICU_PATH ] ; rule check-icu-config ( ) { local ICU_PATH = [ modules.peek : ICU_PATH ] ; + local HAVE_ICU = [ modules.peek : HAVE_ICU ] ; + local ICU_LINK = [ modules.peek : ICU_LINK ] ; + if ! $(gICU_CONFIG_CHECKED) { - if $(ICU_PATH) + if $(HAVE_ICU) + { + gHAS_ICU = true ; + gICU_CORE_LIB = icuuc ; + gICU_IN_LIB = icui18n ; + gICU_CONFIG_CHECKED = true ; + } + else if $(ICU_PATH) { dir = $(ICU_PATH) ; - } - if [ GLOB $(dir)/include/unicode : utypes.h ] - { - ECHO Building Boost.Regex with Unicode/ICU support enabled ; - ECHO Using ICU in $(ICU_PATH:J=" ")/include ; - gHAS_ICU = true ; - - # try and find ICU libraries, look for NT versions first: - if [ GLOB $(dir)/lib : icuuc.* ] + if [ GLOB $(dir)/include/unicode : utypes.h ] { - gICU_CORE_LIB = icuuc ; - } - else if [ GLOB $(dir)/lib : libicuuc.* ] - { - gICU_CORE_LIB = icuuc ; - } - else if [ GLOB $(ICU_PATH)/lib : cygicuuc.dll ] - { - gICU_CORE_LIB = cygicuuc.dll ; + ECHO Building Boost.Regex with Unicode/ICU support enabled ; + ECHO Using ICU in $(ICU_PATH:J=" ")/include ; + gHAS_ICU = true ; + + # try and find ICU libraries, look for NT versions first: + if $(ICU_LINK) + { + gICU_LIBS += $(ICU_LINK) ; + } + else if [ GLOB $(dir)/lib64 : icuuc.* ] + { + gICU_CORE_LIB = icuuc ; + } + else if [ GLOB $(dir)/lib : libicuuc.* ] + { + gICU_CORE_LIB = icuuc ; + } + else if [ GLOB $(dir)/lib : libicuuc.* ] + { + gICU_CORE_LIB = icuuc ; + } + else if [ GLOB $(ICU_PATH)/lib : cygicuuc.dll ] + { + gICU_CORE_LIB = cygicuuc.dll ; + } + else if [ GLOB $(ICU_PATH)/lib : cygicuuc32.dll ] + { + gICU_CORE_LIB = cygicuuc32.dll ; + } + else + { + ECHO WARNING: ICU shared common library not found in path. ; + ECHO HINT: If the regex library fails to link then try again ; + ECHO with the environment variable ICU_LINK set to contain ; + ECHO the linker options required to link to ICU. ; + ECHO Defaulting to look for libicuuc ... ; + gICU_CORE_LIB = icuuc ; + } + + if $(ICU_LINK) + { + # nothing to do, it's already been done! + # gICU_LIBS += $(ICU_LINK) ; + } + else if [ GLOB $(dir)/lib : icuin.* ] + { + gICU_IN_LIB = icuin ; + } + else if [ GLOB $(dir)/lib64 : libicui18n.* ] + { + gICU_IN_LIB = icui18n ; + } + else if [ GLOB $(dir)/lib : libicui18n.* ] + { + gICU_IN_LIB = icui18n ; + } + else if [ GLOB $(ICU_PATH)/lib : cygicuin.dll ] + { + gICU_IN_LIB = cygicuin.dll ; + } + else if [ GLOB $(ICU_PATH)/lib : cygicuin32.dll ] + { + gICU_IN_LIB = cygicuin32.dll ; + } + else + { + ECHO WARNING: ICU shared i18n library not found in path. ; + ECHO HINT: If the regex library fails to link then try again ; + ECHO with the environment variable ICU_LINK set to contain ; + ECHO the linker options required to link to ICU. ; + ECHO Defaulting to look for libicui18n ... ; + gICU_IN_LIB = icui18n ; + } } else { - ECHO ICU shared common library not found. ; - } - - if [ GLOB $(dir)/lib : icuin.* ] - { - gICU_IN_LIB = icuin ; - } - else if [ GLOB $(dir)/lib : libicui18n.* ] - { - gICU_IN_LIB = icui18n ; - } - else if [ GLOB $(ICU_PATH)/lib : cygicuin.dll ] - { - gICU_IN_LIB = cygicuin.dll ; - } - else - { - ECHO ICU shared i18n library not found. ; + ECHO Building Boost.Regex with the optional Unicode/ICU support disabled. ; + ECHO Please refer to the Boost.Regex documentation for more information ; + ECHO (don't panic: this is a strictly optional feature). ; + if $(ICU_PATH) + { + ECHO Couldn't find utypes.h in $(ICU_PATH:J=" ")/include/unicode ; + } } + gICU_CONFIG_CHECKED = true ; } - else - { - ECHO Building Boost.Regex with the optional Unicode/ICU support disabled. ; - ECHO Please refer to the Boost.Regex documentation for more information ; - ECHO (don't panic: this is a strictly optional feature). ; - if $(ICU_PATH) - { - ECHO Couldn't find utypes.h in $(ICU_PATH:J=" ")$(SLASH)include$(SLASH)unicode ; - } - } - gICU_CONFIG_CHECKED = true ; } if $(gHAS_ICU) { @@ -83,9 +128,15 @@ rule check-icu-config ( ) if [ check-icu-config ] { BOOST_REGEX_ICU_OPTS = "BOOST_HAS_ICU=1" ; - if ($(ICU_PATH) != /usr) && ($(ICU_PATH) != /usr/local) + + if $(ICU_PATH) { - ICU_SEARCH_OPTS = /$(ICU_PATH)/lib ; + if $(ICU_PATH) != "/usr" && $(ICU_PATH) != "/usr/local" + { + ECHO "BAH!" ; + BOOST_REGEX_ICU_OPTS += "$(ICU_PATH)/include" ; + ICU_SEARCH_OPTS = /$(ICU_PATH)/lib ; + } } if $(gICU_CORE_LIB) @@ -98,13 +149,6 @@ if [ check-icu-config ] lib icuin : : $(gICU_IN_LIB) $(ICU_SEARCH_OPTS) ; ICU_EXTRA_SOURCE += icuin ; } - if $(ICU_PATH) - { - if ($(ICU_PATH) != /usr) && ($(ICU_PATH) != /usr/local) - { - BOOST_REGEX_ICU_OPTS += "$(ICU_PATH)/include" ; - } - } } SOURCES = @@ -136,3 +180,4 @@ lib boost_regex : ../src/$(SOURCES) $(ICU_EXTRA_SOURCE) ; + diff --git a/doc/Attic/install.html b/doc/Attic/install.html index 1d2c4352..6f43c55b 100644 --- a/doc/Attic/install.html +++ b/doc/Attic/install.html @@ -49,16 +49,20 @@ support via ICU.  There is no need to enable this support if you don't need it, but if you use ICU for your Unicode support already, and want to work with Unicode-aware regular expressions then read on.

+

Most of the information you will need is in the + getting started guide, the only additional step you need to take is to + tell bjam that you want Boost.Regex to use ICU and optionally to tell bjam + where ICU is located.

If you're building on a Unix-like platform, and ICU is already installed in you're compilers search path (with an install prefix of /usr or /usr/local for example), then set the environment variable HAVE_ICU to enable ICU support.  For example you might build with the command line:

-
bjam -sHAVE_ICU=1 -sTOOLS=my-compiler
+
bjam -sHAVE_ICU=1 --toolset=toolset-name install

If ICU is not already in your compilers path then you need to set the environment variable ICU_PATH to point to the route directory of your ICU installation, for example if ICU was installed to /usr/local/icu/3.3 you might use:

-
bjam -sICU_PATH=/usr/local/icu/3.3 -sTOOLS=my-compiler
+
bjam -sICU_PATH=/usr/local/icu/3.3 --toolset=toolset-name install

Note that ICU is a C++ library just like Boost is, as such your copy of ICU must have been built with the same C++ compiler (and compiler version) that you are using to build Boost.  Boost.Regex will not work correctly unless diff --git a/doc/install.html b/doc/install.html index 1d2c4352..6f43c55b 100644 --- a/doc/install.html +++ b/doc/install.html @@ -49,16 +49,20 @@ support via ICU.  There is no need to enable this support if you don't need it, but if you use ICU for your Unicode support already, and want to work with Unicode-aware regular expressions then read on.

+

Most of the information you will need is in the + getting started guide, the only additional step you need to take is to + tell bjam that you want Boost.Regex to use ICU and optionally to tell bjam + where ICU is located.

If you're building on a Unix-like platform, and ICU is already installed in you're compilers search path (with an install prefix of /usr or /usr/local for example), then set the environment variable HAVE_ICU to enable ICU support.  For example you might build with the command line:

-
bjam -sHAVE_ICU=1 -sTOOLS=my-compiler
+
bjam -sHAVE_ICU=1 --toolset=toolset-name install

If ICU is not already in your compilers path then you need to set the environment variable ICU_PATH to point to the route directory of your ICU installation, for example if ICU was installed to /usr/local/icu/3.3 you might use:

-
bjam -sICU_PATH=/usr/local/icu/3.3 -sTOOLS=my-compiler
+
bjam -sICU_PATH=/usr/local/icu/3.3 --toolset=toolset-name install

Note that ICU is a C++ library just like Boost is, as such your copy of ICU must have been built with the same C++ compiler (and compiler version) that you are using to build Boost.  Boost.Regex will not work correctly unless