summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMarcus D. Hanwell <cryos@gentoo.org>2009-08-21 16:00:02 +0000
committerMarcus D. Hanwell <cryos@gentoo.org>2009-08-21 16:00:02 +0000
commitb29e6468a6285108346752b22c83d6c3925e8f0f (patch)
treefe1d3e33be8552047318bb5a9e01d0757b5a3853 /dev-cpp
parentold (diff)
downloadgentoo-2-b29e6468a6285108346752b22c83d6c3925e8f0f.tar.gz
gentoo-2-b29e6468a6285108346752b22c83d6c3925e8f0f.tar.bz2
gentoo-2-b29e6468a6285108346752b22c83d6c3925e8f0f.zip
Patch applied by Benoit Jacob upstream, fixes compilation issue with GCC 4.1. Closes bug 280588.
(Portage version: 2.2_rc38/cvs/Linux x86_64)
Diffstat (limited to 'dev-cpp')
-rw-r--r--dev-cpp/eigen/ChangeLog9
-rw-r--r--dev-cpp/eigen/eigen-2.0.4-r1.ebuild76
-rw-r--r--dev-cpp/eigen/files/eigen-2.0.4-gcc-4-1.patch33
3 files changed, 117 insertions, 1 deletions
diff --git a/dev-cpp/eigen/ChangeLog b/dev-cpp/eigen/ChangeLog
index b2d89df376f0..2d9d3bb0cb83 100644
--- a/dev-cpp/eigen/ChangeLog
+++ b/dev-cpp/eigen/ChangeLog
@@ -1,6 +1,13 @@
# ChangeLog for dev-cpp/eigen
# Copyright 1999-2009 Gentoo Foundation; Distributed under the GPL v2
-# $Header: /var/cvsroot/gentoo-x86/dev-cpp/eigen/ChangeLog,v 1.13 2009/08/01 18:07:18 cryos Exp $
+# $Header: /var/cvsroot/gentoo-x86/dev-cpp/eigen/ChangeLog,v 1.14 2009/08/21 16:00:02 cryos Exp $
+
+*eigen-2.0.4-r1 (21 Aug 2009)
+
+ 21 Aug 2009; Marcus D. Hanwell <cryos@gentoo.org> +eigen-2.0.4-r1.ebuild,
+ +files/eigen-2.0.4-gcc-4-1.patch:
+ Patch applied by Benoit Jacob upstream, fixes compilation issue with GCC
+ 4.1. Closes bug 280588.
*eigen-2.0.4 (01 Aug 2009)
diff --git a/dev-cpp/eigen/eigen-2.0.4-r1.ebuild b/dev-cpp/eigen/eigen-2.0.4-r1.ebuild
new file mode 100644
index 000000000000..af37377421ee
--- /dev/null
+++ b/dev-cpp/eigen/eigen-2.0.4-r1.ebuild
@@ -0,0 +1,76 @@
+# Copyright 1999-2009 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+# $Header: /var/cvsroot/gentoo-x86/dev-cpp/eigen/eigen-2.0.4-r1.ebuild,v 1.1 2009/08/21 16:00:02 cryos Exp $
+
+EAPI="2"
+
+inherit cmake-utils
+
+DESCRIPTION="Lightweight C++ template library for vector and matrix math, a.k.a. linear algebra"
+HOMEPAGE="http://eigen.tuxfamily.org/"
+SRC_URI="http://bitbucket.org/eigen/eigen2/get/${PV}.tar.bz2"
+
+LICENSE="GPL-3"
+KEYWORDS="~alpha ~amd64 ~hppa ~ia64 ~ppc ~ppc64 ~x86"
+SLOT="2"
+IUSE="debug doc examples"
+
+DEPEND="
+ examples? (
+ x11-libs/qt-gui:4
+ x11-libs/qt-opengl:4
+ )
+"
+RDEPEND="${DEPEND}
+ !dev-cpp/eigen:0
+"
+
+S="${WORKDIR}/eigen2"
+
+src_prepare() {
+ # fix compilation agains eigen on the PPC platform:
+ epatch "${FILESDIR}/${PN}-ppc-define.patch"
+ epatch "${FILESDIR}/${P}-qt-test.patch"
+ epatch "${FILESDIR}/${P}-gcc-4-1.patch"
+}
+
+src_configure() {
+ # benchmarks (BTL) brings up damn load of external deps including fortran
+ # compiler
+ # library hangs up complete compilation proccess, test later
+ mycmakeargs="
+ -DEIGEN_BUILD_LIB=OFF
+ -DEIGEN_BUILD_BTL=OFF
+ $(cmake-utils_use examples EIGEN_BUILD_DEMOS)
+ "
+ cmake-utils_src_configure
+}
+
+src_compile() {
+ cmake-utils_src_compile
+ if use doc; then
+ cd "${CMAKE_BUILD_DIR}"
+ emake doc || die "building documentation failed"
+ fi
+}
+
+src_install() {
+ cmake-utils_src_install
+ if use doc; then
+ cd "${CMAKE_BUILD_DIR}"/doc
+ dohtml -r html/* || die "dohtml failed"
+ fi
+ if use examples; then
+ cd "${CMAKE_BUILD_DIR}"/demos
+ dobin mandelbrot/mandelbrot opengl/quaternion_demo || die "dobin failed"
+ fi
+}
+
+src_test() {
+ mycmakeargs="${mycmakeargs}
+ -DEIGEN_BUILD_TESTS=ON
+ -DEIGEN_TEST_NO_FORTRAN=ON"
+ cmake-utils_src_configure
+ cmake-utils_src_compile
+ cmake-utils_src_test
+}
diff --git a/dev-cpp/eigen/files/eigen-2.0.4-gcc-4-1.patch b/dev-cpp/eigen/files/eigen-2.0.4-gcc-4-1.patch
new file mode 100644
index 000000000000..f19aa1c22b3e
--- /dev/null
+++ b/dev-cpp/eigen/files/eigen-2.0.4-gcc-4-1.patch
@@ -0,0 +1,33 @@
+diff -r 4caa5b8cc482 Eigen/StdVector
+--- a/Eigen/StdVector Thu Aug 20 12:27:01 2009 -0400
++++ b/Eigen/StdVector Fri Aug 21 11:35:55 2009 -0400
+@@ -112,10 +112,8 @@
+ else if (__new_size < vector_base::size())
+ vector_base::erase(vector_base::begin() + __new_size, vector_base::end());
+ }
+- #elif defined(_GLIBCXX_VECTOR) && EIGEN_GNUC_AT_LEAST(4,1)
++ #elif defined(_GLIBCXX_VECTOR) && EIGEN_GNUC_AT_LEAST(4,2)
+ // workaround GCC std::vector implementation
+- // Note that before gcc-4.1 we already have: std::vector::resize(size_type,const T&),
+- // no no need to workaround !
+ void resize(size_type __new_size, const value_type& __x)
+ {
+ if (__new_size < vector_base::size())
+@@ -123,7 +121,17 @@
+ else
+ vector_base::insert(vector_base::end(), __new_size - vector_base::size(), __x);
+ }
++ #elif defined(_GLIBCXX_VECTOR) && EIGEN_GNUC_AT_LEAST(4,1)
++ void resize(size_type __new_size, const value_type& __x)
++ {
++ if (__new_size < vector_base::size())
++ erase(vector_base::begin() + __new_size, vector_base::end());
++ else
++ insert(vector_base::end(), __new_size - vector_base::size(), __x);
++ }
+ #else
++ // Before gcc-4.1 we already have: std::vector::resize(size_type,const T&),
++ // so no need for a workaround !
+ using vector_base::resize;
+ #endif
+ };