# 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_GCC_AT_LEAST_4_9 # C++11 PR56019
	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++, gcc >= 4.9"
	depends on BR2_PACKAGE_OPENAL_ARCH_SUPPORTS
	depends on !BR2_TOOLCHAIN_HAS_THREADS_NPTL \
		|| !BR2_INSTALL_LIBSTDCPP \
		|| !BR2_TOOLCHAIN_GCC_AT_LEAST_4_9
