# $Id: Portfile 62771 2010-01-17 03:16:52Z nox@macports.org $

PortSystem      1.0
PortGroup       archcheck 1.0
PortGroup       muniversal 1.0

name            glpk
version         4.41
license         GPL-3+
categories      math lang
platforms       darwin
maintainers     fastmail.fm:lutz.horn
description     GNU Linear Programming Kit

long_description \
    The GLPK (GNU Linear Programming Kit) package is intended for \
    solving large-scale linear programming (LP), mixed integer \
    programming (MIP), and other related problems. It is a set of \
    routines written in ANSI C and organized in the form of a \
    callable library.

homepage        http://www.gnu.org/software/${name}/
master_sites    gnu

checksums       md5     55026a855035d0caf550db69d29d4959 \
                sha1    2699e10b79b2c72c9eb4d373e3b3060dcf80f468 \
                rmd160  1fb60f0803e2707f7c7772981e859efa629c5a39

depends_lib     port:gmp port:zlib

archcheck.files \
    lib/libgmp.dylib \
    lib/libz.dylib

configure.args  --with-gmp --with-zlib

if { [variant_isset odbc] || [variant_isset mysql] } {
    depends_lib-append port:libtool

    archcheck.files-append \
        lib/libltdl.dylib

    configure.args-append --enable-dl
}

use_parallel_build  yes

test.run        yes
test.target     check

post-patch {
    # glpk uses nmedit to make certain symbols local.
    # octave 3.0.3 relies on the obsolete __glp_lib_print_hook and __glp_lib_fault_hook symbols, so they must be kept global.
    # See http://www.nabble.com/octave-3.0.3-build-problem-due-to-glpk-td19945239.html for a discussion.
    reinplace \
        "s|export-symbols-regex '^(glp_\\|_glp_lpx_).*'|export-symbols-regex '^(glp_\\|_glp_lpx_\\|_glp_lib_fault_hook\\|_glp_lib_print_hook).*'|g" \
        ${worksrcpath}/src/Makefile.in
}

set docdir ${prefix}/share/doc/${name}

post-destroot {
    xinstall -d ${destroot}${docdir}
    xinstall -m 644 -W ${worksrcpath} AUTHORS COPYING ChangeLog NEWS README \
        ${destroot}${docdir}

    set examplesdir ${prefix}/share/examples/${name}
    xinstall -d ${destroot}${examplesdir}
    eval xinstall -m 644 \
        [glob -directory ${worksrcpath}/examples *.{c,mod,lp,mps,dat}] \
        ${destroot}${examplesdir}

    xinstall -d ${destroot}${examplesdir}/sql
    eval xinstall -m 644 \
        [glob -directory ${worksrcpath}/examples/sql *.{mod,sql}] \
        ${destroot}${examplesdir}/sql
}

variant doc description {Build and install documentation} {
    depends_build-append path:${prefix}/bin/pdflatex:texlive \
        path:${prefix}/bin/texi2pdf:texinfo
    post-destroot {
        system "cd ${worksrcpath}/doc && ${prefix}/bin/pdflatex glpk.tex && ${prefix}/bin/pdflatex glpk.tex"
        system "cd ${worksrcpath}/doc && ${prefix}/bin/texi2pdf gmpl.texi"
        xinstall -m 644 -W ${worksrcpath}/doc glpk.pdf gmpl.pdf glpk_faq.txt \
            ${destroot}${docdir}
    }
}

variant odbc description {enable MathProg ODBC support} {
    depends_lib-append port:unixODBC

    archcheck.files-append \
        lib/libodbc.dylib

    configure.args-append --enable-odbc=unix
    post-patch {
        reinplace \
            "s|libodbc.so|${prefix}/lib/libodbc.dylib|g" \
            ${worksrcpath}/configure
    }
}

variant mysql description {enable MathProg MySQL support} {
    depends_lib-append path:bin/mysql_config5:mysql5

    archcheck.files-append \
        lib/mysql5/mysql/libmysqlclient.dylib

    configure.args-append --enable-mysql
    post-patch {
        reinplace \
            "s|/usr/include/mysql|${prefix}/include/mysql5/mysql|g" \
            ${worksrcpath}/configure
        reinplace \
            "s|libmysqlclient.so|${prefix}/lib/mysql5/mysql/libmysqlclient.dylib|g" \
            ${worksrcpath}/configure
    }
}
