From ddabd9c47113f56d62ff1c8bc5e80f64efd5cc1e Mon Sep 17 00:00:00 2001 From: Deniz Bahadir Date: Thu, 5 Jan 2017 11:30:13 +0100 Subject: [PATCH] New build-option ICU_LIBPATH to manually provide path to libs of ICU. --- build/Jamfile.v2 | 12 ++++++++---- build/gcc-shared.mak | 17 ++++++++++++----- build/gcc.mak | 17 ++++++++++++----- build/gcc_gen.sh | 34 ++++++++++++++++++++++++---------- build/vc10.mak | 7 +++++++ build/vc6-stlport.mak | 7 +++++++ build/vc6.mak | 7 +++++++ build/vc7-stlport.mak | 7 +++++++ build/vc7.mak | 7 +++++++ build/vc71-stlport.mak | 7 +++++++ build/vc71.mak | 7 +++++++ build/vc8.mak | 7 +++++++ build/vc9.mak | 7 +++++++ build/vc_gen.sh | 14 ++++++++++++++ doc/html/boost_regex/install.html | 5 +++++ doc/install.qbk | 5 +++++ 16 files changed, 143 insertions(+), 24 deletions(-) diff --git a/build/Jamfile.v2 b/build/Jamfile.v2 index 601e16783..ba2bd463c 100644 --- a/build/Jamfile.v2 +++ b/build/Jamfile.v2 @@ -18,11 +18,11 @@ rule path_options ( properties * ) local result ; if 64 in $(properties) && msvc in $(properties) { - result = $(ICU_PATH)/bin64 $(ICU_PATH)/lib64 ; + result = $(ICU_PATH)/bin64 $(ICU_LIBPATH)&&$(ICU_PATH)/lib64 ; } else { - result = $(ICU_PATH)/bin $(ICU_PATH)/lib ; + result = $(ICU_PATH)/bin $(ICU_LIBPATH)&&$(ICU_PATH)/lib ; } return $(result) ; } @@ -34,11 +34,15 @@ if ! $(disable-icu) { if [ modules.peek : ICU_PATH ] - { + { ICU_PATH = [ modules.peek : ICU_PATH ] ; } + if [ modules.peek : ICU_LIBPATH ] + { + ICU_LIBPATH = [ modules.peek : ICU_LIBPATH ] ; + } if [ modules.peek : ICU_LINK ] - { + { ICU_LINK = [ modules.peek : ICU_LINK ] ; } diff --git a/build/gcc-shared.mak b/build/gcc-shared.mak index bafd64221..bea9a46fa 100644 --- a/build/gcc-shared.mak +++ b/build/gcc-shared.mak @@ -14,11 +14,12 @@ # # the following environment variables are recognised: -# ICU_PATH= Path to ICU installation. -# CXXFLAGS= extra compiler options - note applies to all build variants -# INCLUDES= additional include directories -# LDFLAGS= additional linker options -# LIBS= additional library files +# ICU_PATH= Path to ICU installation. +# ICU_LIBPATH= Path to ICU libraries. +# CXXFLAGS= extra compiler options - note applies to all build variants +# INCLUDES= additional include directories +# LDFLAGS= additional linker options +# LIBS= additional library files # compiler: CXX?=g++ @@ -39,9 +40,15 @@ $(warning "Hint: set ICU_PATH on the nmake command line to point ") $(warning "to your ICU installation if you have one.") else ICU_CXXFLAGS= -DBOOST_HAS_ICU=1 -I$(ICU_PATH)/include +ifeq "$(ICU_LIBPATH)" "" ICU_LDFLAGS= -L$(ICU_PATH)/lib ICU_LIBS= -licui18n -licuuc $(warning "Building Boost.Regex with ICU in $(ICU_PATH)") +else +ICU_LDFLAGS= -L$(ICU_LIBPATH) -L$(ICU_PATH)/lib +ICU_LIBS= -licui18n -licuuc +$(warning "Building Boost.Regex with ICU in $(ICU_PATH) and libs in $(ICU_LIBPATH)") +endif endif diff --git a/build/gcc.mak b/build/gcc.mak index e37ea3bf5..e3f9c7319 100644 --- a/build/gcc.mak +++ b/build/gcc.mak @@ -14,11 +14,12 @@ # # the following environment variables are recognised: -# ICU_PATH= Path to ICU installation. -# CXXFLAGS= extra compiler options - note applies to all build variants -# INCLUDES= additional include directories -# LDFLAGS= additional linker options -# LIBS= additional library files +# ICU_PATH= Path to ICU installation. +# ICU_LIBPATH= Path to ICU installation. +# CXXFLAGS= extra compiler options - note applies to all build variants +# INCLUDES= additional include directories +# LDFLAGS= additional linker options +# LIBS= additional library files # compiler: CXX?=g++ @@ -39,9 +40,15 @@ $(warning "Hint: set ICU_PATH on the nmake command line to point ") $(warning "to your ICU installation if you have one.") else ICU_CXXFLAGS= -DBOOST_HAS_ICU=1 -I$(ICU_PATH)/include +ifeq "$(ICU_LIBPATH)" "" ICU_LDFLAGS= -L$(ICU_PATH)/lib ICU_LIBS= -licui18n -licuuc $(warning "Building Boost.Regex with ICU in $(ICU_PATH)") +else +ICU_LDFLAGS= -L$(ICU_LIBPATH) -L$(ICU_PATH)/lib +ICU_LIBS= -licui18n -licuuc +$(warning "Building Boost.Regex with ICU in $(ICU_PATH) and libs in $(ICU_LIBPATH)") +endif endif diff --git a/build/gcc_gen.sh b/build/gcc_gen.sh index 2cd1bec95..a3c41b1b6 100644 --- a/build/gcc_gen.sh +++ b/build/gcc_gen.sh @@ -124,11 +124,12 @@ function gcc_gen() # # the following environment variables are recognised: -# ICU_PATH= Path to ICU installation. -# CXXFLAGS= extra compiler options - note applies to all build variants -# INCLUDES= additional include directories -# LDFLAGS= additional linker options -# LIBS= additional library files +# ICU_PATH= Path to ICU installation. +# ICU_LIBPATH= Path to ICU library-installation. +# CXXFLAGS= extra compiler options - note applies to all build variants +# INCLUDES= additional include directories +# LDFLAGS= additional linker options +# LIBS= additional library files # compiler: CXX?=g++ @@ -149,9 +150,15 @@ ifeq "\$(ICU_PATH)" "" \$(warning "to your ICU installation if you have one.") else ICU_CXXFLAGS= -DBOOST_HAS_ICU=1 -I\$(ICU_PATH)/include +ifeq "\$(ICU_LIBPATH)" "" ICU_LDFLAGS= -L\$(ICU_PATH)/lib ICU_LIBS= -licui18n -licuuc \$(warning "Building Boost.Regex with ICU in \$(ICU_PATH)") +else +ICU_LDFLAGS= -L\$(ICU_LIBPATH) -L\$(ICU_PATH)/lib +ICU_LIBS= -licui18n -licuuc +\$(warning "Building Boost.Regex with ICU in \$(ICU_PATH) and its libs in \$(ICU_LIBPATH)") +endif endif EOF @@ -208,11 +215,12 @@ function gcc_gen_shared() # # the following environment variables are recognised: -# ICU_PATH= Path to ICU installation. -# CXXFLAGS= extra compiler options - note applies to all build variants -# INCLUDES= additional include directories -# LDFLAGS= additional linker options -# LIBS= additional library files +# ICU_PATH= Path to ICU installation. +# ICU_LIBPATH= Path to ICU library-installation. +# CXXFLAGS= extra compiler options - note applies to all build variants +# INCLUDES= additional include directories +# LDFLAGS= additional linker options +# LIBS= additional library files # compiler: CXX?=g++ @@ -233,9 +241,15 @@ ifeq "\$(ICU_PATH)" "" \$(warning "to your ICU installation if you have one.") else ICU_CXXFLAGS= -DBOOST_HAS_ICU=1 -I\$(ICU_PATH)/include +ifeq "\$(ICU_LIBPATH)" "" ICU_LDFLAGS= -L\$(ICU_PATH)/lib ICU_LIBS= -licui18n -licuuc \$(warning "Building Boost.Regex with ICU in \$(ICU_PATH)") +else +ICU_LDFLAGS= -L\$(ICU_LIBPATH) -L\$(ICU_PATH)/lib +ICU_LIBS= -licui18n -licuuc +\$(warning "Building Boost.Regex with ICU in \$(ICU_PATH) and its libs in \$(ICU_LIBPATH)") +endif endif EOF diff --git a/build/vc10.mak b/build/vc10.mak index 7635d1140..40702f3f6 100644 --- a/build/vc10.mak +++ b/build/vc10.mak @@ -16,6 +16,7 @@ # path to ICU library installation goes here: # ICU_PATH= +ICU_LIBPATH= # # Add additional compiler options here: # @@ -54,9 +55,15 @@ ICU_LINK_OPTS= !MESSAGE Hint: set ICU_PATH on the nmake command line to point !MESSAGE to your ICU installation if you have one. !ELSE +!IF "$(ICU_LIBPATH)" == "" ICU_COMPILE_OPTS= -DBOOST_HAS_ICU=1 -I"$(ICU_PATH)\include" ICU_LINK_OPTS= /LIBPATH:"$(ICU_PATH)\lib" icuin.lib icuuc.lib !MESSAGE Building Boost.Regex with ICU in $(ICU_PATH) +!ELSE +ICU_COMPILE_OPTS= -DBOOST_HAS_ICU=1 -I"$(ICU_PATH)\include" +ICU_LINK_OPTS= /LIBPATH:"$(ICU_LIBPATH)" /LIBPATH:"$(ICU_PATH)\lib" icuin.lib icuuc.lib +!MESSAGE Building Boost.Regex with ICU in $(ICU_PATH) and libs in $(ICU_LIBPATH) +!ENDIF !ENDIF diff --git a/build/vc6-stlport.mak b/build/vc6-stlport.mak index 9e22672c8..f05cbe3d2 100644 --- a/build/vc6-stlport.mak +++ b/build/vc6-stlport.mak @@ -16,6 +16,7 @@ # ICU setup: # ICU_PATH= +ICU_LIBPATH= # # Add additional compiler options here: # @@ -54,9 +55,15 @@ ICU_LINK_OPTS= !MESSAGE Hint: set ICU_PATH on the nmake command line to point !MESSAGE to your ICU installation if you have one. !ELSE +!IF "$(ICU_LIBPATH)" == "" ICU_COMPILE_OPTS= -DBOOST_HAS_ICU=1 -I"$(ICU_PATH)\include" ICU_LINK_OPTS= /LIBPATH:"$(ICU_PATH)\lib" icuin.lib icuuc.lib !MESSAGE Building Boost.Regex with ICU in $(ICU_PATH) +!ELSE +ICU_COMPILE_OPTS= -DBOOST_HAS_ICU=1 -I"$(ICU_PATH)\include" +ICU_LINK_OPTS= /LIBPATH:"$(ICU_LIBPATH)" /LIBPATH:"$(ICU_PATH)\lib" icuin.lib icuuc.lib +!MESSAGE Building Boost.Regex with ICU in $(ICU_PATH) and libs in $(ICU_LIBPATH) +!ENDIF !ENDIF diff --git a/build/vc6.mak b/build/vc6.mak index 3c9f61aea..ed0d58043 100644 --- a/build/vc6.mak +++ b/build/vc6.mak @@ -16,6 +16,7 @@ # path to ICU library installation goes here: # ICU_PATH= +ICU_LIBPATH= # # Add additional compiler options here: # @@ -54,9 +55,15 @@ ICU_LINK_OPTS= !MESSAGE Hint: set ICU_PATH on the nmake command line to point !MESSAGE to your ICU installation if you have one. !ELSE +!IF "$(ICU_PATH)" == "" ICU_COMPILE_OPTS= -DBOOST_HAS_ICU=1 -I"$(ICU_PATH)\include" ICU_LINK_OPTS= /LIBPATH:"$(ICU_PATH)\lib" icuin.lib icuuc.lib !MESSAGE Building Boost.Regex with ICU in $(ICU_PATH) +!ELSE +ICU_COMPILE_OPTS= -DBOOST_HAS_ICU=1 -I"$(ICU_PATH)\include" +ICU_LINK_OPTS= /LIBPATH:"$(ICU_LIBPATH)" /LIBPATH:"$(ICU_PATH)\lib" icuin.lib icuuc.lib +!MESSAGE Building Boost.Regex with ICU in $(ICU_PATH) and libs in $(ICU_LIBPATH) +!ENDIF !ENDIF diff --git a/build/vc7-stlport.mak b/build/vc7-stlport.mak index 78706729b..580c57134 100644 --- a/build/vc7-stlport.mak +++ b/build/vc7-stlport.mak @@ -16,6 +16,7 @@ # ICU setup: # ICU_PATH= +ICU_LIBPATH= # # Add additional compiler options here: # @@ -54,9 +55,15 @@ ICU_LINK_OPTS= !MESSAGE Hint: set ICU_PATH on the nmake command line to point !MESSAGE to your ICU installation if you have one. !ELSE +!IF "$(ICU_LIBPATH)" == "" ICU_COMPILE_OPTS= -DBOOST_HAS_ICU=1 -I"$(ICU_PATH)\include" ICU_LINK_OPTS= /LIBPATH:"$(ICU_PATH)\lib" icuin.lib icuuc.lib !MESSAGE Building Boost.Regex with ICU in $(ICU_PATH) +!ELSE +ICU_COMPILE_OPTS= -DBOOST_HAS_ICU=1 -I"$(ICU_PATH)\include" +ICU_LINK_OPTS= /LIBPATH:"$(ICU_LIBPATH)" /LIBPATH:"$(ICU_PATH)\lib" icuin.lib icuuc.lib +!MESSAGE Building Boost.Regex with ICU in $(ICU_PATH) and libs in $(ICU_LIBPATH) +!ENDIF !ENDIF diff --git a/build/vc7.mak b/build/vc7.mak index 1e5d6bf37..c60565c85 100644 --- a/build/vc7.mak +++ b/build/vc7.mak @@ -16,6 +16,7 @@ # path to ICU library installation goes here: # ICU_PATH= +ICU_LIBPATH= # # Add additional compiler options here: # @@ -54,9 +55,15 @@ ICU_LINK_OPTS= !MESSAGE Hint: set ICU_PATH on the nmake command line to point !MESSAGE to your ICU installation if you have one. !ELSE +!IF "$(ICU_LIBPATH)" == "" ICU_COMPILE_OPTS= -DBOOST_HAS_ICU=1 -I"$(ICU_PATH)\include" ICU_LINK_OPTS= /LIBPATH:"$(ICU_PATH)\lib" icuin.lib icuuc.lib !MESSAGE Building Boost.Regex with ICU in $(ICU_PATH) +!ELSE +ICU_COMPILE_OPTS= -DBOOST_HAS_ICU=1 -I"$(ICU_PATH)\include" +ICU_LINK_OPTS= /LIBPATH:"$(ICU_LIBPATH)" /LIBPATH:"$(ICU_PATH)\lib" icuin.lib icuuc.lib +!MESSAGE Building Boost.Regex with ICU in $(ICU_PATH) and libs in $(ICU_LIBPATH) +!ENDIF !ENDIF diff --git a/build/vc71-stlport.mak b/build/vc71-stlport.mak index 755762696..2ed437fbd 100644 --- a/build/vc71-stlport.mak +++ b/build/vc71-stlport.mak @@ -16,6 +16,7 @@ # ICU setup: # ICU_PATH= +ICU_LIBPATH= # # Add additional compiler options here: # @@ -54,9 +55,15 @@ ICU_LINK_OPTS= !MESSAGE Hint: set ICU_PATH on the nmake command line to point !MESSAGE to your ICU installation if you have one. !ELSE +!IF "$(ICU_LIBPATH)" == "" ICU_COMPILE_OPTS= -DBOOST_HAS_ICU=1 -I"$(ICU_PATH)\include" ICU_LINK_OPTS= /LIBPATH:"$(ICU_PATH)\lib" icuin.lib icuuc.lib !MESSAGE Building Boost.Regex with ICU in $(ICU_PATH) +!ELSE +ICU_COMPILE_OPTS= -DBOOST_HAS_ICU=1 -I"$(ICU_PATH)\include" +ICU_LINK_OPTS= /LIBPATH:"$(ICU_LIBPATH)" /LIBPATH:"$(ICU_PATH)\lib" icuin.lib icuuc.lib +!MESSAGE Building Boost.Regex with ICU in $(ICU_PATH) and libs in $(ICU_LIBPATH) +!ENDIF !ENDIF diff --git a/build/vc71.mak b/build/vc71.mak index 32f6f9813..b41bfa127 100644 --- a/build/vc71.mak +++ b/build/vc71.mak @@ -16,6 +16,7 @@ # path to ICU library installation goes here: # ICU_PATH= +ICU_LIBPATH= # # Add additional compiler options here: # @@ -54,9 +55,15 @@ ICU_LINK_OPTS= !MESSAGE Hint: set ICU_PATH on the nmake command line to point !MESSAGE to your ICU installation if you have one. !ELSE +!IF "$(ICU_LIBPATH)" == "" ICU_COMPILE_OPTS= -DBOOST_HAS_ICU=1 -I"$(ICU_PATH)\include" ICU_LINK_OPTS= /LIBPATH:"$(ICU_PATH)\lib" icuin.lib icuuc.lib !MESSAGE Building Boost.Regex with ICU in $(ICU_PATH) +!ELSE +ICU_COMPILE_OPTS= -DBOOST_HAS_ICU=1 -I"$(ICU_PATH)\include" +ICU_LINK_OPTS= /LIBPATH:"$(ICU_LIBPATH)" /LIBPATH:"$(ICU_PATH)\lib" icuin.lib icuuc.lib +!MESSAGE Building Boost.Regex with ICU in $(ICU_PATH) with $(ICU_LIBPATH) +!ENDIF !ENDIF diff --git a/build/vc8.mak b/build/vc8.mak index 79db3effc..7b3e25a25 100644 --- a/build/vc8.mak +++ b/build/vc8.mak @@ -16,6 +16,7 @@ # path to ICU library installation goes here: # ICU_PATH= +ICU_LIBPATH= # # Add additional compiler options here: # @@ -54,9 +55,15 @@ ICU_LINK_OPTS= !MESSAGE Hint: set ICU_PATH on the nmake command line to point !MESSAGE to your ICU installation if you have one. !ELSE +!IF "$(ICU_LIBPATH)" == "" ICU_COMPILE_OPTS= -DBOOST_HAS_ICU=1 -I"$(ICU_PATH)\include" ICU_LINK_OPTS= /LIBPATH:"$(ICU_PATH)\lib" icuin.lib icuuc.lib !MESSAGE Building Boost.Regex with ICU in $(ICU_PATH) +!ELSE +ICU_COMPILE_OPTS= -DBOOST_HAS_ICU=1 -I"$(ICU_PATH)\include" +ICU_LINK_OPTS= /LIBPATH:"$(ICU_LIBPATH)" /LIBPATH:"$(ICU_PATH)\lib" icuin.lib icuuc.lib +!MESSAGE Building Boost.Regex with ICU in $(ICU_PATH) and libs in $(ICU_LIBPATH) +!ENDIF !ENDIF diff --git a/build/vc9.mak b/build/vc9.mak index 5a9341e5a..c08024133 100644 --- a/build/vc9.mak +++ b/build/vc9.mak @@ -16,6 +16,7 @@ # path to ICU library installation goes here: # ICU_PATH= +ICU_LIBPATH= # # Add additional compiler options here: # @@ -54,9 +55,15 @@ ICU_LINK_OPTS= !MESSAGE Hint: set ICU_PATH on the nmake command line to point !MESSAGE to your ICU installation if you have one. !ELSE +!IF "$(ICU_LIBPATH)" == "" ICU_COMPILE_OPTS= -DBOOST_HAS_ICU=1 -I"$(ICU_PATH)\include" ICU_LINK_OPTS= /LIBPATH:"$(ICU_PATH)\lib" icuin.lib icuuc.lib !MESSAGE Building Boost.Regex with ICU in $(ICU_PATH) +!ELSE +ICU_COMPILE_OPTS= -DBOOST_HAS_ICU=1 -I"$(ICU_PATH)\include" +ICU_LINK_OPTS= /LIBPATH:"$(ICU_LIBPATH)" /LIBPATH:"$(ICU_PATH)\lib" icuin.lib icuuc.lib +!MESSAGE Building Boost.Regex with ICU in $(ICU_PATH) and libs in $(ICU_LIBPATH) +!ENDIF !ENDIF diff --git a/build/vc_gen.sh b/build/vc_gen.sh index 0838770e2..abb039841 100644 --- a/build/vc_gen.sh +++ b/build/vc_gen.sh @@ -219,6 +219,7 @@ function vc6_gen() # path to ICU library installation goes here: # ICU_PATH= +ICU_LIBPATH= # # Add additional compiler options here: # @@ -257,9 +258,15 @@ ICU_LINK_OPTS= !MESSAGE Hint: set ICU_PATH on the nmake command line to point !MESSAGE to your ICU installation if you have one. !ELSE +!IF "\$(ICU_LIBPATH)" == "" ICU_COMPILE_OPTS= -DBOOST_HAS_ICU=1 -I"\$(ICU_PATH)\\include" ICU_LINK_OPTS= /LIBPATH:"\$(ICU_PATH)\\lib" icuin.lib icuuc.lib !MESSAGE Building Boost.Regex with ICU in \$(ICU_PATH) +!ELSE +ICU_COMPILE_OPTS= -DBOOST_HAS_ICU=1 -I"\$(ICU_PATH)\\include" +ICU_LINK_OPTS= /LIBPATH:"\$(ICU_LIBPATH)" /LIBPATH:"\$(ICU_PATH)\\lib" icuin.lib icuuc.lib +!MESSAGE Building Boost.Regex with ICU in \$(ICU_PATH) and libs in \$(ICU_LIBPATH) +!ENDIF !ENDIF EOF @@ -351,6 +358,7 @@ function vc6_stlp_gen() # ICU setup: # ICU_PATH= +ICU_LIBPATH= # # Add additional compiler options here: # @@ -389,9 +397,15 @@ ICU_LINK_OPTS= !MESSAGE Hint: set ICU_PATH on the nmake command line to point !MESSAGE to your ICU installation if you have one. !ELSE +!IF "\$(ICU_LIBPATH)" == "" ICU_COMPILE_OPTS= -DBOOST_HAS_ICU=1 -I"\$(ICU_PATH)\\include" ICU_LINK_OPTS= /LIBPATH:"\$(ICU_PATH)\\lib" icuin.lib icuuc.lib !MESSAGE Building Boost.Regex with ICU in \$(ICU_PATH) +!ELSE +ICU_COMPILE_OPTS= -DBOOST_HAS_ICU=1 -I"\$(ICU_PATH)\\include" +ICU_LINK_OPTS= /LIBPATH:"\$(ICU_LIBPATH)" /LIBPATH:"\$(ICU_PATH)\\lib" icuin.lib icuuc.lib +!MESSAGE Building Boost.Regex with ICU in \$(ICU_PATH) and libs in \$(ICU_LIBPATH) +!ENDIF !ENDIF EOF diff --git a/doc/html/boost_regex/install.html b/doc/html/boost_regex/install.html index 1278abc1f..d41f24239 100644 --- a/doc/html/boost_regex/install.html +++ b/doc/html/boost_regex/install.html @@ -136,6 +136,11 @@ might use:

bjam -sICU_PATH=c:\download\icu --toolset=toolset-name install
+

+ If your libraries are in a different (sub)directory then you can additionally use ICU_LIBPATH + to explicitly point to the correct directory where the ICU libraries are located. +

+
bjam -sICU_PATH=c:\download\icu -sICU_LIBPATH=c:\download\icu\debug-libs --toolset=toolset-name install
diff --git a/doc/install.qbk b/doc/install.qbk index 67c57cec2..e012928f5 100644 --- a/doc/install.qbk +++ b/doc/install.qbk @@ -87,6 +87,11 @@ might use: [pre bjam -sICU_PATH=c:\download\icu --toolset=toolset-name install] +If your libraries are in a different (sub)directory then you can additionally use `ICU_LIBPATH` +to explicitly point to the correct directory where the ICU libraries are located. + +[pre bjam -sICU_PATH=c:\download\icu -sICU_LIBPATH=C:\download\icu\debug-libs --toolset=toolset-name install] + [important 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
[Important]