SUMMARY="A C++ template library for linear algebra, vectors and more" DESCRIPTION="Eigen is a versatile, fast, elegant and reliable template library \ that supports all matrix sizes, from small fixed-size matrices to arbitrarily \ large dense matrices, and even sparse matrices. - It supports all standard numeric types, including std::complex, integers, \ and is easily extensible to custom numeric types. - It supports various matrix decompositions and geometry features. - Its ecosystem of unsupported modules provides many specialized features \ such as non-linear optimization, matrix functions, a polynomial solver, FFT, \ and much more. - Expression templates allow to intelligently remove temporaries and enable \ lazy evaluation, when that is appropriate. - Explicit vectorization is performed for SSE 2/3/4, AVX, FMA, AVX512, \ ARM NEON (32-bit and 64-bit), PowerPC instruction sets, and now S390x SIMD \ (ZVector) with graceful fallback to non-vectorized code. - Fixed-size matrices are fully optimized: dynamic memory allocation is \ avoided, and the loops are unrolled when that makes sense. - For large matrices, special attention is paid to cache-friendliness. - Algorithms are carefully selected for reliability. Reliability trade-offs \ are clearly documented and extremely safe decompositions are available. - Eigen is thoroughly tested through its own test suite (over 500 executables) \ the standard BLAS test suite, and parts of the LAPACK test suite. - The API is extremely clean and expressive while feeling natural to C++ \ programmers, thanks to expression templates. - Implementing an algorithm on top of Eigen feels like just copying pseudocode." HOMEPAGE="http://eigen.tuxfamily.org" COPYRIGHT="2006-2011 Benoit Jacob 2008-2012 Gael Guennebaud, et al." LICENSE="MPL v2 Apache v2 BSD (3-clause) GNU GPL v3 GNU LGPL v2.1" REVISION="1" SOURCE_URI="http://gitlab.com/libeigen/eigen/-/archive/$portVersion/eigen-$portVersion.tar.gz" CHECKSUM_SHA256="8586084f71f9bde545ee7fa6d00288b264a2b7ac3607b974e54d13e7162c1c72" PATCHES="eigen-$portVersion.patchset" ARCHITECTURES="all !x86_gcc2" SECONDARY_ARCHITECTURES="x86" PROVIDES=" eigen$secondaryArchSuffix = $portVersion devel:eigen$secondaryArchSuffix = $portVersion " REQUIRES=" haiku$secondaryArchSuffix " BUILD_REQUIRES=" haiku${secondaryArchSuffix}_devel devel:libboost_system$secondaryArchSuffix devel:libcholmod$secondaryArchSuffix devel:libfftw3f$secondaryArchSuffix devel:libGL$secondaryArchSuffix devel:libgmp$secondaryArchSuffix devel:libmetis$secondaryArchSuffix devel:libmpfr$secondaryArchSuffix devel:libopenblas$secondaryArchSuffix devel:libumfpack$secondaryArchSuffix devel:libsuperlu$secondaryArchSuffix devel:libspqr$secondaryArchSuffix devel:libtbb$secondaryArchSuffix " BUILD_PREREQUIRES=" cmd:cmake cmd:gcc$secondaryArchSuffix cmd:gfortran$secondaryArchSuffix cmd:make cmd:pkg_config$secondaryArchSuffix " BUILD() { cmake -Bbuild -S. -DCMAKE_BUILD_TYPE=Release \ -DCMAKE_INSTALL_PREFIX=$prefix \ -DINCLUDE_INSTALL_DIR=$includeDir \ -DCMAKEPACKAGE_INSTALL_DIR=$libDir/cmake/eigen3 \ -DPKGCONFIG_INSTALL_DIR=$developLibDir/pkgconfig \ -DEIGEN_MPL2_ONLY=ON make -C build $jobArgs } INSTALL() { make -C build install } TEST() { make -C build check -j 4 }