diff --git a/dev-lang/moarvm/files/Configure-2016.03.patch b/dev-lang/moarvm/files/Configure-2016.03.patch new file mode 100644 index 0000000..949b789 --- /dev/null +++ b/dev-lang/moarvm/files/Configure-2016.03.patch @@ -0,0 +1,52 @@ +diff -Naur a/Configure.pl b/Configure.pl +--- a/Configure.pl 2016-02-04 21:28:31.000000000 +0100 ++++ b/Configure.pl 2016-04-21 01:11:06.063324250 +0200 +@@ -8,6 +8,7 @@ + use Getopt::Long; + use Pod::Usage; + use File::Spec; ++use ExtUtils::PkgConfig; + + use build::setup; + use build::auto; +@@ -170,6 +171,10 @@ + if ($args{'has-libuv'}) { + $defaults{-thirdparty}->{uv} = undef; + unshift @{$config{usrlibs}}, 'uv'; ++ my %pkg_info= ExtUtils::PkgConfig->find("libuv"); ++ if ($pkg_info{"Cflags"}) { ++ $config{cincludes} .= ' ' . $pkg_info{"Cflags"}; ++ } + } + else { + $config{cincludes} .= ' ' . $defaults{ccinc} . '3rdparty/libuv/include' +@@ -181,6 +186,10 @@ + if ($args{'has-libatomic_ops'}) { + $defaults{-thirdparty}->{lao} = undef; + unshift @{$config{usrlibs}}, 'atomic_ops'; ++ my %pkg_info = ExtUtils::PkgConfig->find("atomic_ops"); ++ if ($pkg_info{"Cflags"}) { ++ $config{cincludes} .= ' ' . $pkg_info{"Cflags"}; ++ } + } + else { + $config{cincludes} .= ' ' . $defaults{ccinc} . '3rdparty/libatomic_ops/src'; +@@ -232,6 +241,10 @@ + $config{nativecall_backend} = 'libffi'; + unshift @{$config{usrlibs}}, 'ffi'; + push @{$config{defs}}, 'HAVE_LIBFFI'; ++ my %pkg_info = ExtUtils::PkgConfig->find("libffi"); ++ if ($pkg_info{"cflags"}) { ++ $config{cincludes} .= ' ' . $pkg_info{"cflags"}; ++ } + } + elsif ($args{'has-dyncall'}) { + unshift @{$config{usrlibs}}, 'dyncall_s', 'dyncallback_s', 'dynload_s'; +@@ -364,6 +377,7 @@ + print "\n", <perl@gentoo.org Gentoo Perl Project + + Enable clang's Address Sanitizer functionality. Expect longer compile time. + Use clang compiler instead of GCC + Enable Just-In-Time-Compiler. Has no effect except on AMD64 and Darwin. + Enable optimization via CFLAGS + Link against the system's shared libraries + Enable clang's Undefined Behavior Sanitizer functionality. Expect longer compile time. + MoarVM/MoarVM diff --git a/dev-lang/moarvm/moarvm-2016.03-r1.ebuild b/dev-lang/moarvm/moarvm-2016.03-r1.ebuild new file mode 100644 index 0000000..033b361 --- /dev/null +++ b/dev-lang/moarvm/moarvm-2016.03-r1.ebuild @@ -0,0 +1,61 @@ +# Copyright 1999-2016 Gentoo Foundation +# Distributed under the terms of the GNU General Public License v2 +# $Id$ + +EAPI=6 + +inherit eutils flag-o-matic multilib + +MY_PN="MoarVM" + +DESCRIPTION="A 6model-based VM for NQP and Rakudo Perl 6" +HOMEPAGE="http://moarvm.org" +SRC_URI="http://moarvm.org/releases/${MY_PN}-${PV}.tar.gz" +LICENSE="Artistic-2" +SLOT="0" +KEYWORDS="~amd64 ~x86" +IUSE="asan clang debug doc +jit static-libs +system-libs optimize ubsan" + +RDEPEND="system-libs? ( dev-libs/libatomic_ops + dev-libs/libtommath + dev-libs/libuv + jit? ( dev-lang/lua[deprecated] + dev-lua/LuaBitOp ) + virtual/libffi ) + " +DEPEND="${RDEPEND} + clang? ( >=sys-devel/clang-3.1 ) + dev-lang/perl + dev-perl/extutils-pkgconfig" + +REQUIRED_USE="asan? ( clang )" +S="${WORKDIR}/MoarVM-${PV}" +PATCHES=( "${FILESDIR}/Configure-${PV}.patch" ) +DOCS=( CREDITS README.markdown ) + +src_prepare() { + eapply "${PATCHES[@]}" + eapply_user + use doc && DOCS+=( docs/* ) +} + +src_configure() { + local myconfigargs=( + "--prefix=/usr" + "--libdir=$(get_libdir)" + "--compiler=$(usex clang clang gcc)" + "$(usex asan --asan)" + "$(usex debug --debug --no-debug)" + "$(usex jit --lua=/usr/bin/lua --no-jit)" + "$(usex optimize --optimize --no-optimize)" + "$(usex static-libs --static)" + "$(usex system-libs --has-libtommath)" + "$(usex system-libs --has-libuv)" + "$(usex system-libs --has-libatomic_ops)" + "$(usex system-libs --has-libffi)" + "$(usex ubsan --ubsan)" + ) + use optimize && filter-flags '-O*' + + perl Configure.pl "${myconfigargs[@]}" || die +} diff --git a/profiles/base/package.use.mask b/profiles/base/package.use.mask index be11969..5ab7ece 100644 --- a/profiles/base/package.use.mask +++ b/profiles/base/package.use.mask @@ -5,6 +5,11 @@ # This file requires >=portage-2.1.1 # New entries go on top. +# Matthew Brewer (21 Apr 2016) +# Upstream supports using Clang's address sanitizer, but apparently +# invokes it wrong. +dev-lang/moarvm asan + # Johannes Huber (21 Apr 2016) # Unreleased dependency. kde-apps/ktp-text-ui speech