# -*- coding: utf-8; mode: tcl; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- vim:fenc=utf-8:ft=tcl:et:sw=4:ts=4:sts=4
# $Id: Portfile 92994 2012-05-13 18:14:34Z mmoll@macports.org $

PortSystem          1.0
PortGroup           muniversal 1.0

set realname        hdf5
name                ${realname}-18
version             1.8.9
categories          science
maintainers         mmoll openmaintainer

description         HDF5 general purpose library and file format for storing scientific data
long_description    ${description}
homepage            http://www.hdfgroup.org/HDF5/
platforms           darwin
conflicts           hdf5
master_sites        http://www.hdfgroup.org/ftp/HDF5/current/src \
                    ftp://ftp.hdfgroup.org/HDF5/current/src/ \
                    ftp://ftp.hdfgroup.org/HDF5/prev-releases/hdf5-${version}/src/
checksums           md5     33e105583417eff1c57fff910a53cd6f \
                    sha1    7d5e5e8caa5970c65e70a5b4ad6787efe0bf70bb \
                    rmd160  4c1a4160fbac6befa15b2dc039f20858c31db37d
distname            ${realname}-${version}
use_bzip2           yes
depends_lib         port:zlib
use_parallel_build  yes

configure.args      --with-zlib=yes --enable-filters=all \
                    --enable-production --disable-fortran \
                    --enable-cxx --enable-shared --enable-static \
                    --disable-parallel

# http://mail.hdfgroup.org/pipermail/hdf-forum_hdfgroup.org/2010-March/002682.html
license             NCSA

post-configure {
    if {[variant_isset universal]} {
        set dirs {}
        foreach arch ${universal_archs_to_use} {
            lappend dirs ${worksrcpath}-${arch}
        }
    } else {
        set dirs ${worksrcpath}
    }
    foreach dir ${dirs} {
        reinplace -E {s|-arch [a-z0-9_]+||g} \
            ${dir}/tools/misc/h5cc \
            ${dir}/c++/src/h5c++ \
            ${dir}/src/libhdf5.settings \
            ${dir}/fortran/src/h5fc
    }
}

test.run            yes
test.target         check

variant szip description {Enable szip support. (Noncommercial license)} {
    depends_lib-append          port:szip
    configure.args-append       --with-szlib=yes
    license                     Noncommercial
}


variant threadsafe description {Enable threadsafety (experimental and un-supported, disables cxx support)} conflicts openmpi {
    configure.args-delete       --disable-threadsafe --enable-cxx
    configure.args-append       --enable-threadsafe --disable-cxx
}

# openmpi conflicts with universal because there is no universal variant for
# the openmpi port at the moment
variant openmpi description {Enable Parallel HDF5} conflicts threadsafe universal {
    depends_lib-append          port:openmpi
    configure.cc                ${prefix}/bin/openmpicc
    configure.args-delete       --disable-parallel --enable-cxx
    configure.args-append       --enable-parallel --disable-cxx
}


variant gcc44 description {Enable Fortran bindings (gfortran 4.4)} conflicts threadsafe universal gcc45 gcc46 {
    depends_lib-append          port:gcc44 
    configure.fc                ${prefix}/bin/gfortran-mp-4.4 
    if { [variant_isset openmpi] } {
        configure.fcflags-append    -I${prefix}/include/openmpi -L${prefix}/lib -lmpi_f90 -lmpi_f77 -lmpi
    }
    configure.args-delete       --disable-fortran
    configure.args-append       --enable-fortran 
    configure.post_args LDFLAGS="-L${prefix}/lib"
}

variant gcc45 description {Enable Fortran bindings (gfortran 4.5)} conflicts threadsafe universal gcc44 gcc46 {
    depends_lib-append          port:gcc45 
    configure.fc                ${prefix}/bin/gfortran-mp-4.5 
    if { [variant_isset openmpi] } {
        configure.fcflags-append    -I${prefix}/include/openmpi -L${prefix}/lib -lmpi_f90 -lmpi_f77 -lmpi
    }
    configure.args-delete       --disable-fortran
    configure.args-append       --enable-fortran 
    configure.post_args LDFLAGS="-L${prefix}/lib"
}

variant gcc46 description {Enable Fortran bindings (gfortran 4.6)} conflicts threadsafe universal gcc44 gcc45 {
    depends_lib-append          port:gcc46 
    configure.fc                ${prefix}/bin/gfortran-mp-4.6 
    if { [variant_isset openmpi] } {
        configure.fcflags-append    -I${prefix}/include/openmpi -L${prefix}/lib -lmpi_f90 -lmpi_f77 -lmpi
    }
    configure.args-delete       --disable-fortran
    configure.args-append       --enable-fortran 
    configure.post_args LDFLAGS="-L${prefix}/lib"
}

livecheck.type      regex
livecheck.url       http://www.hdfgroup.org/HDF5/release/obtain5.html
livecheck.regex     5-(\[0-9.\]+)
