# -*- 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 92674 2012-05-03 18:51:26Z jeremyhu@macports.org $

PortSystem              1.0
PortGroup select        1.0

set llvm_version        3.2
name                    dragonegg-${llvm_version}
set gcc_version         46
set gcc_version_dot     4.6
dist_subdir             llvm
categories              lang
platforms               darwin
maintainers             jeremyhu openmaintainer
license                 GPL-2

description             Dragonegg is a LLVM plug-in for GCC 4.6
long_description        Dragonegg replaces GCC optimizers and code generators \
                        by the LLVM optimizing infrastructure. It supersedes \
                        llvm-gcc.

homepage                http://dragonegg.llvm.org/

depends_lib             port:llvm-${llvm_version} port:gcc${gcc_version}
depends_run             port:gcc_select

# gcc needs to match our arch, not the other way around
# We build +universal just fine in order to support whatever arch gcc is
depends_skip_archcheck-append gcc${gcc_version}

fetch.type              svn
svn.revision            155781
version                 ${llvm_version}-r${svn.revision}
worksrcdir              trunk
svn.url                 http://llvm.org/svn/llvm-project/dragonegg/trunk
#worksrcdir              release_32
#svn.url                 http://llvm.org/svn/llvm-project/dragonegg/branches/release_32

#version                 ${llvm_version}
#epoch                   1
#master_sites            http://llvm.org/releases/${version}/
#extract.suffix          .tar.gz
#distfiles               dragonegg-${version}${extract.suffix}
#worksrcdir              dragonegg-${version}.src
#checksums           sha1    9be8f055df814e56ea3585156da8c7e457f2cd7b \
#                    rmd160  93aa8a463b6b5e1fb9cc1ee0a7c4d310a78ea64f \
#                    sha256  72df1fd2e901b254ab8d1b5e7b93c7104751a613aca531f1483f9a637a5f6827

pre-fetch {
    ui_msg "Please remember to keep dragonegg and llvm in phase by updating llvm-${llvm_version} first."
}

use_configure no

select.group    gcc
select.file     ${filespath}/dragonegg-${llvm_version}-gcc${gcc_version}

build.target

# g++-4.0 fails to build some of the newer C++ for ppc
# Intel looks ok, but I prefer using gcc-4.2 for consistency
if {${configure.compiler} == "gcc-4.0"} {
    configure.compiler gcc-4.2
    if {![file exists ${configure.cc}]} {
        depends_build-append port:apple-gcc42
        configure.compiler apple-gcc-4.2
    }
}

variant universal {
    post-patch {
        reinplace "/-MD -MP/d" ${worksrcpath}/Makefile
    }
}

build.env-append \
    LLVM_CONFIG=${prefix}/bin/llvm-config-mp-${llvm_version} \
    GCC=${prefix}/bin/gcc-mp-${gcc_version_dot} \
    CC="${configure.cc} ${configure.cppflags} [get_canonical_archflags cc]" \
    CXX="${configure.cxx} ${configure.cppflags} [get_canonical_archflags cxx]"

destroot {
    xinstall -m 755 -d ${destroot}${prefix}/libexec/dragonegg
    xinstall -m 755 ${worksrcpath}/dragonegg.so ${destroot}${prefix}/libexec/dragonegg/llvm-${llvm_version}-gcc${gcc_version}.so

    xinstall -m 755 ${filespath}/dragonegg-gcc ${destroot}${prefix}/bin/dragonegg-${llvm_version}-gcc
    ln -s dragonegg-${llvm_version}-gcc ${destroot}${prefix}/bin/dragonegg-${llvm_version}-cpp
    ln -s dragonegg-${llvm_version}-gcc ${destroot}${prefix}/bin/dragonegg-${llvm_version}-c++
    ln -s dragonegg-${llvm_version}-gcc ${destroot}${prefix}/bin/dragonegg-${llvm_version}-g++
    ln -s dragonegg-${llvm_version}-gcc ${destroot}${prefix}/bin/dragonegg-${llvm_version}-gcj
    ln -s dragonegg-${llvm_version}-gcc ${destroot}${prefix}/bin/dragonegg-${llvm_version}-gcov
    ln -s dragonegg-${llvm_version}-gcc ${destroot}${prefix}/bin/dragonegg-${llvm_version}-gfortran

    reinplace "s:PLUGIN:${prefix}/libexec/dragonegg/llvm-${llvm_version}-gcc${gcc_version}.so:" ${destroot}${prefix}/bin/dragonegg-${llvm_version}-gcc
    reinplace "s:LLVM_VERSION:${llvm_version}:" ${destroot}${prefix}/bin/dragonegg-${llvm_version}-gcc
    reinplace "s:GCC_VERSION:${gcc_version_dot}:" ${destroot}${prefix}/bin/dragonegg-${llvm_version}-gcc
}
