diff options
author | Bernard Cafarelli <voyageur@gentoo.org> | 2009-10-05 13:10:55 +0000 |
---|---|---|
committer | Bernard Cafarelli <voyageur@gentoo.org> | 2009-10-05 13:10:55 +0000 |
commit | 1965c52f92569d80c289afaa261d8d4119264332 (patch) | |
tree | 9d62fcd7db816ecbe6393b203a0810ba8558639a /sys-devel/llvm | |
parent | x86 stable, bug 282290 (diff) | |
download | gentoo-2-1965c52f92569d80c289afaa261d8d4119264332.tar.gz gentoo-2-1965c52f92569d80c289afaa261d8d4119264332.tar.bz2 gentoo-2-1965c52f92569d80c289afaa261d8d4119264332.zip |
Initial commit, thanks everyone in bug #186279 and others
(Portage version: 2.2_rc43/cvs/Linux x86_64)
Diffstat (limited to 'sys-devel/llvm')
-rw-r--r-- | sys-devel/llvm/ChangeLog | 10 | ||||
-rw-r--r-- | sys-devel/llvm/files/llvm-2.6-nohtmltargz.patch | 17 | ||||
-rw-r--r-- | sys-devel/llvm/llvm-2.6_pre2.ebuild | 146 | ||||
-rw-r--r-- | sys-devel/llvm/metadata.xml | 18 |
4 files changed, 191 insertions, 0 deletions
diff --git a/sys-devel/llvm/ChangeLog b/sys-devel/llvm/ChangeLog new file mode 100644 index 000000000000..5f88805934e2 --- /dev/null +++ b/sys-devel/llvm/ChangeLog @@ -0,0 +1,10 @@ +# ChangeLog for sys-devel/llvm +# Copyright 1999-2009 Gentoo Foundation; Distributed under the GPL v2 +# $Header: /var/cvsroot/gentoo-x86/sys-devel/llvm/ChangeLog,v 1.1 2009/10/05 13:10:54 voyageur Exp $ + +*llvm-2.6_pre2 (05 Oct 2009) + + 05 Oct 2009; Bernard Cafarelli <voyageur@gentoo.org> + +llvm-2.6_pre2.ebuild, +files/llvm-2.6-nohtmltargz.patch, +metadata.xml: + Initial commit, thanks everyone in bug #186279 and others + diff --git a/sys-devel/llvm/files/llvm-2.6-nohtmltargz.patch b/sys-devel/llvm/files/llvm-2.6-nohtmltargz.patch new file mode 100644 index 000000000000..65209e6d0b95 --- /dev/null +++ b/sys-devel/llvm/files/llvm-2.6-nohtmltargz.patch @@ -0,0 +1,17 @@ +--- docs/Makefile.orig 2009-09-25 15:02:13.000000000 +0200 ++++ docs/Makefile 2009-09-25 15:02:47.000000000 +0200 +@@ -46,13 +46,12 @@ + # 'make generated BUILD_FOR_WEBSITE=1' + generated:: doxygen ocamldoc + +-install-html: $(PROJ_OBJ_DIR)/html.tar.gz ++install-html: + $(Echo) Installing HTML documentation + $(Verb) $(MKDIR) $(PROJ_docsdir)/html + $(Verb) $(MKDIR) $(PROJ_docsdir)/html/img + $(Verb) $(DataInstall) $(HTML) $(PROJ_docsdir)/html + $(Verb) $(DataInstall) $(IMAGES) $(PROJ_docsdir)/html/img +- $(Verb) $(DataInstall) $(PROJ_OBJ_DIR)/html.tar.gz $(PROJ_docsdir) + + $(PROJ_OBJ_DIR)/html.tar.gz: $(HTML) + $(Echo) Packaging HTML documentation diff --git a/sys-devel/llvm/llvm-2.6_pre2.ebuild b/sys-devel/llvm/llvm-2.6_pre2.ebuild new file mode 100644 index 000000000000..e52afb23b211 --- /dev/null +++ b/sys-devel/llvm/llvm-2.6_pre2.ebuild @@ -0,0 +1,146 @@ +# Copyright 1999-2009 Gentoo Foundation +# Distributed under the terms of the GNU General Public License v2 +# $Header: /var/cvsroot/gentoo-x86/sys-devel/llvm/llvm-2.6_pre2.ebuild,v 1.1 2009/10/05 13:10:54 voyageur Exp $ + +EAPI="2" +inherit eutils multilib toolchain-funcs + +DESCRIPTION="Low Level Virtual Machine" +HOMEPAGE="http://llvm.org/" +#SRC_URI="http://llvm.org/releases/${PV}/${P}.tar.gz" +SRC_URI="http://llvm.org/prereleases/${PV/_pre*}/pre-release${PV/*_pre}/${PN}-${PV/_pre*}.tar.gz -> ${P}.tar.gz" + +LICENSE="UoI-NCSA" +SLOT="0" +KEYWORDS="~amd64 ~ppc ~x86" +IUSE="alltargets debug llvm-gcc test" + +DEPEND="dev-lang/perl + >=sys-devel/make-3.79 + >=sys-devel/flex-2.5.4 + >=sys-devel/bison-1.28 + !~sys-devel/bison-1.85 + !~sys-devel/bison-1.875 + >=sys-devel/gcc-3.0 + >=sys-devel/binutils-2.18 + llvm-gcc? ( sys-devel/llvm-gcc ) + test? ( dev-util/dejagnu )" +RDEPEND="dev-lang/perl" + +S=${WORKDIR}/${PN}-${PV/_pre*} + +pkg_setup() { + # need to check if the active compiler is ok + + broken_gcc=" 3.2.2 3.2.3 3.3.2 4.1.1 " + broken_gcc_x86=" 3.4.0 3.4.2 " + broken_gcc_amd64=" 3.4.6 " + + gcc_vers=$(gcc-fullversion) + + if [[ ${broken_gcc} == *" ${version} "* ]] ; then + elog "Your version of gcc is known to miscompile llvm." + elog "Check http://www.llvm.org/docs/GettingStarted.html for" + elog "possible solutions." + die "Your currently active version of gcc is known to miscompile llvm" + fi + + if [[ ${CHOST} == i*86-* && ${broken_gcc_x86} == *" ${version} "* ]] ; then + elog "Your version of gcc is known to miscompile llvm on x86" + elog "architectures. Check" + elog "http://www.llvm.org/docs/GettingStarted.html for possible" + elog "solutions." + die "Your currently active version of gcc is known to miscompile llvm" + fi + + if [[ ${CHOST} == x86_64-* && ${broken_gcc_amd64} == *" ${version} "* ]]; + then + elog "Your version of gcc is known to miscompile llvm in amd64" + elog "architectures. Check" + elog "http://www.llvm.org/docs/GettingStarted.html for possible" + elog "solutions." + die "Your currently active version of gcc is known to miscompile llvm" + fi +} + +src_prepare() { + # unfortunately ./configure won't listen to --mandir and the-like, so take + # care of this. + einfo "Fixing install dirs" + sed -e 's,^PROJ_docsdir.*,PROJ_docsdir := $(DESTDIR)$(PROJ_prefix)/share/doc/'${PF}, \ + -e 's,^PROJ_etcdir.*,PROJ_etcdir := $(DESTDIR)/etc/llvm,' \ + -e 's,^PROJ_libdir.*,PROJ_libdir := $(DESTDIR)/usr/'$(get_libdir), \ + -i Makefile.config.in || die "sed failed" + + # this points by default to the build directory + einfo "Fixing gccld and gccas" + sed -e 's,^TOOLDIR.*,TOOLDIR=/usr/bin,' \ + -i tools/gccld/gccld.sh tools/gccas/gccas.sh || die "sed failed" + + einfo "Fixing rpath" + sed -e 's/\$(RPATH) -Wl,\$(\(ToolDir\|LibDir\))//g' -i Makefile.rules || die "sed failed" + + # Fix docs installation + sed -e '/^NO_INSTALL_MANS/s/$/$(DST_MAN_DIR)tblgen.1 $(DST_MAN_DIR)llvmgcc.1 $(DST_MAN_DIR)llvmgxx.1/' \ + -i docs/CommandGuide/Makefile || die "manpages sed failed" + epatch "${FILESDIR}"/${PN}-2.6-nohtmltargz.patch + + # Buggy test, http://llvm.org/bugs/show_bug.cgi?id=5047 + rm test/DebugInfo/2009-01-15-dbg_declare.ll +} + +src_configure() { + local CONF_FLAGS="" + + if use debug; then + CONF_FLAGS="${CONF_FLAGS} --disable-optimized" + einfo "Note: Compiling LLVM in debug mode will create huge and slow binaries" + # ...and you probably shouldn't use tmpfs, unless it can hold 900MB + else + CONF_FLAGS="${CONF_FLAGS} \ + --enable-optimized \ + --disable-assertions \ + --disable-expensive-checks" + fi + + if use alltargets; then + CONF_FLAGS="${CONF_FLAGS} --enable-targets=all" + else + CONF_FLAGS="${CONF_FLAGS} --enable-targets=host-only" + fi + + if use amd64; then + CONF_FLAGS="${CONF_FLAGS} --enable-pic" + fi + + # things would be built differently depending on whether llvm-gcc is + # used or not. + local LLVM_GCC_DIR=/dev/null + local LLVM_GCC_DRIVER=nope ; local LLVM_GPP_DRIVER=nope + if use llvm-gcc ; then + LLVM_GCC_DIR=$(find /usr/$(get_libdir)/llvm-gcc/ -mindepth 1 -maxdepth 1 2> /dev/null) + LLVM_GCC_DRIVER=$(find ${LLVM_GCC_DIR} -name 'llvm*-gcc' 2> /dev/null) + + if [[ -z ${LLVM_GCC_DRIVER} ]] ; then + die "failed to find installed llvm-gcc, LLVM_GCC_DIR=${LLVM_GCC_DIR}" + fi + + einfo "Using $LLVM_GCC_DRIVER" + LLVM_GPP_DRIVER=${LLVM_GCC_DRIVER/%-gcc/-g++} + fi + + CONF_FLAGS="${CONF_FLAGS} \ + --with-llvmgccdir=${LLVM_GCC_DIR} \ + --with-llvmgcc=${LLVM_GCC_DRIVER} \ + --with-llvmgxx=${LLVM_GPP_DRIVER}" + + econf ${CONF_FLAGS} || die "econf failed" +} + +src_compile() { + emake VERBOSE=1 KEEP_SYMBOLS=1 || die "emake failed" +} + +src_install() { + emake KEEP_SYMBOLS=1 DESTDIR="${D}" install || die "install failed" +} diff --git a/sys-devel/llvm/metadata.xml b/sys-devel/llvm/metadata.xml new file mode 100644 index 000000000000..7181bf018e0a --- /dev/null +++ b/sys-devel/llvm/metadata.xml @@ -0,0 +1,18 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!DOCTYPE pkgmetadata SYSTEM "http://www.gentoo.org/dtd/metadata.dtd"> +<pkgmetadata> + <herd>no-herd</herd> + <maintainer> + <email>voyageur@gentoo.org</email> + <name>Bernard Cafarelli</name> + </maintainer> + <longdescription>Low Level Virtual Machine (LLVM) is: + 1. A compilation strategy designed to enable effective program optimization across the entire lifetime of a program. LLVM supports effective optimization at compile time, link-time (particularly interprocedural), run-time and offline (i.e., after software is installed), while remaining transparent to developers and maintaining compatibility with existing build scripts. + 2. A virtual instruction set - LLVM is a low-level object code representation that uses simple RISC-like instructions, but provides rich, language-independent, type information and dataflow (SSA) information about operands. This combination enables sophisticated transformations on object code, while remaining light-weight enough to be attached to the executable. This combination is key to allowing link-time, run-time, and offline transformations. + 3. A compiler infrastructure - LLVM is also a collection of source code that implements the language and compilation strategy. The primary components of the LLVM infrastructure are a GCC-based C and C++ front-end, a link-time optimization framework with a growing set of global and interprocedural analyses and transformations, static back-ends for many popular (and some obscure) architectures, a back-end which emits portable C code, and a Just-In-Time compilers for several architectures. + 4. LLVM does not imply things that you would expect from a high-level virtual machine. It does not require garbage collection or run-time code generation (In fact, LLVM makes a great static compiler!). Note that optional LLVM components can be used to build high-level virtual machines and other systems that need these services.</longdescription> + <use> + <flag name='alltargets'>Build all host targets (default: host only)</flag> + <flag name='llvm-gcc'>Build LLVM with <pkg>sys-devel/llvm-gcc</pkg></flag> + </use> +</pkgmetadata> |