mirror of
https://github.com/yann64/haikuports.git
synced 2026-04-10 22:00:09 +02:00
x86_64 is used as a baseline: the "x86_64" entry, whatever status it has, is transformed into "all", and then the other entries in ARCHITECTURES either dropped or rearranged appropriately.
109 lines
3.6 KiB
Bash
109 lines
3.6 KiB
Bash
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"
|
|
REVISION="4"
|
|
SOURCE_URI="http://gitlab.com/libeigen/eigen/-/archive/$portVersion/eigen-$portVersion.tar.gz"
|
|
CHECKSUM_SHA256="7985975b787340124786f092b3a07d594b2e9cd53bbfe5f3d9b1daee7d55f56f"
|
|
PATCHES="eigen-$portVersion.patchset"
|
|
|
|
ARCHITECTURES="all !x86_gcc2"
|
|
SECONDARY_ARCHITECTURES="x86"
|
|
|
|
PROVIDES="
|
|
eigen$secondaryArchSuffix = $portVersion
|
|
devel:eigen$secondaryArchSuffix = $portVersion
|
|
"
|
|
REQUIRES="
|
|
haiku$secondaryArchSuffix
|
|
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_REQUIRES="
|
|
haiku${secondaryArchSuffix}_devel
|
|
devel:libboost_system$secondaryArchSuffix >= 1.69.0
|
|
devel:libcholmod$secondaryArchSuffix
|
|
devel:libfftw3f$secondaryArchSuffix
|
|
devel:libGL$secondaryArchSuffix
|
|
devel:libgmp$secondaryArchSuffix
|
|
devel:libmetis$secondaryArchSuffix
|
|
devel:libmpfr$secondaryArchSuffix >= 6
|
|
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()
|
|
{
|
|
mkdir -p build
|
|
cd build
|
|
cmake .. \
|
|
-DCMAKE_INSTALL_PREFIX=$prefix \
|
|
-DINCLUDE_INSTALL_DIR=$relativeIncludeDir
|
|
make $jobArgs
|
|
}
|
|
|
|
INSTALL()
|
|
{
|
|
cd build
|
|
make install PREFIX=$prefix
|
|
|
|
mv $prefix/share/eigen3 $dataDir
|
|
mkdir -p $developLibDir
|
|
mv $prefix/share/pkgconfig $developLibDir
|
|
rmdir $prefix/share
|
|
|
|
fixPkgconfig
|
|
}
|
|
|
|
TEST()
|
|
{
|
|
cd build
|
|
make check -j 4
|
|
}
|