app-editors/kakoune: drop old 0_pre20160620
[gentoo.git] / sci-libs / fftw / fftw-2.1.5-r9.ebuild
1 # Copyright 1999-2017 Gentoo Foundation
2 # Distributed under the terms of the GNU General Public License v2
3
4 EAPI=6
5
6 FORTRAN_NEEDED=fortran
7
8 inherit autotools flag-o-matic fortran-2 multibuild toolchain-funcs
9
10 DESCRIPTION="Fast C library for the Discrete Fourier Transform"
11 HOMEPAGE="http://www.fftw.org"
12 SRC_URI="http://www.fftw.org/${P}.tar.gz"
13
14 KEYWORDS="alpha amd64 arm hppa ia64 ppc ppc64 ~s390 sparc x86 ~amd64-linux ~x86-linux ~ppc-macos ~x86-macos"
15
16 LICENSE="GPL-2+"
17 SLOT="2.1"
18 IUSE="doc float fortran mpi openmp threads static-libs"
19
20 RDEPEND="mpi? ( virtual/mpi )"
21 DEPEND="${RDEPEND}"
22
23 PATCHES=(
24         "${FILESDIR}"/${P}-as-needed.patch
25         "${FILESDIR}"/${P}-configure.in.patch
26         "${FILESDIR}"/${P}-no-test.patch
27         "${FILESDIR}"/${P}-cc.patch
28         "${FILESDIR}"/${P}-texinfo5.1.patch
29         "${FILESDIR}"/${P}-parallel-tests.patch
30 )
31
32 pkg_pretend() {
33         [[ ${MERGE_TYPE} != binary ]] && use openmp && tc-check-openmp
34 }
35
36 pkg_setup() {
37         if [[ ${MERGE_TYPE} != binary ]] && use openmp; then
38                 tc-check-openmp
39                 FORTRAN_NEED_OPENMP=1
40         fi
41
42         fortran-2_pkg_setup
43
44         MULTIBUILD_VARIANTS=( single double )
45 }
46
47 src_prepare() {
48         default
49
50         # fix info files
51         local infofile
52         for infofile in doc/fftw*info*; do
53                 cat >> ${infofile} <<-EOF || die
54                         INFO-DIR-SECTION Libraries
55                         START-INFO-DIR-ENTRY
56                         * fftw: (fftw).                         ${DESCRIPTION}
57                         END-INFO-DIR-ENTRY
58                 EOF
59         done
60
61         mv configure.{in,ac} || die
62         sed -i 's/AM_CONFIG_HEADER/AC_CONFIG_HEADERS/g' configure.ac || die
63
64         eautoreconf
65
66         # 'FAQ' is actually a dir and causes issues with einstalldocs
67         rm -r FAQ || die
68
69         multibuild_copy_sources
70 }
71
72 fftw_src_configure() {
73         local myconf=(
74                 --with-gcc=$(tc-getCC)
75                 --enable-shared
76                 --enable-type-prefix
77                 --enable-vec-recurse
78                 $(use_enable fortran)
79                 $(use_enable mpi)
80                 $(use_enable static-libs static)
81                 $(use_enable x86 i386-hacks)
82                 $(use_with openmp)
83         )
84
85         if use openmp || use threads; then
86                 myconf+=( --enable-threads )
87         else
88                 myconf+=( --disable-threads )
89         fi
90
91         [[ $MULTIBUILD_VARIANT == single ]] && myconf+=( --enable-float )
92
93         econf "${myconf[@]}"
94 }
95
96 src_configure() {
97         # this one is reported to cause trouble on pentium4 m series
98         filter-mfpmath sse
99
100         # here I need (surprise) to increase optimization:
101         # --enable-i386-hacks requires -fomit-frame-pointer to work properly
102         if use x86; then
103                 is-flag -fomit-frame-pointer || append-flags -fomit-frame-pointer
104         fi
105         use openmp && [[ $(tc-getCC)$ == icc* ]] && append-ldflags $(no-as-needed)
106
107         multibuild_foreach_variant run_in_build_dir fftw_src_configure
108 }
109
110 src_compile() {
111         multibuild_foreach_variant run_in_build_dir default_src_compile
112 }
113
114 src_test() {
115         multibuild_foreach_variant run_in_build_dir default_src_test
116 }
117
118 src_install () {
119         use doc && HTML_DOCS=( doc/*.{html,gif} )
120         multibuild_foreach_variant run_in_build_dir default_src_install
121
122         doheader fortran/fftw_f77.i
123
124         create_fftw_symlinks() {
125                 local i f letter=$1
126                 for i in fft rfft; do
127                         for f in "${ED%/}"/usr/{include,$(get_libdir)}/*${letter}${i}*; do
128                                 ln -s $(basename ${f}) ${f/${letter}${i}/${i}} || die
129                         done
130                 done
131         }
132         create_fftw_symlinks $(usex float s d)
133
134         if ! use static-libs; then
135                 find "${D}" -name '*.la' -delete || die
136         fi
137 }