# -*- coding: utf-8; mode: tcl; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- vim:fenc=utf-8:ft=tcl:et:sw=4:ts=4:sts=4
# $Id: Portfile 75034 2011-01-12 15:51:09Z adfernandes@macports.org $

PortSystem 1.0
PortGroup   cmake 1.0

name        vtk5
version     5.6.1
set branch  [join [lrange [split ${version} .] 0 1] .]
categories  graphics devel
maintainers adfernandes openmaintainer
description 3D visualization toolkit
long_description    an open source, freely available software system  \
    for 3D computer graphics, image processing, and visualization     \
    used by thousands of researchers and developers around the world. \
    VTK consists of a C++ class library, and several interpreted      \
    interface layers including Tcl/Tk, Java, and Python.

homepage    http://www.vtk.org/
platforms   darwin freebsd
master_sites    http://www.vtk.org/files/release/${branch}/

distfiles           [suffix vtk-${version}]
checksums           [suffix vtk-${version}] \
                    md5     b80a76435207c5d0f74dfcab15b75181 \
                    sha1    6d4d0de3b468828f21f70c5af5e37f9412ee59c5 \
                    rmd160  ac1864c9604d843ab9c654c67109f4f1487acaee

depends_build-append    port:readline
distname    VTK

use_parallel_build yes

post-extract {
    # See http://public.kitware.com/Bug/view.php?id=7813
    delete ${worksrcpath}/Utilities/vtktiff/tif_fax3sm.c
}

configure.args-append  \
        -DBUILD_SHARED_LIBS:BOOL=ON \
        -DVTK_USE_RPATH:BOOL=ON \
        -DCMAKE_INSTALL_RPATH:STRING=${prefix}/lib/vtk-${branch} \
        -DCMAKE_INSTALL_NAME_DIR:STRING=${prefix}/lib/vtk-${branch} \
        -DCMAKE_INSTALL_RPATH_USE_LINK_PATH:BOOL=ON \
        -DVTK_INSTALL_PREFIX:PATH=${prefix} \
        -DVTK_USE_HYBRID:BOOL=ON \
        -DVTK_USE_TK:BOOL=OFF \
        -DVTK_WRAP_TCL:BOOL=OFF \
        -DTK_INCLUDE_PATH=${prefix}/include \
        -DTK_LIBRARY=${prefix}/lib/libtk.dylib \
        -DVTK_USE_CARBON:BOOL=OFF \
        -DVTK_USE_COCOA:BOOL=ON \
        -DVTK_DATA_ROOT:PATH=${prefix}/share/VTKData \
        -DVTK_USE_GL2PS:BOOL=ON \
        -DVTK_WRAP_PYTHON:BOOL=OFF

post-configure {
    reinplace "s|c++|c++ -L${prefix}/lib |" \
    ${worksrcpath}/Infovis/Testing/Cxx/CMakeFiles/InfovisCxxTests.dir/link.txt \
    ${worksrcpath}/IO/Testing/Cxx/CMakeFiles/IOCxxTests.dir/link.txt \
    ${worksrcpath}/Views/Testing/Cxx/CMakeFiles/ViewsCxxTests.dir/link.txt

    if {[variant_isset tcltk]} {
      reinplace "s|c++|c++ -L${prefix}/lib |" \
      ${worksrcpath}/Wrapping/Tcl/CMakeFiles/vtk.dir/link.txt
    }
}

build.env-append DYLD_LIBRARY_PATH=${worksrcpath}/bin

if {![variant_isset carbon] && ![variant_isset qt4_mac]} {
    default_variants +x11 +tcltk
}

if {![variant_isset python25] && ![variant_isset python27]} {
    default_variants +python26
}

post-destroot {
    set vtkdest ${destroot}${prefix}/share/doc/${name}
    xinstall -d ${vtkdest}
    xinstall -m 644 -W ${worksrcpath} Copyright.txt README.html Testing.txt ${vtkdest}
}

variant x11 conflicts carbon qt4_mac description {Use X11} {
    depends_lib-append port:mesa port:Xft2 port:xorg-libXScrnSaver port:xorg-libXt
    configure.args-delete   -DVTK_USE_COCOA:BOOL=ON
    configure.args-append   \
        -DVTK_USE_COCOA:BOOL=OFF \
        -DVTK_USE_X:BOOL=ON \
        -DOPENGL_gl_LIBRARY:FILEPATH=${prefix}/lib/libGL.dylib \
        -DOPENGL_glu_LIBRARY:FILEPATH=${prefix}/lib/libGLU.dylib
}

variant tcltk conflicts carbon description {Build with Tcl wrappers and Tk support} {
    depends_lib-append port:tcl port:tk
    configure.args-delete \
        -DVTK_USE_TK:BOOL=OFF \
        -DVTK_WRAP_TCL:BOOL=OFF
    configure.args-append \
        -DVTK_USE_TK:BOOL=ON \
        -DVTK_WRAP_TCL:BOOL=ON \
        -DTCL_INCLUDE_PATH=${prefix}/include \
        -DTCL_LIBRARY=${prefix}/lib/libtcl.dylib
}

variant carbon conflicts x11 tcltk description {Use Carbon.  Allows embedding VTK within qt4-mac (and py*-pyqt4 when used with Python)} {
    configure.args-delete \
        -DVTK_USE_COCOA:BOOL=ON \
        -DVTK_USE_CARBON:BOOL=OFF
    configure.args-append \
        -DVTK_USE_COCOA:BOOL=OFF \
        -DVTK_USE_CARBON:BOOL=ON
}

variant python requires python25 description {Compatibility variant, requires +python25} {}

variant python25 description {Build Python 2.5 wrappers} conflicts python26 python27 {
    depends_build-append    port:python25
    configure.args-delete   \
        -DVTK_WRAP_PYTHON:BOOL=OFF
    configure.args-append   \
        -DPYTHON_DEBUG_LIBRARY:FILEPATH=${prefix}/lib/libpython2.5.dylib \
        -DPYTHON_EXECUTABLE:FILEPATH=${prefix}/bin/python2.5 \
        -DPYTHON_INCLUDE_PATH:FILEPATH=${prefix}/include/python2.5 \
        -DPYTHON_LIBRARY:FILEPATH=${prefix}/lib/libpython2.5.dylib \
        -DVTK_WRAP_PYTHON:BOOL=ON \
        -DVTK_INSTALL_NO_PYTHON:BOOL=ON
    post-destroot {
        file mkdir ${destroot}${prefix}/lib/python2.5/site-packages
        system "cd ${worksrcpath}/Wrapping/Python && ${prefix}/bin/python2.5 setup.py install --prefix=${prefix} --root=${destroot}"
    }
}

variant python26 description {Build Python 2.6 wrappers} conflicts python25 python27 {
    depends_build-append    port:python26
    configure.args-delete   \
        -DVTK_WRAP_PYTHON:BOOL=OFF
    configure.args-append   \
        -DPYTHON_DEBUG_LIBRARY:FILEPATH=${prefix}/lib/libpython2.6.dylib \
        -DPYTHON_EXECUTABLE:FILEPATH=${prefix}/bin/python2.6 \
        -DPYTHON_INCLUDE_PATH:FILEPATH=${frameworks_dir}/Python.framework/Versions/2.6/include/python2.6 \
        -DPYTHON_LIBRARY:FILEPATH=${prefix}/lib/libpython2.6.dylib \
        -DVTK_WRAP_PYTHON:BOOL=ON \
        -DVTK_INSTALL_NO_PYTHON:BOOL=ON
    post-destroot {
        system "cd ${worksrcpath}/Wrapping/Python && ${prefix}/bin/python2.6 setup.py install --prefix=${frameworks_dir}/Python.framework/Versions/2.6/ --root=${destroot}"
    }
}

variant python27 description {Build Python 2.7 wrappers} conflicts python25 python26 {
    depends_build-append    port:python27
    configure.args-delete   \
        -DVTK_WRAP_PYTHON:BOOL=OFF
    configure.args-append   \
        -DPYTHON_DEBUG_LIBRARY:FILEPATH=${prefix}/lib/libpython2.7.dylib \
        -DPYTHON_EXECUTABLE:FILEPATH=${prefix}/bin/python2.7 \
        -DPYTHON_INCLUDE_PATH:FILEPATH=${frameworks_dir}/Python.framework/Versions/2.7/include/python2.7 \
        -DPYTHON_LIBRARY:FILEPATH=${prefix}/lib/libpython2.7.dylib \
        -DVTK_WRAP_PYTHON:BOOL=ON \
        -DVTK_INSTALL_NO_PYTHON:BOOL=ON
    post-destroot {
        system "cd ${worksrcpath}/Wrapping/Python && ${prefix}/bin/python2.7 setup.py install --prefix=${frameworks_dir}/Python.framework/Versions/2.7/ --root=${destroot}"
    }
}

if {[variant_isset qt4_mac]} {
    PortGroup qt4 1.0
}

variant qt4_mac conflicts x11 description {Build GUI support with Qt4 (Mac)} {
    configure.args-append   -DVTK_USE_QT:BOOL=ON \
                            -DVTK_USE_GUISUPPORT:BOOL=ON \
                            -DQT_PHONON_INCLUDE_DIR=${prefix}/include/phonon \
                            ${qt_cmake_defines}
    post-destroot {
        xinstall -m 755 -d ${destroot}${qt_plugins_dir}/designer
        move ${destroot}${prefix}/plugins/designer/libQVTKWidgetPlugin.dylib \
            ${destroot}${qt_plugins_dir}/designer/
        set fixfile ${qt_plugins_dir}/designer/libQVTKWidgetPlugin.dylib
        system "install_name_tool -id ${fixfile} ${destroot}${fixfile}"
    }
}

variant mysql description {Build the MySQL driver for vtkSQLDatabase} {
    depends_build-append    port:zlib \
                            port:mysql5
    configure.args-append   -DVTK_USE_MYSQL:BOOL=ON \
                            -DMYSQL_LIBRARY:FILEPATH=${prefix}/lib/mysql5/mysql/libmysqlclient.dylib \
                            -DMYSQL_INCLUDE_DIRECTORIES:FILEPATH=${prefix}/include/mysql5/mysql/ \
                            -DMYSQL_EXTRA_LIBRARIES:FILEPATH=${prefix}/lib/libz.dylib
}

variant data description {Install data and examples} {
    distfiles-append    [suffix vtkdata-${version}]
    checksums-append    [suffix vtkdata-${version}] \
                        md5     67263bd972f923d39a60f01104368779 \
                        sha1    7350863d6351a961c4813ad6e73f74428307cd35 \
                        rmd160  b77b5f6919beae406712b93cd333dd4fad5ff3d1

    post-destroot {
        set vtkdest ${destroot}${prefix}/share/doc/${name}
        # Provide some examples
        file copy ${worksrcpath}/Examples ${vtkdest}
        xinstall -W ${worksrcpath}/bin \
            CommonCxxTests \
            FilteringCxxTests \
            GenericFilteringCxxTests \
            GraphicsCxxTests \
            IOCxxTests \
            ImagingCxxTests \
            RenderingCxxTests \
            TestCxxFeatures \
            TestInstantiator \
            VTKBenchMark \
            VolumeRenderingCxxTests \
            WidgetsCxxTests \
            ${vtkdest}/Examples
        
        # Provide data files
        system "tar -C ${destroot}${prefix}/share -xzvf ${distpath}/[suffix vtkdata-${version}]"
    }
}
