Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 1 addition & 2 deletions Modules/Core/Common/include/itkSymmetricEigenAnalysis.h
Original file line number Diff line number Diff line change
Expand Up @@ -19,8 +19,7 @@
#define itkSymmetricEigenAnalysis_h

#include "itkMacro.h"
#include "itk_eigen.h"
#include ITK_EIGEN(Eigenvalues)
#include "itk_Eigenvalues"
#include <numeric>
#include <vector>
// For GetPointerToMatrixData
Expand Down
80 changes: 78 additions & 2 deletions Modules/ThirdParty/Eigen3/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -64,10 +64,86 @@ list(APPEND ITKEigen3_INCLUDE_DIRS ${ITKEigen3_BINARY_DIR}/src)
# Eigen3 targets are not installed if ITK_USE_SYSTEM_EIGEN==True
itk_module_impl()

configure_file(src/itk_eigen.h.in src/itk_eigen.h)
if(NOT ITK_LEGACY_REMOVE)
configure_file(src/itk_eigen.h.in src/itk_eigen.h)
install(
FILES
${ITKEigen3_BINARY_DIR}/src/itk_eigen.h
DESTINATION ${ITKEigen3_INSTALL_INCLUDE_DIR}
COMPONENT Development
)
endif()

# Generate a wrapper header for every Eigen module header so that
# consumers can write #include "Eigen/Core" etc. and get either the
Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This is contradictory to the change in Modules/Core/Common/include/itkSymmetricEigenAnalysis.h.

# bundled or system Eigen header transparently.
set(
_eigen_module_headers
Cholesky
CholmodSupport
Core
Dense
Eigen
Eigenvalues
Geometry
Householder
IterativeLinearSolvers
Jacobi
LU
MetisSupport
OrderingMethods
PaStiXSupport
PardisoSupport
QR
QtAlignedMalloc
SPQRSupport
SVD
Sparse
SparseCholesky
SparseCore
SparseLU
SparseQR
StdDeque
StdList
StdVector
SuperLUSupport
UmfPackSupport
)
set(
_eigen_header_content
[=[/* Auto-generated by CMake – do not edit. */
#ifndef itk_eigen_@EIGEN_HEADER_NAME@
#define itk_eigen_@EIGEN_HEADER_NAME@

/* Use the Eigen3 library configured for ITK. */
#cmakedefine ITK_USE_SYSTEM_EIGEN
#ifdef ITK_USE_SYSTEM_EIGEN
# include <Eigen/@EIGEN_HEADER_NAME@>
#else
# include "itkeigen/Eigen/@EIGEN_HEADER_NAME@"
#endif

#endif
]=]
)

foreach(_header IN LISTS _eigen_module_headers)
set(EIGEN_HEADER_NAME "${_header}")
file(
CONFIGURE
OUTPUT "${ITKEigen3_BINARY_DIR}/src/itk_${_header}"
CONTENT "${_eigen_header_content}"
@ONLY
)
list(
APPEND
_generated_eigen_headers
"${ITKEigen3_BINARY_DIR}/src/itk_${_header}"
)
endforeach()
install(
FILES
${ITKEigen3_BINARY_DIR}/src/itk_eigen.h
${_generated_eigen_headers}
DESTINATION ${ITKEigen3_INSTALL_INCLUDE_DIR}
COMPONENT Development
)
2 changes: 2 additions & 0 deletions Modules/ThirdParty/Eigen3/src/itk_eigen.h.in
Original file line number Diff line number Diff line change
Expand Up @@ -19,6 +19,8 @@
#ifndef itk_eigen_h
#define itk_eigen_h



/* Usage:
* ITK_EIGEN(Eigenvalues)
* If using a Eigen3 header containing non MPL2 code
Expand Down
Loading