# openal can:
# - use __atomic_*() intrinsics when available
# - otherwise use __sync_*() intrinsics when available. It needs the
#   4-byte ones on 32 bits architectures, and the 4-byte and 8-byte
#   one on 64 bits architecture
# - it also provides its one implementation of atomic operations on
#   x86 and x86_64, but we dont take those into account since in most
#   situations __atomic_*() or __sync_*() will be available, and not
#   all x86 CPUs provide the necessary assembly instructions.
config BR2_PACKAGE_OPENAL_ARCH_SUPPORTS
	bool
	default y if BR2_TOOLCHAIN_HAS_ATOMIC
	default y if BR2_TOOLCHAIN_HAS_SYNC_4 && !BR2_ARCH_IS_64
	default y if BR2_TOOLCHAIN_HAS_SYNC_4 && BR2_TOOLCHAIN_HAS_SYNC_8 && BR2_ARCH_IS_64

config BR2_PACKAGE_OPENAL
	bool "openal"
	depends on BR2_INSTALL_LIBSTDCPP
	depends on BR2_TOOLCHAIN_HAS_THREADS_NPTL
	depends on BR2_PACKAGE_OPENAL_ARCH_SUPPORTS
	help
	  OpenAL provides capabilities for playing audio in a virtual
	  3D environment. Distance attenuation, doppler shift, and
	  directional sound emitters are among the features handled by
	  the API.

	  http://kcat.strangesoft.net/openal.html

comment "openal needs a toolchain w/ NPTL, C++"
	depends on BR2_PACKAGE_OPENAL_ARCH_SUPPORTS
	depends on !BR2_TOOLCHAIN_HAS_THREADS_NPTL \
		|| !BR2_INSTALL_LIBSTDCPP
