config BR2_PACKAGE_GTEST
	bool "gtest"
	depends on BR2_USE_WCHAR
	depends on BR2_TOOLCHAIN_HAS_THREADS
	depends on BR2_INSTALL_LIBSTDCPP
	depends on BR2_TOOLCHAIN_GCC_AT_LEAST_5 # C++14
	depends on BR2_USE_MMU # fork()
	help
	  Google's framework for writing C++ tests on a variety of
	  platforms (Linux, Mac OS X, Windows, Cygwin, Windows CE, and
	  Symbian). Based on the xUnit architecture. Supports
	  automatic test discovery, a rich set of assertions,
	  user-defined assertions, death tests, fatal and non-fatal
	  failures, value- and type-parameterized tests, various
	  options for running the tests, and XML test report
	  generation.

	  Gtest also allows to easily build testsuites for C programs.

	  This package allows running testsuites on the target which
	  might be advantageous in certain cases.

	  https://github.com/google/googletest

if BR2_PACKAGE_GTEST

config BR2_PACKAGE_GTEST_GMOCK
	bool "gmock"
	help
	  Inspired by jMock, EasyMock, and Hamcrest, and designed with
	  C++'s specifics in mind, Google C++ Mocking Framework (or
	  Google Mock for short) is a library for writing and using C++
	  mock classes.

	  Google Mock:

	    * lets you create mock classes trivially using simple
	      macros, supports a rich set of matchers and actions,
	    * handles unordered, partially ordered, or completely
	      ordered expectations,
	    * is extensible by users, and
	    * works on Linux, Mac OS X, Windows, Windows Mobile, minGW,
	      and Symbian.

endif # BR2_PACKAGE_GTEST

comment "gtest needs a toolchain w/ C++, wchar, threads, gcc >= 5"
	depends on BR2_USE_MMU
	depends on !BR2_USE_WCHAR || !BR2_TOOLCHAIN_HAS_THREADS || \
		!BR2_INSTALL_LIBSTDCPP || !BR2_TOOLCHAIN_GCC_AT_LEAST_5
