# $Id: Portfile 92136 2012-04-19 19:56:46Z mmoll@macports.org $

PortSystem 1.0
PortGroup  muniversal 1.0

name          arpack
version       3.1.0
revision      1
categories    math
license       BSD
platforms     darwin
maintainers		mmoll
description		Package for solving large scale eigenvalue problems
long_description  \
    ARPACK is a collection of Fortran77 subroutines designed to solve large \
    scale eigenvalue problems.
homepage            http://forge.scilab.org/index.php/p/arpack-ng
master_sites        ${homepage}/downloads/376
distfiles           get
dist_subdir         ${name}/${version}
checksums           md5     942a866c306ab6986f3f4fe59ac4b13e \
                    sha1    26887b50b3a503954a0023b7b7dde9d1e356e2a7 \
                    rmd160  b0cd379933bfda53655da9def5b21a00ff9c97d1
worksrcdir          ${name}-ng_${version}

# openmpi does not have a universal variant
universal_variant   no
depends_build port:openmpi
configure.args-append --enable-mpi home=${worksrcpath}
if { ${build_arch}=="x86_64" || ${build_arch}=="ppc64" } {
    configure.args-append FFLAGS='-O2 -m64' LDFLAGS='-L${prefix}/lib'
} else {
    configure.args-append FFLAGS='-O2 -m32' LDFLAGS='-L${prefix}/lib'
}
configure.env-append MPIF77=${prefix}/bin/openmpif77

pre-fetch { 
	if {"darwin" == ${os.platform} && ${os.major} < 9} { 
		ui_error "${name} ${version} requires Mac OS X 10.5 or greater" 
		return -code error "incompatible Mac OS X version" 
	} 
}


# Fortran compilers can not cross-compile
if { ${os.arch}=="i386" } {
    set universal_archs_supported "i386 x86_64"
} else {
    set universal_archs_supported "ppc ppc64"
}

variant gcc42 description {build with gfortran-mp-4.2} conflicts gcc43 gcc44 gcc45 gcc46 gcc47 g95 universal {
	depends_build-append    port:gcc42
	configure.env-append F77=${prefix}/bin/gfortran-mp-4.2
}

variant gcc43 description {build with gfortran-mp-4.3} conflicts gcc42 gcc44 gcc45 gcc46 gcc47 g95 universal {
	depends_build-append    port:gcc43
	configure.env-append F77=${prefix}/bin/gfortran-mp-4.3
}

variant gcc44 description {build with gfortran-mp-4.4} conflicts gcc42 gcc43 gcc45 gcc46 gcc47 g95 {
	depends_build-append    port:gcc44
	configure.env-append F77=${prefix}/bin/gfortran-mp-4.4
}

variant gcc45 description {build with gfortran-mp-4.5} conflicts gcc42 gcc43 gcc44 gcc46 gcc47 g95 {
	depends_build-append    port:gcc45
	configure.env-append F77=${prefix}/bin/gfortran-mp-4.5
}

variant gcc46 description {build with gfortran-mp-4.6} conflicts gcc42 gcc43 gcc44 gcc45 gcc47 g95 {
	depends_build-append    port:gcc46
	configure.env-append F77=${prefix}/bin/gfortran-mp-4.6
}

variant gcc47 description {build with gfortran-mp-4.6} conflicts gcc42 gcc43 gcc44 gcc45 gcc46 g95 {
	depends_build-append    port:gcc47
	configure.env-append F77=${prefix}/bin/gfortran-mp-4.7
}
variant g95 description {build with g95} conflicts gcc42 gcc43 gcc44 gcc45 gcc46 gcc47 universal {
        depends_build-append    port:g95
        configure.env-append F77=${prefix}/bin/g95
}

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

variant accelerate conflicts atlas description {build with Accelerate framework} {
    configure.args-append --with-lapack=/usr/lib/liblapack.dylib
}

variant atlas description {build with atlas} {
    depends_lib-append port:atlas
    configure.args-append --with-lapack=${prefix}/lib/liblapack.dylib
}

if {![variant_isset atlas]} {
    default_variants +accelerate
}

post-destroot {
    reinplace "s|/usr|${prefix}|g" ${destroot}${prefix}/lib/pkgconfig/arpack.pc
}

livecheck.type  regex
livecheck.url   http://forge.scilab.org/index.php/p/arpack-ng/downloads/
livecheck.regex ${name}-ng (\[0-9.\]+\[0-9\])
