# $Id: Portfile 92175 2012-04-21 03:03:57Z jeremyhu@macports.org $

PortSystem 1.0

name            valgrind-devel
conflicts       valgrind
svn.revision    12339
set vex_revision 2239
version         3.8.0-r${svn.revision}
categories      devel
platforms       darwin
supported_archs i386 x86_64
license         GPL-2
maintainers     raimue

description     A powerful open-source memory debugger.
long_description \
    Valgrind is a powerful open-source memory debugger. When valgrind is \
    attached to a program, it intercepts calls to malloc/new/free/delete and \
    all memory operations are checked for invalid read or write.
homepage        http://valgrind.org

depends_build   bin:perl:perl5
# Ignore trace reports about boost, Qt and OpenMP
# as they are only used for tests

fetch.type      svn
svn.url         svn://svn.valgrind.org/valgrind/trunk
svn.args        --ignore-externals
worksrcdir      trunk

post-fetch {
    system "cd ${worksrcpath} && ${svn.cmd} ${svn.pre_args} ${svn.method} svn://svn.valgrind.org/vex/trunk@${vex_revision} VEX"
}

patchfiles      patch-automake-1.11.2.diff

use_autoreconf yes
configure.args  --mandir=${prefix}/share/man \
                --without-mpicc

if {$build_arch == "i386"} {
    configure.args-append --enable-only32bit
} elseif {$build_arch == "x86_64"} {
    configure.args-append --enable-only64bit
}

# valgrind sets up -arch by itself, adding our own interferes with the build
configure.cc_archflags {}
configure.ld_archflags {}

variant universal {
    configure.args-delete --enable-only32bit --enable-only64bit
    configure.universal_cflags {}
    configure.universal_cxxflags {}
    configure.universal_ldflags {}

    pre-configure {
        if {$build_arch == "i386"} {
            # See #25684 and https://bugs.kde.org/show_bug.cgi?id=243362
            ui_error "valgrind does not build +universal on a 32-bit only CPU!"
            return -code error "unsupported CPU"
        }
    }
}

variant mpich2 description {Use mpich2 for MPI support} conflicts universal {
    depends_lib-append port:mpich2
    configure.args-delete --without-mpicc
    configure.args-append --with-mpicc=${prefix}/bin/mpicc
}

variant openmpi description {Use openmpi for MPI support} conflicts universal {
    depends_lib-append port:openmpi
    configure.args-delete --without-mpicc
    configure.args-append --with-mpicc=${prefix}/bin/openmpicc
}

livecheck.type none
