config BR2_PACKAGE_GOOGLE_BREAKPAD_ARCH_SUPPORTS
	bool
	default y if BR2_i386 || BR2_x86_64 || BR2_arm || BR2_aarch64 || \
		BR2_mips || BR2_mipsel

config BR2_PACKAGE_GOOGLE_BREAKPAD
	bool "google-breakpad"
	depends on BR2_INSTALL_LIBSTDCPP
	depends on BR2_HOST_GCC_AT_LEAST_4_8 # C++11
	depends on BR2_TOOLCHAIN_GCC_AT_LEAST_4_8 # C++11
	depends on BR2_USE_WCHAR
	depends on BR2_TOOLCHAIN_HAS_THREADS
	depends on (BR2_TOOLCHAIN_USES_GLIBC || BR2_TOOLCHAIN_USES_UCLIBC)
	depends on BR2_PACKAGE_GOOGLE_BREAKPAD_ARCH_SUPPORTS
	select BR2_PACKAGE_LINUX_SYSCALL_SUPPORT
	help
	  Google-Breakpad is a library and tool suite that allows you
	  to distribute an application to users with compiler-provided
	  debugging information removed, record crashes in compact
	  "minidump" files, send them back to your server, and produce
	  C and C++ stack traces from these minidumps. Breakpad can
	  also write minidumps on request for programs that have not
	  crashed.

	  You may want to set BR2_ENABLE_DEBUG, in order to get useful
	  results.

	  This target package installs a static library named
	  libbreakpad_client.a which should be linked into programs
	  willing to use Google Breakpad. A host variant of this
	  package is also available, and provides the different tools
	  needed to extract the debugging symbols from target
	  binaries.

	  https://chromium.googlesource.com/breakpad/breakpad

comment "google-breakpad requires a glibc or uClibc toolchain w/ wchar, thread, C++, gcc >= 4.8"
	depends on BR2_PACKAGE_GOOGLE_BREAKPAD_ARCH_SUPPORTS
	depends on !BR2_INSTALL_LIBSTDCPP || !BR2_USE_WCHAR || \
		!BR2_TOOLCHAIN_HAS_THREADS || \
		!(BR2_TOOLCHAIN_USES_GLIBC || BR2_TOOLCHAIN_USES_UCLIBC) || \
		!BR2_TOOLCHAIN_GCC_AT_LEAST_4_8 || !BR2_HOST_GCC_AT_LEAST_4_8
