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_4_8
	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
	depends on !BR2_TOOLCHAIN_HAS_GCC_BUG_85180
	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, 85180"
	depends on BR2_PACKAGE_BOOST_CONTEXT_ARCH_SUPPORTS
	depends on BR2_TOOLCHAIN_HAS_GCC_BUG_64735 || BR2_TOOLCHAIN_HAS_GCC_BUG_85180

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_SIGNALS
	bool "boost-signals"
	help
	  Managed signals & slots callback implementation.

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
