kumquat-buildroot/package/boost/Config.in
Romain Naour 5270553b90 package/boost: disable boost-locale for static only build with icu
Boost fails to build with the following error:

error: Tried to build the target twice, with property sets having
error: these incompatible properties:
error:
error:     -  <runtime-link>static <warnings>all
error:     -  <runtime-link>shared <warnings>on

when the following conditions are met:

 - BR2_STATIC_LIBS=y
 - BR2_PACKAGE_ICU=y
 - BR2_PACKAGE_BOOST_LOCALE=y
 - Another BR2_PACKAGE_BOOST_xyz option is enabled, which enables a
   feature not provided just by header files, but that requires
   building a library.

In such a situation, Boost absolutely wants to build the libboost
libraries as shared libraries. Not having boost-locale, or not having
icu is sufficient to avoid the issue.

So, as a simple work-around, we prevent from building boost-locale
when icu and static linking are used.

Fixes:

  http://autobuild.buildroot.net/results/c8f7aa85f5791d8ae8cf4b9085788adc5152286f/

Signed-off-by: Romain Naour <romain.naour@gmail.com>
Cc: Yegor Yefremov <yegorslists@googlemail.com>
Cc: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
[Thomas:
 - only disable boost-locale when icu is enabled
 - improve commit log]
Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
2017-05-16 09:45:35 +02:00

180 lines
4.7 KiB
Plaintext

comment "boost needs a toolchain w/ C++, threads, wchar"
depends on !BR2_INSTALL_LIBSTDCPP || !BR2_TOOLCHAIN_HAS_THREADS || !BR2_USE_WCHAR
config BR2_PACKAGE_BOOST
bool "boost"
depends on BR2_INSTALL_LIBSTDCPP
# Boost could theorically be built with threading=single, but
# that unfortunately doesn't work. Until someone fixes that,
# let's depend on threads.
depends on BR2_TOOLCHAIN_HAS_THREADS
depends on BR2_USE_WCHAR
help
A general purpose C++ library
http://www.boost.org/
if BR2_PACKAGE_BOOST
choice
prompt "Layout"
default BR2_PACKAGE_BOOST_LAYOUT_SYSTEM
help
Selects the layout of Boost binary names
config BR2_PACKAGE_BOOST_LAYOUT_SYSTEM
bool "system"
help
Boost binary names do not include the Boost version number
or the name and version number of the compiler.
config BR2_PACKAGE_BOOST_LAYOUT_TAGGED
bool "tagged"
help
Boost binary names include the encoded build properties such
as variant and threading, but do not include compiler name
and version, or Boost version. This option is useful if you
build several variants of Boost, using the same compiler.
config BR2_PACKAGE_BOOST_LAYOUT_VERSIONED
bool "versioned"
help
Boost binary names include the Boost version number, name
and version of the compiler and encoded build properties.
endchoice
config BR2_PACKAGE_BOOST_LAYOUT
string
default "system" if BR2_PACKAGE_BOOST_LAYOUT_SYSTEM
default "tagged" if BR2_PACKAGE_BOOST_LAYOUT_TAGGED
default "versioned" if BR2_PACKAGE_BOOST_LAYOUT_VERSIONED
config BR2_PACKAGE_BOOST_ATOMIC
bool "boost-atomic"
config BR2_PACKAGE_BOOST_CHRONO
bool "boost-chrono"
config BR2_PACKAGE_BOOST_CONTAINER
bool "boost-container"
# see
# http://www.boost.org/doc/libs/1_59_0/libs/context/doc/html/context/architectures.html
# for the list of supported architectures. Sparc pretends to be
# supported, but it doesn't build.
config BR2_PACKAGE_BOOST_CONTEXT
bool "boost-context"
depends on ((BR2_arm || BR2_armeb) && BR2_ARM_CPU_HAS_ARM) || \
BR2_i386 || BR2_mips || BR2_mipsel || BR2_powerpc || BR2_x86_64
config BR2_PACKAGE_BOOST_COROUTINE
bool "boost-coroutine"
depends on BR2_PACKAGE_BOOST_CONTEXT
config BR2_PACKAGE_BOOST_COROUTINE2
bool "boost-coroutine2"
depends on BR2_PACKAGE_BOOST_CONTEXT
config BR2_PACKAGE_BOOST_DATE_TIME
bool "boost-date_time"
config BR2_PACKAGE_BOOST_EXCEPTION
bool "boost-exception"
config BR2_PACKAGE_BOOST_FILESYSTEM
bool "boost-filesystem"
config BR2_PACKAGE_BOOST_GRAPH
bool "boost-graph"
config BR2_PACKAGE_BOOST_GRAPH_PARALLEL
bool "boost-graph_parallel"
config BR2_PACKAGE_BOOST_IOSTREAMS
bool "boost-iostreams"
select BR2_PACKAGE_BZIP2
select BR2_PACKAGE_ZLIB
config BR2_PACKAGE_BOOST_LOCALE
bool "boost-locale"
# When boost-locale is enabled with icu support, Boost no
# longer supports building the libboost_* libraries as static
# libraries, causing build failures when other boost features
# than boost-locale are enabled. To work around this, we
# prevent using boost-locale on static linking configurations
# with icu enabled. See
# https://svn.boost.org/trac/boost/ticket/9685 for more
# details.
depends on !(BR2_STATIC_LIBS && BR2_PACKAGE_ICU)
select BR2_PACKAGE_LIBICONV if !BR2_ENABLE_LOCALE
comment "boost-locale needs a toolchain w/ dynamic library"
depends on BR2_PACKAGE_ICU
depends on BR2_STATIC_LIBS
config BR2_PACKAGE_BOOST_LOG
bool "boost-log"
depends on BR2_TOOLCHAIN_HAS_THREADS_NPTL
# for some reason, uClibc on PowerPC fails to build the boost
# log module
depends on !(BR2_powerpc && BR2_TOOLCHAIN_USES_UCLIBC)
comment "boost-log needs a toolchain w/ NPTL"
depends on !BR2_TOOLCHAIN_HAS_THREADS_NPTL
depends on !(BR2_powerpc && BR2_TOOLCHAIN_USES_UCLIBC)
config BR2_PACKAGE_BOOST_MATH
bool "boost-math"
config BR2_PACKAGE_BOOST_METAPARSE
bool "boost-metaparse"
depends on BR2_USE_MMU # boost-test
select BR2_PACKAGE_BOOST_TEST
config BR2_PACKAGE_BOOST_MPI
bool "boost-mpi"
config BR2_PACKAGE_BOOST_PROGRAM_OPTIONS
bool "boost-program_options"
config BR2_PACKAGE_BOOST_PYTHON
bool "boost-python"
depends on BR2_PACKAGE_PYTHON || BR2_PACKAGE_PYTHON3
config BR2_PACKAGE_BOOST_RANDOM
bool "boost-random"
config BR2_PACKAGE_BOOST_REGEX
bool "boost-regex"
config BR2_PACKAGE_BOOST_SERIALIZATION
bool "boost-serialization"
config BR2_PACKAGE_BOOST_SIGNALS
bool "boost-signals"
config BR2_PACKAGE_BOOST_SYSTEM
bool "boost-system"
config BR2_PACKAGE_BOOST_TEST
bool "boost-test"
depends on BR2_USE_MMU # fork()
config BR2_PACKAGE_BOOST_THREAD
bool "boost-thread"
config BR2_PACKAGE_BOOST_TIMER
bool "boost-timer"
config BR2_PACKAGE_BOOST_TYPE_ERASURE
bool "boost-type_erasure"
config BR2_PACKAGE_BOOST_WAVE
bool "boost-wave"
# limitation of assembler for coldfire
# error: Tried to convert PC relative branch to absolute jump
depends on !BR2_m68k_cf
endif