|
Lines 1-161
Link Here
|
| 1 |
# Created by: Lars Koeller <Lars.Koeller@Uni-Bielefeld.DE> |
1 |
# Created by: Lars Koeller <Lars.Koeller@Uni-Bielefeld.DE> |
| 2 |
# $FreeBSD$ |
2 |
# $FreeBSD$ |
| 3 |
|
3 |
|
| 4 |
PORTNAME= fftw3 |
4 |
PORTNAME= fftw3 |
| 5 |
DISTVERSION= 3.3.8 |
5 |
DISTVERSION= 3.3.8 |
| 6 |
PORTREVISION?= 3 |
6 |
PORTREVISION?= 4 |
| 7 |
CATEGORIES= math |
7 |
CATEGORIES= math |
| 8 |
MASTER_SITES= http://www.fftw.org/ \ |
8 |
MASTER_SITES= http://www.fftw.org/ \ |
| 9 |
ftp://ftp.fftw.org/pub/fftw/ |
9 |
ftp://ftp.fftw.org/pub/fftw/ |
| 10 |
PKGNAMESUFFIX= ${FFTW3_PKGNAMESUFFIX} |
10 |
PKGNAMESUFFIX= ${FFTW3_PKGNAMESUFFIX} |
| 11 |
DISTNAME= fftw-${DISTVERSION} |
11 |
DISTNAME= fftw-${DISTVERSION} |
| 12 |
|
12 |
|
| 13 |
MAINTAINER= jhale@FreeBSD.org |
13 |
MAINTAINER= jhale@FreeBSD.org |
| 14 |
COMMENT?= Fast C routines to compute the Discrete Fourier Transform |
14 |
COMMENT?= Fast C routines to compute the Discrete Fourier Transform |
| 15 |
|
15 |
|
| 16 |
LICENSE= GPLv2+ |
16 |
LICENSE= GPLv2+ |
| 17 |
LICENSE_FILE= ${WRKSRC}/COPYING |
17 |
LICENSE_FILE= ${WRKSRC}/COPYING |
| 18 |
|
18 |
|
| 19 |
#current flavors: default, float, long, and quad |
19 |
#current flavors: default, float, long, and quad |
| 20 |
FFTW3_FLAVOR?= default |
20 |
FFTW3_FLAVOR?= default |
| 21 |
FFTW3_SUFX= |
21 |
FFTW3_SUFX= |
| 22 |
|
22 |
|
| 23 |
GNU_CONFIGURE= yes |
23 |
GNU_CONFIGURE= yes |
| 24 |
INSTALL_TARGET= install-strip |
24 |
INSTALL_TARGET= install-strip |
| 25 |
TEST_TARGET= smallcheck #bigcheck check exhaustive-check paranoid-check |
25 |
TEST_TARGET= smallcheck #bigcheck check exhaustive-check paranoid-check |
| 26 |
TEST_WRKSRC= ${WRKSRC}/tests |
26 |
TEST_WRKSRC= ${WRKSRC}/tests |
| 27 |
USES= gmake libtool makeinfo pathfix perl5 pkgconfig |
27 |
USES= gmake libtool makeinfo pathfix perl5 pkgconfig |
| 28 |
USE_PERL5= build |
28 |
USE_PERL5= build |
| 29 |
USE_LDCONFIG= yes |
29 |
USE_LDCONFIG= yes |
| 30 |
|
30 |
|
| 31 |
CONFIGURE_ARGS= --enable-shared --enable-threads --disable-fortran |
31 |
CONFIGURE_ARGS= --enable-shared --enable-threads --disable-fortran |
| 32 |
MPIDIR?= ${LOCALBASE}/mpi/openmpi |
32 |
MPIDIR?= ${LOCALBASE}/mpi/openmpi |
| 33 |
|
33 |
|
| 34 |
.if ${FFTW3_FLAVOR} == "default" |
34 |
.if ${FFTW3_FLAVOR} == "default" |
| 35 |
INFO= fftw3 |
35 |
INFO= fftw3 |
| 36 |
.else |
36 |
.else |
| 37 |
#For non-default flavors, build and install the flavor-dependent components |
37 |
#For non-default flavors, build and install the flavor-dependent components |
| 38 |
#only, so that these flavors may coexist with the default flavor |
38 |
#only, so that these flavors may coexist with the default flavor |
| 39 |
INSTALL_TARGET= install-cmakeDATA install-pkgconfigDATA install-libLTLIBRARIES install-exec |
39 |
INSTALL_TARGET= install-cmakeDATA install-pkgconfigDATA install-libLTLIBRARIES install-exec |
| 40 |
.endif |
40 |
.endif |
| 41 |
|
41 |
|
| 42 |
OPTIONS_DEFINE= G77_WRAPPERS OPENMP OPENMPI OPTIMIZED_CFLAGS SIMD |
42 |
OPTIONS_DEFINE= G77_WRAPPERS OPENMP OPENMPI OPTIMIZED_CFLAGS SIMD |
| 43 |
OPTIONS_DEFAULT= OPTIMIZED_CFLAGS SIMD |
43 |
OPTIONS_DEFAULT= OPTIMIZED_CFLAGS SIMD |
| 44 |
.if ${FFTW3_FLAVOR} == "quad" |
44 |
.if ${FFTW3_FLAVOR} == "quad" |
| 45 |
OPTIONS_EXCLUDE+= OPENMPI |
45 |
OPTIONS_EXCLUDE+= OPENMPI |
| 46 |
.endif |
46 |
.endif |
| 47 |
OPTIONS_SUB= yes |
47 |
OPTIONS_SUB= yes |
| 48 |
|
48 |
|
| 49 |
G77_WRAPPERS_DESC= Alter Fortran wrappers for use with g77 |
49 |
G77_WRAPPERS_DESC= Alter Fortran wrappers for use with g77 |
| 50 |
|
50 |
|
| 51 |
OPENMP_DESC= Build OpenMP multithreaded libraries |
51 |
OPENMP_DESC= Build OpenMP multithreaded libraries |
| 52 |
OPENMP_USES= compiler:openmp |
52 |
OPENMP_USES= compiler:openmp |
| 53 |
OPENMP_USES_OFF= compiler:env |
53 |
OPENMP_USES_OFF= compiler:env |
| 54 |
OPENMP_CONFIGURE_ENABLE= openmp |
54 |
OPENMP_CONFIGURE_ENABLE= openmp |
| 55 |
OPENMP_EXTRA_PATCHES= ${FILESDIR}/extrapatch-tests_fftw-bench.c |
55 |
OPENMP_EXTRA_PATCHES= ${FILESDIR}/extrapatch-tests_fftw-bench.c |
| 56 |
|
56 |
|
| 57 |
OPENMPI_DESC= Build OpenMPI parallel libraries |
57 |
OPENMPI_DESC= Build OpenMPI parallel libraries |
| 58 |
OPENMPI_LIB_DEPENDS= libmpi.so:net/openmpi |
58 |
OPENMPI_LIB_DEPENDS= libmpi.so:net/openmpi |
| 59 |
OPENMPI_CONFIGURE_ENABLE= mpi |
59 |
OPENMPI_CONFIGURE_ENABLE= mpi |
| 60 |
OPENMPI_CONFIGURE_ENV= MPICC=${MPIDIR}/bin/mpicc \ |
60 |
OPENMPI_CONFIGURE_ENV= MPICC=${MPIDIR}/bin/mpicc \ |
| 61 |
MPIRUN=${MPIDIR}/bin/mpirun |
61 |
MPIRUN=${MPIDIR}/bin/mpirun |
| 62 |
|
62 |
|
| 63 |
.include <bsd.port.options.mk> |
63 |
.include <bsd.port.options.mk> |
| 64 |
|
64 |
|
|
|
65 |
#Enable cycle counter via the CNTVCT_EL0 register for all variants on arm64 |
| 66 |
.if ${ARCH} == "aarch64" |
| 67 |
CONFIGURE_ARGS+=--enable-armv8-cntvct-el0 |
| 68 |
.endif |
| 69 |
|
| 65 |
#Users must add altivec to MACHINE_CPU when desired: |
70 |
#Users must add altivec to MACHINE_CPU when desired: |
| 66 |
#this is not currently done in bsd.cpu.mk |
71 |
#this is not currently done in bsd.cpu.mk |
| 67 |
.if ${FFTW3_FLAVOR} == "default" |
72 |
.if ${FFTW3_FLAVOR} == "default" |
| 68 |
. if ${PORT_OPTIONS:MSIMD} |
73 |
. if ${PORT_OPTIONS:MSIMD} |
| 69 |
. if !empty(MACHINE_CPU:Mavx) |
74 |
. if !empty(MACHINE_CPU:Mavx) |
| 70 |
CONFIGURE_ARGS+=--enable-avx |
75 |
CONFIGURE_ARGS+=--enable-avx |
| 71 |
. endif |
76 |
. endif |
| 72 |
. if !empty(MACHINE_CPU:Mavx2) |
77 |
. if !empty(MACHINE_CPU:Mavx2) |
| 73 |
CONFIGURE_ARGS+=--enable-avx2 --enable-fma |
78 |
CONFIGURE_ARGS+=--enable-avx2 --enable-fma |
| 74 |
. endif |
79 |
. endif |
| 75 |
. if !empty(MACHINE_CPU:Msse2) |
80 |
. if !empty(MACHINE_CPU:Msse2) |
| 76 |
CONFIGURE_ARGS+=--enable-sse2 |
81 |
CONFIGURE_ARGS+=--enable-sse2 |
| 77 |
. endif |
82 |
. endif |
| 78 |
. endif |
83 |
. endif |
| 79 |
.elif ${FFTW3_FLAVOR} == "float" |
84 |
.elif ${FFTW3_FLAVOR} == "float" |
| 80 |
FFTW3_SUFX= f |
85 |
FFTW3_SUFX= f |
| 81 |
FFTW3_PKGNAMESUFFIX= -float |
86 |
FFTW3_PKGNAMESUFFIX= -float |
| 82 |
CONFIGURE_ARGS+=--enable-float |
87 |
CONFIGURE_ARGS+=--enable-float |
| 83 |
. if ${PORT_OPTIONS:MSIMD} |
88 |
. if ${PORT_OPTIONS:MSIMD} |
| 84 |
. if !empty(MACHINE_CPU:Mavx) |
89 |
. if !empty(MACHINE_CPU:Mavx) |
| 85 |
CONFIGURE_ARGS+=--enable-avx |
90 |
CONFIGURE_ARGS+=--enable-avx |
| 86 |
. endif |
91 |
. endif |
| 87 |
. if !empty(MACHINE_CPU:Mavx2) |
92 |
. if !empty(MACHINE_CPU:Mavx2) |
| 88 |
CONFIGURE_ARGS+=--enable-avx2 --enable-fma |
93 |
CONFIGURE_ARGS+=--enable-avx2 --enable-fma |
| 89 |
. endif |
94 |
. endif |
| 90 |
. if !empty(MACHINE_CPU:Msse) |
95 |
. if !empty(MACHINE_CPU:Msse) |
| 91 |
CONFIGURE_ARGS+=--enable-sse2 |
96 |
CONFIGURE_ARGS+=--enable-sse2 |
| 92 |
. endif |
97 |
. endif |
| 93 |
. if !empty(ARCH:Mpowerpc*) && !empty(MACHINE_CPU:Maltivec) |
98 |
. if !empty(ARCH:Mpowerpc*) && !empty(MACHINE_CPU:Maltivec) |
| 94 |
CONFIGURE_ARGS+=--enable-altivec |
99 |
CONFIGURE_ARGS+=--enable-altivec |
| 95 |
. endif |
100 |
. endif |
|
|
101 |
. if ${ARCH} == "aarch64" |
| 102 |
CONFIGURE_ARGS+=--enable-neon |
| 103 |
. endif |
| 96 |
. endif |
104 |
. endif |
| 97 |
.elif ${FFTW3_FLAVOR} == "long" |
105 |
.elif ${FFTW3_FLAVOR} == "long" |
| 98 |
FFTW3_SUFX= l |
106 |
FFTW3_SUFX= l |
| 99 |
FFTW3_PKGNAMESUFFIX= -long |
107 |
FFTW3_PKGNAMESUFFIX= -long |
| 100 |
CONFIGURE_ARGS+=--enable-long-double |
108 |
CONFIGURE_ARGS+=--enable-long-double |
| 101 |
.elif ${FFTW3_FLAVOR} == "quad" |
109 |
.elif ${FFTW3_FLAVOR} == "quad" |
| 102 |
FFTW3_SUFX= q |
110 |
FFTW3_SUFX= q |
| 103 |
FFTW3_PKGNAMESUFFIX= -quad |
111 |
FFTW3_PKGNAMESUFFIX= -quad |
| 104 |
CONFIGURE_ARGS+=--enable-quad-precision |
112 |
CONFIGURE_ARGS+=--enable-quad-precision |
| 105 |
ONLY_FOR_ARCHS= i386 amd64 |
113 |
ONLY_FOR_ARCHS= i386 amd64 |
| 106 |
USE_GCC= yes |
114 |
USE_GCC= yes |
| 107 |
.endif |
115 |
.endif |
| 108 |
|
116 |
|
| 109 |
.if ${FFTW3_FLAVOR} == "default" |
117 |
.if ${FFTW3_FLAVOR} == "default" |
| 110 |
PLIST_SUB+= DEF="" NONDEF="@comment " |
118 |
PLIST_SUB+= DEF="" NONDEF="@comment " |
| 111 |
.else |
119 |
.else |
| 112 |
PLIST_SUB+= DEF="@comment " NONDEF="" |
120 |
PLIST_SUB+= DEF="@comment " NONDEF="" |
| 113 |
.endif |
121 |
.endif |
| 114 |
|
122 |
|
| 115 |
PLIST_SUB+= FFTW3_SUFX="${FFTW3_SUFX}" |
123 |
PLIST_SUB+= FFTW3_SUFX="${FFTW3_SUFX}" |
| 116 |
|
124 |
|
| 117 |
.include <bsd.port.pre.mk> |
125 |
.include <bsd.port.pre.mk> |
| 118 |
|
126 |
|
| 119 |
.if ${PORT_OPTIONS:MOPTIMIZED_CFLAGS} |
127 |
.if ${PORT_OPTIONS:MOPTIMIZED_CFLAGS} |
| 120 |
CFLAGS+= -O3 -fstrict-aliasing |
128 |
CFLAGS+= -O3 -fstrict-aliasing |
| 121 |
. if !defined(WITH_DEBUG) |
129 |
. if !defined(WITH_DEBUG) |
| 122 |
CFLAGS+= -fomit-frame-pointer |
130 |
CFLAGS+= -fomit-frame-pointer |
| 123 |
. endif |
131 |
. endif |
| 124 |
. if ${ARCH} == "i386" && (${COMPILER_TYPE} == "gcc" || !empty(USE_GCC)) && !${PORT_OPTIONS:MOPENMPI} |
132 |
. if ${ARCH} == "i386" && (${COMPILER_TYPE} == "gcc" || !empty(USE_GCC)) && !${PORT_OPTIONS:MOPENMPI} |
| 125 |
CFLAGS+= -malign-double |
133 |
CFLAGS+= -malign-double |
| 126 |
. endif |
134 |
. endif |
| 127 |
WITHOUT_NO_STRICT_ALIASING= yes |
135 |
WITHOUT_NO_STRICT_ALIASING= yes |
| 128 |
.endif # end OPTIMIZED_CFLAGS |
136 |
.endif # end OPTIMIZED_CFLAGS |
| 129 |
|
137 |
|
| 130 |
post-patch: |
138 |
post-patch: |
| 131 |
@${REINPLACE_CMD} -e 's|/etc/fftw|${PREFIX}/etc/fftw|' \ |
139 |
@${REINPLACE_CMD} -e 's|/etc/fftw|${PREFIX}/etc/fftw|' \ |
| 132 |
${WRKSRC}/Makefile.in \ |
140 |
${WRKSRC}/Makefile.in \ |
| 133 |
${WRKSRC}/api/import-system-wisdom.c \ |
141 |
${WRKSRC}/api/import-system-wisdom.c \ |
| 134 |
${WRKSRC}/doc/fftw3* \ |
142 |
${WRKSRC}/doc/fftw3* \ |
| 135 |
${WRKSRC}/tools/* |
143 |
${WRKSRC}/tools/* |
| 136 |
.if ${FFTW3_FLAVOR} != "default" |
144 |
.if ${FFTW3_FLAVOR} != "default" |
| 137 |
@${REINPLACE_CMD} -E \ |
145 |
@${REINPLACE_CMD} -E \ |
| 138 |
-e '/(DIST_COMMON|bin_SCRIPTS|BUILT_SOURCES|EXTRA_DIST) =/,\ |
146 |
-e '/(DIST_COMMON|bin_SCRIPTS|BUILT_SOURCES|EXTRA_DIST) =/,\ |
| 139 |
/[^\]$$/s/[^[:blank:]]*fftw-wisdom-to-conf[^[:blank:]]*//' \ |
147 |
/[^\]$$/s/[^[:blank:]]*fftw-wisdom-to-conf[^[:blank:]]*//' \ |
| 140 |
${WRKSRC}/tools/Makefile.in |
148 |
${WRKSRC}/tools/Makefile.in |
| 141 |
.endif |
149 |
.endif |
| 142 |
|
150 |
|
| 143 |
post-configure: |
151 |
post-configure: |
| 144 |
#After issuing --disable-fortran in order to avoid using a Fortran compiler |
152 |
#After issuing --disable-fortran in order to avoid using a Fortran compiler |
| 145 |
#during configuration, edit config.h to provide Fortran wrappers appropriate for |
153 |
#during configuration, edit config.h to provide Fortran wrappers appropriate for |
| 146 |
#gfortran, with ac_cv_f77_mangling="lower case, underscore, no extra underscore" |
154 |
#gfortran, with ac_cv_f77_mangling="lower case, underscore, no extra underscore" |
| 147 |
@${REINPLACE_CMD} -e '/DISABLE_FORTRAN/d' ${WRKSRC}/config.h |
155 |
@${REINPLACE_CMD} -e '/DISABLE_FORTRAN/d' ${WRKSRC}/config.h |
| 148 |
@${ECHO_CMD} "#define F77_FUNC(name,NAME) name ## _" >> ${WRKSRC}/config.h |
156 |
@${ECHO_CMD} "#define F77_FUNC(name,NAME) name ## _" >> ${WRKSRC}/config.h |
| 149 |
@${ECHO_CMD} "#define F77_FUNC_(name,NAME) name ## _" >> ${WRKSRC}/config.h |
157 |
@${ECHO_CMD} "#define F77_FUNC_(name,NAME) name ## _" >> ${WRKSRC}/config.h |
| 150 |
@${ECHO_CMD} "#define F77_FUNC_EQUIV 1" >> ${WRKSRC}/config.h |
158 |
@${ECHO_CMD} "#define F77_FUNC_EQUIV 1" >> ${WRKSRC}/config.h |
| 151 |
|
159 |
|
| 152 |
post-configure-G77_WRAPPERS-on: |
160 |
post-configure-G77_WRAPPERS-on: |
| 153 |
@${ECHO_CMD} "#define WITH_G77_WRAPPERS 1" >> ${WRKSRC}/config.h |
161 |
@${ECHO_CMD} "#define WITH_G77_WRAPPERS 1" >> ${WRKSRC}/config.h |
| 154 |
|
162 |
|
| 155 |
.if ${FFTW3_FLAVOR} != "default" |
163 |
.if ${FFTW3_FLAVOR} != "default" |
| 156 |
post-install: |
164 |
post-install: |
| 157 |
${INSTALL_MAN} ${WRKSRC}/tools/fftw${FFTW3_SUFX}-wisdom.1 ${STAGEDIR}${PREFIX}/man/man1 |
165 |
${INSTALL_MAN} ${WRKSRC}/tools/fftw${FFTW3_SUFX}-wisdom.1 ${STAGEDIR}${PREFIX}/man/man1 |
| 158 |
${STRIP_CMD} ${STAGEDIR}${PREFIX}/lib/lib*.so |
166 |
${STRIP_CMD} ${STAGEDIR}${PREFIX}/lib/lib*.so |
| 159 |
.endif |
167 |
.endif |
| 160 |
|
168 |
|
| 161 |
.include <bsd.port.post.mk> |
169 |
.include <bsd.port.post.mk> |