This no longer works on gcc or clang, so we should just remove the hack.
The default should compile to similar code anyways.
(cherry picked from commit 82c0c18a8373eb57c25f543b77a592467ba8e22e)
find_package use
This commit allows the sources of the project to be included in a parent
project CMakeLists.txt and support use of "find_package(Eigen3 CONFIG REQUIRED)"
Here is an example allowing to test the changes. It is not particularly
useful in itself. This change will allow to support one of the scenario
allowing to create custom 3D Slicer application bundling associated plugins.
/tmp/eigen-git-mirror # Eigen sources
/tmp/test/CMakeLists.txt:
cmake_minimum_required(VERSION 3.12)
project(test)
add_subdirectory("/tmp/eigen-git-mirror" "eigen-git-mirror")
find_package(Eigen3 CONFIG REQUIRED)
and configuring it using:
mkdir /tmp/test-build && cd $_
cmake \
-DCMAKE_FIND_PACKAGE_NO_PACKAGE_REGISTRY:BOOL=1 \
-DEigen3_DIR:PATH=/tmp/test-build/eigen-git-mirror \
/tmp/test
Co-authored-by: Pablo Hernandez <pablo.hernandez@kitware.com>
---
CMakeLists.txt | 1 +
cmake/Eigen3Config.cmake.in | 4 +++-
2 files changed, 4 insertions(+), 1 deletion(-)
(cherry picked from commit 2cbd9dd49806d686a40841b6d888a83c816efccf)
The previous implementation caused a buffer overflow trying to calculate non-
zero counts for columns that no longer exist.
(cherry picked from commit 2ac0b787399df718dc61219145f44a6ae99813aa)
(cherry picked from commit f4b67691c42952b44ce7dae62f5c18ed93b53521)
Originating from
[this SO issue](https://stackoverflow.com/questions/65901014/how-to-solve-this-all-error-2-in-this-case),
some win32 compilers define `__int32` as a `long`, but MinGW defines
`std::int32_t` as an `int`, leading to a type conflict.
To avoid this, we remove the custom `typedef` definitions for win32. The
Tensor module requires C++11 anyways, so we are guaranteed to have
included `<cstdint>` already in `Eigen/Core`.
Also re-arranged the headers to only include `<cstdint>` in one place to
avoid this type of error again.
Add specializations for complex types since std::log1p and std::exp1m do not support complex.
(cherry picked from commit d55d392e7b1136655b4223bea8e99cb2fe0a8afd)
part of the class signature is lost due to a problem with forward
declarations. The problem is probably caused by doxygen bug #7689.
It is confirmed to be fixed in doxygen >= 1.8.19.
(cherry picked from commit 68f69414f7d358deac4876ede5be15e990da496b)
Note that HTTPS must be used against the MathJax CDN when hosted on `eigen.tuxfamily.org` (which uses HTTPS) in order to avoid `Mixed Content`-errors from browsers. Using HTTPS for MathJax also works if the Eigen docs are hosted on plain HTTP.
(cherry picked from commit 280f4f2407ffdf93488de7e95ca6e31fff770f21)
This resolves a compilation error associated with
Eigen::eigen_assert_exception. It also eliminates the counting of
exceptions that may occur in the OpenMP parallel section. If an
unhandled exception occurs in this section, the behavior is non-conforming
according to the OpenMP specification.
An OpenMP parallel section must have a single entry and a single point
of exit. Leaving such a section by throwing an exception is undefined.
This patch fixes this by catching possible exceptions on the parallel
section and throwing right we left it.
When the type is PATH an absolute path is expected and user-defined
values are converted into absolute paths relative to the current directory.
Fixes#1990
(cherry picked from commit a967fadb21c17622c6cdec13ad9c827054624eb4)
StlDeque extends std::deque by accessing some of its internal members.
Since GCC 10 these are not accessible anymore.
(cherry picked from commit 5e484fa11de4e90fc042a29e6cab04667bb2ef6c)