@@ -58,6 +58,13 @@ option(GENERATE_PYTHON_STUBS
5858
5959option (BUILD_WITH_CHOLMOD_SUPPORT "Build EigenPy with the Cholmod support" OFF )
6060
61+ if (APPLE )
62+ option (BUILD_WITH_ACCELERATE_SUPPORT
63+ "Build EigenPy with the Accelerate support" OFF )
64+ else (APPLE )
65+ set (BUILD_WITH_ACCELERATE_SUPPORT FALSE )
66+ endif (APPLE )
67+
6168string (REPLACE "-pedantic" "" CMAKE_CXX_FLAGS ${CMAKE_CXX_FLAGS} )
6269
6370# If needed, fix CMake policy for APPLE systems
@@ -112,6 +119,24 @@ if(BUILD_WITH_CHOLMOD_SUPPORT)
112119 add_definitions (-DEIGENPY_WITH_CHOLMOD_SUPPORT)
113120endif (BUILD_WITH_CHOLMOD_SUPPORT)
114121
122+ if (BUILD_WITH_ACCELERATE_SUPPORT)
123+ if (NOT ${Eigen3_VERSION} VERSION_GREATER_EQUAL "3.4.90" )
124+ message (
125+ FATAL_ERROR
126+ "Your version of Eigen is too low. Should be at least 3.4.90. Current version is ${Eigen3_VERSION} ."
127+ )
128+ endif ()
129+
130+ set (CMAKE_MODULE_PATH ${JRL_CMAKE_MODULES} /find -external/Accelerate
131+ ${CMAKE_MODULE_PATH} )
132+ add_project_dependency(
133+ Accelerate REQUIRED # FIND_EXTERNAL "Accelerate" # We don't export yet as
134+ # there might be an issue on AMR64 platforms
135+ )
136+ message (STATUS "Build with Accelerate support framework." )
137+ add_definitions (-DEIGENPY_WITH_ACCELERATE_SUPPORT)
138+ endif (BUILD_WITH_ACCELERATE_SUPPORT)
139+
115140# ----------------------------------------------------
116141# --- INCLUDE ----------------------------------------
117142# ----------------------------------------------------
@@ -139,6 +164,9 @@ set(${PROJECT_NAME}_DECOMPOSITIONS_SPARSE_CHOLMOD_HEADERS
139164 include /eigenpy/decompositions/sparse/cholmod/CholmodSimplicialLLT.hpp
140165 include /eigenpy/decompositions/sparse/cholmod/CholmodSupernodalLLT.hpp)
141166
167+ set (${PROJECT_NAME} _DECOMPOSITIONS_SPARSE_ACCELERATE_HEADERS
168+ include /eigenpy/decompositions/sparse/accelerate/accelerate.hpp)
169+
142170set (${PROJECT_NAME} _DECOMPOSITIONS_SPARSE_HEADERS
143171 include /eigenpy/decompositions/sparse/LLT.hpp
144172 include /eigenpy/decompositions/sparse/LDLT.hpp
@@ -150,6 +178,11 @@ if(BUILD_WITH_CHOLMOD_SUPPORT)
150178 ${${PROJECT_NAME} _DECOMPOSITIONS_SPARSE_CHOLMOD_HEADERS})
151179endif (BUILD_WITH_CHOLMOD_SUPPORT)
152180
181+ if (BUILD_WITH_ACCELERATE_SUPPORT)
182+ list (APPEND ${PROJECT_NAME} _DECOMPOSITIONS_SPARSE_HEADERS
183+ ${${PROJECT_NAME} _DECOMPOSITIONS_SPARSE_ACCELERATE_HEADERS})
184+ endif (BUILD_WITH_ACCELERATE_SUPPORT)
185+
153186set (${PROJECT_NAME} _DECOMPOSITIONS_HEADERS
154187 ${${PROJECT_NAME} _DECOMPOSITIONS_SPARSE_HEADERS}
155188 include /eigenpy/decompositions/decompositions.hpp
@@ -229,6 +262,11 @@ if(BUILD_WITH_CHOLMOD_SUPPORT)
229262 src/decompositions/cholmod.cpp)
230263endif (BUILD_WITH_CHOLMOD_SUPPORT)
231264
265+ if (BUILD_WITH_ACCELERATE_SUPPORT)
266+ list (APPEND ${PROJECT_NAME} _DECOMPOSITIONS_SOURCES
267+ src/decompositions/accelerate.cpp)
268+ endif (BUILD_WITH_ACCELERATE_SUPPORT)
269+
232270set (${PROJECT_NAME} _SOURCES
233271 ${${PROJECT_NAME} _SOLVERS_SOURCES}
234272 ${${PROJECT_NAME} _DECOMPOSITIONS_SOURCES}
@@ -280,10 +318,19 @@ modernize_target_link_libraries(
280318 ${NUMPY_INCLUDE_DIRS}
281319 ${PYTHON_INCLUDE_DIR} )
282320
321+ # Links against CholMod
283322if (BUILD_WITH_CHOLMOD_SUPPORT)
284323 modernize_target_link_libraries(${PROJECT_NAME} SCOPE PUBLIC TARGETS
285324 CHOLMOD::CHOLMOD)
286325endif (BUILD_WITH_CHOLMOD_SUPPORT)
326+
327+ # Links against accelerate
328+ if (BUILD_WITH_ACCELERATE_SUPPORT)
329+ # modernize_target_link_libraries(${PROJECT_NAME} SCOPE PUBLIC TARGETS
330+ # Accelerate)
331+ target_link_libraries (${PROJECT_NAME} PRIVATE "-framework accelerate" )
332+ endif (BUILD_WITH_ACCELERATE_SUPPORT)
333+
287334if (SUFFIX_SO_VERSION)
288335 set_target_properties (${PROJECT_NAME} PROPERTIES SOVERSION ${PROJECT_VERSION} )
289336endif (SUFFIX_SO_VERSION)
0 commit comments