config BR2_PACKAGE_BITCOIN_ARCH_SUPPORTS
	bool
	default y if BR2_TOOLCHAIN_HAS_ATOMIC
	# bitcoin uses 8-byte __atomic intrinsics, which are not
	# available on ARM noMMU platforms that we
	# support. BR2_TOOLCHAIN_HAS_ATOMIC does not provide a
	# size-level granularity to express this dependency.
	depends on !(BR2_arm || BR2_armeb) || BR2_USE_MMU

config BR2_PACKAGE_BITCOIN
	bool "bitcoin"
	depends on BR2_INSTALL_LIBSTDCPP
	depends on !BR2_TOOLCHAIN_HAS_GCC_BUG_64735 # std::future
	depends on BR2_PACKAGE_BITCOIN_ARCH_SUPPORTS
	depends on BR2_TOOLCHAIN_HAS_THREADS # boost
	depends on BR2_USE_WCHAR
	select BR2_PACKAGE_BOOST
	select BR2_PACKAGE_BOOST_SYSTEM
	select BR2_PACKAGE_BOOST_FILESYSTEM
	select BR2_PACKAGE_BOOST_THREAD
	select BR2_PACKAGE_LIBEVENT
	help
	  Bitcoin Core is an open source project which maintains and
	  releases Bitcoin client software called “Bitcoin Core”.

	  It is a direct descendant of the original Bitcoin software
	  client released by Satoshi Nakamoto after he published the
	  famous Bitcoin whitepaper.

	  Bitcoin Core consists of both "full-node" software for fully
	  validating the blockchain as well as a bitcoin wallet. The
	  project also currently maintains related software such as
	  the cryptography library libsecp256k1 and others located at
	  GitHub.

	  https://bitcoincore.org

comment "bitcoin needs a toolchain w/ C++, threads, wchar"
	depends on BR2_PACKAGE_BITCOIN_ARCH_SUPPORTS
	depends on !BR2_INSTALL_LIBSTDCPP || \
		!BR2_TOOLCHAIN_HAS_THREADS || !BR2_USE_WCHAR

comment "bitcoin needs a toolchain not affected by GCC bug 64735"
	depends on BR2_PACKAGE_BITCOIN_ARCH_SUPPORTS
	depends on BR2_TOOLCHAIN_HAS_GCC_BUG_64735
