Skip to content

Commit aa70100

Browse files
committed
WIP: Use standard header approach
1 parent 5fd7f7c commit aa70100

3 files changed

Lines changed: 81 additions & 4 deletions

File tree

Modules/Core/Common/include/itkSymmetricEigenAnalysis.h

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -19,8 +19,7 @@
1919
#define itkSymmetricEigenAnalysis_h
2020

2121
#include "itkMacro.h"
22-
#include "itk_eigen.h"
23-
#include ITK_EIGEN(Eigenvalues)
22+
#include "itk_Eigenvalues"
2423
#include <numeric>
2524
#include <vector>
2625
// For GetPointerToMatrixData

Modules/ThirdParty/Eigen3/CMakeLists.txt

Lines changed: 78 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -70,10 +70,86 @@ list(APPEND ITKEigen3_INCLUDE_DIRS ${ITKEigen3_BINARY_DIR}/src)
7070
# Eigen3 targets are not installed if ITK_USE_SYSTEM_EIGEN==True
7171
itk_module_impl()
7272

73-
configure_file(src/itk_eigen.h.in src/itk_eigen.h)
73+
if(NOT ITK_LEGACY_REMOVE)
74+
configure_file(src/itk_eigen.h.in src/itk_eigen.h)
75+
install(
76+
FILES
77+
${ITKEigen3_BINARY_DIR}/src/itk_eigen.h
78+
DESTINATION ${ITKEigen3_INSTALL_INCLUDE_DIR}
79+
COMPONENT Development
80+
)
81+
endif()
82+
83+
# Generate a wrapper header for every Eigen module header so that
84+
# consumers can write #include "Eigen/Core" etc. and get either the
85+
# bundled or system Eigen header transparently.
86+
set(
87+
_eigen_module_headers
88+
Cholesky
89+
CholmodSupport
90+
Core
91+
Dense
92+
Eigen
93+
Eigenvalues
94+
Geometry
95+
Householder
96+
IterativeLinearSolvers
97+
Jacobi
98+
LU
99+
MetisSupport
100+
OrderingMethods
101+
PaStiXSupport
102+
PardisoSupport
103+
QR
104+
QtAlignedMalloc
105+
SPQRSupport
106+
SVD
107+
Sparse
108+
SparseCholesky
109+
SparseCore
110+
SparseLU
111+
SparseQR
112+
StdDeque
113+
StdList
114+
StdVector
115+
SuperLUSupport
116+
UmfPackSupport
117+
)
118+
set(
119+
_eigen_header_content
120+
[=[/* Auto-generated by CMake – do not edit. */
121+
#ifndef itk_eigen_@EIGEN_HEADER_NAME@
122+
#define itk_eigen_@EIGEN_HEADER_NAME@
123+
124+
/* Use the Eigen3 library configured for ITK. */
125+
#cmakedefine ITK_USE_SYSTEM_EIGEN
126+
#ifdef ITK_USE_SYSTEM_EIGEN
127+
# include <Eigen/@EIGEN_HEADER_NAME@>
128+
#else
129+
# include "itkeigen/Eigen/@EIGEN_HEADER_NAME@"
130+
#endif
131+
132+
#endif
133+
]=]
134+
)
135+
136+
foreach(_header IN LISTS _eigen_module_headers)
137+
set(EIGEN_HEADER_NAME "${_header}")
138+
file(
139+
CONFIGURE
140+
OUTPUT "${ITKEigen3_BINARY_DIR}/src/itk_${_header}"
141+
CONTENT "${_eigen_header_content}"
142+
@ONLY
143+
)
144+
list(
145+
APPEND
146+
_generated_eigen_headers
147+
"${ITKEigen3_BINARY_DIR}/src/itk_${_header}"
148+
)
149+
endforeach()
74150
install(
75151
FILES
76-
${ITKEigen3_BINARY_DIR}/src/itk_eigen.h
152+
${_generated_eigen_headers}
77153
DESTINATION ${ITKEigen3_INSTALL_INCLUDE_DIR}
78154
COMPONENT Development
79155
)

Modules/ThirdParty/Eigen3/src/itk_eigen.h.in

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,8 @@
1919
#ifndef itk_eigen_h
2020
#define itk_eigen_h
2121

22+
23+
2224
/* Usage:
2325
* ITK_EIGEN(Eigenvalues)
2426
* If using a Eigen3 header containing non MPL2 code

0 commit comments

Comments
 (0)