I'm building Boost 1.53.0 on FreeBSD using GCC. I wish to provide the ICU back-end to Boost.Locale using the static implementation only.
This is the command line I used to configure and build ICU 49.1.2:
runConfigureICU FreeBSD --prefix=/3rdParty/icu4c/release
--bindir=/3rdParty/icu4c/release/bin64
--sbindir=/3rdParty/icu4c/release/sbin64
--libdir=/3rdParty/icu4c/release/lib64
--enable-static=yes
--enable-shared=no
--with-library-bits=64
CPPFLAGS=-DU_TIMEZONE=0
The DU_TIMEZONE flag is a workaround for ICU on FreeBSD for that particular version. For
this discussion it may safely be ignored.
The ICU build results as follows:
/3rdParty/icu4c/release
|_ bin64
|_ include
|_ lib64
|_ sbin64
|_ share
As intended, the shared (*.so) libraries are not built. Only static (*.a) libraries are present in lib64:
libsicudata.a, libsicui18n.a, libsicuio.a, etc...
I then attempt the following command to build Boost:
b2 toolset=gcc
link=static
variant=release
threading=multi
address-model=64
--build-dir=obj
--stagedir=bin/64
--without-python
-sICU_PATH=/3rdParty/icu4c/release/
--layout=versioned
-a
-j8
With this setup the build reports as follows:
...
Performing configuration checks
- x86 : yes
- has_icu builds : no
warning: Graph library does not contain MPI-based parallel components.
note: to enable them, add "using mpi ;" to your user-config.jam
- iconv (libc) : no
- iconv (separate) : no
- icu : no
- icu (lib64) : no
- Boost.Locale needs either iconv or ICU library to be built.
...
I do not have this problem when -sICU_PATH points to a directory containing the shared versions of the ICU libraries:
libicudata.so, libicui18n.so, libicuio.so ...
Unfortunately the constraints of the end product restrict me from delivering ICU as a shared library.
Will Boost.Locale accept the ICU back-end as a static library implementation? If so, what have I configured improperly?
Thank you in advance for your assistance.
Brad