Boost logo

Boost Users :

Subject: [Boost-users] Fwd: Boost.Locale - Help linking to ICU static libraries please
From: Brad Keifenheim (betrue82_at_[hidden])
Date: 2013-02-27 16:54:19


Hello,

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



Boost-users list run by williamkempf at hotmail.com, kalb at libertysoft.com, bjorn.karlsson at readsoft.com, gregod at cs.rpi.edu, wekempf at cox.net