# -*- coding: utf-8; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- vim:fenc=utf-8:et:sw=4:ts=4:sts=4
# $Id$

PortSystem              1.0
PortGroup               python 1.0

name                    py-scikits-bvp_solver
version                 1.1

categories-append       science
platforms               darwin
license                 BSD

maintainers             nomaintainer

description             bvp_solver is a Python package for solving two-point boundary value problems.

long_description        scikits.bvp_solver is a python package for solving two point boundary value \
                        problems which is based on a modified version of the BVP_SOLVER Fortran package.

homepage                http://packages.python.org/scikits.bvp_solver/
master_sites            http://pypi.python.org/packages/source/s/scikits.bvp_solver/

distname                scikits.bvp_solver-${version}

# md5 checksum comes from the source site
checksums               md5     894a566a3080ea6fe0e0b0c17fc628a7 \
                        rmd160  903e53a0b4bf40d864abbdb83dc5d008a3e1c874 \
                        sha256  3de71a39d97cdd61fea5693f7dd01b3820310d755f8e6669a3694b01eb787f1d

# Only tested on python 2.7.
python.versions         27

python.add_archflags    no
universal_variant       no

if {${name} ne ${subport}} {
	patchfiles			patch-setup_py.diff

    depends_lib-append  port:py${python.version}-numpy

    post-patch {
        set pyver [join [split ${python.version} {}] {.}]
        set pyfwk ${frameworks_dir}/Python.framework/Versions/

        reinplace -E "s|XXX|-L${pyfwk}${pyver}/lib -lpython${pyver} -Xlinker -dylib|g" \
					 ${worksrcpath}/setup.py
    }
    
    set gcc_versions {4.3 4.4 4.5 4.6 4.7 4.8 4.9}
    set default_fortran_variant +gcc48

    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}"}

        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

        if {[variant_isset gcc${ver_no_dot}]} {
            if {${default_fortran_variant} != "+gcc${ver_no_dot}"} {
                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}
        }
    }

    livecheck.type      none
} else {
    livecheck.type      regex
    livecheck.url       ${master_sites}
    livecheck.regex     "bvp_solver-(\\d+(?:\\.\\d+)*)${extract.suffix}"
}