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="3" SOURCE_URI="http://gitlab.com/libeigen/eigen/-/archive/$portVersion/eigen-$portVersion.tar.gz" CHECKSUM_SHA256="e9c326dc8c05cd1e044c71f30f1b2e34a6161a3b6ecf445d56b53ff1669e3dec" PATCHES="eigen-$portVersion.patchset" ARCHITECTURES="all !x86_gcc2" SECONDARY_ARCHITECTURES="x86" PROVIDES=" eigen$secondaryArchSuffix = $portVersion devel:eigen$secondaryArchSuffix = $portVersion " REQUIRES=" haiku$secondaryArchSuffix lib:libgfortran$secondaryArchSuffix lib:libquadmath$secondaryArchSuffix " CONFLICTS=" eigen3$secondaryArchSuffix " BUILD_REQUIRES=" haiku${secondaryArchSuffix}_devel devel:libboost_system$secondaryArchSuffix >= 1.88.0 devel:libcholmod$secondaryArchSuffix devel:libfftw3f$secondaryArchSuffix devel:libGL$secondaryArchSuffix devel:libgmp$secondaryArchSuffix devel:libhwloc$secondaryArchSuffix >= 15.7 # we want hwloc2_devel devel:libklu$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_BUILD_BLAS=OFF \ -DEIGEN_BUILD_LAPACK=OFF \ -Wno-dev make -C build $jobArgs } INSTALL() { make -C build install } TEST() { # test binaries are not build with ctest make -C build check -j 4 # 99% tests passed, 5 tests failed out of 1283 (5 crashes) # Label Time Summary: # Official = 355.40 sec*proc (910 tests) # Unsupported = 74.87 sec*proc (231 tests) # smoketest = 9.50 sec*proc (109 tests) # Total Test time (real) = 2542.71 sec # The following tests FAILED: # 13 - klu_support_1 (Timeout) # 14 - klu_support_2 (Signal 21) # 80 - packetmath_11 (Signal 21) Official # 732 - geo_homogeneous_2 (Signal 21) Official # 733 - geo_homogeneous_3 (Signal 21) Official # change -E to -R to run only the crashing tests # ctest --test-dir build --output-on-failure -E "klu_support_1|klu_support_2|packetmath_11|geo_homogeneous_2|geo_homogeneous_3" }