# -*- 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 110168 2013-08-27 19:41:46Z jeremyhu@macports.org $

PortSystem          1.0
PortGroup python26  1.0

name                py26-ngl
version             1.3.0b1
revision            1
platforms           darwin
maintainers         nomaintainer
license             PyNGL
categories-append   science
description         module  to visualize scientific data
homepage            http://www.pyngl.ucar.edu/
master_sites        http://www.pyngl.ucar.edu/Download/
distname            PyNGL-${version}
checksums           md5     231e0ad8ab7f295483f131367ab856cc \
                    sha1    76bbb03c05f0acb1591172543d3decc7c4397422 \
                    rmd160  bd4357d46af0a723cd81c16bdb0ecc3df03fa6a2

long_description \
    PyNGL is a Python language module used to visualize scientific data, \
    with an emphasis on high quality 2D visualizations.

fetch {
    if {![file exists ${distpath}/${distfiles}]} {
        xinstall -d ${distpath}
        ui_error "Download ${distfiles} manually and place it in ${distpath}.\n \
            See instructions on ${master_sites}"
    }
}

patch {
    reinplace "s|/usr/X11R6/lib|${prefix}/lib|" ${worksrcpath}/setup.py
    reinplace "s|/usr/bin/env python|${prefix}/bin/python2.6|" ${worksrcpath}/examples/pynglex
    reinplace "s|py_cmd = 'python'|py_cmd = '${prefix}/bin/python2.6'|" ${worksrcpath}/examples/pynglex
}

# ncarg is not universal (and thus py26-nio is not universal)
universal_variant no

depends_lib-append  port:py26-nio

build.env           PNG_PREFIX=${prefix} \
                    ZLIB_PREFIX=${prefix} \
                    NCARG_ROOT=${prefix}
destroot.env        NCARG_ROOT=${prefix}

set gcc_versions {4.3 4.4 4.5 4.6 4.7 4.8 4.9}
set default_fortran_variant +gcc48
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}"

    if {[variant_isset gcc${ver_no_dot}]} {
        if {${default_fortran_variant} != "+gcc${ver_no_dot}"} {
            set default_fortran_variant ""
        }
    }
}

eval [concat {variant g95 description {build with g95}} $g95_conflicts {{}}]

if {[variant_isset g95]} {
    if {${default_fortran_variant} != "+g95"} {
        set default_fortran_variant ""
    }
}

if {${default_fortran_variant} != ""} {
    default_variants-append "${default_fortran_variant}"
}

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.fc  ${prefix}/bin/gfortran-mp-${ver}
        configure.f77 ${prefix}/bin/gfortran-mp-${ver}
        configure.f90 ${prefix}/bin/gfortran-mp-${ver}

        build.env-append    F2CLIBS=gfortran \
                            F2CLIBS_PREFIX=${prefix}/lib/gcc${ver_no_dot} \
                            CC=${configure.cc}
    }
}

if {[variant_isset g95]} {
    depends_lib-append path:lib/libgcc/libgcc_s.1.dylib:libgcc
    depends_build-append port:g95

    configure.fc ${prefix}/bin/g95
    configure.f77 ${prefix}/bin/g95
    configure.f90 ${prefix}/bin/g95

    configure.fflags-append -fno-second-underscore

    build.env-append    F2CLIBS=f95 \
                        F2CLIBS_PREFIX=${prefix}/lib/ \
                        CC=${configure.cc}
}

livecheck.type      regex
livecheck.url       ${master_sites}
livecheck.regex     {The current version of PyNGL and PyNIO is ([0-9]\.[0-9]\.[0-9][a-z]+[0-9]+)}
