config BR2_PACKAGE_FFTW
	bool "fftw"
	help
	  Library for computing Fast Fourier Transforms.

	  This library computes Fast Fourier Transforms (FFT) in one
	  or more dimensions. It is extremely fast. This package
	  contains the shared library version of the fftw libraries in
	  double precision.

	  http://www.fftw.org

if BR2_PACKAGE_FFTW

config BR2_PACKAGE_FFTW_USE_SSE
	bool

config BR2_PACKAGE_FFTW_USE_SSE2
	bool

config BR2_PACKAGE_FFTW_USE_NEON
	bool

choice
	prompt "fftw precision"
	default BR2_PACKAGE_FFTW_PRECISION_DOUBLE
	help
	  Selects fftw precision

config BR2_PACKAGE_FFTW_PRECISION_SINGLE
	bool "single"
	select BR2_PACKAGE_FFTW_USE_SSE if BR2_X86_CPU_HAS_SSE
	select BR2_PACKAGE_FFTW_USE_SSE2 if BR2_X86_CPU_HAS_SSE2
	select BR2_PACKAGE_FFTW_USE_NEON if BR2_ARM_CPU_HAS_NEON && !BR2_ARM_SOFT_FLOAT
	help
	  Compile fftw in single precision, i.e. use 'float' for floating
	  point type.

config BR2_PACKAGE_FFTW_PRECISION_DOUBLE
	bool "double"
	select BR2_PACKAGE_FFTW_USE_SSE2 if BR2_X86_CPU_HAS_SSE2
	help
	  Compile fftw in double precision (the default), i.e. use 'double'
	  for floating point type.

config BR2_PACKAGE_FFTW_PRECISION_LONG_DOUBLE
	bool "long double"
	# long-double precision require long-double trigonometric routines
	depends on !(BR2_TOOLCHAIN_BUILDROOT_UCLIBC && \
		(BR2_arm || BR2_mips || BR2_mipsel))
	help
	  Compile fftw in long double precision, i.e. use 'long double'
	  for floating point type.

config BR2_PACKAGE_FFTW_PRECISION_QUAD
	bool "quad"
	# quad-precision needs to have a gcc with libquadmath
	depends on (BR2_i386 || BR2_x86_64) && BR2_USE_WCHAR
	help
	  Compile fftw in quadruple precision, i.e. use '__float128' for
	  floating point type.

endchoice

config BR2_PACKAGE_FFTW_FAST
	bool "optimise for speed over accuracy"
	help
	  Optimise for fast math functions, at the expense of accuracy.

	  Say 'y' if you need speed and can live with inaccuracies in
	  the results. Say 'n' (the default) if accuracy is of utmost
	  importance.

	  This basically uses gcc's -Ofast optimisation level, which in
	  turn is basically using gcc's -ffast-math. See the gcc manual
	  for what this means.

endif
