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