From: Matt Flax <flatmax@flatmax.org>
To: buildroot@busybox.net
Subject: [Buildroot] [PATCH 2/2] package/fftw: Enable multiple precision installation
Date: Fri, 19 Aug 2016 16:29:52 +1000 [thread overview]
Message-ID: <1471588192-2273-1-git-send-email-flatmax@flatmax.org> (raw)
This commit enables fftw to be installed for multiple precisions on the
same system. For example if one package requires single precision and another
package requires double precision, then both fftw and fftwf can now be
slected and installed at the same time. Before this commit that wasn't
possible.
The fftw site (http://www.fftw.org/fftw2_doc/fftw_6.html) states that to
install multiple precisions the procedure is a full clean and rebuild for
each desired precision. This patch achieves that by doing complete
builds (as required) for each of the required precisions.
Signed-off-by: Matt Flax <flatmax@flatmax.org>
---
package/fftw/Config.in | 61 ++++-----------------------------------
package/fftw/fftw.mk | 6 +---
package/fftw/fftw/Config.in | 19 ++++++++++++
package/fftw/{ => fftw}/fftw.hash | 0
package/fftw/fftw/fftw.mk | 9 ++++++
package/fftw/fftwf/Config.in | 22 ++++++++++++++
package/fftw/fftwf/fftwf.hash | 2 ++
package/fftw/fftwf/fftwf.mk | 23 +++++++++++++++
package/fftw/fftwl/Config.in | 22 ++++++++++++++
package/fftw/fftwl/fftwl.hash | 2 ++
package/fftw/fftwl/fftwl.mk | 23 +++++++++++++++
package/fftw/fftwq/Config.in | 21 ++++++++++++++
package/fftw/fftwq/fftwq.hash | 2 ++
package/fftw/fftwq/fftwq.mk | 23 +++++++++++++++
14 files changed, 174 insertions(+), 61 deletions(-)
create mode 100644 package/fftw/fftw/Config.in
rename package/fftw/{ => fftw}/fftw.hash (100%)
create mode 100644 package/fftw/fftw/fftw.mk
create mode 100644 package/fftw/fftwf/Config.in
create mode 100644 package/fftw/fftwf/fftwf.hash
create mode 100644 package/fftw/fftwf/fftwf.mk
create mode 100644 package/fftw/fftwl/Config.in
create mode 100644 package/fftw/fftwl/fftwl.hash
create mode 100644 package/fftw/fftwl/fftwl.mk
create mode 100644 package/fftw/fftwq/Config.in
create mode 100644 package/fftw/fftwq/fftwq.hash
create mode 100644 package/fftw/fftwq/fftwq.mk
diff --git a/package/fftw/Config.in b/package/fftw/Config.in
index ef11384..be8f6cd 100644
--- a/package/fftw/Config.in
+++ b/package/fftw/Config.in
@@ -1,17 +1,3 @@
-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
@@ -21,47 +7,6 @@ config BR2_PACKAGE_FFTW_USE_SSE2
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
@@ -75,4 +20,8 @@ config BR2_PACKAGE_FFTW_FAST
turn is basically using gcc's -ffast-math. See the gcc manual
for what this means.
-endif
+source "package/fftw/fftw/Config.in"
+source "package/fftw/fftwf/Config.in"
+source "package/fftw/fftwl/Config.in"
+source "package/fftw/fftwq/Config.in"
+
diff --git a/package/fftw/fftw.mk b/package/fftw/fftw.mk
index 5bd39a8..216838a 100644
--- a/package/fftw/fftw.mk
+++ b/package/fftw/fftw.mk
@@ -18,10 +18,6 @@ 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
@@ -46,4 +42,4 @@ FFTW_CONF_OPTS += $(if $(BR2_GCC_ENABLE_OPENMP),--enable,--disable)-openmp
FFTW_CONF_OPTS += CFLAGS="$(FFTW_CFLAGS)"
-$(eval $(autotools-package))
+include package/fftw/*/*.mk
diff --git a/package/fftw/fftw/Config.in b/package/fftw/fftw/Config.in
new file mode 100644
index 0000000..51bd5eb
--- /dev/null
+++ b/package/fftw/fftw/Config.in
@@ -0,0 +1,19 @@
+config BR2_PACKAGE_FFTW
+ bool "fftw"
+ help
+ Library for computing Fast Fourier Transforms in double precision.
+
+ 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
+
+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.
+
diff --git a/package/fftw/fftw.hash b/package/fftw/fftw/fftw.hash
similarity index 100%
rename from package/fftw/fftw.hash
rename to package/fftw/fftw/fftw.hash
diff --git a/package/fftw/fftw/fftw.mk b/package/fftw/fftw/fftw.mk
new file mode 100644
index 0000000..66a82ec
--- /dev/null
+++ b/package/fftw/fftw/fftw.mk
@@ -0,0 +1,9 @@
+################################################################################
+#
+# fftw
+#
+################################################################################
+
+$(eval $(autotools-package))
+
+
diff --git a/package/fftw/fftwf/Config.in b/package/fftw/fftwf/Config.in
new file mode 100644
index 0000000..7077086
--- /dev/null
+++ b/package/fftw/fftwf/Config.in
@@ -0,0 +1,22 @@
+config BR2_PACKAGE_FFTWF
+ bool "fftwf"
+ select BR2_PACKAGE_FFTW_PRECISION_SINGLE
+ help
+ Library for computing Fast Fourier Transforms in single precision.
+
+ 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
+
+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.
+
diff --git a/package/fftw/fftwf/fftwf.hash b/package/fftw/fftwf/fftwf.hash
new file mode 100644
index 0000000..62b8f0f
--- /dev/null
+++ b/package/fftw/fftwf/fftwf.hash
@@ -0,0 +1,2 @@
+# From http://www.fftw.org/fftw-3.3.4.tar.gz.md5sum
+md5 2edab8c06b24feeb3b82bbb3ebf3e7b3 fftw-3.3.4.tar.gz
diff --git a/package/fftw/fftwf/fftwf.mk b/package/fftw/fftwf/fftwf.mk
new file mode 100644
index 0000000..a4184b5
--- /dev/null
+++ b/package/fftw/fftwf/fftwf.mk
@@ -0,0 +1,23 @@
+################################################################################
+#
+# fftwf
+#
+################################################################################
+
+FFTWF_VERSION = $(FFTW_VERSION)
+FFTWF_SOURCE = fftw-$(FFTWF_VERSION).tar.gz
+FFTWF_SITE = $(FFTW_SITE)
+FFTWF_INSTALL_STAGING = $(FFTW_INSTALL_STAGING)
+FFTWF_LICENSE = $(FFTW_LICENSE)
+FFTWF_LICENSE_FILES = $(FFTW_LICENSE_FILES)
+
+FFTWF_CONF_ENV = $(FFTW_CONF_ENV)
+
+FFTWF_CONF_OPTS = $(FFTW_CONF_OPTS)
+FFTWF_CONF_OPTS += --enable-single
+
+FFTWF_CFLAGS = $(FFTW_CFLAGS)
+
+$(eval $(autotools-package))
+
+
diff --git a/package/fftw/fftwl/Config.in b/package/fftw/fftwl/Config.in
new file mode 100644
index 0000000..466a11e
--- /dev/null
+++ b/package/fftw/fftwl/Config.in
@@ -0,0 +1,22 @@
+config BR2_PACKAGE_FFTWL
+ bool "fftwl"
+ select BR2_PACKAGE_FFTW_PRECISION_LONG_DOUBLE
+ help
+ Library for computing Fast Fourier Transforms in long double precision.
+
+ 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
+
+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.
+
diff --git a/package/fftw/fftwl/fftwl.hash b/package/fftw/fftwl/fftwl.hash
new file mode 100644
index 0000000..62b8f0f
--- /dev/null
+++ b/package/fftw/fftwl/fftwl.hash
@@ -0,0 +1,2 @@
+# From http://www.fftw.org/fftw-3.3.4.tar.gz.md5sum
+md5 2edab8c06b24feeb3b82bbb3ebf3e7b3 fftw-3.3.4.tar.gz
diff --git a/package/fftw/fftwl/fftwl.mk b/package/fftw/fftwl/fftwl.mk
new file mode 100644
index 0000000..2412590
--- /dev/null
+++ b/package/fftw/fftwl/fftwl.mk
@@ -0,0 +1,23 @@
+################################################################################
+#
+# fftwl
+#
+################################################################################
+
+FFTL_VERSION = $(FFTW_VERSION)
+FFTL_SOURCE = fftw-$(FFTWL_VERSION).tar.gz
+FFTL_SITE = $(FFTW_SITE)
+FFTL_INSTALL_STAGING = $(FFTW_INSTALL_STAGING)
+FFTL_LICENSE = $(FFTW_LICENSE)
+FFTL_LICENSE_FILES = $(FFTW_LICENSE_FILES)
+
+FFTL_CONF_ENV = $(FFTW_CONF_ENV)
+
+FFTL_CONF_OPTS = $(FFTW_CONF_OPTS)
+FFTL_CONF_OPTS += --enable-long-double
+
+FFTL_CFLAGS = $(FFTW_CFLAGS)
+
+$(eval $(autotools-package))
+
+
diff --git a/package/fftw/fftwq/Config.in b/package/fftw/fftwq/Config.in
new file mode 100644
index 0000000..fc6f427
--- /dev/null
+++ b/package/fftw/fftwq/Config.in
@@ -0,0 +1,21 @@
+config BR2_PACKAGE_FFTWQ
+ bool "fftwq"
+ select BR2_PACKAGE_FFTW_PRECISION_QUAD
+ help
+ Library for computing Fast Fourier Transforms in quad precision.
+
+ 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
+
+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.
+
diff --git a/package/fftw/fftwq/fftwq.hash b/package/fftw/fftwq/fftwq.hash
new file mode 100644
index 0000000..62b8f0f
--- /dev/null
+++ b/package/fftw/fftwq/fftwq.hash
@@ -0,0 +1,2 @@
+# From http://www.fftw.org/fftw-3.3.4.tar.gz.md5sum
+md5 2edab8c06b24feeb3b82bbb3ebf3e7b3 fftw-3.3.4.tar.gz
diff --git a/package/fftw/fftwq/fftwq.mk b/package/fftw/fftwq/fftwq.mk
new file mode 100644
index 0000000..6130538
--- /dev/null
+++ b/package/fftw/fftwq/fftwq.mk
@@ -0,0 +1,23 @@
+################################################################################
+#
+# fftwq
+#
+################################################################################
+
+FFTQ_VERSION = $(FFTW_VERSION)
+FFTQ_SOURCE = fftw-$(FFTWQ_VERSION).tar.gz
+FFTQ_SITE = $(FFTW_SITE)
+FFTQ_INSTALL_STAGING = $(FFTW_INSTALL_STAGING)
+FFTQ_LICENSE = $(FFTW_LICENSE)
+FFTQ_LICENSE_FILES = $(FFTW_LICENSE_FILES)
+
+FFTQ_CONF_ENV = $(FFTW_CONF_ENV)
+
+FFTQ_CONF_OPTS = $(FFTW_CONF_OPTS)
+FFTQ_CONF_OPTS += --enable-quad-precision
+
+FFTQ_CFLAGS = $(FFTW_CFLAGS)
+
+$(eval $(autotools-package))
+
+
--
2.7.4
next reply other threads:[~2016-08-19 6:29 UTC|newest]
Thread overview: 5+ messages / expand[flat|nested] mbox.gz Atom feed top
2016-08-19 6:29 Matt Flax [this message]
2016-08-19 14:20 ` [Buildroot] [PATCH 2/2] package/fftw: Enable multiple precision installation Thomas Petazzoni
2016-08-20 3:36 ` Matt Flax
2016-08-20 14:18 ` Thomas Petazzoni
2016-08-21 1:06 ` Matt Flax
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=1471588192-2273-1-git-send-email-flatmax@flatmax.org \
--to=flatmax@flatmax.org \
--cc=buildroot@busybox.net \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox