# -*- coding: utf-8; mode: tcl; c-basic-offset: 4; indent-tabs-mode: nil; tab-width: 4; truncate-lines: t -*- vim:fenc=utf-8:et:sw=4:ts=4:sts=4
# $Id: Portfile 60344 2009-11-09 14:20:25Z mmoll@macports.org $

PortSystem          1.0

name                hdf5
version             1.6.9
revision            0
categories          science
maintainers         openmaintainer jochen

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-18
master_sites        ftp://ftp.hdfgroup.org/HDF5/current16/src/ \
                    ftp://ftp.hdfgroup.org/HDF5/prev-releases/hdf5-${version}/src/

checksums           md5 751eb3317a47e7c58978e1c3a13a93fc \
                    sha1 0481ce8cf2e62b9b10418065901369d4e0dbb4dc \
                    rmd160 05ca8a3229bdd6e214d0e843afc065d0fe9f47c7

depends_lib         port:zlib
patchfiles          patch-commence.diff patch-c-commence.diff \
                    patch-fortran-commence.diff patch-H5f90i.diff \
                    patch-configure.diff patch-c++_configure.diff \
                    patch-fortran_configure.diff

universal_variant   no

use_parallel_build  yes
configure.ccache    no

configure.args      --enable-cxx --with-zlib=yes --with-szlib=no
configure.ldflags   -L${worksrcpath}/src/.libs -L${prefix}/lib

destroot.destdir    prefix=${destroot}${prefix}

test.run            yes
test.target         check


# variant descriptions

variant fortran description {Include the Fortran interface} {
    configure.args-delete   --disable-fortran
    configure.args-append   --enable-fortran
    pre-fetch {
        if { ![variant_isset gcc43] && ![variant_isset gcc42] && ![variant_isset g95] } {
            error "You must specify a compiler variant in order to build the Fortran interface"
        }
    }
}

variant szip description {Enable szip compression support} {
    configure.args-delete       --with-szlib=no
    configure.args-append       --with-szlib=yes
    depends_lib-append          port:szip
}

variant threadsafe description {Enable threadsafety (experimental, fails unit-tests)} {
    configure.args-delete       --disable-threadsafe
    configure.args-append       --enable-threadsafe
}


variant gcc42 conflicts g95 gcc43 description {Compile using GCC 4.2} {
    depends_lib-append          port:gcc42
    configure.compiler          macports-gcc-4.2
}

variant gcc43 conflicts g95 gcc42 description {Compile using GCC 4.3} {
    depends_lib-append          port:gcc43
    configure.compiler          macports-gcc-4.3
    configure.env-append        LD=${prefix}/bin/g++-mp-4.3
}

variant g95 requires fortran conflicts gcc42 gcc43 description {Use g95 Fortran compiler (unsupported)} {
    depends_lib-append          port:g95
    patchfiles-append           patch-powerpc-apple.diff
    configure.fc                ${prefix}/bin/g95
}

variant optimized description {Higher compiler optimization for host machine (esp. for gcc43)} {
    configure.cflags-delete     -O2
    configure.cxxflags-delete   -O2
    configure.fflags-delete     -O2
    configure.cflags-append     -ftree-vectorize -O3
    configure.cxxflags-append   -ftree-vectorize -O3
    configure.fflags-append     -ftree-vectorize -O3
    if { [variant_isset gcc43] } {
        configure.cflags-append     -march=native
        configure.cxxflags-append   -march=native
        configure.fflags-append     -march=native
    }
}
