FindMatlab: accommodate Matlab running under Rosetta

fixes #24312
This commit is contained in:
scivision
2023-01-12 09:37:46 -05:00
parent 8dcd14bb87
commit 1bc9b0f256

View File

@@ -655,7 +655,7 @@ function(matlab_get_mex_suffix matlab_root mex_suffix)
endif()
# the program has been found?
if((NOT Matlab_MEXEXTENSIONS_PROG) OR (NOT EXISTS ${Matlab_MEXEXTENSIONS_PROG}))
if(NOT Matlab_MEXEXTENSIONS_PROG)
if(MATLAB_FIND_DEBUG)
message(WARNING "[MATLAB] Cannot found mexext program. Matlab root is ${matlab_root}")
endif()
@@ -706,7 +706,6 @@ function(matlab_get_mex_suffix matlab_root mex_suffix)
message(STATUS "[MATLAB] '${Matlab_MEXEXTENSIONS_PROG}' : determined extension '${_matlab_mex_extension}' and error string is '${_matlab_mex_extension_error}'")
endif()
unset(Matlab_MEXEXTENSIONS_PROG CACHE)
set(${mex_suffix} ${_matlab_mex_extension} PARENT_SCOPE)
endfunction()
@@ -1747,12 +1746,24 @@ else()
set(_matlab_64Build TRUE)
endif()
if(NOT DEFINED Matlab_MEX_EXTENSION)
set(_matlab_mex_extension "")
matlab_get_mex_suffix("${Matlab_ROOT_DIR}" _matlab_mex_extension)
# This variable goes to the cache.
set(Matlab_MEX_EXTENSION ${_matlab_mex_extension} CACHE STRING "Extensions for the mex targets (automatically given by Matlab)")
unset(_matlab_mex_extension)
endif()
if(APPLE)
set(_matlab_bin_prefix "mac") # i should be for intel
set(_matlab_bin_suffix_32bits "i")
if(CMAKE_SYSTEM_PROCESSOR STREQUAL "arm64")
if(CMAKE_SYSTEM_PROCESSOR STREQUAL "arm64" AND Matlab_MEX_EXTENSION MATCHES "a64$")
# native Apple Silicon Matlab
set(_matlab_bin_suffix_64bits "a64")
else()
# Intel Mac OR Apple Silicon using Rosetta for Matlab
set(_matlab_bin_suffix_64bits "i64")
endif()
elseif(UNIX)
@@ -1796,16 +1807,6 @@ endif()
unset(_matlab_64Build)
if(NOT DEFINED Matlab_MEX_EXTENSION)
set(_matlab_mex_extension "")
matlab_get_mex_suffix("${Matlab_ROOT_DIR}" _matlab_mex_extension)
# This variable goes to the cache.
set(Matlab_MEX_EXTENSION ${_matlab_mex_extension} CACHE STRING "Extensions for the mex targets (automatically given by Matlab)")
unset(_matlab_mex_extension)
endif()
if(MATLAB_FIND_DEBUG)
message(STATUS "[MATLAB] [DEBUG]_matlab_lib_prefix_for_search = ${_matlab_lib_prefix_for_search} | _matlab_lib_dir_for_search = ${_matlab_lib_dir_for_search}")
endif()