summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorChuck Atkins <chuck.atkins@kitware.com>2018-08-27 18:57:17 (GMT)
committerBrad King <brad.king@kitware.com>2018-10-10 13:53:58 (GMT)
commit7772bd31f57fd8b4d6a7937a97671eb34c966835 (patch)
treee77c4792444adbd75dcfedf23989f10d843503cf
parent3e5548784da085ee3a5ce3f7213c0cf281b68f31 (diff)
downloadCMake-7772bd31f57fd8b4d6a7937a97671eb34c966835.zip
CMake-7772bd31f57fd8b4d6a7937a97671eb34c966835.tar.gz
CMake-7772bd31f57fd8b4d6a7937a97671eb34c966835.tar.bz2
FindMatlab: Guard against nonexistent installation
Logic added by commit v3.12.0-rc1~183^2 (FindMatlab: Matlab Runtime Compiler support, 2017-04-29) assumes that `VersionInfo.xml` exists in the installation. Fix it to tolerate a missing or empty file. This change was originally made by commit v3.13.0-rc1~173^2 (FindMatlab: Guard against nonexistent installation, 2018-08-27). Here we backport it to the 3.12.x series. Fixes: #18436
-rw-r--r--Modules/FindMatlab.cmake26
1 files changed, 14 insertions, 12 deletions
diff --git a/Modules/FindMatlab.cmake b/Modules/FindMatlab.cmake
index 2d04b84..d765bdf 100644
--- a/Modules/FindMatlab.cmake
+++ b/Modules/FindMatlab.cmake
@@ -1163,21 +1163,24 @@ function(_Matlab_get_version_from_root matlab_root matlab_or_mcr matlab_known_ve
# return the updated value
set(${matlab_final_version} ${Matlab_VERSION_STRING_INTERNAL} PARENT_SCOPE)
- else()
+ elseif(EXISTS "${matlab_root}/VersionInfo.xml")
# MCR
# we cannot run anything in order to extract the version. We assume that the file
# VersionInfo.xml exists under the MatlabRoot, we look for it and extract the version from there
set(_matlab_version_tmp "unknown")
file(STRINGS "${matlab_root}/VersionInfo.xml" versioninfo_string NEWLINE_CONSUME)
- # parses "<version>9.2.0.538062</version>"
- string(REGEX MATCH "<version>(.*)</version>"
- version_reg_match
- ${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}")
+
+ if(versioninfo_string)
+ # parses "<version>9.2.0.538062</version>"
+ string(REGEX MATCH "<version>(.*)</version>"
+ version_reg_match
+ ${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()
endif()
endif()
set(${matlab_final_version} "${_matlab_version_tmp}" PARENT_SCOPE)
@@ -1185,8 +1188,7 @@ function(_Matlab_get_version_from_root matlab_root matlab_or_mcr matlab_known_ve
"${_matlab_version_tmp}"
CACHE INTERNAL "Matlab (MCR) version (automatically determined)"
FORCE)
-
- endif() # Matlab or MCR
+ endif() # Matlab or MCR
endfunction()