diff options
author | Marcus D. Hanwell <cryos@gentoo.org> | 2009-08-21 16:00:02 +0000 |
---|---|---|
committer | Marcus D. Hanwell <cryos@gentoo.org> | 2009-08-21 16:00:02 +0000 |
commit | b29e6468a6285108346752b22c83d6c3925e8f0f (patch) | |
tree | fe1d3e33be8552047318bb5a9e01d0757b5a3853 /dev-cpp | |
parent | old (diff) | |
download | gentoo-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/ChangeLog | 9 | ||||
-rw-r--r-- | dev-cpp/eigen/eigen-2.0.4-r1.ebuild | 76 | ||||
-rw-r--r-- | dev-cpp/eigen/files/eigen-2.0.4-gcc-4-1.patch | 33 |
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 + }; |