# -*- 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 92833 2012-05-08 23:46:29Z ryandesign@macports.org $

PortSystem                  1.0

name                        netcdf-fortran
version                     4.2
revision                    1
maintainers                 takeshi openmaintainer
platforms                   darwin
categories                  science
license                     Permissive

description                 NetCDF Fortran Library
long_description \
    NetCDF (network Common Data Form) is a set of software libraries \
    and machine-independent data formats that support the creation,  \
    access, and sharing of array-oriented scientific data.

homepage                    http://www.unidata.ucar.edu/software/netcdf/

master_sites                ftp://ftp.unidata.ucar.edu/pub/netcdf/ \
                            http://www.gfd-dennou.org/arch/netcdf/unidata-mirror/ \
                            ftp://www.gfd-dennou.org/arch/netcdf/unidata-mirror/
checksums           md5     cc3bf530223e8f4aff93793b9f197bf3 \
                    sha1    f1887314455330f4057bc8eab432065f8f6f74ef \
                    rmd160  e10c342a5d6ab2740cd910122b0164d16730e194

depends_lib         port:netcdf

patchfiles          patch-netcdf-fortran.pc.in.diff
post-patch {
    if {[variant_isset g95]} {
        reinplace "s|lt_cv_ld_force_load=yes|lt_cv_ld_force_load=no|" ${worksrcpath}/configure
    }
}

pre-configure {
    if {[variant_isset openmpi]} {
        set hdf5cc [exec grep "C Compiler" ${prefix}/lib/libhdf5.settings | awk {BEGIN{FS="/"}{print $NF}}]
        if {${hdf5cc}!="openmpicc"} {
            ui_error "Install hdf5-18 +openmpi"
            return -code error "hdf5-18 +openmpi not installed"
        }
    }
}

configure.cppflags-append   -DNDEBUG
configure.cflags-append     -fno-common

test.run                    yes
test.target                 check

destroot.destdir            prefix=${destroot}${prefix} \
                            MANDIR=\\\${prefix}/share/man

if {![variant_isset gcc43] && ![variant_isset gcc44] && ![variant_isset gcc46] && ![variant_isset g95]} {
    default_variants +gcc45
}

variant gcc43 conflicts g95 gcc44 gcc45 gcc46 description {Enable Fortran support with gfortran 4.3} {
    depends_lib-append      port:gcc43
    configure.cppflags-append -DpgiFortran
    configure.compiler      macports-gcc-4.3
}

variant gcc44 conflicts g95 gcc43 gcc45 gcc46 description {Enable Fortran support with gfortran 4.4} {
    depends_lib-append      port:gcc44
    configure.cppflags-append -DpgiFortran
    configure.compiler      macports-gcc-4.4
}

variant gcc45 conflicts g95 gcc43 gcc44 gcc46 description {Enable Fortran support with gfortran 4.5} {
    depends_lib-append      port:gcc45
    configure.cppflags-append -DpgiFortran
    configure.compiler      macports-gcc-4.5
}

variant gcc46 conflicts g95 gcc43 gcc44 gcc45 description {Enable Fortran support with gfortran 4.6} {
    depends_lib-append      port:gcc46
    configure.cppflags-append -DpgiFortran
    configure.compiler      macports-gcc-4.6
}

variant g95 conflicts gcc43 gcc44 gcc45 gcc46 description {Enable Fortran support with g95} {
    depends_lib-append      port:g95
    #-lfg95 required or the tests fail
    configure.cppflags-append -DpgiFortran
    configure.fflags-append -fno-second-underscore
    configure.fcflags-append    -fno-second-underscore
    configure.ldflags-append    -lf95
    configure.fc            ${prefix}/bin/g95
    configure.f77           ${configure.fc}
}

variant openmpi conflicts mpich2 description {compile with openmpi} {
    depends_lib-append      port:openmpi
    configure.fc            openmpif77
    configure.cc            openmpicc
}

variant mpich2 conflicts openmpi description {compile with mpich2} {
    depends_lib-append      port:mpich2
    configure.fc            mpif90
    configure.cc            mpicc
}
