Skip to content
Merged
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
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
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)
Comment thread
phcerdan marked this conversation as resolved.
Outdated
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 <kwrobot@kitware.com>"
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