Skip to content

Commit

Permalink
Merge pull request #4265 from phcerdan/update_eigen_to_master
Browse files Browse the repository at this point in the history
  • Loading branch information
phcerdan authored Nov 19, 2023
2 parents 8844ee6 + f79ec64 commit 5d494b0
Show file tree
Hide file tree
Showing 393 changed files with 36,290 additions and 14,973 deletions.
58 changes: 40 additions & 18 deletions CMake/itkExternal_Eigen3.cmake
Original file line number Diff line number Diff line change
Expand Up @@ -3,16 +3,31 @@
include(ITK_CheckCCompilerFlag)

set(_additional_external_project_args)
if(APPLE)
if(DEFINED CMAKE_APPLE_SILICON_PROCESSOR)
list(APPEND _additional_external_project_args
-DCMAKE_APPLE_SILICON_PROCESSOR:STRING=${CMAKE_APPLE_SILICON_PROCESSOR})
endif()
endif()

if(NOT CMAKE_CONFIGURATION_TYPES)
list(APPEND _additional_external_project_args
-DCMAKE_BUILD_TYPE:STRING=Release)
endif()

if(CMAKE_SH AND CMAKE_VERSION VERSION_LESS "3.17.0")
# Setting CMAKE_SH is required when using "MinGW Makefiles" generator with CMake < 3.17
# See https://github.com/InsightSoftwareConsortium/ITK/issues/66#issuecomment-424374973
list(APPEND _additional_external_project_args
-DCMAKE_SH:PATH=${CMAKE_SH})
endif()

# Because the header-only nature of Eigen3, EIGEN_MPL2_ONLY definition could be leaked outside ITK.
# This would wrongly enforce EIGEN_MPL2_ONLY to other libraries using Eigen.
# We wrap this definition in ITK_USE_EIGEN_MPL2_ONLY, and only enabling it internally in the dashboards and CI,
# to avoid introducing GPL code from Eigen3 internally in ITK.
option(ITK_USE_EIGEN_MPL2_ONLY "Set compile definition EIGEN_MPL2_ONLY for ITKInternalEigen3." OFF)
mark_as_advanced(ITK_USE_EIGEN_MPL2_ONLY)
if(ITK_USE_EIGEN_MPL2_ONLY)
list(APPEND _additional_external_project_args "-DITK_USE_EIGEN_MPL2_ONLY:BOOL=ON")
endif()

if(ITK_USE_SYSTEM_EIGEN)
find_package(Eigen3)
Expand All @@ -36,33 +51,40 @@ else()
# However, generators and c,cxx compilers have to be explicitly passed
# for CMake configuration to work.
# Configure Eigen
file(MAKE_DIRECTORY ${_eigen3_build_dir})
execute_process(
COMMAND
${CMAKE_COMMAND} ${_eigen3_source_dir} "-DCMAKE_APPLE_SILICON_PROCESSOR=${CMAKE_APPLE_SILICON_PROCESSOR}"
"-DCMAKE_INSTALL_PREFIX=${_eigen3_cmake_install_prefix}"
"-DCMAKE_INSTALL_INCLUDEDIR=${_eigen3_cmake_install_includedir}"
"-DCMAKE_INSTALL_DATADIR=${_eigen3_cmake_install_datadir}" "-DCMAKE_GENERATOR=${CMAKE_GENERATOR}"
"-DCMAKE_SH=${CMAKE_SH}" "-DCMAKE_GENERATOR_TOOLSET=${CMAKE_GENERATOR_TOOLSET}" "-DCMAKE_SH=${CMAKE_SH}"
"-DCMAKE_GENERATOR_PLATFORM=${CMAKE_GENERATOR_PLATFORM}" "-DCMAKE_GENERATOR_INSTANCE=${CMAKE_GENERATOR_INSTANCE}"
"-DCMAKE_C_COMPILER=${CMAKE_C_COMPILER}" "-DCMAKE_C_FLAGS=${CMAKE_C_FLAGS}"
"-DCMAKE_CXX_COMPILER=${CMAKE_CXX_COMPILER}" "-DCMAKE_CXX_FLAGS=${CMAKE_CXX_FLAGS}"
"-DCMAKE_OSX_ARCHITECTURES=${CMAKE_OSX_ARCHITECTURES}" "-DCMAKE_SYSTEM_VERSION=${CMAKE_SYSTEM_VERSION}"
${_additional_external_project_args}
WORKING_DIRECTORY ${_eigen3_build_dir}
${CMAKE_COMMAND}
-DCMAKE_SYSTEM_VERSION:STRING=${CMAKE_SYSTEM_VERSION}
-DCMAKE_GENERATOR:STRING=${CMAKE_GENERATOR}
-DCMAKE_GENERATOR_TOOLSET:STRING=${CMAKE_GENERATOR_TOOLSET}
-DCMAKE_GENERATOR_PLATFORM:STRING=${CMAKE_GENERATOR_PLATFORM}
-DCMAKE_GENERATOR_INSTANCE:STRING=${CMAKE_GENERATOR_INSTANCE}
-DCMAKE_C_COMPILER:PATH=${CMAKE_C_COMPILER}
-DCMAKE_C_FLAGS:STRING=${CMAKE_C_FLAGS}
-DCMAKE_CXX_COMPILER:PATH=${CMAKE_CXX_COMPILER}
-DCMAKE_CXX_FLAGS:STRING=${CMAKE_CXX_FLAGS}
-DCMAKE_OSX_ARCHITECTURES:STRING=${CMAKE_OSX_ARCHITECTURES}
-DCMAKE_INSTALL_PREFIX:PATH=${_eigen3_cmake_install_prefix}
-DCMAKE_INSTALL_INCLUDEDIR:PATH=${_eigen3_cmake_install_includedir}
-DCMAKE_INSTALL_DATADIR:PATH=${_eigen3_cmake_install_datadir}
-DITK_USE_EIGEN_MPL2_ONLY:BOOL=${ITK_USE_EIGEN_MPL2_ONLY}
${_additional_external_project_args}
-S ${_eigen3_source_dir}
-B ${_eigen3_build_dir}
OUTPUT_VARIABLE ITKEigen3Config_STDOUT
ERROR_VARIABLE ITKEigen3Config_STDERR)
ERROR_VARIABLE ITKEigen3Config_STDERR
)
set(ITKInternalEigen3_DIR ${_eigen3_build_dir})
find_package(ITKInternalEigen3)
if(NOT ITKInternalEigen3_FOUND)
message(
FATAL_ERROR
"ITKInternalEigen3 configuration faileed\nREPORT:\n${ITKEigen3Config_STDOUT}\n${ITKEigen3Config_STDERR}")
"ITKInternalEigen3 configuration failed\nREPORT:\n${ITKEigen3Config_STDOUT}\n${ITKEigen3Config_STDERR}")
endif()
install(
CODE "execute_process(
COMMAND
${CMAKE_COMMAND} --build . --target install
${CMAKE_COMMAND} --build . --config Release --target install
WORKING_DIRECTORY ${_eigen3_build_dir}
)"
COMPONENT Development)
Expand Down
6 changes: 2 additions & 4 deletions Modules/ThirdParty/Eigen3/UpdateFromUpstream.sh
Original file line number Diff line number Diff line change
Expand Up @@ -7,10 +7,8 @@ shopt -s dotglob
readonly name="Eigen3"
readonly ownership="Eigen Upstream <[email protected]>"
readonly subtree="Modules/ThirdParty/Eigen3/src/itkeigen"
# readonly repo="https://gitlab.com/libeigen/eigen"
# readonly repo="https://gitlab.kitware.com/third-party/eigen.git"
readonly repo="https://gitlab.kitware.com/phcerdan/eigen.git"
readonly tag="for/itk-3.4"
readonly repo="https://github.com/InsightSoftwareConsortium/eigen"
readonly tag="for/itk-20231108-master-4d54c43d"
readonly paths="
Eigen/Cholesky
Eigen/CholmodSupport
Expand Down
Loading

0 comments on commit 5d494b0

Please sign in to comment.