# These are the architectures supported by FDK AAC
config BR2_PACKAGE_FDK_AAC_ARCH_SUPPORTS
	bool
	default y if BR2_aarch64
	default y if BR2_arm || BR2_armeb
	default y if BR2_i386 || BR2_x86_64
	default y if BR2_mips || BR2_mipsel || BR2_mips64 || BR2_mips64el
	default y if BR2_powerpc
	default y if BR2_sh

config BR2_PACKAGE_FDK_AAC
	bool "fdk-aac"
	depends on BR2_PACKAGE_FDK_AAC_ARCH_SUPPORTS
	depends on BR2_INSTALL_LIBSTDCPP
	help
	  The Fraunhofer FDK AAC Codec Library for Android ("FDK AAC
	  Codec") is software that implements the MPEG Advanced Audio
	  Coding ("AAC") encoding and decoding scheme for digital audio

	  http://sourceforge.net/projects/opencore-amr/files/fdk-aac/

comment "fdk-aac needs a toolchain w/ C++"
	depends on BR2_PACKAGE_FDK_AAC_ARCH_SUPPORTS
	depends on !BR2_INSTALL_LIBSTDCPP
