blob: d9e62eae4f86ae16258a6003fde17005211e090b (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
|
# Copyright 1999-2005 Gentoo Foundation
# Distributed under the terms of the GNU General Public License v2
# $Header: /var/cvsroot/gentoo-x86/sci-libs/fftw/fftw-2.1.5-r1.ebuild,v 1.5 2005/04/27 08:29:44 corsair Exp $
inherit flag-o-matic multilib
IUSE="mpi"
DESCRIPTION="C subroutine library for computing the Discrete Fourier Transform (DFT)"
SRC_URI="http://www.fftw.org/${P}.tar.gz"
HOMEPAGE="http://www.fftw.org"
DEPEND="mpi? ( >=sys-cluster/lam-mpi-6.5.6 )"
SLOT="2.1"
LICENSE="GPL-2"
KEYWORDS="x86 ppc sparc alpha amd64 ~ppc64"
#this one is reported to cause trouble on pentium4 m series
filter-mfpmath "sse"
#here I need (surprise) to increase optimization:
#--enable-i386-hacks requires -fomit-frame-pointer to work properly
if [ "${ARCH}" != "amd64" ]; then
is-flag "-fomit-frame-pointer" || append-flags "-fomit-frame-pointer"
fi
pkg_setup() {
einfo ""
einfo "This ebuild installs double and single precision versions of library"
einfo "This involves some name mangling, as supported by package and required"
einfo "by some apps that use it."
einfo "By default, the symlinks to non-mangled names will be created off"
einfo "double-precision version. In order to symlink to single-precision use"
einfo "SINGLE=yes emerge fftw"
einfo ""
}
src_unpack() {
#doc suggests installing single and double precision versions via separate compilations
#will do in two separate source trees
#since some sed'ing is done during the build (?if --enable-type-prefix is set?)
unpack "${P}.tar.gz"
cd "${WORKDIR}"
mv ${P} ${P}-single
unpack "${P}.tar.gz"
cd "${WORKDIR}"
mv ${P} ${P}-double
}
src_compile() {
local myconf=""
use mpi && myconf="${myconf} --enable-mpi"
if [ "${ARCH}" == "amd64" ]; then
myconf="${myconf} --disable-i386-hacks"
else
myconf="${myconf} --enable-i386-hacks"
fi
#mpi is not a valid flag yet. In this revision it is used merely to block --enable-mpi option
#it might be needed if it is decided that lam is an optional dependence
cd "${S}-single"
econf \
--enable-shared \
--enable-threads \
--enable-type-prefix \
--enable-float \
--enable-vec-recurse \
${myconf} || die "./configure failed"
emake || die
#the only difference here is no --enable-float
cd "${S}-double"
econf \
--enable-shared \
--enable-threads \
--enable-type-prefix \
--enable-vec-recurse \
${myconf} || die "./configure failed"
emake || die
}
src_install () {
#both builds are installed in the same place
#libs are distinguished by preffix (s or d), see docs for details
cd "${S}-single"
make DESTDIR=${D} install || die
cd "${S}-double"
# fix info file
local infofile
for infofile in doc/fftw*info*; do
echo "INFO-DIR-SECTION Libraries" >>${infofile}
echo "START-INFO-DIR-ENTRY" >>${infofile}
echo "* fftw: (fftw). C subroutine library for computing the Discrete Fourier Transform (DFT)" >>${infofile}
echo "END-INFO-DIR-ENTRY" >>${infofile}
done
make DESTDIR=${D} install || die
# Install documentation.
cd "${S}-single"
dodoc AUTHORS ChangeLog COPYING INSTALL NEWS TODO
dohtml doc/fftw*.html
if [ "$SINGLE" = "yes" ]; then
cd ${D}usr/include
dosym sfftw.h /usr/include/fftw.h
dosym srfftw.h /usr/include/rfftw.h
dosym sfftw_threads.h /usr/include/fftw_threads.h
dosym srfftw_threads.h /usr/include/rfftw_threads.h
cd ${D}usr/$(get_libdir)
dosym libsfftw.so /usr/$(get_libdir)/libfftw.so
dosym libsrfftw.so /usr/$(get_libdir)/librfftw.so
dosym libsfftw_threads.so /usr/$(get_libdir)/libfftw_threads.so
dosym libsrfftw_threads.so /usr/$(get_libdir)/librfftw_threads.so
else
cd ${D}usr/include
dosym dfftw.h /usr/include/fftw.h
dosym drfftw.h /usr/include/rfftw.h
dosym dfftw_threads.h /usr/include/fftw_threads.h
dosym drfftw_threads.h /usr/include/rfftw_threads.h
cd ${D}usr/$(get_libdir)
dosym libdfftw.so /usr/$(get_libdir)/libfftw.so
dosym libdrfftw.so /usr/$(get_libdir)/librfftw.so
dosym libdfftw_threads.so /usr/$(get_libdir)/libfftw_threads.so
dosym libdrfftw_threads.so /usr/$(get_libdir)/librfftw_threads.so
fi
cd "${S}-single/fortran"
insinto usr/include
doins fftw_f77.i
}
|