# audit has some builtin per-architecture system call tables
config BR2_PACKAGE_AUDIT_ARCH_SUPPORTS
	bool
	default y if BR2_aarch64 || BR2_arm || BR2_armeb || \
		BR2_i386 || BR2_powerpc || BR2_x86_64

config BR2_PACKAGE_AUDIT
	bool "audit"
	depends on BR2_PACKAGE_AUDIT_ARCH_SUPPORTS
	depends on BR2_TOOLCHAIN_HAS_THREADS
	depends on !BR2_STATIC_LIBS
	depends on !BR2_TOOLCHAIN_USES_MUSL
	help
	  The audit package contains the user space utilities for
	  storing and searching the audit records generated by
	  the audit subsystem in the Linux 2.6 kernel

	  Note: The z/OS remote plugin is disabled in this package

	  http://people.redhat.com/sgrubb/audit/

comment "audit needs a uClibc or (e)glibc toolchain w/ threads, dynamic library"
	depends on !BR2_TOOLCHAIN_HAS_THREADS || BR2_STATIC_LIBS \
		|| BR2_TOOLCHAIN_USES_MUSL
	depends on BR2_PACKAGE_AUDIT_ARCH_SUPPORTS
