config BR2_PACKAGE_LTTNG_TOOLS
	bool "lttng-tools"
	select BR2_PACKAGE_LIBURCU
	select BR2_PACKAGE_LIBXML2
	select BR2_PACKAGE_POPT
	select BR2_PACKAGE_UTIL_LINUX
	select BR2_PACKAGE_UTIL_LINUX_LIBUUID
	# liburcu only works on some architectures and requires thread support
	depends on BR2_arm || BR2_armeb || BR2_i386 || BR2_powerpc || BR2_x86_64
	depends on !BR2_TOOLCHAIN_HAS_GCC_BUG_58595 # lttng-tools/gcc-4.{7,8}.x bug
	depends on !BR2_TOOLCHAIN_HAS_GCC_BUG_58854 # liburcu/gcc-4.8.x bug
	depends on BR2_LARGEFILE
	depends on BR2_USE_WCHAR # util-linux
	depends on BR2_TOOLCHAIN_HAS_THREADS
	help
	  Userspace utilities for the LTTng 2.0 tracing
	  infrastructure.

	  Those utilities are required on the target system to start
	  and stop tracing sessions. Analysis of the trace can be done
	  on the host machine using the babeltrace utility. This
	  utility is automatically built by Buildroot in
	  $(O)/host/usr/bin/babeltrace, as a dependency of
	  lttng-tools. However, there is also a lttng-babeltrace
	  package for the target, if babeltrace on the target is
	  interesting.

	  If userspace tracing is desired, you need to enable
	  lttng-libust.

	  http://lttng.org

comment "lttng-tools needs a toolchain w/ largefile, threads, wchar"
	depends on BR2_arm || BR2_armeb || BR2_i386 || BR2_powerpc || BR2_x86_64
	depends on !BR2_LARGEFILE || !BR2_TOOLCHAIN_HAS_THREADS || \
		!BR2_USE_WCHAR
	depends on !BR2_TOOLCHAIN_HAS_GCC_BUG_58595 # lttng-tools/gcc-4.{7,8}.x bug
	depends on !BR2_TOOLCHAIN_HAS_GCC_BUG_58854 # liburcu/gcc-4.8.x bug

comment "lttng-tools needs a toolchain not affected by GCC bug 58854 and 58595"
	depends on BR2_TOOLCHAIN_HAS_GCC_BUG_58854 || BR2_TOOLCHAIN_HAS_GCC_BUG_58595
