package/fftw : Allow all precisions to be installed at the same time.
PATCH 1/11 package/fftw : Allow all precisions to be installed at the same time.
From: Gwenhael Goavec-Merou <[email protected]>
fftw's library name depends on the precision option. Consequently, it's possible to install multiple flavor on the same target.
This patch split current fftw in 5 part:
- 1 to provide common variables
- 4 to provide specificities for each precision.
This patch suppress hidden BR2_PACKAGE_FFTW_USE_xx variables and directly use corresponding options in specifics .mk.
Based on http://lists.busybox.net/pipermail/buildroot/2016-August/170116.html
--- package/fftw/Config.in | 56 +++---------------- package/fftw/fftw-double/Config.in | 5 ++ package/fftw/fftw-double/fftw-double.hash | 1 + package/fftw/fftw-double/fftw-double.mk | 23 ++++++++ package/fftw/fftw-long-double/Config.in | 8 +++ .../fftw-long-double/fftw-long-double.hash | 1 + .../fftw/fftw-long-double/fftw-long-double.mk | 21 +++++++ package/fftw/fftw-quad/Config.in | 7 +++ package/fftw/fftw-quad/fftw-quad.hash | 1 + package/fftw/fftw-quad/fftw-quad.mk | 21 +++++++ package/fftw/fftw-single/Config.in | 5 ++ package/fftw/fftw-single/fftw-single.hash | 1 + package/fftw/fftw-single/fftw-single.mk | 33 +++++++++++ package/fftw/fftw.mk | 14 +---- 14 files changed, 135 insertions(+), 62 deletions(-) create mode 100644 package/fftw/fftw-double/Config.in create mode 120000 package/fftw/fftw-double/fftw-double.hash create mode 100644 package/fftw/fftw-double/fftw-double.mk create mode 100644 package/fftw/fftw-long-double/Config.in create mode 120000 package/fftw/fftw-long-double/fftw-long-double.hash create mode 100644 package/fftw/fftw-long-double/fftw-long-double.mk create mode 100644 package/fftw/fftw-quad/Config.in create mode 120000 package/fftw/fftw-quad/fftw-quad.hash create mode 100644 package/fftw/fftw-quad/fftw-quad.mk create mode 100644 package/fftw/fftw-single/Config.in create mode 120000 package/fftw/fftw-single/fftw-single.hash create mode 100644 package/fftw/fftw-single/fftw-single.mk
package/fftw/Config.in +7 -49
@@ -12,55 +12,11 @@ config BR2_PACKAGE_FFTW 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 +menu "FFTW precision and options" +source "package/fftw/fftw-double/Config.in" +source "package/fftw/fftw-long-double/Config.in" +source "package/fftw/fftw-single/Config.in" +source "package/fftw/fftw-quad/Config.in" config BR2_PACKAGE_FFTW_FAST bool "optimise for speed over accuracy"
@@ -75,4 +31,6 @@ config BR2_PACKAGE_FFTW_FAST turn is basically using gcc's -ffast-math. See the gcc manual for what this means. +endmenu + endif
package/fftw/fftw-double/Config.in new file +5 -0
@@ -0,0 +1,5 @@ +config BR2_PACKAGE_FFTW_PRECISION_DOUBLE + bool "fftw-double" + help + Compile fftw in double precision (the default), i.e. use + 'double' for floating point type.
package/fftw/fftw-double/fftw-double.hash new file +1 -0
@@ -0,0 +1 @@ +../fftw.hash
package/fftw/fftw-double/fftw-double.mk new file +23 -0
@@ -0,0 +1,23 @@ +################################################################################ +# +# fft-double +# +################################################################################ + +FFTW_PRECISION_DOUBLE_VERSION = $(FFTW_VERSION) +FFTW_PRECISION_DOUBLE_SOURCE = fftw-$(FFTW_VERSION).tar.gz +FFTW_PRECISION_DOUBLE_SITE = $(FFTW_SITE) +FFTW_PRECISION_DOUBLE_INSTALL_STAGING = $(FFTW_INSTALL_STAGING) +FFTW_PRECISION_DOUBLE_LICENSE = $(FFTW_LICENSE) +FFTW_PRECISION_DOUBLE_LICENSE_FILES = $(FFTW_LICENSE_FILES) + +FFTW_PRECISION_DOUBLE_CONF_ENV = $(FFTW_CONF_ENV) + +FFTW_PRECISION_DOUBLE_CONF_OPTS= $(FFTW_CONF_OPTS) + +FFTW_PRECISION_DOUBLE_CFLAGS = $(FFTW_CFLAGS) + +# x86 optimisations +FFTW_PRECISION_DOUBLE_CONF_OPTS += $(if $(BR2_X86_CPU_HAS_SSE2),--enable,--disable)-sse2 + +$(eval $(autotools-package))
package/fftw/fftw-long-double/Config.in new file +8 -0
@@ -0,0 +1,8 @@ +config BR2_PACKAGE_FFTW_PRECISION_LONG_DOUBLE + bool "fftw-long-double" + # long-double precision require long-double trigonometric routines + depends on !(BR2_TOOLCHAIN_USES_UCLIBC && \ + (BR2_arm || BR2_mips || BR2_mipsel)) + help + Compile fftw in long double precision, i.e. use 'long double' + for floating point type.
package/fftw/fftw-long-double/fftw-long-double.hash new file +1 -0
@@ -0,0 +1 @@ +../fftw.hash
package/fftw/fftw-long-double/fftw-long-double.mk new file +21 -0
@@ -0,0 +1,21 @@ +################################################################################ +# +# fftw-long-double +# +################################################################################ + +FFTW_PRECISION_LONG_DOUBLE_VERSION = $(FFTW_VERSION) +FFTW_PRECISION_LONG_DOUBLE_SOURCE = fftw-$(FFTW_VERSION).tar.gz +FFTW_PRECISION_LONG_DOUBLE_SITE = $(FFTW_SITE) +FFTW_PRECISION_LONG_DOUBLE_INSTALL_STAGING = $(FFTW_INSTALL_STAGING) +FFTW_PRECISION_LONG_DOUBLE_LICENSE = $(FFTW_LICENSE) +FFTW_PRECISION_LONG_DOUBLE_LICENSE_FILES = $(FFTW_LICENSE_FILES) + +FFTW_PRECISION_LONG_DOUBLE_CONF_ENV = $(FFTW_CONF_ENV) + +FFTW_PRECISION_LONG_DOUBLE_CONF_OPTS = $(FFTW_CONF_OPTS) +FFTW_PRECISION_LONG_DOUBLE_CONF_OPTS += --enable-long-double + +FFTW_PRECISION_LONG_DOUBLE_CFLAGS = $(FFTW_CFLAGS) + +$(eval $(autotools-package))
package/fftw/fftw-quad/Config.in new file +7 -0
@@ -0,0 +1,7 @@ +config BR2_PACKAGE_FFTW_PRECISION_QUAD + bool "fftw-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.
package/fftw/fftw-quad/fftw-quad.hash new file +1 -0
@@ -0,0 +1 @@ +../fftw.hash
package/fftw/fftw-quad/fftw-quad.mk new file +21 -0
@@ -0,0 +1,21 @@ +################################################################################ +# +# fftw-quad +# +################################################################################ + +FFTW_PRECISION_QUAD_VERSION = $(FFTW_VERSION) +FFTW_PRECISION_QUAD_SOURCE = fftw-$(FFTW_VERSION).tar.gz +FFTW_PRECISION_QUAD_SITE = $(FFTW_SITE) +FFTW_PRECISION_QUAD_INSTALL_STAGING = $(FFTW_INSTALL_STAGING) +FFTW_PRECISION_QUAD_LICENSE = $(FFTW_LICENSE) +FFTW_PRECISION_QUAD_LICENSE_FILES = $(FFTW_LICENSE_FILES) + +FFTW_PRECISION_QUAD_CONF_ENV = $(FFTW_CONF_ENV) + +FFTW_PRECISION_QUAD_CONF_OPTS = $(FFTW_CONF_OPTS) +FFTW_PRECISION_QUAD_CONF_OPTS += --enable-quad-precision + +FFTW_PRECISION_QUAD_CFLAGS = $(FFTW_CFLAGS) + +$(eval $(autotools-package))
package/fftw/fftw-single/Config.in new file +5 -0
@@ -0,0 +1,5 @@ +config BR2_PACKAGE_FFTW_PRECISION_SINGLE + bool "fftw-single" + help + Compile fftw in single precision, i.e. use 'float' + for floating point type.
package/fftw/fftw-single/fftw-single.hash new file +1 -0
@@ -0,0 +1 @@ +../fftw.hash
package/fftw/fftw-single/fftw-single.mk new file +33 -0
@@ -0,0 +1,33 @@ +################################################################################ +# +# fftw-single +# +################################################################################ + +FFTW_PRECISION_SINGLE_VERSION = $(FFTW_VERSION) +FFTW_PRECISION_SINGLE_SOURCE = fftw-$(FFTW_VERSION).tar.gz +FFTW_PRECISION_SINGLE_SITE = $(FFTW_SITE) +FFTW_PRECISION_SINGLE_INSTALL_STAGING = $(FFTW_INSTALL_STAGING) +FFTW_PRECISION_SINGLE_LICENSE = $(FFTW_LICENSE) +FFTW_PRECISION_SINGLE_LICENSE_FILES = $(FFTW_LICENSE_FILES) + +FFTW_PRECISION_SINGLE_CONF_ENV = $(FFTW_CONF_ENV) + +FFTW_PRECISION_SINGLE_CONF_OPTS = $(FFTW_CONF_OPTS) +FFTW_PRECISION_SINGLE_CONF_OPTS += --enable-single + +FFTW_PRECISION_SINGLE_CFLAGS = $(FFTW_CFLAGS) + +# x86 optimisations +FFTW_PRECISION_SINGLE_CONF_OPTS += $(if $(BR2_X86_CPU_HAS_SSE),--enable,--disable)-sse +FFTW_PRECISION_SINGLE_CONF_OPTS += $(if $(BR2_X86_CPU_HAS_SSE2),--enable,--disable)-sse2 + +# ARM optimisations +ifeq ($(BR2_ARM_CPU_HAS_NEON):$(BR2_ARM_SOFT_FLOAT),y:) +FFTW_PRECISION_SINGLE_CONF_OPTS += --enable-neon +FFTW_PRECISION_SINGLE_CFLAGS += -mfpu=neon +else +FFTW_PRECISION_SINGLE_CONF_OPTS += --disable-neon +endif + +$(eval $(autotools-package))
package/fftw/fftw.mk +1 -13
@@ -18,23 +18,11 @@ else FFTW_CONF_OPTS += --disable-fortran endif -FFTW_CONF_OPTS += $(if $(BR2_PACKAGE_FFTW_PRECISION_SINGLE),--enable,--disable)-single -FFTW_CONF_OPTS += $(if $(BR2_PACKAGE_FFTW_PRECISION_LONG_DOUBLE),--enable,--disable)-long-double -FFTW_CONF_OPTS += $(if $(BR2_PACKAGE_FFTW_PRECISION_QUAD),--enable,--disable)-quad-precision - FFTW_CFLAGS = $(TARGET_CFLAGS) ifeq ($(BR2_PACKAGE_FFTW_FAST),y) FFTW_CFLAGS += -O3 -ffast-math endif -# x86 optimisations -FFTW_CONF_OPTS += $(if $(BR2_PACKAGE_FFTW_USE_SSE),--enable,--disable)-sse -FFTW_CONF_OPTS += $(if $(BR2_PACKAGE_FFTW_USE_SSE2),--enable,--disable)-sse2 - -# ARM optimisations -FFTW_CONF_OPTS += $(if $(BR2_PACKAGE_FFTW_USE_NEON),--enable,--disable)-neon -FFTW_CFLAGS += $(if $(BR2_PACKAGE_FFTW_USE_NEON),-mfpu=neon) - # Generic optimisations ifeq ($(BR2_TOOLCHAIN_HAS_THREADS),y) FFTW_CONF_OPTS += --enable-threads
@@ -46,4 +34,4 @@ FFTW_CONF_OPTS += $(if $(BR2_GCC_ENABLE_OPENMP),--enable,--disable)-openmp FFTW_CONF_OPTS += CFLAGS="$(FFTW_CFLAGS)" -$(eval $(autotools-package)) +include $(sort $(wildcard package/fftw/*/*.mk))
Signature · 1 line
2.19.2
PATCH 2/11 alsa-utils: update DEPENDENCIES to fft-single and add select in Config.in
From: Gwenhael Goavec-Merou <[email protected]>
--- package/alsa-utils/Config.in | 5 ++--- package/alsa-utils/alsa-utils.mk | 2 +- 2 files changed, 3 insertions(+), 4 deletions(-)
package/alsa-utils/Config.in +2 -3
@@ -74,15 +74,14 @@ config BR2_PACKAGE_ALSA_UTILS_ASEQNET select BR2_PACKAGE_ALSA_LIB_SEQ config BR2_PACKAGE_ALSA_UTILS_BAT + select BR2_PACKAGE_FFTW + select BR2_PACKAGE_FFTW_PRECISION_SINGLE bool "bat" help ALSABAT (ALSA Basic Audio Tester) is a simple command-line utility intended to help automate audio driver and sound server testing with little human interaction. - Note that analysis support in alsabat requires fftw single - precision. - config BR2_PACKAGE_ALSA_UTILS_IECSET bool "iecset" select BR2_PACKAGE_ALSA_LIB_PCM
package/alsa-utils/alsa-utils.mk +1 -1
@@ -41,7 +41,7 @@ endif ifeq ($(BR2_PACKAGE_ALSA_UTILS_BAT),y) ALSA_UTILS_CONF_OPTS += --enable-bat # Analysis support requires fftw single precision -ALSA_UTILS_DEPENDENCIES += $(if $(BR2_PACKAGE_FFTW_PRECISION_SINGLE),fftw) +ALSA_UTILS_DEPENDENCIES += fftw-single else ALSA_UTILS_CONF_OPTS += --disable-bat endif
Signature · 1 line
2.19.2
PATCH 3/11 aubio: update DEPENDENCIES to fft-single or fft-double depending on enabled option
From: Gwenhael Goavec-Merou <[email protected]>
--- package/aubio/aubio.mk | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-)
package/aubio/aubio.mk +3 -2
@@ -28,7 +28,7 @@ endif # Could not compile aubio in double precision mode with libsamplerate ifeq ($(BR2_PACKAGE_LIBSAMPLERATE)$(BR2_PACKAGE_FFTW_PRECISION_SINGLE),yy) -AUBIO_DEPENDENCIES += libsamplerate +AUBIO_DEPENDENCIES += libsamplerate fftw-single AUBIO_CONF_OPTS += --enable-samplerate else AUBIO_CONF_OPTS += --disable-samplerate
@@ -42,12 +42,13 @@ AUBIO_CONF_OPTS += --disable-jack endif ifeq ($(BR2_PACKAGE_FFTW),y) -AUBIO_DEPENDENCIES += fftw # fftw3 require double otherwise it will look for fftw3f ifeq ($(BR2_PACKAGE_FFTW_PRECISION_DOUBLE),y) AUBIO_CONF_OPTS += --enable-fftw3 --enable-double +AUBIO_DEPENDENCIES += fftw-double else ifeq ($(BR2_PACKAGE_FFTW_PRECISION_SINGLE),y) AUBIO_CONF_OPTS += --enable-fftw3f --disable-double +AUBIO_DEPENDENCIES += fftw-single endif else # !BR2_PACKAGE_FFTW AUBIO_CONF_OPTS += --disable-fftw3
Signature · 1 line
2.19.2
PATCH 4/11 gnuradio: change depend to select for ffw and use fft-single in DEPENDENCIES
From: Gwenhael Goavec-Merou <[email protected]>
With fftw with multiple precision selectable without choise it's possible to replace depend on by select.
--- package/gnuradio/Config.in | 8 ++------ package/gnuradio/gnuradio.mk | 2 +- 2 files changed, 3 insertions(+), 7 deletions(-)
package/gnuradio/Config.in +2 -6
@@ -78,11 +78,6 @@ config BR2_PACKAGE_GNURADIO_ZEROMQ help zeromq communication support -comment "gr-fft, -filter, -analog, -channels, -digital, -trellis, -pager, -qtgui depends fftw's single precision" - depends on !BR2_PACKAGE_FFTW_PRECISION_SINGLE - -if BR2_PACKAGE_FFTW_PRECISION_SINGLE - config BR2_PACKAGE_GNURADIO_ANALOG bool "gr-analog support" select BR2_PACKAGE_GNURADIO_FILTER
@@ -103,6 +98,8 @@ config BR2_PACKAGE_GNURADIO_DIGITAL config BR2_PACKAGE_GNURADIO_FFT bool "gr-fft support" + select BR2_PACKAGE_FFTW + select BR2_PACKAGE_FFTW_PRECISION_SINGLE select BR2_PACKAGE_GNURADIO_BLOCKS help FFT signal processing blocks
@@ -136,4 +133,3 @@ config BR2_PACKAGE_GNURADIO_TRELLIS Trellis coded modulation blocks endif -endif
package/gnuradio/gnuradio.mk +1 -1
@@ -101,7 +101,7 @@ GNURADIO_CONF_OPTS += -DENABLE_GR_FEC=OFF endif ifeq ($(BR2_PACKAGE_GNURADIO_FFT),y) -GNURADIO_DEPENDENCIES += fftw +GNURADIO_DEPENDENCIES += fftw-single GNURADIO_CONF_OPTS += -DENABLE_GR_FFT=ON else GNURADIO_CONF_OPTS += -DENABLE_GR_FFT=OFF
Signature · 1 line
2.19.2
PATCH 5/11 gqrx: suppress fft depend since fft's precision is selected by gnuradio
From: Gwenhael Goavec-Merou <[email protected]>
--- package/gqrx/Config.in | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-)
package/gqrx/Config.in +2 -4
@@ -2,13 +2,11 @@ comment "gqrx needs a toolchain w/ C++, threads, wchar" depends on !BR2_INSTALL_LIBSTDCPP || !BR2_TOOLCHAIN_HAS_THREADS || \ !BR2_USE_WCHAR -comment "gqrx needs qt5, gnuradio, fftw's single precision" - depends on !BR2_PACKAGE_GNURADIO || !BR2_PACKAGE_FFTW_PRECISION_SINGLE || \ - !BR2_PACKAGE_QT5 +comment "gqrx needs qt5, gnuradio" + depends on !BR2_PACKAGE_GNURADIO || !BR2_PACKAGE_QT5 config BR2_PACKAGE_GQRX bool "gqrx" - depends on BR2_PACKAGE_FFTW_PRECISION_SINGLE # gnuradio depends on BR2_PACKAGE_GNURADIO depends on BR2_PACKAGE_QT5 depends on BR2_INSTALL_LIBSTDCPP # boost
Signature · 1 line
2.19.2
PATCH 6/11 gqrx: use select instead of depend for fftw package and fix DEPENDENCIES
From: Gwenhael Goavec-Merou <[email protected]>
--- package/hackrf/Config.in | 6 ++---- package/hackrf/hackrf.mk | 2 +- 2 files changed, 3 insertions(+), 5 deletions(-)
package/hackrf/Config.in +2 -4
@@ -2,7 +2,8 @@ config BR2_PACKAGE_HACKRF bool "hackrf" depends on !BR2_STATIC_LIBS depends on BR2_TOOLCHAIN_HAS_THREADS - depends on BR2_PACKAGE_FFTW_PRECISION_SINGLE + select BR2_PACKAGE_FFTW + select BR2_PACKAGE_FFTW_PRECISION_SINGLE select BR2_PACKAGE_LIBUSB help Library and tools for accessing HackRF SDR boards.
@@ -11,6 +12,3 @@ config BR2_PACKAGE_HACKRF comment "hackrf needs a toolchain w/ threads, dynamic library" depends on BR2_STATIC_LIBS || !BR2_TOOLCHAIN_HAS_THREADS - -comment "hackrf needs fftw's single precision" - depends on !BR2_PACKAGE_FFTW_PRECISION_SINGLE
package/hackrf/hackrf.mk +1 -1
@@ -9,7 +9,7 @@ HACKRF_SITE = https://github.com/mossmann/hackrf/releases/download/v$(HACKRF_VER HACKRF_SOURCE = hackrf-$(HACKRF_VERSION).tar.xz HACKRF_LICENSE = GPL-2.0+ BSD-3c HACKRF_LICENSE_FILES = COPYING -HACKRF_DEPENDENCIES = fftw libusb +HACKRF_DEPENDENCIES = fftw-single libusb HACKRF_SUBDIR = host HACKRF_INSTALL_STAGING = YES
Signature · 1 line
2.19.2
PATCH 7/11 httping: update package to use new fftw structure
From: Gwenhael Goavec-Merou <[email protected]>
--- package/httping/httping.mk | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-)
package/httping/httping.mk +2 -2
@@ -17,9 +17,9 @@ HTTPING_DEPENDENCIES = \ $(if $(BR2_PACKAGE_LIBICONV),libiconv) \ $(if $(BR2_PACKAGE_NCURSES_WCHAR),ncurses) \ $(if $(BR2_PACKAGE_OPENSSL),openssl) \ - $(if $(BR2_PACKAGE_FFTW),fftw) + $(if $(BR2_PACKAGE_FFTW),fftw-double) HTTPING_MAKE_OPTS = $(TARGET_CONFIGURE_OPTS) \ - FW=$(if $(BR2_PACKAGE_FFTW),yes,no) \ + FW=$(if $(BR2_PACKAGE_FFTW_PRECISION_DOUBLE),yes,no) \ NC=$(if $(BR2_PACKAGE_NCURSES_WCHAR),yes,no) \ SSL=$(if $(BR2_PACKAGE_OPENSSL),yes,no) \ TFO=$(if $(BR2_PACKAGE_HTTPING_TFO),yes,no) \
Signature · 1 line
2.19.2
PATCH 8/11 imagemagick: reference explicitly fftw double
From: Gwenhael Goavec-Merou <[email protected]>
--- package/imagemagick/imagemagick.mk | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-)
package/imagemagick/imagemagick.mk +2 -2
@@ -113,11 +113,11 @@ else IMAGEMAGICK_CONF_OPTS += --without-lzma endif -ifeq ($(BR2_PACKAGE_FFTW),y) +ifeq ($(BR2_PACKAGE_FFTW_DOUBLE_PRECISION),y) # configure script misdetects these leading to build errors IMAGEMAGICK_CONF_ENV += ac_cv_func_creal=yes ac_cv_func_cimag=yes IMAGEMAGICK_CONF_OPTS += --with-fftw -IMAGEMAGICK_DEPENDENCIES += fftw +IMAGEMAGICK_DEPENDENCIES += fftw-double else IMAGEMAGICK_CONF_OPTS += --without-fftw endif
Signature · 1 line
2.19.2
PATCH 9/11 libvips: reference explicitly fftw double
From: Gwenhael Goavec-Merou <[email protected]>
--- package/libvips/libvips.mk | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-)
package/libvips/libvips.mk +2 -2
@@ -68,9 +68,9 @@ else LIBVIPS_CONF_OPTS += --without-tiff endif -ifeq ($(BR2_PACKAGE_FFTW),y) +ifeq ($(BR2_PACKAGE_FFTW_PRECISION_DOUBLE),y) LIBVIPS_CONF_OPTS += --with-fftw -LIBVIPS_DEPENDENCIES += fftw +LIBVIPS_DEPENDENCIES += fftw-double else LIBVIPS_CONF_OPTS += --without-fftw endif
Signature · 1 line
2.19.2
PATCH 10/11 pulseaudio: update dependency to fftw-single
From: Gwenhael Goavec-Merou <[email protected]>
--- package/pulseaudio/pulseaudio.mk | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-)
package/pulseaudio/pulseaudio.mk +1 -1
@@ -21,7 +21,7 @@ PULSEAUDIO_DEPENDENCIES = \ $(if $(BR2_PACKAGE_AVAHI_DAEMON),avahi) \ $(if $(BR2_PACKAGE_DBUS),dbus) \ $(if $(BR2_PACKAGE_OPENSSL),openssl) \ - $(if $(BR2_PACKAGE_FFTW),fftw) \ + $(if $(BR2_PACKAGE_FFTW_PRECISION_SINGLE),fftw-single) \ $(if $(BR2_PACKAGE_SYSTEMD),systemd) ifeq ($(BR2_PACKAGE_LIBSAMPLERATE),y)
Signature · 1 line
2.19.2
PATCH 11/11 liquid-dsp: update package to use new fftw structure
From: Gwenhael Goavec-Merou <[email protected]>
--- package/liquid-dsp/liquid-dsp.mk | 3 +++ 1 file changed, 3 insertions(+)
package/liquid-dsp/liquid-dsp.mk +3 -0
@@ -32,6 +32,7 @@ endif # use FFTW instead of built-in FFT ifeq ($(BR2_PACKAGE_FFTW_PRECISION_SINGLE),y) LIQUID_DSP_LDFLAGS += -lfftw3f +LIQUID_DSP_DEPENDENCIES += fftw-single endif # disable altivec, it has build issues
@@ -41,10 +42,12 @@ endif ifeq ($(BR2_PACKAGE_FFTW_PRECISION_DOUBLE),y) LIQUID_DSP_LDFLAGS += -lfftw3 +LIQUID_DSP_DEPENDENCIES += fftw-double endif ifeq ($(BR2_PACKAGE_FFTW_PRECISION_LONG_DOUBLE),y) LIQUID_DSP_LDFLAGS += -lfftw3l +LIQUID_DSP_DEPENDENCIES += fftw-long-double endif LIQUID_DSP_CONF_OPTS += \
Signature · 1 line
2.19.2
PATCH 2/11 alsa-utils: update DEPENDENCIES to fft-single and add select in Config.in
In reply to Gwenhael Goavec-MerouHi Gwenhael Goavec-Merou,
Quoted 35 lines · Gwenhael Goavec-Merou
From: Gwenhael Goavec-Merou <[email protected]>
Signed-off-by Gwenhael Goavec-Merou <[email protected]>--- package/alsa-utils/Config.in | 5 ++--- package/alsa-utils/alsa-utils.mk | 2 +- 2 files changed, 3 insertions(+), 4 deletions(-)package/alsa-utils/Config.in +2
-3@@ -74,15 +74,14 @@ config BR2_PACKAGE_ALSA_UTILS_ASEQNET select BR2_PACKAGE_ALSA_LIB_SEQ config BR2_PACKAGE_ALSA_UTILS_BAT + select BR2_PACKAGE_FFTW + select BR2_PACKAGE_FFTW_PRECISION_SINGLE bool "bat" help ALSABAT (ALSA Basic Audio Tester) is a simple command-line utility intended to help automate audio driver and sound server testing with little human interaction. - Note that analysis support in alsabat requires fftw single - precision. - config BR2_PACKAGE_ALSA_UTILS_IECSET bool "iecset" select BR2_PACKAGE_ALSA_LIB_PCMpackage/alsa-utils/alsa-utils.mk +0
-0
package/alsa-utils/alsa-utils.mk endif · line 44
Quoted 5 lines
package/alsa-utils/alsa-utils.mk +1
-1@@ -41,7 +41,7 @@ endif ifeq ($(BR2_PACKAGE_ALSA_UTILS_BAT),y) ALSA_UTILS_CONF_OPTS += --enable-bat # Analysis support requires fftw single precision -ALSA_UTILS_DEPENDENCIES += $(if $(BR2_PACKAGE_FFTW_PRECISION_SINGLE),fftw) +ALSA_UTILS_DEPENDENCIES += fftw-single
This turns the optional fftw dependency into a mandatory one. Is there a reason for that?
package/alsa-utils/alsa-utils.mk endif · line 47
Quoted 3 lines
package/alsa-utils/alsa-utils.mk +0
-0else ALSA_UTILS_CONF_OPTS += --disable-bat endif
baruch
Signature · 3 lines
http://baruch.siach.name/blog/ ~. .~ Tk Open Systems
=}------------------------------------------------ooO--U--Ooo------------{=
- baruch at tkos.co.il - tel: +972.52.368.4656, http://www.tkos.co.il -PATCH 2/11 alsa-utils: update DEPENDENCIES to fft-single and add select in Config.in
Hi Baruch
Quoted 39 lines · On Thu, 29 Nov 2018 06:24:15 +0200 Baruch Siach <[email protected]> wrote:
Hi Gwenhael Goavec-Merou,
Quoted 35 lines · Gwenhael Goavec-Merou
From: Gwenhael Goavec-Merou <[email protected]>
Signed-off-by Gwenhael Goavec-Merou <[email protected]>--- package/alsa-utils/Config.in | 5 ++--- package/alsa-utils/alsa-utils.mk | 2 +- 2 files changed, 3 insertions(+), 4 deletions(-)package/alsa-utils/Config.in +2
-3@@ -74,15 +74,14 @@ config BR2_PACKAGE_ALSA_UTILS_ASEQNET select BR2_PACKAGE_ALSA_LIB_SEQ config BR2_PACKAGE_ALSA_UTILS_BAT + select BR2_PACKAGE_FFTW + select BR2_PACKAGE_FFTW_PRECISION_SINGLE bool "bat" help ALSABAT (ALSA Basic Audio Tester) is a simple command-line utility intended to help automate audio driver and sound server testing with little human interaction. - Note that analysis support in alsabat requires fftw single - precision. - config BR2_PACKAGE_ALSA_UTILS_IECSET bool "iecset" select BR2_PACKAGE_ALSA_LIB_PCM(quoted diff) +0
-0
b/package/alsa-utils/alsa-utils.mkindex986a745399..9e0094f343100644package/alsa-utils/alsa-utils.mk +0
-0@@ -41,7 +41,7 @@ endif
Quoted 9 lines
package/alsa-utils/alsa-utils.mk endif · line 44
Quoted 5 lines
package/alsa-utils/alsa-utils.mk +1
-1ifeq ($(BR2_PACKAGE_ALSA_UTILS_BAT),y) ALSA_UTILS_CONF_OPTS += --enable-bat # Analysis support requires fftw single precision -ALSA_UTILS_DEPENDENCIES += $(if $(BR2_PACKAGE_FFTW_PRECISION_SINGLE),fftw) +ALSA_UTILS_DEPENDENCIES += fftw-singleThis turns the optional fftw dependency into a mandatory one. Is there a reason for that?
It may be a misunderstanding on my part but it is explicitly noted "Analysis support requires fftw single". This assumption is confirmed by my distribution (gentoo) where fftw is added as dependency when bat option is selected.
Quoted 7 lines
package/alsa-utils/alsa-utils.mk endif · line 47
Quoted 4 lines
package/alsa-utils/alsa-utils.mk +0
-0else ALSA_UTILS_CONF_OPTS += --disable-bat endifbaruch
Gwen
PATCH 2/11 alsa-utils: update DEPENDENCIES to fft-single and add select in Config.in
Hi Gwenhael Goavec-Merou,
Quoted 48 lines · Gwenhael Goavec-Merou
Quoted 37 lines · On Thu, 29 Nov 2018 06:24:15 +0200 Baruch Siach <[email protected]> wrote:
Quoted 35 lines · Gwenhael Goavec-Merou
From: Gwenhael Goavec-Merou <[email protected]>
Signed-off-by Gwenhael Goavec-Merou <[email protected]>--- package/alsa-utils/Config.in | 5 ++--- package/alsa-utils/alsa-utils.mk | 2 +- 2 files changed, 3 insertions(+), 4 deletions(-)package/alsa-utils/Config.in +2
-3@@ -74,15 +74,14 @@ config BR2_PACKAGE_ALSA_UTILS_ASEQNET select BR2_PACKAGE_ALSA_LIB_SEQ config BR2_PACKAGE_ALSA_UTILS_BAT + select BR2_PACKAGE_FFTW + select BR2_PACKAGE_FFTW_PRECISION_SINGLE bool "bat" help ALSABAT (ALSA Basic Audio Tester) is a simple command-line utility intended to help automate audio driver and sound server testing with little human interaction. - Note that analysis support in alsabat requires fftw single - precision. - config BR2_PACKAGE_ALSA_UTILS_IECSET bool "iecset" select BR2_PACKAGE_ALSA_LIB_PCM(quoted diff) +0
-0
b/package/alsa-utils/alsa-utils.mkindex986a745399..9e0094f343100644package/alsa-utils/alsa-utils.mk +0
-0@@ -41,7 +41,7 @@ endifQuoted 9 lines
package/alsa-utils/alsa-utils.mk endif · line 44
Quoted 5 lines
package/alsa-utils/alsa-utils.mk +1
-1ifeq ($(BR2_PACKAGE_ALSA_UTILS_BAT),y) ALSA_UTILS_CONF_OPTS += --enable-bat # Analysis support requires fftw single precision -ALSA_UTILS_DEPENDENCIES += $(if $(BR2_PACKAGE_FFTW_PRECISION_SINGLE),fftw) +ALSA_UTILS_DEPENDENCIES += fftw-singleThis turns the optional fftw dependency into a mandatory one. Is there a reason for that?
Quoted 4 lines
It may be a misunderstanding on my part but it is explicitly noted "Analysis support requires fftw single". This assumption is confirmed by my distribution (gentoo) where fftw is added as dependency when bat option is selected.
fftw is required for analysis support. However analysis support itself is optional. See the alsa-utils configure.ac:
if test x$bat = xtrue; then
...
AC_CHECK_LIB([fftw3f], [fftwf_malloc], , [have_libfftw3="no"])
...
if
baruch
--
http://baruch.siach.name/blog/ ~. .~ Tk Open Systems
=}------------------------------------------------ooO--U--Ooo------------{=
- baruch at tkos.co.il - tel: +972.52.368.4656, http://www.tkos.co.il -
PATCH 2/11 alsa-utils: update DEPENDENCIES to fft-single and add select in Config.in
Hi,
Quoted 55 lines · On Thu, 29 Nov 2018 07:56:35 +0200 Baruch Siach <[email protected]> wrote:
Quoted 49 lines · Gwenhael Goavec-Merou
Quoted 38 lines · On Thu, 29 Nov 2018 06:24:15 +0200 Baruch Siach <[email protected]> wrote:
Quoted 36 lines · Gwenhael Goavec-Merou
From: Gwenhael Goavec-Merou <[email protected]>
Signed-off-by: Gwenhael Goavec-Merou
<[email protected]> ---package/alsa-utils/Config.in | 5 ++--- package/alsa-utils/alsa-utils.mk | 2 +- 2 files changed, 3 insertions(+), 4 deletions(-)package/alsa-utils/Config.in +2
-3@@ -74,15 +74,14 @@ config BR2_PACKAGE_ALSA_UTILS_ASEQNET select BR2_PACKAGE_ALSA_LIB_SEQ config BR2_PACKAGE_ALSA_UTILS_BAT + select BR2_PACKAGE_FFTW + select BR2_PACKAGE_FFTW_PRECISION_SINGLE bool "bat" help ALSABAT (ALSA Basic Audio Tester) is a simple command-line utility intended to help automate audio driver and sound server testing with little human interaction. - Note that analysis support in alsabat requires fftw single - precision. - config BR2_PACKAGE_ALSA_UTILS_IECSET bool "iecset" select BR2_PACKAGE_ALSA_LIB_PCM(quoted diff) +0
-0
b/package/alsa-utils/alsa-utils.mkindex986a745399..9e0094f343100644package/alsa-utils/alsa-utils.mk +0
-0@@ -41,7 +41,7 @@ endif ifeq ($(BR2_PACKAGE_ALSA_UTILS_BAT),y)Quoted 9 lines
Quoted 5 lines
package/alsa-utils/alsa-utils.mk +0
-1ALSA_UTILS_CONF_OPTS += --enable-bat # Analysis support requires fftw single precision -ALSA_UTILS_DEPENDENCIES += $(if$(BR2_PACKAGE_FFTW_PRECISION_SINGLE),fftw) +ALSA_UTILS_DEPENDENCIES += fftw-single
This turns the optional fftw dependency into a mandatory one. Is there a reason for that?
Quoted 4 lines
It may be a misunderstanding on my part but it is explicitly noted "Analysis support requires fftw single". This assumption is confirmed by my distribution (gentoo) where fftw is added as dependency when bat option is selected.
Quoted 9 lines
fftw is required for analysis support. However analysis support itself is optional. See the alsa-utils configure.ac:
if test x$bat = xtrue; then
...
AC_CHECK_LIB([fftw3f], [fftwf_malloc], , [have_libfftw3="no"])
...
if
Ok. My fault, I've not seen the "analysis support". I must modify this patch but I will wait a little for others potential reviews to avoid spamming the mailing-list with long serie of patches.
Gwen
PATCH 1/11 package/fftw : Allow all precisions to be installed at the same time.
In reply to Gwenhael Goavec-MerouHi Gwenhael,
Quoted 8 lines · Gwenhael Goavec-Merou
From: Gwenhael Goavec-Merou <[email protected]>
fftw's library name depends on the precision option. Consequently, it's possible to install multiple flavor on the same target.
This patch split current fftw in 5 part:
- 1 to provide common variables
- 4 to provide specificities for each precision.
This is a huge change, and IIUC all patches should in fact be squashed since
this change breaks all packages depending on fftw...
Maybe a more gradual approach would be to break out the individual packages one
by one. E.g. start with adding the fftw-single package independently of the rest, then convert other packages to depend on fftw-single instead of fftw, then remove BR2_PACKAGE_FFTW_PRECISION_SINGLE.
Finally, you forgot legacy handling. When you removeBR2_PACKAGE_FFTW_PRECISION_SINGLE, there should be an entry added to Config.in.legacy that select BR2_PACKAGE_FFTW_SINGLE. Or you have to call the package fftw-precision-single, of course.
[snip]
package/fftw/fftw-double/fftw-double.mk line 3
Quoted 5 lines
+++
b/package/fftw/fftw-double/fftw-double.mkpackage/fftw/fftw-double/fftw-double.mk new file +3
-0@@ -0,0 +1,23 @@ +################################################################################ +# +# fft-double
fftw-double
Don't forget to run check-package!
Quoted 10 lines
package/fftw/fftw-double/fftw-double.mk new file +10
-0+# +################################################################################ + +FFTW_PRECISION_DOUBLE_VERSION = $(FFTW_VERSION) +FFTW_PRECISION_DOUBLE_SOURCE = fftw-$(FFTW_VERSION).tar.gz +FFTW_PRECISION_DOUBLE_SITE = $(FFTW_SITE) +FFTW_PRECISION_DOUBLE_INSTALL_STAGING = $(FFTW_INSTALL_STAGING) +FFTW_PRECISION_DOUBLE_LICENSE = $(FFTW_LICENSE) +FFTW_PRECISION_DOUBLE_LICENSE_FILES = $(FFTW_LICENSE_FILES) +
package/fftw/fftw-double/fftw-double.mk line 23
Quoted 10 lines
package/fftw/fftw-double/fftw-double.mk new file +10
-0+FFTW_PRECISION_DOUBLE_CONF_ENV = $(FFTW_CONF_ENV) + +FFTW_PRECISION_DOUBLE_CONF_OPTS= $(FFTW_CONF_OPTS) + +FFTW_PRECISION_DOUBLE_CFLAGS = $(FFTW_CFLAGS) + +# x86 optimisations +FFTW_PRECISION_DOUBLE_CONF_OPTS += $(if $(BR2_X86_CPU_HAS_SSE2),--enable,--disable)-sse2 + +$(eval $(autotools-package))
This doesn't work: the package is actually called 'fftw-double', so it will use
variables FFTW_DOUBLE_VERSION etc., not FFTW_PRECISION_DOUBLE_VERSION. I don't know how you tested this, but it can't possibly work...
[snip]
PATCH 1/11 package/fftw : Allow all precisions to be installed at the same time.
Gwenhael, Arnout, All,
On 2018-12-03 17:32 +0100, Arnout Vandecappelle spake thusly:
Quoted 18 lines · Gwenhael Goavec-Merou
Quoted 8 lines
From: Gwenhael Goavec-Merou <[email protected]>
fftw's library name depends on the precision option. Consequently, it's possible to install multiple flavor on the same target.
This patch split current fftw in 5 part:
- 1 to provide common variables
- 4 to provide specificities for each precision.This is a huge change, and IIUC all patches should in fact be squashed since
this change breaks all packages depending on fftw...Maybe a more gradual approach would be to break out the individual packages one
by one. E.g. start with adding the fftw-single package independently of the rest, then convert other packages to depend on fftw-single instead of fftw, then removeBR2_PACKAGE_FFTW_PRECISION_SINGLE.
Quoted 4 lines
Finally, you forgot legacy handling. When you remove
BR2_PACKAGE_FFTW_PRECISION_SINGLE, there should be an entry added to Config.in.legacy that selectBR2_PACKAGE_FFTW_SINGLE. Or you have to call the package fftw-precision-single, of course.
What about another approach:
- add a new packages for each of fftw-{single,double,long-double,quad},
- make fftw depends on all of those that are actually enabled, but fftw by itself does nothing,
- if fftw is enabled, ensure that at least one variant is enabled.
Thus, packages that need any flavour of fftw can just select/depend on fftw, while those that require specific variant would select/depend what they need.
Regards,
Yann E. MORIN.
Quoted 41 lines
[snip]
package/fftw/fftw-double/fftw-double.mk line 3
Quoted 5 lines
+++
b/package/fftw/fftw-double/fftw-double.mkpackage/fftw/fftw-double/fftw-double.mk new file +3
-0@@ -0,0 +1,23 @@ +################################################################################ +# +# fft-doublefftw-double
Don't forget to run check-package!
Quoted 10 lines
package/fftw/fftw-double/fftw-double.mk new file +10
-0+# +################################################################################ + +FFTW_PRECISION_DOUBLE_VERSION = $(FFTW_VERSION) +FFTW_PRECISION_DOUBLE_SOURCE = fftw-$(FFTW_VERSION).tar.gz +FFTW_PRECISION_DOUBLE_SITE = $(FFTW_SITE) +FFTW_PRECISION_DOUBLE_INSTALL_STAGING = $(FFTW_INSTALL_STAGING) +FFTW_PRECISION_DOUBLE_LICENSE = $(FFTW_LICENSE) +FFTW_PRECISION_DOUBLE_LICENSE_FILES = $(FFTW_LICENSE_FILES) +package/fftw/fftw-double/fftw-double.mk line 23
Quoted 10 lines
package/fftw/fftw-double/fftw-double.mk new file +10
-0+FFTW_PRECISION_DOUBLE_CONF_ENV = $(FFTW_CONF_ENV) + +FFTW_PRECISION_DOUBLE_CONF_OPTS= $(FFTW_CONF_OPTS) + +FFTW_PRECISION_DOUBLE_CFLAGS = $(FFTW_CFLAGS) + +# x86 optimisations +FFTW_PRECISION_DOUBLE_CONF_OPTS += $(if $(BR2_X86_CPU_HAS_SSE2),--enable,--disable)-sse2 + +$(eval $(autotools-package))This doesn't work: the package is actually called 'fftw-double', so it will use
variablesFFTW_DOUBLE_VERSIONetc., notFFTW_PRECISION_DOUBLE_VERSION. I don't know how you tested this, but it can't possibly work...[snip]
_______________________________________________
buildroot mailing list
buildroot at busybox.net
http://lists.busybox.net/mailman/listinfo/buildroot
Signature · 6 lines
.-----------------.--------------------.------------------.--------------------. | Yann E. MORIN | Real-Time Embedded | /"\ ASCII RIBBON | Erics' conspiracy: | | +33 662 376 056 | Software Designer | \ / CAMPAIGN | ___ | | +33 223 225 172 `------------.-------: X AGAINST | \e/ There is no | | http://ymorin.is-a-geek.org/ | _/*\_ | / \ HTML MAIL | v conspiracy. | '------------------------------^-------^------------------^--------------------'