Commit 030e1c3c authored by Julian Taylor's avatar Julian Taylor

split the precision libraries into separate packages:

 - libfftw3-single3: single precision
 - libfftw3-double3: double precision
 - libfftw3-long3: long double precision
 - libfftw3-quad3: quad precision (Closes: #691677)
 - libfftw3-3: transitional package depending on single and double
 - libfftw3-dev: depends on all precisions
 - libfftw3-mpi3: continues to contain all precisions
parent bc097485
fftw3 (3.3.3-1) experimental; urgency=low
* New upstream release (Closes: #694401)
* split the precision libraries into separate packages:
- libfftw3-single3: single precision
- libfftw3-double3: double precision
- libfftw3-long3: long double precision
- libfftw3-quad3: quad precision (Closes: #691677)
- libfftw3-3: transitional package depending on single and double
- libfftw3-dev: depends on all precisions
- libfftw3-mpi3: continues to contain all precisions
* Acknowledge NMU, thanks Ansgar Burchardt
* add debian/source/extended-diff-ignore to ignore generated files
* add hardening flags to long long test so build log check does not complain
......
......@@ -20,19 +20,81 @@ DM-Upload-Allowed: yes
Package: libfftw3-3
Architecture: any
Depends: libfftw3-double3 (=${binary:Version}),
libfftw3-single3 (=${binary:Version}),
${misc:Depends},
${shlibs:Depends}
Suggests: libfftw3-bin, libfftw3-dev
Multi-Arch: same
Section: oldlibs
Priority: extra
Description: Library for computing Fast Fourier Transforms
The FFTW library computes Fast Fourier Transforms (FFT) in one or more
dimensions. It is extremely fast.
This package is a transitional package depending on the packages containing
the single and double precision libraries.
.
To get the static library and the header files, you need to install
libfftw3-dev. For documentation, see libfftw3-doc.
Package: libfftw3-single3
Architecture: any
Pre-Depends: multiarch-support
Depends: ${misc:Depends}, ${shlibs:Depends}
Suggests: libfftw3-bin, libfftw3-dev
Provides: fftw3
Replaces: fftw3
Conflicts: fftw3
Multi-Arch: same
Description: Library for computing Fast Fourier Transforms
Replaces: libfftw3-3 (<< 3.3.3-1)
Breaks: libfftw3-3 (<< 3.3.3-1)
Description: Library for computing Fast Fourier Transforms - Single precision
The FFTW library computes Fast Fourier Transforms (FFT) in one or more
dimensions. It is extremely fast. This package contains the shared library
versions of the fftw libraries in single, double and long double precisions.
Note that on some architectures double is the same as long double in which
case there is no long double library.
for single precision transforms.
.
To get the static library and the header files, you need to install
libfftw3-dev. For documentation, see libfftw3-doc.
Package: libfftw3-double3
Architecture: any
Pre-Depends: multiarch-support
Depends: ${misc:Depends}, ${shlibs:Depends}
Suggests: libfftw3-bin, libfftw3-dev
Multi-Arch: same
Replaces: libfftw3-3 (<< 3.3.3-1)
Breaks: libfftw3-3 (<< 3.3.3-1)
Description: Library for computing Fast Fourier Transforms - Double precision
The FFTW library computes Fast Fourier Transforms (FFT) in one or more
dimensions. It is extremely fast. This package contains the shared library
for double precision transforms.
.
To get the static library and the header files, you need to install
libfftw3-dev. For documentation, see libfftw3-doc.
Package: libfftw3-long3
Architecture: i386 amd64 sparc s390x s390 powerpc kfreebsd-i386 kfreebsd-amd64 ia64 hurd-i386
Pre-Depends: multiarch-support
Depends: ${misc:Depends}, ${shlibs:Depends}
Suggests: libfftw3-bin, libfftw3-dev
Multi-Arch: same
Replaces: libfftw3-3 (<< 3.3.3-1)
Breaks: libfftw3-3 (<< 3.3.3-1)
Description: Library for computing Fast Fourier Transforms - Long precision
The FFTW library computes Fast Fourier Transforms (FFT) in one or more
dimensions. It is extremely fast. This package contains the shared library
for long double precision transforms.
.
To get the static library and the header files, you need to install
libfftw3-dev. For documentation, see libfftw3-doc.
Package: libfftw3-quad3
Architecture: i386 amd64 ia64 kfreebsd-i386 kfreebsd-amd64 hurd-i386
Pre-Depends: multiarch-support
Depends: ${misc:Depends}, ${shlibs:Depends}
Suggests: libfftw3-bin, libfftw3-dev
Multi-Arch: same
Description: Library for computing Fast Fourier Transforms - Quad precision
The FFTW library computes Fast Fourier Transforms (FFT) in one or more
dimensions. It is extremely fast. This package contains the shared library
for quad precision transforms.
.
To get the static library and the header files, you need to install
libfftw3-dev. For documentation, see libfftw3-doc.
......@@ -45,10 +107,7 @@ Replaces: libfftw3-dev (<< 3.3.2-1)
Breaks: libfftw3-dev (<< 3.3.2-1)
Description: Library for computing Fast Fourier Transforms - Tools
The FFTW library computes Fast Fourier Transforms (FFT) in one or more
dimensions. It is extremely fast. This package contains the shared library
versions of the fftw libraries in single, double and long double precisions.
Note that on some architectures double is the same as long double in which
case there is no long double library.
dimensions. It is extremely fast.
.
This package contains the wisdom management tools.
......@@ -57,8 +116,6 @@ Architecture: any
Pre-Depends: multiarch-support
Depends: ${misc:Depends}, ${shlibs:Depends}
Suggests: libfftw3-mpi-dev
Breaks: libfftw3-mpi-3
Replaces: libfftw3-mpi-3
Multi-Arch: same
Description: MPI Library for computing Fast Fourier Transforms
The FFTW library computes Fast Fourier Transforms (FFT) in one or more
......@@ -73,8 +130,11 @@ Description: MPI Library for computing Fast Fourier Transforms
Package: libfftw3-dev
Architecture: any
Section: libdevel
Depends: libfftw3-3 (=${binary:Version}),
libfftw3-bin (=${binary:Version}),
Depends: libfftw3-bin (=${binary:Version}),
libfftw3-double3 (=${binary:Version}),
libfftw3-long3 (=${binary:Version}),
libfftw3-quad3 (=${binary:Version}),
libfftw3-single3 (=${binary:Version}),
${misc:Depends},
${shlibs:Depends}
Provides: fftw3-dev
......
usr/lib/*/libfftw*.so.*
usr/lib/*/libfftw*.so.*
usr/lib/*/libfftw*.so.*
......@@ -9,6 +9,18 @@ CPPFLAGS:=$(shell dpkg-buildflags --get CPPFLAGS)
CFLAGS:=$(shell dpkg-buildflags --get CFLAGS)
LDFLAGS:=$(shell dpkg-buildflags --get LDFLAGS) -Wl,--as-needed
ifeq (libfftw3-quad3,$(findstring libfftw3-quad3, $(shell dh_listpackages)))
QUAD := quad
else
QUAD :=
endif
ifeq (libfftw3-long3,$(findstring libfftw3-long3, $(shell dh_listpackages)))
LONG := long
else
LONG :=
endif
PREC := single double $(LONG) $(QUAD)
# old configure stuff needs a --target
ifeq ($(DEB_BUILD_GNU_TYPE), $(DEB_HOST_GNU_TYPE))
archconfflags := $(archconfflags) --build $(DEB_HOST_GNU_TYPE)
......@@ -30,8 +42,8 @@ ifneq (,$(findstring noopt,$(DEB_BUILD_OPTIONS)))
else
CFLAGS += -O2
ifneq (,$(filter $(ARCHITECTURE), i386 amd64))
archconfflags_single := --enable-sse --enable-avx
archconfflags_double := --enable-sse2 --enable-avx
archconfflags_single :=
archconfflags_double :=
endif
# no avx support in debian yet see #674760
ifneq (,$(filter $(ARCHITECTURE), kfreebsd-i386 kfreebsd-amd64))
......@@ -70,17 +82,20 @@ build-arch:
$(MAKE)
( cd tests ; $(MAKE) smallcheck )
$(MAKE) install DESTDIR=`pwd`/debian/tmp-double
#
# long double precision
# build only on architectures where double != long-double
# flags added so build log checks don't report missing hardening flags
gcc $(CFLAGS) $(LDFLAGS) $(CPPFLAGS) -o test_long_long-double debian/test_long_long-double.c
if ! ./test_long_long-double; then \
$(SETCFLAGS) ./configure --enable-long-double $(archconfflags) && \
$(MAKE) && \
( cd tests ; $(MAKE) smallcheck ) && \
$(MAKE) install DESTDIR=`pwd`/debian/tmp-long-double; \
fi
ifeq (long,$(LONG))
$(SETCFLAGS) ./configure --enable-long-double $(archconfflags)
$(MAKE)
( cd tests ; $(MAKE) smallcheck )
$(MAKE) install DESTDIR=`pwd`/debian/tmp-long;
endif
ifeq (quad,$(QUAD))
# quad precision
$(SETCFLAGS) ./configure $(archconfflags) --enable-quad-precision --disable-mpi
$(MAKE)
( cd tests ; $(MAKE) smallcheck )
$(MAKE) install DESTDIR=`pwd`/debian/tmp-quad
endif
touch build-arch
build-indep:
......@@ -104,7 +119,7 @@ clean1st:
-rm -f *.la threads/*.la *.pc
-rm -f test_long_long-double
-rm -f config.cache config.status config.log
-rm -rf debian/tmp-single debian/tmp-double debian/tmp-long-double
-rm -rf debian/tmp-single debian/tmp-double debian/tmp-long debian/tmp-quad
chmod -R g-s .
dh_clean
......@@ -129,12 +144,18 @@ binary-arch: build-arch
dh_installchangelogs -a ChangeLog
dh_installexamples -a
dh_installdirs -a
dh_install -a --sourcedir=debian/tmp-single
dh_install -a --sourcedir=debian/tmp-double
if ! ./test_long_long-double; then \
dh_install -a --sourcedir=debian/tmp-long-double; \
fi
rm debian/libfftw3-3/usr/lib/$(DEB_HOST_MULTIARCH)/libfftw3*mpi* debian/libfftw3-dev/usr/lib/$(DEB_HOST_MULTIARCH)/libfftw3*mpi* debian/libfftw3-dev/usr/include/*mpi*
set -e && for s in $(PREC); do \
dh_install -plibfftw3-bin --sourcedir=debian/tmp-$$s; \
dh_install -plibfftw3-$${s}3 --sourcedir=debian/tmp-$$s; \
dh_install -plibfftw3-dev --sourcedir=debian/tmp-$$s; \
if [ $$s != "quad" ]; then \
dh_install -plibfftw3-mpi3 --sourcedir=debian/tmp-$$s; \
dh_install -plibfftw3-mpi-dev --sourcedir=debian/tmp-$$s; \
rm debian/libfftw3-$${s}3/usr/lib/$(DEB_HOST_MULTIARCH)/libfftw3*mpi*; \
fi; \
done
rm debian/libfftw3-dev/usr/lib/$(DEB_HOST_MULTIARCH)/libfftw3*mpi* \
debian/libfftw3-dev/usr/include/*mpi*
chrpath --delete debian/libfftw3-mpi3/usr/lib/$(DEB_HOST_MULTIARCH)/libfftw3*mpi*so*
find $(CURDIR)/debian/libfftw3-dev -type d -empty -delete
......
#include <stdio.h>
int main(){
int size_long_double = sizeof(long double);
int size_double = sizeof(double);
printf("size of long double is %d\n", size_long_double);
printf("size of double is %d\n", size_double);
if (size_long_double != size_double)
return 1;
return 0;
}
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment