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
	depends on !BR2_TOOLCHAIN_HAS_GCC_BUG_64735

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
