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"
	help
	  C++11-style atomic<>.

config BR2_PACKAGE_BOOST_CHRONO
	bool "boost-chrono"
	select BR2_PACKAGE_BOOST_SYSTEM
	help
	  Useful time utilities. C++11.

config BR2_PACKAGE_BOOST_CONTAINER
	bool "boost-container"
	help
	  Standard library containers and extensions.

# 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_ARCH_SUPPORTS
	bool
	default y if ((BR2_arm || BR2_armeb) && BR2_ARM_CPU_HAS_ARM)
	default y if BR2_i386
	default y if BR2_mips
	default y if BR2_mipsel
	default y if BR2_powerpc
	default y if BR2_x86_64

config BR2_PACKAGE_BOOST_CONTEXT
	bool "boost-context"
	depends on BR2_PACKAGE_BOOST_CONTEXT_ARCH_SUPPORTS
	depends on !BR2_TOOLCHAIN_HAS_GCC_BUG_64735
	select BR2_PACKAGE_BOOST_THREAD if !BR2_TOOLCHAIN_GCC_AT_LEAST_6
	help
	  C++11 context switching library.

config BR2_PACKAGE_BOOST_CONTRACT
	bool "boost-contract"
	# pthread_condattr_setclock
	depends on BR2_TOOLCHAIN_HAS_THREADS_NPTL
	select BR2_PACKAGE_BOOST_SYSTEM
	help
	  Contract programming for C++.

comment "boost-contract needs a toolchain w/ NPTL"
	depends on !BR2_TOOLCHAIN_HAS_THREADS_NPTL

config BR2_PACKAGE_BOOST_COROUTINE
	bool "boost-coroutine"
	depends on BR2_PACKAGE_BOOST_CONTEXT_ARCH_SUPPORTS
	depends on !BR2_TOOLCHAIN_HAS_GCC_BUG_64735 # boost-context
	select BR2_PACKAGE_BOOST_CHRONO
	select BR2_PACKAGE_BOOST_CONTEXT
	select BR2_PACKAGE_BOOST_SYSTEM
	select BR2_PACKAGE_BOOST_THREAD
	help
	  deprecated coroutine library, the non-depricated coroutine2
	  library is a header-only library and does not need to be
	  selected.

comment "boost-coroutine needs a toolchain not affected by GCC bug 64735"
	depends on BR2_PACKAGE_BOOST_CONTEXT_ARCH_SUPPORTS
	depends on BR2_TOOLCHAIN_HAS_GCC_BUG_64735

config BR2_PACKAGE_BOOST_DATE_TIME
	bool "boost-date_time"
	help
	  A set of date-time libraries based on generic programming
	  concepts.

config BR2_PACKAGE_BOOST_EXCEPTION
	bool "boost-exception"
	help
	  The Boost Exception library supports transporting of arbitrary
	  data in exception objects, and transporting of exceptions
	  between threads.

config BR2_PACKAGE_BOOST_FIBER
	bool "boost-fiber"
	depends on BR2_PACKAGE_BOOST_CONTEXT_ARCH_SUPPORTS
	depends on BR2_TOOLCHAIN_HAS_THREADS_NPTL
	# mips support uses the "pause" instruction, only available
	# since mips32r2/mips64r2.
	depends on !BR2_MIPS_CPU_MIPS32 && !BR2_MIPS_CPU_MIPS64
	depends on !BR2_TOOLCHAIN_HAS_GCC_BUG_64735 # boost-context
	select BR2_PACKAGE_BOOST_CONTEXT
	select BR2_PACKAGE_BOOST_FILESYSTEM
	select BR2_PACKAGE_BOOST_SYSTEM
	help
	  C++11 userland threads library.

comment "boost-fiber needs a toolchain w/ NPTL"
	depends on BR2_PACKAGE_BOOST_CONTEXT_ARCH_SUPPORTS
	depends on !BR2_TOOLCHAIN_HAS_THREADS_NPTL

comment "boost-fiber needs a toolchain not affected by GCC bug 64735"
	depends on BR2_PACKAGE_BOOST_CONTEXT_ARCH_SUPPORTS
	depends on BR2_TOOLCHAIN_HAS_GCC_BUG_64735

config BR2_PACKAGE_BOOST_FILESYSTEM
	bool "boost-filesystem"
	select BR2_PACKAGE_BOOST_SYSTEM
	help
	  The Boost Filesystem Library provides portable facilities to
	  query and manipulate paths, files, and directories.

config BR2_PACKAGE_BOOST_GRAPH
	bool "boost-graph"
	select BR2_PACKAGE_BOOST_REGEX
	help
	  The BGL graph interface and graph components are generic, in
	  the same sense as the the Standard Template Library (STL).

config BR2_PACKAGE_BOOST_GRAPH_PARALLEL
	bool "boost-graph_parallel"
	help
	  The PBGL graph interface and graph components are generic, in
	  the same sense as the the Standard Template Library (STL).

config BR2_PACKAGE_BOOST_IOSTREAMS
	bool "boost-iostreams"
	select BR2_PACKAGE_BZIP2
	select BR2_PACKAGE_ZLIB
	help
	  Boost.IOStreams provides a framework for defining streams,
	  stream buffers and i/o filters.

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_BOOST_SYSTEM
	select BR2_PACKAGE_BOOST_THREAD if BR2_PACKAGE_ICU
	select BR2_PACKAGE_LIBICONV if !BR2_ENABLE_LOCALE
	help
	  Provide localization and Unicode handling tools for C++.

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
	select BR2_PACKAGE_BOOST_ATOMIC
	select BR2_PACKAGE_BOOST_DATE_TIME
	select BR2_PACKAGE_BOOST_FILESYSTEM
	select BR2_PACKAGE_BOOST_REGEX
	select BR2_PACKAGE_BOOST_SYSTEM
	select BR2_PACKAGE_BOOST_THREAD
	help
	  Logging library.

comment "boost-log needs a toolchain w/ NPTL"
	depends on !BR2_TOOLCHAIN_HAS_THREADS_NPTL

config BR2_PACKAGE_BOOST_MATH
	bool "boost-math"
	help
	  Boost.Math includes several contributions in the domain of
	  mathematics:

	  The Greatest Common Divisor and Least Common
	  Multiple library provides run-time and compile-time evaluation
	  of the greatest common divisor (GCD) or least common multiple
	  (LCM) of two integers.

	  The Special Functions library currently provides eight
	  templated special functions, in namespace boost.

	  The Complex Number Inverse Trigonometric Functions are the
	  inverses of trigonometric functions currently present in the
	  C++ standard.

	  Quaternions are a relative of complex numbers often used to
	  parameterise rotations in three dimentional space.

	  Octonions, like quaternions, are a relative of complex
	  numbers.

config BR2_PACKAGE_BOOST_MPI
	bool "boost-mpi"
	help
	  Message Passing Interface library, for use in
	  distributed-memory parallel application programming.

config BR2_PACKAGE_BOOST_PROGRAM_OPTIONS
	bool "boost-program_options"
	help
	  The program_options library allows program developers to
	  obtain program options, that is (name, value) pairs from the
	  user, via conventional methods such as command line and config
	  file.

config BR2_PACKAGE_BOOST_PYTHON
	bool "boost-python"
	depends on BR2_PACKAGE_PYTHON || BR2_PACKAGE_PYTHON3
	help
	  The Boost Python Library is a framework for interfacing Python
	  and C++. It allows you to quickly and seamlessly expose C++
	  classes functions and objects to Python, and vice-versa,
	  using no special tools -- just your C++ compiler.

config BR2_PACKAGE_BOOST_RANDOM
	bool "boost-random"
	select BR2_PACKAGE_BOOST_SYSTEM
	help
	  A complete system for random number generation.

config BR2_PACKAGE_BOOST_REGEX
	bool "boost-regex"
	help
	  A new infrastructure for generic algorithms that builds on top
	  of the new iterator concepts.

config BR2_PACKAGE_BOOST_SERIALIZATION
	bool "boost-serialization"
	help
	  Serialization for persistence and marshalling.

config BR2_PACKAGE_BOOST_STACKTRACE
	bool "boost-stacktrace"
	depends on !BR2_STATIC_LIBS
	help
	  Gather, store, copy and print backtraces.

comment "boost-stacktrace needs a toolchain w/ dynamic library"
	depends on BR2_STATIC_LIBS

config BR2_PACKAGE_BOOST_SYSTEM
	bool "boost-system"
	help
	  Operating system support, including the diagnostics support
	  that will be part of the C++0x standard library.

config BR2_PACKAGE_BOOST_TEST
	bool "boost-test"
	depends on BR2_USE_MMU # fork()
	select BR2_PACKAGE_BOOST_SYSTEM
	select BR2_PACKAGE_BOOST_TIMER
	help
	  Support for simple program testing, full unit testing, and for
	  program execution monitoring.

config BR2_PACKAGE_BOOST_THREAD
	bool "boost-thread"
	select BR2_PACKAGE_BOOST_ATOMIC if !BR2_TOOLCHAIN_SUPPORTS_ALWAYS_LOCKFREE_ATOMIC_INTS
	select BR2_PACKAGE_BOOST_CHRONO
	select BR2_PACKAGE_BOOST_SYSTEM
	help
	  Portable C++ multi-threading. C++11, C++14.

config BR2_PACKAGE_BOOST_TIMER
	bool "boost-timer"
	select BR2_PACKAGE_BOOST_CHRONO
	select BR2_PACKAGE_BOOST_SYSTEM
	help
	  Event timer, progress timer, and progress display classes.

config BR2_PACKAGE_BOOST_TYPE_ERASURE
	bool "boost-type_erasure"
	select BR2_PACKAGE_BOOST_SYSTEM
	select BR2_PACKAGE_BOOST_THREAD
	help
	  Runtime polymorphism based on concepts.

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
	select BR2_PACKAGE_BOOST_DATE_TIME
	select BR2_PACKAGE_BOOST_FILESYSTEM
	select BR2_PACKAGE_BOOST_SYSTEM
	select BR2_PACKAGE_BOOST_THREAD
	help
	  The Boost.Wave library is a Standards conformant, and highly
	  configurable implementation of the mandated C99/C++
	  preprocessor functionality packed behind an easy to use
	  iterator interface.

endif
