# $Id: Portfile 102485 2013-02-04 16:02:38Z raimue@macports.org $

PortSystem 1.0

name            valgrind-devel
conflicts       valgrind
svn.revision    13189
set vex_revision 2601
version         3.9.0-r${svn.revision}
revision        1
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"
}

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 requires mpich description {Compatibility variant, renamed to +mpich} {}
variant mpich description {Use mpich for MPI support} conflicts universal {
    depends_lib-append path:bin/mpicc:mpich
    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
