# -*- coding: utf-8; mode: tcl; c-basic-offset: 4; indent-tabs-mode: nil; tab-width: 4; truncate-lines: t -*- vim:fenc=utf-8:et:sw=4:ts=4:sts=4
# $Id: Portfile 80318 2011-07-09 00:42:42Z ryandesign@macports.org $

PortSystem          1.0

name                root
version             5.30.00
revision            1
categories          science
maintainers         gmail.com:mattiafrancescomoro hep.phy.cam.ac.uk:jonesc
license             LGPLv2.1
description         Root cern data analysis framework
long_description    The ROOT system provides a set of frameworks with all \
                    the functionality needed to handle and analyze large amounts \
                    of data in a very efficient way
homepage            http://root.cern.ch/
platforms           darwin
distname            ${name}_v${version}.source
master_sites        ftp://root.cern.ch/root/

checksums           sha1    9549bd357e85bb3855abd78c7183c26dbd247fbb \
                    rmd160  027558ac9b0d294fd26437ff31cb4e149f4dd7e7

worksrcdir          root

depends_lib         port:freetype \
                    port:liblzma \
                    port:pcre \
                    port:Xft2 \
                    port:xorg-libX11 \
                    port:xpm \
                    port:zlib \
                    port:gsl \
                    path:bin/dot:graphviz \
                    port:jpeg \
                    port:libpng \
                    port:tiff

pre-configure {
    build.args      CC=${configure.cc} \
                    CXX=${configure.cxx} \
                    F77=${configure.f77}

    reinplace "s|-lfreetype| \`freetype-config --libs\`|g" ${worksrcpath}/config/root-config.in
    reinplace "s|\"/usr/include\"|\"${prefix}/include/\" \"/usr/include\"|g" ${worksrcpath}/configure
    reinplace "s|/usr/lib |${prefix}/lib /usr/lib |g" ${worksrcpath}/configure
    reinplace "s|/usr/include |${prefix}/include /usr/include |g" ${worksrcpath}/configure
    reinplace "s|\"/usr/lib\"|\"${prefix}/lib/\" \"/usr/lib\"g|" ${worksrcpath}/configure

    # the build type (32 or 64 bit) -must- be for first argument
    if {${build_arch} == "i386" || ${build_arch} == "ppc"} {
       configure.pre_args macosx --prefix=${prefix}
    } else {
       configure.pre_args macosx64 --prefix=${prefix}
    }
}

configure.args      --with-cc=${configure.cc} \
                    --with-f77=${configure.f77} \
                    --with-cxx=${configure.cxx} \
                    --docdir=${prefix}/share/doc/${name} \
                    --libdir=${prefix}/lib/root \
                    --testdir=${prefix}/share/root/test \
                    --tutdir=${prefix}/share/root/tutorials \
                    --etcdir=${prefix}/etc/root \
                    --disable-builtin-afterimage \
                    --disable-builtin-freetype \
                    --disable-builtin-glew \
                    --disable-builtin-ftgl \
                    --disable-builtin-pcre \
                    --disable-builtin-zlib \
                    --disable-fftw3 \
                    --disable-krb5 \
                    --disable-ldap \
                    --disable-mysql \
                    --disable-odbc \
                    --disable-opengl \
                    --disable-pythia8 \
                    --disable-qt \
                    --disable-qtgsi \
                    --disable-roofit \
                    --disable-ssl \
                    --disable-xml \
                    --disable-python \
                    --with-x11-libdir=${prefix}/lib \
                    --with-xpm-libdir=${prefix}/lib

use_parallel_build  no

universal_variant   no

default_variants    +ssl +builtin_ftgl +roofit +xml +opengl

variant fftw3 description {Builds port with fftw3 support} {
    configure.args-delete   --disable-fftw3
    configure.args-append   --enable-fftw3 \
                            --with-fftw3-incdir="${prefix}/include/" \
                            --with-fftw3-libdir="${prefix}/lib"
    depends_lib-append      port:fftw-3
}

variant kerberos5 description {Builds port with kerberos5 support} {
    configure.args-delete   --disable-krb5
    configure.args-append   --enable-krb5 \
                            --with-krb5-incdir="${prefix}/include/" \
                            --with-krb5-libdir="${prefix}/lib"
    depends_lib-append      port:kerberos5
}

variant odbc description {Builds port with odbc support} {
    configure.args-delete   --disable-odbc
    configure.args-append   --enable-odbc\
                            --with-odbc-incdir="${prefix}/include/" \
                            --with-odbc-libdir="${prefix}/lib"
    depends_lib-append      port:unixODBC
}

variant ldap description {Builds port with lpap support} {
    configure.args-delete   --disable-ldap
    configure.args-append   --enable-ldap\
                            --with-ldap-incdir="${prefix}/include/" \
                            --with-ldap-libdir="${prefix}/lib"
    depends_lib-append      port:openldap
}

variant roofit description { Build the libRooFit advanced fitting package} {
    configure.args-delete   --disable-roofit
    configure.args-append   --enable-roofit
}

variant opengl description {Builds port with opengl support} {
    configure.args-delete   --disable-opengl
    configure.args-append   --enable-opengl \
                            --with-opengl-incdir="${prefix}/include" \
                            --with-opengl-libdir="${prefix}/lib" \
                            --with-glew-incdir="${prefix}/include/" \
                            --with-glew-libdir="${prefix}/lib"
    depends_lib-append      port:glew
}

variant python26 description {Builds port with python 2.6 support} {
    configure.args-delete   --disable-python
    configure.args-append   --enable-python \
                            --with-python-incdir="${prefix}/Library/Frameworks/Python.framework/Versions/2.6/include/python2.6" \
                            --with-python-libdir="${prefix}/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/config"
    depends_lib-append      port:python26
    
    post-destroot {
        file mkdir  ${destroot}${prefix}/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/site-packages/
        move ${destroot}${prefix}/lib/root/ROOT.py ${destroot}${prefix}/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/site-packages/
        move ${destroot}${prefix}/lib/root/ROOT.pyc ${destroot}${prefix}/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/site-packages/
        move ${destroot}${prefix}/lib/root/ROOT.pyo ${destroot}${prefix}/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/site-packages/
        move ${destroot}${prefix}/lib/root/ROOTwriter.py ${destroot}${prefix}/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/site-packages/
        move ${destroot}${prefix}/lib/root/python/genreflex ${destroot}${prefix}/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/site-packages/
        move ${destroot}${prefix}/lib/root/writer.py ${destroot}${prefix}/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/site-packages/
    }
}

variant ssl description {Builds port with ssl support} {
    configure.args-delete   --disable-ssl
    configure.args-append   --enable-ssl \
                            --with-ssl-shared=yes \
                            --with-ssl-incdir="${prefix}/include" \
                            --with-ssl-libdir="${prefix}/lib"
    depends_lib-append      port:openssl
}

variant builtin_ftgl description {Builds port with builtin-ftgl support} {
    configure.args-delete   --disable-builtin-ftgl
    configure.args-append   --enable-builtin-ftgl
}

variant ftgl description {Builds port with ftgl support} {
    configure.args-append   --with-ftgl-incdir="${prefix}/include" \
                            --with-ftgl-libdir="${prefix}/lib"
    depends_lib-append      port:ftgl
}

variant xml description {Builds port with xml support} {
    configure.args-delete   --disable-xml
    configure.args-append   --enable-xml \
                            --with-xml-incdir="${prefix}/include/libxml2" \
                            --with-xml-libdir="${prefix}/lib"
    depends_lib-append      port:libxml2
}

variant qt_x11 conflicts qt_mac description {Builds port with Qt support via X11 UI} {
    # fix where "qglobal.h" is found in all files that use or reference it
    post-patch {
        foreach tpf { configure graf2d/qt/src/TGQt.cxx } {
            reinplace "s@Qt/qglobal\\.h@QtCore/qglobal\\.h@g" \
                ${worksrcpath}/${tpf}
        }
        reinplace "/qttestdir/s@Qt@QtCore@g" ${worksrcpath}/configure
    }

    configure.env-append    QTDIR=${prefix}/libexec/qt4-x11
    configure.args-delete   --disable-qt
    configure.args-append   --enable-qt
    depends_lib-append      port:qt4-x11
}

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

variant qt_mac conflicts qt_x11 description {Builds port with Qt support via Mac UI} {
    post-patch {
        # fix where "qglobal.h" is found in all files that use or reference it
        foreach tpf { configure graf2d/qt/src/TGQt.cxx } {
            reinplace "s@Qt/qglobal\\.h@QtCore/qglobal\\.h@g" \
                ${worksrcpath}/${tpf}
        }
        reinplace "/qttestdir/s@Qt@QtCore@g" ${worksrcpath}/configure

        # fix library search extensions to include ".la"
        # for Qt framework libraries (only)
        reinplace "s@\\(\\.so \\.sl \\.dylib \\.dll\\.a\\)@\\1 \\.la@g" \
            ${worksrcpath}/configure
    }

    configure.args-delete   --disable-qt
    configure.args-append   --enable-qt

    post-configure {
        # patch up the Makefile.config to handle the QTLIB frameworks correctly
        reinplace "/QTLIB\[ \]/s@:= @:= -F${qt_libs_dir} @" \
            ${worksrcpath}/config/Makefile.config
        reinplace "/QTLIB\[ \]/s@\\(Qt\[^ \]*\\).la@-framework \\1@g" \
            ${worksrcpath}/config/Makefile.config
    }
}

variant mysql description {Builds port with mysql support} {
    configure.args-delete   --disable-mysql
    configure.args-append   --enable-mysql \
                            --with-mysql-incdir="${prefix}/include/" \
                            --with-mysql-libdir="${prefix}/lib"
    depends_lib-append      port:mysql5
}

variant pythia description {Pythia support for root} {
    configure.args-delete   --disable-pythia8
    configure.args-append   --enable-pythia8 \
                            --with-pythia8-incdir=${prefix}/include \
                            --with-pythia8-libdir=${prefix}/lib
    depends_lib-append      port:pythia
}

variant gcc44 conflicts gcc45 description {Enables compilation using MacPorts gcc 4.4 compiler} {
    configure.args-append   --with-cc=gcc-mp-4.4
    configure.args-append   --with-cxx=cpp-mp-4.4
    configure.args-append   --with-f77=gfortran-mp-4.4
    configure.args-append   --with-ld=g++-mp-4.4
    configure.compiler      macports-gcc-4.4
    depends_lib-append      port:gcc44
}

variant gcc45 conflicts gcc44 description {Enables compilation using MacPorts gcc 4.5 compiler} {
    configure.args-append   --with-cc=gcc-mp-4.5
    configure.args-append   --with-cxx=cpp-mp-4.5
    configure.args-append   --with-f77=gfortran-mp-4.5
    configure.args-append   --with-ld=g++-mp-4.5
    configure.compiler      macports-gcc-4.5
    depends_lib-append      port:gcc45
}

#variant gcc46 conflicts gcc44 gcc45 description {Enables compilation using MacPorts gcc 4.6 compiler} {
#    configure.args-append   --with-cc=gcc-mp-4.6
#    configure.args-append   --with-cxx=cpp-mp-4.6
#    configure.args-append   --with-f77=gfortran-mp-4.6
#    configure.args-append   --with-ld=g++-mp-4.6
#    configure.compiler      macports-gcc-4.6
#    depends_lib-append      port:gcc46
#}

livecheck.type              regex
livecheck.url               [lindex ${master_sites} 0]
livecheck.regex             ${name}_v(\[0-9a-z.\]+)\\.source
