mirror of
https://github.com/yann64/haikuports.git
synced 2026-04-21 19:20:08 +02:00
FFTW: enable threading, long-double, quad, optimalization (#3032)
This commit is contained in:
@@ -15,10 +15,9 @@ HOMEPAGE="http://www.fftw.org/"
|
||||
COPYRIGHT="2003, 2007-2011 Matteo Frigo
|
||||
2003, 2007-2011 Massachusetts Institute of Technology"
|
||||
LICENSE="GNU GPL v2"
|
||||
REVISION="1"
|
||||
REVISION="2"
|
||||
SOURCE_URI="http://www.fftw.org/fftw-$portVersion.tar.gz"
|
||||
CHECKSUM_SHA256="6113262f6e92c5bd474f2875fa1b01054c4ad5040f6b0da7c03c98821d9ae303"
|
||||
SOURCE_DIR="fftw-$portVersion"
|
||||
|
||||
ARCHITECTURES="x86_gcc2 x86 x86_64"
|
||||
SECONDARY_ARCHITECTURES="x86_gcc2 x86"
|
||||
@@ -29,28 +28,60 @@ libVersionCompat="$libVersion compat >= ${libVersion%%.*}"
|
||||
PROVIDES="
|
||||
fftw$secondaryArchSuffix = $portVersion compat >= 3
|
||||
cmd:fftw_wisdom$secondaryArchSuffix
|
||||
cmd:fftw_wisdom_to_conf$secondaryArchSuffix
|
||||
cmd:fftwf_wisdom$secondaryArchSuffix
|
||||
cmd:fftwl_wisdom$secondaryArchSuffix
|
||||
cmd:fftwq_wisdom$secondaryArchSuffix
|
||||
cmd:fftw_wisdom_to_conf$secondaryArchSuffix
|
||||
lib:libfftw3$secondaryArchSuffix = $libVersionCompat
|
||||
lib:libfftw3_threads$secondaryArchSuffix = $libVersionCompat
|
||||
lib:libfftw3f$secondaryArchSuffix = $libVersionCompat
|
||||
lib:libfftw3f_threads$secondaryArchSuffix = $libVersionCompat
|
||||
lib:libfftw3l$secondaryArchSuffix = $libVersionCompat
|
||||
lib:libfftw3l_threads$secondaryArchSuffix = $libVersionCompat
|
||||
"
|
||||
if [ "$effectiveTargetArchitecture" != x86_gcc2 ]; then
|
||||
PROVIDES+="
|
||||
lib:libfftw3q$secondaryArchSuffix = $libVersionCompat
|
||||
lib:libfftw3q_threads$secondaryArchSuffix = $libVersionCompat
|
||||
"
|
||||
fi
|
||||
|
||||
REQUIRES="
|
||||
haiku$secondaryArchSuffix
|
||||
"
|
||||
if [ "$effectiveTargetArchitecture" != x86_gcc2 ]; then
|
||||
REQUIRES+="
|
||||
lib:libquadmath$secondaryArchSuffix
|
||||
"
|
||||
fi
|
||||
|
||||
PROVIDES_devel="
|
||||
fftw${secondaryArchSuffix}_devel = $portVersion compat >= 3
|
||||
devel:libfftw3$secondaryArchSuffix = $libVersionCompat
|
||||
devel:libfftw3_threads$secondaryArchSuffix = $libVersionCompat
|
||||
devel:libfftw3f$secondaryArchSuffix = $libVersionCompat
|
||||
devel:libfftw3f_threads$secondaryArchSuffix = $libVersionCompat
|
||||
devel:libfftw3l$secondaryArchSuffix = $libVersionCompat
|
||||
devel:libfftw3l_threads$secondaryArchSuffix = $libVersionCompat
|
||||
"
|
||||
if [ "$effectiveTargetArchitecture" != x86_gcc2 ]; then
|
||||
PROVIDES_devel+="
|
||||
devel:libfftw3q$secondaryArchSuffix = $libVersionCompat
|
||||
devel:libfftw3q_threads$secondaryArchSuffix = $libVersionCompat
|
||||
"
|
||||
fi
|
||||
REQUIRES_devel="
|
||||
fftw$secondaryArchSuffix == $portVersion base
|
||||
"
|
||||
|
||||
BUILD_REQUIRES="
|
||||
haiku${secondaryArchSuffix}_devel
|
||||
"
|
||||
if [ "$effectiveTargetArchitecture" != x86_gcc2 ]; then
|
||||
BUILD_REQUIRES+="
|
||||
devel:libgfortran$secondaryArchSuffix
|
||||
"
|
||||
fi
|
||||
BUILD_PREREQUIRES="
|
||||
cmd:awk
|
||||
cmd:cmp
|
||||
@@ -62,42 +93,96 @@ BUILD_PREREQUIRES="
|
||||
cmd:perl
|
||||
"
|
||||
|
||||
defineDebugInfoPackage fftw$secondaryArchSuffix \
|
||||
$libDir/libfftw3.so.$libVersion \
|
||||
$libDir/libfftw3f.so.$libVersion
|
||||
debugList=(
|
||||
"$libDir"/libfftw3.so.$libVersion
|
||||
"$libDir"/libfftw3_threads.so.$libVersion
|
||||
"$libDir"/libfftw3f.so.$libVersion
|
||||
"$libDir"/libfftw3f_threads.so.$libVersion
|
||||
"$libDir"/libfftw3l.so.$libVersion
|
||||
"$libDir"/libfftw3l_threads.so.$libVersion
|
||||
)
|
||||
if [ "$effectiveTargetArchitecture" != x86_gcc2 ]; then
|
||||
debugList+=(
|
||||
"$libDir"/libfftw3q.so.$libVersion
|
||||
"$libDir"/libfftw3q_threads.so.$libVersion
|
||||
)
|
||||
fi
|
||||
defineDebugInfoPackage fftw$secondaryArchSuffix "${debugList[@]}"
|
||||
|
||||
BUILD()
|
||||
{
|
||||
make clean && make distclean || true
|
||||
mkdir -p double long-double quad float
|
||||
|
||||
# 32 bit targets NORTHWOOD
|
||||
# 64 bit targets PRESCOTT
|
||||
|
||||
CONFIGURE="--enable-shared --enable-threads"
|
||||
if [ "$effectiveTargetArchitecture" = x86_64 ]; then
|
||||
CONFIGURE_X86_64="--enable-sse2"
|
||||
fi
|
||||
|
||||
# build double-precision version
|
||||
runConfigure ./configure --enable-shared
|
||||
cd double
|
||||
runConfigure ../configure \
|
||||
$CONFIGURE \
|
||||
$CONFIGURE_X86_64
|
||||
make $jobArgs
|
||||
make install
|
||||
cd ..
|
||||
|
||||
make clean && make distclean || true
|
||||
# build long-double-precision version, can't handle sse2
|
||||
cd long-double
|
||||
runConfigure ../configure \
|
||||
--enable-long-double \
|
||||
$CONFIGURE
|
||||
make $jobArgs
|
||||
cd ..
|
||||
|
||||
if [ "$effectiveTargetArchitecture" != x86_gcc2 ]; then
|
||||
# build long-quad-precision version, can't handle sse2
|
||||
cd quad
|
||||
runConfigure ../configure \
|
||||
--enable-quad-precision \
|
||||
$CONFIGURE
|
||||
make $jobArgs
|
||||
cd ..
|
||||
fi
|
||||
|
||||
# build float-precision version
|
||||
runConfigure ./configure --enable-float --enable-shared
|
||||
cd float
|
||||
runConfigure ../configure \
|
||||
--enable-float \
|
||||
$CONFIGURE \
|
||||
$CONFIGURE_X86_64
|
||||
make $jobArgs
|
||||
make install
|
||||
cd ..
|
||||
}
|
||||
|
||||
DIRS="double long-double float"
|
||||
fftwLibs="libfftw3 libfftw3_threads libfftw3f libfftw3f_threads libfftw3l libfftw3l_threads"
|
||||
if [ "$effectiveTargetArchitecture" != x86_gcc2 ]; then
|
||||
DIRS="$DIRS quad"
|
||||
fftwLibs="$fftwLibs libfftw3q libfftw3q_threads"
|
||||
fi
|
||||
|
||||
INSTALL()
|
||||
{
|
||||
rm $libDir/libfftw*.la
|
||||
for i in $DIRS; do
|
||||
make -C $i install
|
||||
done
|
||||
|
||||
prepareInstalledDevelLibs \
|
||||
libfftw3 \
|
||||
libfftw3f
|
||||
rm -f "$libDir"/libfftw*.la
|
||||
|
||||
prepareInstalledDevelLibs $fftwLibs
|
||||
fixPkgconfig
|
||||
|
||||
packageEntries devel \
|
||||
$developDir \
|
||||
$libDir/cmake
|
||||
"$developDir" \
|
||||
"$libDir"/cmake
|
||||
}
|
||||
|
||||
TEST()
|
||||
{
|
||||
make check
|
||||
for i in $DIRS; do
|
||||
make -C $i check
|
||||
done
|
||||
}
|
||||
|
||||
@@ -1,24 +0,0 @@
|
||||
From 4ee5a540f1e7f19940217378031cd4a4360b435a Mon Sep 17 00:00:00 2001
|
||||
From: Jerome Duval <jerome.duval@gmail.com>
|
||||
Date: Tue, 2 Aug 2016 22:25:47 +0200
|
||||
Subject: gcc2 patch
|
||||
|
||||
|
||||
diff --git a/kernel/stride.c b/kernel/stride.c
|
||||
index 689fdc8..27b631b 100644
|
||||
--- a/kernel/stride.c
|
||||
+++ b/kernel/stride.c
|
||||
@@ -26,8 +26,9 @@ const INT X(an_INT_guaranteed_to_be_zero) = 0;
|
||||
stride X(mkstride)(INT n, INT s)
|
||||
{
|
||||
int i;
|
||||
+ INT *p;
|
||||
A(n >= 0);
|
||||
- INT *p = (INT *) MALLOC((size_t)n * sizeof(INT), STRIDES);
|
||||
+ p = (INT *) MALLOC((size_t)n * sizeof(INT), STRIDES);
|
||||
|
||||
for (i = 0; i < n; ++i)
|
||||
p[i] = s * i;
|
||||
--
|
||||
2.2.2
|
||||
|
||||
Reference in New Issue
Block a user