mirror of
https://github.com/Kitware/CMake.git
synced 2026-07-05 14:17:28 +00:00
FindMatlab: simplify several if()-constructs
This commit is contained in:
committed by
Rolf Eike Beer
parent
51bcdeb17f
commit
56e89e50d3
@@ -224,6 +224,9 @@ Reference
|
||||
this list.
|
||||
#]=======================================================================]
|
||||
|
||||
cmake_policy(PUSH)
|
||||
cmake_policy(SET CMP0057 NEW) # if IN_LIST
|
||||
|
||||
set(_FindMatlab_SELF_DIR "${CMAKE_CURRENT_LIST_DIR}")
|
||||
|
||||
include(${CMAKE_CURRENT_LIST_DIR}/FindPackageHandleStandardArgs.cmake)
|
||||
@@ -395,7 +398,7 @@ function(matlab_extract_all_installed_versions_from_registry win64 matlab_versio
|
||||
)
|
||||
|
||||
|
||||
if(${resultMatlab} EQUAL 0)
|
||||
if(resultMatlab EQUAL 0)
|
||||
|
||||
string(
|
||||
REGEX MATCHALL "MATLAB\\\\([0-9]+(\\.[0-9]+)?)"
|
||||
@@ -612,9 +615,10 @@ function(matlab_get_mex_suffix matlab_root mex_suffix)
|
||||
OUTPUT_VARIABLE _matlab_mex_extension
|
||||
#RESULT_VARIABLE _matlab_mex_extension_call
|
||||
ERROR_VARIABLE _matlab_mex_extension_error
|
||||
OUTPUT_STRIP_TRAILING_WHITESPACE
|
||||
${devnull})
|
||||
|
||||
if(NOT "${_matlab_mex_extension_error}" STREQUAL "")
|
||||
if(_matlab_mex_extension_error)
|
||||
if(WIN32)
|
||||
# this is only for intel architecture
|
||||
if(CMAKE_SIZEOF_VOID_P EQUAL 8)
|
||||
@@ -700,7 +704,7 @@ function(matlab_get_version_from_matlab_run matlab_binary_program matlab_list_ve
|
||||
${devnull}
|
||||
)
|
||||
|
||||
if("${_matlab_result_version_call}" MATCHES "timeout")
|
||||
if(_matlab_result_version_call MATCHES "timeout")
|
||||
if(MATLAB_FIND_DEBUG)
|
||||
message(WARNING "[MATLAB] Unable to determine the version of Matlab."
|
||||
" Matlab call timed out after 120 seconds.")
|
||||
@@ -955,14 +959,14 @@ function(matlab_add_mex)
|
||||
set(${prefix}_OUTPUT_NAME ${${prefix}_NAME})
|
||||
endif()
|
||||
|
||||
if(NOT ${Matlab_VERSION_STRING} VERSION_LESS "9.1") # For 9.1 (R2016b) and newer, add version source file
|
||||
if(NOT Matlab_VERSION_STRING VERSION_LESS "9.1") # For 9.1 (R2016b) and newer, add version source file
|
||||
# TODO: check the file extensions in ${${prefix}_SRC} to see if they're C or C++ files
|
||||
# Currently, the C and C++ versions of the version files are identical, so this doesn't matter.
|
||||
set(MEX_VERSION_FILE "${Matlab_ROOT_DIR}/extern/version/c_mexapi_version.c")
|
||||
#set(MEX_VERSION_FILE "${Matlab_ROOT_DIR}/extern/version/cpp_mexapi_version.cpp")
|
||||
endif()
|
||||
|
||||
if(NOT ${Matlab_VERSION_STRING} VERSION_LESS "9.4") # For 9.4 (R2018a) and newer, add API macro
|
||||
if(NOT Matlab_VERSION_STRING VERSION_LESS "9.4") # For 9.4 (R2018a) and newer, add API macro
|
||||
if(${${prefix}_R2018a})
|
||||
set(MEX_API_MACRO "MATLAB_DEFAULT_RELEASE=R2018a")
|
||||
else()
|
||||
@@ -1023,7 +1027,7 @@ function(matlab_add_mex)
|
||||
if (MSVC)
|
||||
|
||||
set(_link_flags "${_link_flags} /EXPORT:mexFunction")
|
||||
if(NOT ${Matlab_VERSION_STRING} VERSION_LESS "9.1") # For 9.1 (R2016b) and newer, export version
|
||||
if(NOT Matlab_VERSION_STRING VERSION_LESS "9.1") # For 9.1 (R2016b) and newer, export version
|
||||
set(_link_flags "${_link_flags} /EXPORT:mexfilerequiredapiversion")
|
||||
endif()
|
||||
|
||||
@@ -1042,13 +1046,13 @@ function(matlab_add_mex)
|
||||
|
||||
else()
|
||||
|
||||
if(${Matlab_VERSION_STRING} VERSION_LESS "9.1") # For versions prior to 9.1 (R2016b)
|
||||
if(Matlab_VERSION_STRING VERSION_LESS "9.1") # For versions prior to 9.1 (R2016b)
|
||||
set(_ver_map_files ${Matlab_EXTERN_LIBRARY_DIR}/mexFunction.map)
|
||||
else() # For 9.1 (R2016b) and newer
|
||||
set(_ver_map_files ${Matlab_EXTERN_LIBRARY_DIR}/c_exportsmexfileversion.map)
|
||||
endif()
|
||||
|
||||
if(NOT ${Matlab_VERSION_STRING} VERSION_LESS "9.5") # For 9.5 (R2018b) (and newer?)
|
||||
if(NOT Matlab_VERSION_STRING VERSION_LESS "9.5") # For 9.5 (R2018b) (and newer?)
|
||||
target_compile_options(${${prefix}_NAME} PRIVATE "-fvisibility=default")
|
||||
# This one is weird, it might be a bug in <mex.h> for R2018b. When compiling with
|
||||
# -fvisibility=hidden, the symbol `mexFunction` cannot be exported. Reading the
|
||||
@@ -1112,14 +1116,14 @@ function(_Matlab_get_version_from_root matlab_root matlab_or_mcr matlab_known_ve
|
||||
# set(Matlab_PROG_VERSION_STRING_AUTO_DETECT "" CACHE INTERNAL "internal matlab location for the discovered version")
|
||||
#endif()
|
||||
|
||||
if(NOT ${matlab_known_version} STREQUAL "NOTFOUND")
|
||||
if(NOT matlab_known_version STREQUAL "NOTFOUND")
|
||||
# the version is known, we just return it
|
||||
set(${matlab_final_version} ${matlab_known_version} PARENT_SCOPE)
|
||||
set(Matlab_VERSION_STRING_INTERNAL ${matlab_known_version} CACHE INTERNAL "Matlab version (automatically determined)" FORCE)
|
||||
return()
|
||||
endif()
|
||||
|
||||
if("${matlab_or_mcr}" STREQUAL "UNKNOWN")
|
||||
if(matlab_or_mcr STREQUAL "UNKNOWN")
|
||||
if(MATLAB_FIND_DEBUG)
|
||||
message(WARNING "[MATLAB] Determining Matlab or MCR")
|
||||
endif()
|
||||
@@ -1134,10 +1138,10 @@ function(_Matlab_get_version_from_root matlab_root matlab_or_mcr matlab_known_ve
|
||||
|
||||
# default fallback to Matlab
|
||||
set(matlab_or_mcr "MATLAB")
|
||||
if(NOT "${CMAKE_MATCH_1}" STREQUAL "")
|
||||
if(NOT CMAKE_MATCH_1 STREQUAL "")
|
||||
string(TOLOWER "${CMAKE_MATCH_1}" product_reg_match)
|
||||
|
||||
if("${product_reg_match}" STREQUAL "matlab runtime")
|
||||
if(product_reg_match STREQUAL "matlab runtime")
|
||||
set(matlab_or_mcr "MCR")
|
||||
endif()
|
||||
endif()
|
||||
@@ -1151,7 +1155,7 @@ function(_Matlab_get_version_from_root matlab_root matlab_or_mcr matlab_known_ve
|
||||
# UNKNOWN is the default behaviour in case we
|
||||
# - have an erroneous matlab_root
|
||||
# - have an initial 'UNKNOWN'
|
||||
if("${matlab_or_mcr}" STREQUAL "MATLAB" OR "${matlab_or_mcr}" STREQUAL "UNKNOWN")
|
||||
if(matlab_or_mcr STREQUAL "MATLAB" OR matlab_or_mcr STREQUAL "UNKNOWN")
|
||||
# MATLAB versions
|
||||
set(_matlab_current_program ${Matlab_MAIN_PROGRAM})
|
||||
|
||||
@@ -1203,7 +1207,7 @@ function(_Matlab_get_version_from_root matlab_root matlab_or_mcr matlab_known_ve
|
||||
matlab_get_version_from_matlab_run("${Matlab_PROG_VERSION_STRING_AUTO_DETECT}" matlab_list_of_all_versions)
|
||||
|
||||
list(LENGTH matlab_list_of_all_versions list_of_all_versions_length)
|
||||
if(${list_of_all_versions_length} GREATER 0)
|
||||
if(list_of_all_versions_length GREATER 0)
|
||||
list(GET matlab_list_of_all_versions 0 _matlab_version_tmp)
|
||||
else()
|
||||
set(_matlab_version_tmp "unknown")
|
||||
@@ -1213,7 +1217,7 @@ function(_Matlab_get_version_from_root matlab_root matlab_or_mcr matlab_known_ve
|
||||
set(Matlab_VERSION_STRING_INTERNAL ${_matlab_version_tmp} CACHE INTERNAL "Matlab version (automatically determined)" FORCE)
|
||||
|
||||
# warning, just in case several versions found (should not happen)
|
||||
if((${list_of_all_versions_length} GREATER 1) AND MATLAB_FIND_DEBUG)
|
||||
if((list_of_all_versions_length GREATER 1) AND MATLAB_FIND_DEBUG)
|
||||
message(WARNING "[MATLAB] Found several versions, taking the first one (versions found ${matlab_list_of_all_versions})")
|
||||
endif()
|
||||
|
||||
@@ -1233,10 +1237,8 @@ function(_Matlab_get_version_from_root matlab_root matlab_or_mcr matlab_known_ve
|
||||
${versioninfo_string}
|
||||
)
|
||||
|
||||
if(NOT "${version_reg_match}" STREQUAL "")
|
||||
if("${CMAKE_MATCH_1}" MATCHES "(([0-9])\\.([0-9]))[\\.0-9]*")
|
||||
set(_matlab_version_tmp "${CMAKE_MATCH_1}")
|
||||
endif()
|
||||
if(CMAKE_MATCH_1 MATCHES "(([0-9])\\.([0-9]))[\\.0-9]*")
|
||||
set(_matlab_version_tmp "${CMAKE_MATCH_1}")
|
||||
endif()
|
||||
endif()
|
||||
set(${matlab_final_version} "${_matlab_version_tmp}" PARENT_SCOPE)
|
||||
@@ -1615,8 +1617,7 @@ list(APPEND _matlab_required_variables Matlab_MEX_EXTENSION)
|
||||
list(APPEND _matlab_required_variables Matlab_ROOT_DIR)
|
||||
|
||||
# component Mex Compiler
|
||||
list(FIND Matlab_FIND_COMPONENTS MEX_COMPILER _matlab_find_mex_compiler)
|
||||
if(_matlab_find_mex_compiler GREATER -1)
|
||||
if("MEX_COMPILER" IN_LIST Matlab_FIND_COMPONENTS)
|
||||
find_program(
|
||||
Matlab_MEX_COMPILER
|
||||
"mex"
|
||||
@@ -1628,11 +1629,9 @@ if(_matlab_find_mex_compiler GREATER -1)
|
||||
set(Matlab_MEX_COMPILER_FOUND TRUE)
|
||||
endif()
|
||||
endif()
|
||||
unset(_matlab_find_mex_compiler)
|
||||
|
||||
# component Matlab program
|
||||
list(FIND Matlab_FIND_COMPONENTS MAIN_PROGRAM _matlab_find_matlab_program)
|
||||
if(_matlab_find_matlab_program GREATER -1)
|
||||
if("MAIN_PROGRAM" IN_LIST Matlab_FIND_COMPONENTS)
|
||||
find_program(
|
||||
Matlab_MAIN_PROGRAM
|
||||
matlab
|
||||
@@ -1644,7 +1643,6 @@ if(_matlab_find_matlab_program GREATER -1)
|
||||
set(Matlab_MAIN_PROGRAM_FOUND TRUE)
|
||||
endif()
|
||||
endif()
|
||||
unset(_matlab_find_matlab_program)
|
||||
|
||||
# The MX library is required
|
||||
_Matlab_find_library(
|
||||
@@ -1792,3 +1790,5 @@ if(Matlab_INCLUDE_DIRS AND Matlab_LIBRARIES)
|
||||
Matlab_MEX_EXTENSION
|
||||
)
|
||||
endif()
|
||||
|
||||
cmake_policy(POP)
|
||||
|
||||
Reference in New Issue
Block a user