# $Id$ PortSystem 1.0 PortGroup muniversal 1.0 name fftw-3 version 3.3.3 revision 3 categories math license GPL-2+ platforms darwin maintainers ram openmaintainer homepage http://www.fftw.org/ distname fftw-${version} master_sites \ ${homepage} \ ftp://ftp.fftw.org/pub/fftw/ \ ftp://ftp.kusastro.kyoto-u.ac.jp/pub/src/GNU/fftw/ description \ Fast C routines to compute the Discrete Fourier Transform long_description \ FFTW is a C subroutine library for computing the \ Discrete Fourier Transform (DFT) in one or more \ dimensions, of both real and complex data, and of \ arbitrary input size. We believe that FFTW, which is \ free software, should become the FFT library of choice \ for most applications. Our benchmarks, performed on a \ variety of platforms, show that FFTW's performance is \ typically superior to that of other publicly available \ FFT software. Moreover, FFTW's performance is portable: \ the program will perform well on most architectures \ without modification. \ This port is of fftw version 3.x. It has many \ improvements relative to 2.x, but is not backwardly \ compatible. checksums \ rmd160 f45e97f06ffaf59b5022ea5e33ef240cb5e84e74 \ sha256 85cdfc0a0ba10d8fa4f0f8e733aac1a5936c859832a9e3d5c0731fb5c54a97f3 configure.args \ --enable-threads \ --disable-fortran \ --enable-shared configure.cflags-append \ -fno-common \ -O3 \ -fomit-frame-pointer \ -fstrict-aliasing array set merger_configure_args { ppc "--enable-fma" ppc64 "--enable-fma" i386 "--enable-sse2" x86_64 "--enable-sse2" } test.run yes test.target check use_parallel_build yes platform i386 { if {![variant_isset universal]} { configure.args-append --enable-sse2 } } platform powerpc { if {![variant_isset universal]} { configure.args-append --enable-fma } } subport fftw-3-single { configure.args-append --enable-float array set merger_configure_args { ppc "--enable-fma --enable-altivec" ppc64 "--enable-fma --enable-altivec" i386 "--enable-sse" x86_64 "--enable-sse" } depends_lib port:fftw-3 platform i386 { if {![variant_isset universal]} { configure.args-delete --enable-sse2 configure.args-append --enable-sse } } platform powerpc { if {![variant_isset universal]} { configure.args-append --enable-altivec } } post-destroot { file delete ${destroot}${prefix}/include/fftw3.f file delete ${destroot}${prefix}/include/fftw3.f03 file delete ${destroot}${prefix}/include/fftw3l.f03 file delete ${destroot}${prefix}/include/fftw3q.f03 file delete ${destroot}${prefix}/include/fftw3.h file delete ${destroot}${prefix}/bin/fftw-wisdom-to-conf file delete ${destroot}${prefix}/share/man/man1/fftw-wisdom-to-conf.1 file delete ${destroot}${prefix}/share/info/fftw3.info file delete ${destroot}${prefix}/share/info/fftw3.info-1 file delete ${destroot}${prefix}/share/info/fftw3.info-2 file delete ${destroot}${prefix}/share/info/fftw3.info-3 file delete ${destroot}${prefix}/share/info/fftw3.info-4 file delete ${destroot}${prefix}/share/info/fftw3.info-5 if {[variant_isset mpich] || [variant_isset openmpi]} { file delete ${destroot}${prefix}/include/fftw3-mpi.f03 file delete ${destroot}${prefix}/include/fftw3-mpi.h file delete ${destroot}${prefix}/include/fftw3l-mpi.f03 } } } subport fftw-3-long { configure.args-append --enable-long-double array set merger_configure_args { ppc "" ppc64 "" i386 "" x86_64 "" } depends_lib port:fftw-3 platform i386 { if {![variant_isset universal]} { configure.args-delete --enable-sse2 } } platform powerpc { if {![variant_isset universal]} { configure.args-delete --enable-fma } } post-destroot { file delete ${destroot}${prefix}/include/fftw3.f file delete ${destroot}${prefix}/include/fftw3.f03 file delete ${destroot}${prefix}/include/fftw3l.f03 file delete ${destroot}${prefix}/include/fftw3q.f03 file delete ${destroot}${prefix}/include/fftw3.h file delete ${destroot}${prefix}/bin/fftw-wisdom-to-conf file delete ${destroot}${prefix}/share/man/man1/fftw-wisdom-to-conf.1 file delete ${destroot}${prefix}/share/info/fftw3.info file delete ${destroot}${prefix}/share/info/fftw3.info-1 file delete ${destroot}${prefix}/share/info/fftw3.info-2 file delete ${destroot}${prefix}/share/info/fftw3.info-3 file delete ${destroot}${prefix}/share/info/fftw3.info-4 file delete ${destroot}${prefix}/share/info/fftw3.info-5 if {[variant_isset mpich] || [variant_isset openmpi]} { file delete ${destroot}${prefix}/include/fftw3-mpi.f03 file delete ${destroot}${prefix}/include/fftw3-mpi.h file delete ${destroot}${prefix}/include/fftw3l-mpi.f03 } } } if { ${os.arch} == "i386" } { lappend merger_configure_args(ppc) "--disable-fortran" lappend merger_configure_args(ppc64) "--disable-fortran" } else { lappend merger_configure_args(i386) "--disable-fortran" lappend merger_configure_args(x86_64) "--disable-fortran" } set gcc_versions {4.3 4.4 4.5 4.6 4.7 4.8 4.9} set g95_conflicts {} foreach ver ${gcc_versions} { set ver_no_dot [join [split ${ver} "."] ""] set variant_line {variant gcc${ver_no_dot} description "build with gfortran from gcc${ver_no_dot}" conflicts g95} foreach over ${gcc_versions} { if {${ver} == ${over}} { continue } set over_no_dot [join [split ${over} "."] ""] append variant_line " conflicts gcc${over_no_dot}" } append variant_line { {}} eval $variant_line append g95_conflicts " conflicts gcc${ver_no_dot}" } eval [concat {variant g95 description {build with g95}} $g95_conflicts {{}}] foreach ver ${gcc_versions} { set ver_no_dot [join [split ${ver} "."] ""] if {[variant_isset gcc${ver_no_dot}]} { depends_lib-append path:lib/libgcc/libgcc_s.1.dylib:libgcc depends_build-append port:gcc${ver_no_dot} configure.args-delete --disable-fortran configure.fc ${prefix}/bin/gfortran-mp-${ver} configure.f77 ${prefix}/bin/gfortran-mp-${ver} configure.f90 ${prefix}/bin/gfortran-mp-${ver} } } if {[variant_isset g95]} { depends_lib-append path:lib/libgcc/libgcc_s.1.dylib:libgcc depends_build-append port:g95 configure.args-delete --disable-fortran configure.fc ${prefix}/bin/g95 configure.f77 ${prefix}/bin/g95 configure.f90 ${prefix}/bin/g95 if {${build_arch} == "i386"} { lappend merger_configure_args(x86_64) "--disable-fortran" } elseif {${build_arch} == "x86_64"} { lappend merger_configure_args(i386) "--disable-fortran" } else { lappend merger_configure_args(ppc64) "--disable-fortran" } } variant openmpi description {compile FFTW MPI library with OpenMPI} conflicts mpich { depends_lib-append port:openmpi configure.env MPICC=${prefix}/lib/openmpi/bin/mpicc configure.args-append --enable-mpi } variant mpich description {compile FFTW MPI library with MPICH} conflicts openmpi { depends_lib-append path:bin/mpicc-mp:mpich-default configure.env MPICC=${prefix}/bin/mpicc-mp configure.args-append --enable-mpi } variant mpich2 requires mpich description {Legacy compatibility variant} {} if {${name} == ${subport}} { livecheck.type regex livecheck.url ${homepage} livecheck.regex {FFTW (\d+(?:\.\d+)*) is the latest} } else { livecheck.type none }