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"
	depends on BR2_TOOLCHAIN_SUPPORTS_ALWAYS_LOCKFREE_ATOMIC_INTS
	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_SUPPORTS_ALWAYS_LOCKFREE_ATOMIC_INTS \
		|| BR2_TOOLCHAIN_GCC_AT_LEAST_6 # boost-thread
	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_SUPPORTS_ALWAYS_LOCKFREE_ATOMIC_INTS # boost-thread
	depends on !BR2_TOOLCHAIN_HAS_GCC_BUG_64735 # boost-context, boost-thread
	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_SUPPORTS_ALWAYS_LOCKFREE_ATOMIC_INTS
	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_SUPPORTS_ALWAYS_LOCKFREE_ATOMIC_INTS \
		|| BR2_TOOLCHAIN_GCC_AT_LEAST_6 # boost-context -> boost-thread
	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_SUPPORTS_ALWAYS_LOCKFREE_ATOMIC_INTS \
		|| BR2_TOOLCHAIN_GCC_AT_LEAST_6
	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_SUPPORTS_ALWAYS_LOCKFREE_ATOMIC_INTS \
		|| BR2_TOOLCHAIN_GCC_AT_LEAST_6
	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)
	depends on !(BR2_TOOLCHAIN_HAS_GCC_BUG_64735 && BR2_PACKAGE_ICU) # boost-thread
	depends on BR2_TOOLCHAIN_SUPPORTS_ALWAYS_LOCKFREE_ATOMIC_INTS \
		|| !BR2_PACKAGE_ICU # boost-thread
	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_TOOLCHAIN_SUPPORTS_ALWAYS_LOCKFREE_ATOMIC_INTS
	depends on BR2_PACKAGE_ICU
	depends on BR2_STATIC_LIBS

comment "boost-locale needs a toolchain not affected by GCC bug 64735"
	depends on BR2_TOOLCHAIN_SUPPORTS_ALWAYS_LOCKFREE_ATOMIC_INTS
	depends on BR2_PACKAGE_ICU
	depends on BR2_TOOLCHAIN_HAS_GCC_BUG_64735

config BR2_PACKAGE_BOOST_LOG
	bool "boost-log"
	depends on BR2_TOOLCHAIN_HAS_THREADS_NPTL
	depends on BR2_TOOLCHAIN_SUPPORTS_ALWAYS_LOCKFREE_ATOMIC_INTS # boost-atomic
	depends on !BR2_TOOLCHAIN_HAS_GCC_BUG_64735 # boost-thread
	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_SUPPORTS_ALWAYS_LOCKFREE_ATOMIC_INTS
	depends on !BR2_TOOLCHAIN_HAS_THREADS_NPTL

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

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_NOWIDE
	bool "boost-nowide"
	help
	  Library for cross-platform, unicode aware 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"
	depends on BR2_TOOLCHAIN_SUPPORTS_ALWAYS_LOCKFREE_ATOMIC_INTS
	depends on !BR2_TOOLCHAIN_HAS_GCC_BUG_64735 # std::current_exception
	select BR2_PACKAGE_BOOST_CHRONO
	select BR2_PACKAGE_BOOST_SYSTEM
	help
	  Portable C++ multi-threading. C++11, C++14.

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

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"
	depends on BR2_TOOLCHAIN_SUPPORTS_ALWAYS_LOCKFREE_ATOMIC_INTS # boost-thread
	depends on !BR2_TOOLCHAIN_HAS_GCC_BUG_64735 # boost-thread
	select BR2_PACKAGE_BOOST_SYSTEM
	select BR2_PACKAGE_BOOST_THREAD
	help
	  Runtime polymorphism based on concepts.

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

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
	depends on BR2_TOOLCHAIN_SUPPORTS_ALWAYS_LOCKFREE_ATOMIC_INTS # boost-thread
	depends on !BR2_TOOLCHAIN_HAS_GCC_BUG_64735 # boost-thread
	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.

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

endif
