# 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_powerpc64 || \
		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 # strndupa()
	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 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
