diff options
author | scivision <scivision@users.noreply.github.com> | 2023-01-12 14:37:46 (GMT) |
---|---|---|
committer | scivision <scivision@users.noreply.github.com> | 2023-01-12 14:47:09 (GMT) |
commit | 1bc9b0f256dc65d43a994ac2307775151f194c72 (patch) | |
tree | 72f2e4c61b319a7e41cbc61fa5b124ff006baaa5 /Modules | |
parent | 8dcd14bb8725385a03418f030c7f4f77a9b4309f (diff) | |
download | CMake-1bc9b0f256dc65d43a994ac2307775151f194c72.zip CMake-1bc9b0f256dc65d43a994ac2307775151f194c72.tar.gz CMake-1bc9b0f256dc65d43a994ac2307775151f194c72.tar.bz2 |
FindMatlab: accommodate Matlab running under Rosetta
fixes #24312
Diffstat (limited to 'Modules')
-rw-r--r-- | Modules/FindMatlab.cmake | 27 |
1 files changed, 14 insertions, 13 deletions
diff --git a/Modules/FindMatlab.cmake b/Modules/FindMatlab.cmake index 9459e74..8bb402c 100644 --- a/Modules/FindMatlab.cmake +++ b/Modules/FindMatlab.cmake @@ -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() |