# $Id: Portfile 60440 2009-11-12 16:20:19Z erickt@macports.org $

PortSystem 1.0

set major               4.2

name                    llvm-gcc42
version                 2.6
categories              lang
platforms               darwin
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            http://llvm.org/releases/${version}/

distname                llvm-gcc-${major}-${version}.source

checksums               md5     4e8c5a1035701c231dbfc7e2af2d7571 \
                        sha1    60670d550be09a57d315efa259d2b19955f6fa79 \
                        rmd160  08d7ffadb88e3abdcc971372f737e4ddf8f991c6

depends_lib             port:llvm

worksrcdir              build

pre-patch {
  file mkdir ${workpath}/build
}

# the generated compiler doesn't accept -arch
if {[info exists build_arch] && ${os.platform} == "darwin"} {
    if {(${os.arch} == "i386" && $build_arch == "i386") || (${os.arch} == "powerpc" && $build_arch == "ppc")} {
        configure.env-append CFLAGS_FOR_TARGET="-m32 ${configure.cflags}"
    } elseif {(${os.arch} == "i386" && $build_arch == "x86_64") || (${os.arch} == "powerpc" && $build_arch == "ppc64")} {
        configure.env-append CFLAGS_FOR_TARGET="-m64 ${configure.cflags}"
    } else {
        pre-fetch {
            return -code error "Cannot build $name for $build_arch"
        }
    }
    configure.env-append CFLAGS_FOR_BUILD="${configure.cc_archflags} ${configure.cflags}"
    configure.cc_archflags
    configure.cxx_archflags
    configure.objc_archflags
}

configure.cmd           ../llvm-gcc${major}-${version}.source/configure

configure.args-append   --enable-llvm=${prefix}/lib/llvm/obj \
                        --enable-languages=c,c++,objc,obj-c++ \
                        --mandir=${prefix}/share/man \
                        --infodir=${prefix}/share/info \
                        --program-prefix=llvm- \
                        --program-suffix=-${major}

post-destroot {
  file delete -force ${destroot}/${prefix}/share/man/man7
  file delete -force ${destroot}/${prefix}/share/info
  file delete -force ${destroot}/${prefix}/bin/gccld
  file delete -force ${destroot}/${prefix}/bin/gccas
}

platform darwin {
  post-extract {
    system "rm -rf ${workpath}/llvm-gcc${major}-${version}.source/libstdc++-v3"
  }

  configure.args-append  --with-gxx-include-dir=/usr/include/c++/4.0.0
}

platform darwin powerpc {
  set triple powerpc-apple-darwin${os.major}

  configure.env-append TRIPLE=${triple}
  configure.post_args  --build=${triple} --host=${triple} --target=${triple}
}

platform darwin i386 {
  set triple i686-apple-darwin${os.major}

  configure.env-append TRIPLE=${triple} \
                       TARGETOPTIONS="--with-arch=nocona --with-tune=generic"
  configure.post_args  --build=${triple} --host=${triple} --target=${triple}
}

