# $Id: Portfile 57375 2009-09-10 08:16:41Z ryandesign@macports.org $

PortSystem      1.0
PortGroup       muniversal 1.0

name            fftw-3-single
version         3.2.2
categories      math
platforms       darwin
maintainers     ram openmaintainer
homepage        http://www.fftw.org/
distname        fftw-${version}
dist_subdir     fftw-3

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 \
    md5 b616e5c91218cc778b5aa735fefb61ae \
    sha1 d43b799eedfb9408f62f9f056f5e8a645618467b \
    rmd160 27af9b97072fa3a41b91b9430d093f671a1cd359

configure.args \
    --enable-threads \
    --enable-float \
    --disable-fortran \
    --enable-shared

configure.cflags-append \
    -fno-common \
    -O3 \
    -fomit-frame-pointer \
    -fstrict-aliasing

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

test.run     yes
test.target  check

use_parallel_build yes

platform i386 {
    if {![variant_isset universal]} {
        configure.args-append --enable-sse
    }
}

platform powerpc {
    if {![variant_isset universal]} {
        configure.args-append --enable-fma --enable-altivec
    }
}

variant gcc42 description {create Fortran wrappers using gcc42} conflicts gcc43 gcc44 g95 {
    depends_lib-append    port:gcc42
    configure.f77         gfortran-mp-4.2
    configure.args-delete --disable-fortran
    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"
    }
}

variant gcc43 description {create Fortran wrappers using gcc43} conflicts gcc42 gcc44 g95 {
    depends_lib-append    port:gcc43
    configure.f77         gfortran-mp-4.3
    configure.args-delete --disable-fortran
    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"
    }
}

variant gcc44 description {create Fortran wrappers using gcc44} conflicts gcc42 gcc43 g95 {
    depends_lib-append    port:gcc44
    configure.f77         gfortran-mp-4.4
    configure.args-delete --disable-fortran
    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"
    }
}

variant g95 description {create Fortran wrappers using f95} conflicts gcc42 gcc43 {
    depends_lib-append    port:g95
    configure.f77         g95
    configure.args-delete --disable-fortran
    if { ${os.arch} == "i386" } {
        lappend merger_configure_args(ppc)     "--disable-fortran"
        lappend merger_configure_args(ppc64)   "--disable-fortran"
        lappend merger_configure_args(x86_64)  "--disable-fortran"
    } else {
        lappend merger_configure_args(i386)    "--disable-fortran"
        lappend merger_configure_args(ppc64)   "--disable-fortran"
        lappend merger_configure_args(x86_64)  "--disable-fortran"
    }
}

post-destroot {
    file delete ${destroot}${prefix}/include/fftw3.f
    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
}

livecheck.type  regex
livecheck.url   ${homepage}
livecheck.regex {FFTW (\d+(?:\.\d+)*) is the latest}
