# $Id: Portfile 62082 2009-12-28 20:40:58Z nox@macports.org $

PortSystem 1.0

name                    llvm
version                 2.6
revision                2
categories              lang
platforms               darwin
use_parallel_build      yes
maintainers             erickt openmaintainer
description             llvm is a next generation compiler infrastructure
long_description        llvm brings tools to work on the llvm intermediate \
                        language incl. a C and C++ frontend.

homepage                http://llvm.org/
master_sites            ${homepage}releases/${version}/

checksums               md5     34a11e807add0f4555f691944e1a404a \
                        sha1    547471147cbf6d3e49539e01196ffada2c79c250 \
                        rmd160  24d58cb052ab5879aae59eaf4885ec41186ee22a

depends_lib             path:bin/perl:perl5

universal_variant       no

configure.dir           ${workpath}/build
build.dir               ${configure.dir}
destroot.dir            ${configure.dir}

post-extract {
    file mkdir ${configure.dir}
}

patchfiles              patch-Makefile.config.in.diff \
                        patch-Makefile.ocaml.diff

configure.cppflags
configure.ldflags
configure.cmd           ${worksrcpath}/configure
configure.args          --enable-optimized --enable-jit \
                        --enable-bindings=none \
                        --disable-assertions

if {[info exists build_arch] && ${os.platform} == "darwin"} {
    configure.args-append --build=${build_arch}-apple-darwin${os.major}
}

post-destroot {
    file mkdir ${destroot}${prefix}/lib/llvm
    file mkdir ${destroot}${prefix}/lib/llvm/src
    file mkdir ${destroot}${prefix}/lib/llvm/obj

    file copy ${worksrcpath}/include ${destroot}${prefix}/lib/llvm/src
    file copy ${configure.dir}/include ${destroot}${prefix}/lib/llvm/obj
    file copy ${configure.dir}/Release-Asserts ${destroot}${prefix}/lib/llvm/obj

    reinplace "s|${worksrcpath}|${prefix}/lib/llvm/src|g"       ${destroot}${prefix}/bin/llvm-config \
                                                                ${destroot}${prefix}/lib/llvm/obj/Release-Asserts/bin/llvm-config
    reinplace "s|${configure.dir}|${prefix}/lib/llvm/obj|g"     ${destroot}${prefix}/bin/llvm-config \
                                                                ${destroot}${prefix}/lib/llvm/obj/Release-Asserts/bin/llvm-config

    fs-traverse item ${destroot} {
        if {[file isfile ${item}] && ".dir" == [file tail ${item}]} {
            delete ${item}
        }
    }
}

variant ocaml description {Enable generation of OCaml binding} {
    depends_build-append port:ocaml
    depends_lib-append   port:ocaml

    configure.args-delete --enable-bindings=none
    configure.args-append --enable-bindings=ocaml

    destroot.args-append  OVERRIDE_libdir=${prefix}/lib
}

variant disable_pic description {Disable generation of position independent code} {
    configure.args-append --disable-pic
}

variant host_only description {Disables non-host targets} {
    configure.args-append --enable-targets=host-only
}

livecheck.type  regex
livecheck.url   ${homepage}releases/
livecheck.regex {'(\d+(?:\.\d+)*)'}
