# $Id: Portfile 55944 2009-08-21 17:16:28Z ryandesign@macports.org $

PortSystem              1.0

name                    graphviz-devel
set my_name             graphviz
# keep version in sync between graphviz-devel and graphviz-gui-devel
version                 2.25.20090821.0445
categories              graphics
maintainers             ryandesign
homepage                http://www.graphviz.org/
master_sites            ${homepage}pub/graphviz/development/SOURCES/
platforms               darwin
use_parallel_build      yes
dist_subdir             ${my_name}
distname                ${my_name}-${version}

description \
    Graph visualization software from AT&T and Bell Labs

long_description \
    Graph Visualization Software from AT&T Laboratories and \
    Bell Laboratories (Lucent Technologies). \
    The package contains: \
        dot    - batch program for drawing directed graphs as \
         hierarchies \
        neato  - batch program for drawing undirected graphs \
         using Kamada-Kawai spring models. \
    Users wishing to have only the graph layout \
    programs (for non-interactive use) can use the +no_x11 \
    variant to build graphviz without its display routines.

checksums \
    md5     b9d92cc008ceb9c9db501c109446ab35 \
    sha1    418e43c7cf4e333a8538170cb6054049e1227b27 \
    rmd160  faff20663a14f35cd93bc98edf2cc49045fce0cf

platform darwin 7 {
    depends_lib-append \
        port:gnuregex
    post-extract {
        reinplace "s|<regex.h>|<gnuregex.h>|g" ${worksrcpath}/lib/gvc/gvconfig.c
    }
}

pre-extract {
    if {"darwin" == ${os.platform} && 9 == ${os.major}} {
        # graphviz-devel needs Xcode 3.1+ to avoid the libGL error when building the smyrna variant
        # graphviz-gui-devel needs Xcode 3.1.2+; see #18811
        set minimum_xcodeversion 3.1.2
        set current_xcodeversion [exec defaults read /Developer/Applications/Xcode.app/Contents/Info CFBundleShortVersionString]
        if {[rpm-vercomp ${current_xcodeversion} ${minimum_xcodeversion}] < 0} {
            ui_error "On Mac OS X ${macosx_version}, ${name} ${version} requires Xcode ${minimum_xcodeversion} or later but you have Xcode ${current_xcodeversion}."
            return -code error "incompatible Xcode version"
        }
    }
}

depends_lib \
    port:xorg-libXaw \
    path:lib/pkgconfig/pango.pc:pango \
    port:jpeg \
    port:libpng \
    port:fontconfig \
    port:freetype \
    port:expat \
    port:gd2 \
    port:zlib \
    port:gettext

depends_build \
    port:pkgconfig

depends_run \
    port:urw-fonts

configure.args \
    --with-codegens \
    --with-x \
    --without-devil \
    --without-smyrna \
    --with-digcola \
    --with-ipsepcola \
    --without-rsvg \
    --with-pangocairo \
    --without-glitz \
    --with-freetype2 \
    --with-fontconfig \
    --without-gdk-pixbuf \
    --without-gtk \
    --without-gtkgl \
    --without-gtkglext \
    --without-glade \
    --without-gnomeui \
    --without-ming \
    --without-quartz \
    --disable-swig \
    --disable-sharp \
    --disable-guile \
    --disable-io \
    --disable-java \
    --disable-lua \
    --disable-ocaml \
    --disable-perl \
    --disable-php \
    --disable-python \
    --disable-python23 \
    --disable-python24 \
    --disable-python25 \
    --disable-r \
    --disable-ruby \
    --disable-tcl

platform macosx {
    if {${os.major} > 8} {
        configure.args-delete --without-quartz
        configure.args-append --with-quartz
    }
}

variant guile description {Include Guile language bindings} {
    depends_lib-append \
        port:guile
    depends_build-append \
        port:swig
    configure.args-delete \
        --disable-swig \
        --disable-guile
    configure.args-append \
        --enable-guile
}

variant lua description {Include Lua language bindings} {
    depends_lib-append \
        port:lua
    depends_build-append \
        port:swig
    configure.args-delete \
        --disable-swig \
        --disable-lua
    configure.args-append \
        --enable-lua
    post-patch {
        reinplace "s|/usr/lib\$LIBPOSTFIX/lua|${prefix}/lib\$LIBPOSTFIX/lua|g" ${worksrcpath}/configure
    }
}

variant ocaml description {Include Objective Caml language bindings} {
    depends_lib-append \
        port:ocaml
    depends_build-append \
        port:swig
    configure.args-delete \
        --disable-swig \
        --disable-ocaml
    configure.args-append \
        --enable-ocaml
    configure.cppflags-append \
        -I${prefix}/lib/ocaml
}

variant perl description {Include PERL 5 language bindings} {
    depends_lib-append \
        path:bin/perl:perl5
    depends_build-append \
        port:swig
    configure.args-delete \
        --disable-swig \
        --disable-perl
    configure.args-append \
        --enable-perl
    configure.perl  ${prefix}/bin/perl
}

variant php description {Include PHP language bindings} {
    depends_lib-append \
        path:bin/php:php5
    depends_build-append \
        port:swig
    configure.args-delete \
        --disable-swig \
        --disable-php
    configure.args-append \
        --enable-php
    post-patch {
        reinplace "s|/usr/include/php|${prefix}/include/php|g" ${worksrcpath}/configure
        reinplace "s|/usr/lib\${LIBPOSTFIX}/php|${prefix}/lib\${LIBPOSTFIX}/php|g" ${worksrcpath}/configure
        reinplace "s|/usr/share/php|${prefix}/share/php|g" ${worksrcpath}/configure
    }
}

variant python24 description {Include Python 2.4 language bindings} conflicts python25 python26 {
    depends_lib-append \
        port:python24
    depends_build-append \
        port:swig
    configure.args-delete \
        --disable-swig \
        --disable-python
    configure.args-append \
        --enable-python
    configure.python ${prefix}/bin/python2.4
    # The configure script asks python where to install
    # This doesn't work for 2.4 and 2.5 (see #16334)
    post-patch {
        reinplace "s|PYTHON_INSTALL_DIR=.*|PYTHON_INSTALL_DIR=${prefix}/lib/python2.4|" ${worksrcpath}/configure
    }
}

variant python25 description {Include Python 2.5 language bindings} conflicts python24 python26 {
    depends_lib-append \
        port:python25
    depends_build-append \
        port:swig
    configure.args-delete \
        --disable-swig \
        --disable-python
    configure.args-append \
        --enable-python
    configure.python ${prefix}/bin/python2.5
    # The configure script asks python where to install
    # This doesn't work for 2.4 and 2.5 (see #16334)
    post-patch {
        reinplace "s|PYTHON_INSTALL_DIR=.*|PYTHON_INSTALL_DIR=${prefix}/lib/python2.5|" ${worksrcpath}/configure
    }
}

variant python26 description {Include Python 2.6 language bindings} conflicts python24 python25 {
    depends_lib-append \
        port:python26
    depends_build-append \
        port:swig
    configure.args-delete \
        --disable-swig \
        --disable-python
    configure.args-append \
        --enable-python
    configure.python ${prefix}/bin/python2.6
}

variant ruby description {Include Ruby language bindings} {
    depends_lib-append \
        port:ruby
    depends_build-append \
        port:swig
    configure.args-delete \
        --disable-swig \
        --disable-ruby
    configure.args-append \
        --enable-ruby
}

variant tcl description {Include Tcl language bindings} {
    pre-configure {
        if {"" == [glob -nocomplain ${prefix}/share/swig/*/tcl/tcl8.swg]} {
            ui_msg "To install ${name} with the +tcl variant, swig must first be installed with the +tcl variant."
            ui_msg "Rebuild swig using:"
            ui_msg "    sudo port -nf upgrade swig +tcl"
            return -code error "swig missing +tcl variant"
        }
    }
    depends_lib-append \
        port:tcl
    depends_build-append \
        port:swig
    configure.args-delete \
        --disable-swig \
        --disable-tcl
    configure.args-append \
        --enable-tcl
}

variant java description {Include Java language bindings} {
    depends_build-append \
        port:swig
    configure.args-delete \
        --disable-swig \
        --disable-java
    configure.args-append \
        --enable-java
}

variant smyrna description {Include the Smyrna large graph viewer} {
    configure.args-delete \
        --without-smyrna \
        --without-gtk \
        --without-gtkglext \
        --without-glade
    configure.args-append \
        --with-smyrna \
        --with-gtk \
        --with-gtkglext \
        --with-glade
    depends_lib-append \
        port:gtk2 \
        port:gtkglext \
        port:libglade2 \
        port:gts
}

variant r description {Include R language bindings} {
    depends_build-append \
        port:swig
    configure.args-delete \
        --disable-swig \
        --disable-r
    configure.args-append \
        --enable-r
}

variant rsvg description {enable the rsvg plugin} {
    depends_lib-append \
        port:librsvg
    configure.args-delete \
        --without-rsvg
    configure.args-append \
        --with-rsvg
}

variant gdk_pixbuf description {enable the gdk_pixbuf plugin} {
    depends_lib-append \
        port:gtk2
    configure.args-delete \
        --without-gdk-pixbuf
    configure.args-append \
        --with-gdk-pixbuf
}

variant glitz description {enable the incomplete glitz plugin} {
    depends_lib-append \
        port:glitz
    configure.args-delete \
        --without-glitz
    configure.args-append \
        --with-glitz
}

variant ming description {enable the incomplete ming plugin} {
    depends_lib-append \
        port:ming
    configure.args-delete \
        --without-ming
    configure.args-append \
        --with-ming
}

variant no_pangocairo description {Remove pangocairo support (no antialiased bitmapped output; no PDF output)} {
    depends_lib-delete \
        path:lib/pkgconfig/pango.pc:pango
    configure.args-delete \
        --with-pangocairo
    configure.args-append \
        --without-pangocairo
}

variant no_x11 requires no_pangocairo {
    depends_lib-delete \
        port:xorg-libXaw
    configure.args-append \
        --without-x
}

variant gui description {Obsolete; install graphviz-gui port instead} {
    pre-configure {
        set newport graphviz-gui-devel
        if {${os.major} < 9} {
            set newport graphviz-oldgui
        }
        ui_msg "The +gui variant is obsolete. Please install the ${newport} port instead."
    }
}

post-destroot {
    # Make the configuration file that makes the plugins work.
    system "GVBINDIR=${destroot}${prefix}/lib/graphviz DYLD_LIBRARY_PATH=${destroot}${prefix}/lib ${destroot}${prefix}/bin/dot -c"
}

pre-install {
    # Remove old configuration files left behind by old versions of this port.
    foreach file [glob -nocomplain -directory ${prefix}/lib/graphviz config*] {
        delete ${file}
    }
}

# keep livecheck in sync between graphviz-devel and graphviz-gui-devel
livecheck.check         regex
livecheck.url           ${homepage}Download_source.php
livecheck.regex         ${my_name}-(\[0-9\]+\\.\[0-9\]*\[13579\](\\.\[0-9\]+)*)\\.tar
