# $Id: Portfile 68618 2010-06-08 07:25:31Z ryandesign@macports.org $

PortSystem                      1.0
PortGroup                       archcheck 1.0
PortGroup                       xcodeversion 1.0

name                            graphviz-devel
conflicts                       graphviz
set my_name                     graphviz
# keep version in sync between graphviz-devel and graphviz-gui-devel
version                         2.27.20100608.0445
categories                      graphics
maintainers                     ryandesign
license                         CPLv1.0
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     95e3339b28597e99ef5c6f0d8fb26223 \
                                sha1    d44029a942665682413525b69e892fa1e5d99ed2 \
                                rmd160  6456ccaf77ca651c45dd8ef34924cf0a6a98d4f7

# graphviz needs Xcode 3.1+ to avoid the libGL error when building the smyrna variant
# graphviz-gui needs Xcode 3.1.2+; see #18811
minimum_xcodeversions           {9 3.1.2}

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

# Ghostscript is not included here because Graphviz uses the gs executable,
# not the libgs library.
archcheck.files                 lib/libXaw.dylib \
                                lib/libpango-1.0.dylib \
                                lib/libjpeg.dylib \
                                lib/libpng.dylib \
                                lib/libfontconfig.dylib \
                                lib/libfreetype.dylib \
                                lib/libexpat.dylib \
                                lib/libgd.dylib \
                                lib/libz.dylib \
                                lib/libintl.dylib

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-guile
    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-lua
    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-ocaml
    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-perl
    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-php5
    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-python
    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-python
    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-python
    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-ruby
    configure.args-delete       --disable-swig \
                                --disable-ruby
    configure.args-append       --enable-ruby
}

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

variant java description {Include Java language bindings} {
    depends_build-append        port:swig-java
    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
    archcheck.files-append      bin/gtk-demo \
                                lib/libgtkglext-x11-1.0.dylib \
                                lib/libglade-2.0.dylib \
                                lib/libgts.dylib
}

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

variant rsvg description {enable the rsvg plugin} {
    depends_lib-append          port:librsvg
    archcheck.files-append      lib/librsvg-2.dylib
    configure.args-delete       --without-rsvg
    configure.args-append       --with-rsvg
}

variant gdk_pixbuf description {enable the gdk_pixbuf plugin} {
    depends_lib-append          port:gtk2
    archcheck.files-append      bin/gtk-demo
    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
    archcheck.files-append      lib/libglitz.dylib
    configure.args-delete       --without-glitz
    configure.args-append       --with-glitz
}

variant ming description {enable the incomplete ming plugin} {
    depends_lib-append          port:ming
    archcheck.files-append      lib/libming.dylib
    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
    archcheck.files-delete      lib/libpango-1.0.dylib
    configure.args-delete       --with-pangocairo
    configure.args-append       --without-pangocairo
}

variant no_x11 requires no_pangocairo {
    depends_lib-delete          port:xorg-libXaw
    archcheck.files-delete      lib/libXaw.dylib
    configure.args-append       --without-x
}

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.type                  regex
livecheck.url                   ${homepage}Download_source.php
livecheck.regex                 ${my_name}-(\[0-9\]+\\.\[0-9\]*\[13579\](\\.\[0-9\]+)*)\\.tar
