summaryrefslogtreecommitdiffstats
path: root/Modules
diff options
context:
space:
mode:
Diffstat (limited to 'Modules')
-rw-r--r--Modules/Compiler/LCC-C.cmake2
-rw-r--r--Modules/FindMatlab.cmake126
-rw-r--r--Modules/FindX11.cmake12
3 files changed, 78 insertions, 62 deletions
diff --git a/Modules/Compiler/LCC-C.cmake b/Modules/Compiler/LCC-C.cmake
index 99f791f..52c3bf3 100644
--- a/Modules/Compiler/LCC-C.cmake
+++ b/Modules/Compiler/LCC-C.cmake
@@ -33,4 +33,4 @@ if(CMAKE_C_COMPILER_VERSION VERSION_GREATER_EQUAL 1.26)
set(CMAKE_C17_EXTENSION_COMPILE_OPTION "-std=gnu17")
endif()
-__compiler_check_default_language_standard(C 1.23 90 1.20 11 1.26 17)
+__compiler_check_default_language_standard(C 1.17 89 1.23 99 1.26 17)
diff --git a/Modules/FindMatlab.cmake b/Modules/FindMatlab.cmake
index b90a45f..609cd4e 100644
--- a/Modules/FindMatlab.cmake
+++ b/Modules/FindMatlab.cmake
@@ -378,32 +378,21 @@ endmacro()
Returns the release name from the version of Matlab
#]=======================================================================]
-macro(matlab_get_release_name_from_version version release_name)
+function(matlab_get_release_name_from_version version release_name)
# only the major.minor version is used
- string(REGEX MATCH "([0-9]+\\.[0-9]+)" _match ${version})
- if(CMAKE_MATCH_1)
- set(short_version ${CMAKE_MATCH_1})
- else()
- set(short_version ${version})
- endif()
+ string(REGEX REPLACE "^([0-9]+\\.[0-9]+).*" "\\1" version "${version}")
- set(${release_name} "")
foreach(_var IN LISTS MATLAB_VERSIONS_MAPPING)
- string(REGEX MATCHALL "(.+)=${short_version}" _matched ${_var})
- if(NOT _matched STREQUAL "")
- set(${release_name} ${CMAKE_MATCH_1})
- break()
+ if(_var MATCHES "(.+)=${version}")
+ set(${release_name} ${CMAKE_MATCH_1} PARENT_SCOPE)
+ return()
endif()
endforeach()
- unset(_var)
- unset(_matched)
- if(${release_name} STREQUAL "")
- message(WARNING "[MATLAB] The version ${short_version} is not registered")
- endif()
+ message(WARNING "[MATLAB] The version ${version} is not registered")
-endmacro()
+endfunction()
# extracts all the supported release names (R2022b...) of Matlab
@@ -485,24 +474,22 @@ function(matlab_extract_all_installed_versions_from_registry win64 matlab_versio
)
if(_reg)
-
string(REGEX MATCHALL "([0-9]+\\.[0-9]+)" _versions_regex "${_reg}")
- foreach(match IN LISTS _versions_regex)
- string(REGEX MATCH "([0-9]+\\.[0-9]+)" current_match "${match}")
-
- if(NOT CMAKE_MATCH_1)
- continue()
- endif()
-
- cmake_host_system_information(RESULT _reg
- QUERY WINDOWS_REGISTRY "HKLM/SOFTWARE/Mathworks/${_installation_type}/${CMAKE_MATCH_1}"
- VALUE "MATLABROOT"
- )
-
- _Matlab_VersionInfoXML("${_reg}" _matlab_version_tmp)
- if(NOT "${_matlab_version_tmp}" STREQUAL "unknown")
- list(APPEND matlabs_from_registry ${_matlab_version_tmp})
+ foreach(_match IN LISTS _versions_regex)
+ if(_match MATCHES "([0-9]+\\.[0-9]+)")
+ cmake_host_system_information(RESULT _reg
+ QUERY WINDOWS_REGISTRY "HKLM/SOFTWARE/Mathworks/${_installation_type}/${CMAKE_MATCH_1}"
+ VALUE "MATLABROOT"
+ VIEW ${_view}
+ )
+
+ _Matlab_VersionInfoXML("${_reg}" _matlab_version_tmp)
+ if("${_matlab_version_tmp}" STREQUAL "unknown")
+ list(APPEND matlabs_from_registry ${_match})
+ else()
+ list(APPEND matlabs_from_registry ${_matlab_version_tmp})
+ endif()
endif()
endforeach()
@@ -558,42 +545,58 @@ function(matlab_get_all_valid_matlab_roots_from_registry matlab_versions matlab_
# extract_matlab_versions_from_registry_brute_force or
# matlab_extract_all_installed_versions_from_registry.
+ # only the major.minor version is used in Mathworks Windows Registry keys
+ list(TRANSFORM matlab_versions REPLACE "^([0-9]+\\.[0-9]+).*" "\\1")
+
set(_matlab_roots_list )
# check for Matlab installations
foreach(_matlab_current_version IN LISTS matlab_versions)
- get_filename_component(
- current_MATLAB_ROOT
- "[HKEY_LOCAL_MACHINE\\SOFTWARE\\MathWorks\\MATLAB\\${_matlab_current_version};MATLABROOT]"
- ABSOLUTE)
+ cmake_host_system_information(RESULT current_MATLAB_ROOT
+ QUERY WINDOWS_REGISTRY "HKLM/SOFTWARE/Mathworks/MATLAB/${_matlab_current_version}"
+ VALUE "MATLABROOT"
+ )
+ cmake_path(CONVERT "${current_MATLAB_ROOT}" TO_CMAKE_PATH_LIST current_MATLAB_ROOT)
if(IS_DIRECTORY "${current_MATLAB_ROOT}")
- list(APPEND _matlab_roots_list "MATLAB" ${_matlab_current_version} ${current_MATLAB_ROOT})
+ _Matlab_VersionInfoXML("${current_MATLAB_ROOT}" _matlab_version_tmp)
+ if("${_matlab_version_tmp}" STREQUAL "unknown")
+ list(APPEND _matlab_roots_list "MATLAB" ${_matlab_current_version} ${current_MATLAB_ROOT})
+ else()
+ list(APPEND _matlab_roots_list "MATLAB" ${_matlab_version_tmp} ${current_MATLAB_ROOT})
+ endif()
endif()
endforeach()
# Check for MCR installations
foreach(_matlab_current_version IN LISTS matlab_versions)
- get_filename_component(
- current_MATLAB_ROOT
- "[HKEY_LOCAL_MACHINE\\SOFTWARE\\MathWorks\\MATLAB Runtime\\${_matlab_current_version};MATLABROOT]"
- ABSOLUTE)
+ cmake_host_system_information(RESULT current_MATLAB_ROOT
+ QUERY WINDOWS_REGISTRY "HKLM/SOFTWARE/Mathworks/MATLAB Runtime/${_matlab_current_version}"
+ VALUE "MATLABROOT"
+ )
+ cmake_path(CONVERT "${current_MATLAB_ROOT}" TO_CMAKE_PATH_LIST current_MATLAB_ROOT)
# remove the dot
string(REPLACE "." "" _matlab_current_version_without_dot "${_matlab_current_version}")
if(IS_DIRECTORY "${current_MATLAB_ROOT}")
- list(APPEND _matlab_roots_list "MCR" ${_matlab_current_version} "${current_MATLAB_ROOT}/v${_matlab_current_version_without_dot}")
+ _Matlab_VersionInfoXML("${current_MATLAB_ROOT}" _matlab_version_tmp)
+ if("${_matlab_version_tmp}" STREQUAL "unknown")
+ list(APPEND _matlab_roots_list "MCR" ${_matlab_current_version} "${current_MATLAB_ROOT}/v${_matlab_current_version_without_dot}")
+ else()
+ list(APPEND _matlab_roots_list "MCR" ${_matlab_version_tmp} "${current_MATLAB_ROOT}/v${_matlab_current_version_without_dot}")
+ endif()
endif()
endforeach()
# Check for old MCR installations
foreach(_matlab_current_version IN LISTS matlab_versions)
- get_filename_component(
- current_MATLAB_ROOT
- "[HKEY_LOCAL_MACHINE\\SOFTWARE\\MathWorks\\MATLAB Compiler Runtime\\${_matlab_current_version};MATLABROOT]"
- ABSOLUTE)
+ cmake_host_system_information(RESULT current_MATLAB_ROOT
+ QUERY WINDOWS_REGISTRY "HKLM/SOFTWARE/Mathworks/MATLAB Compiler Runtime/${_matlab_current_version}"
+ VALUE "MATLABROOT"
+ )
+ cmake_path(CONVERT "${current_MATLAB_ROOT}" TO_CMAKE_PATH_LIST current_MATLAB_ROOT)
# remove the dot
string(REPLACE "." "" _matlab_current_version_without_dot "${_matlab_current_version}")
@@ -1409,20 +1412,11 @@ function(_Matlab_VersionInfoXML matlab_root _version)
set(_ver "unknown")
set(_XMLfile ${matlab_root}/VersionInfo.xml)
- if(NOT EXISTS ${_XMLfile})
- return()
- endif()
+ if(EXISTS ${_XMLfile})
+ file(READ ${_XMLfile} versioninfo_string)
- file(READ ${_XMLfile} versioninfo_string)
-
- if(versioninfo_string)
# parses "<version>23.2.0.2365128</version>"
- string(REGEX MATCH "<version>([0-9]+(\\.[0-9]+)+)</version>"
- version_reg_match
- ${versioninfo_string}
- )
-
- if(CMAKE_MATCH_1)
+ if(versioninfo_string MATCHES "<version>([0-9]+(\\.[0-9]+)+)</version>")
set(_ver "${CMAKE_MATCH_1}")
endif()
endif()
@@ -1634,7 +1628,17 @@ set(Matlab_VERSION_STRING "NOTFOUND")
set(Matlab_Or_MCR "UNKNOWN")
if(_numbers_of_matlab_roots GREATER 0)
if(Matlab_FIND_VERSION_EXACT)
- list(FIND _matlab_possible_roots ${Matlab_FIND_VERSION} _list_index)
+ set(_list_index -1)
+ foreach(_matlab_root_index RANGE 1 ${_numbers_of_matlab_roots} 3)
+ list(GET _matlab_possible_roots ${_matlab_root_index} _matlab_root_version)
+ # only the major.minor version is used
+ string(REGEX REPLACE "^([0-9]+\\.[0-9]+).*" "\\1" _matlab_root_version "${_matlab_root_version}")
+ if(_matlab_root_version VERSION_EQUAL Matlab_FIND_VERSION)
+ set(_list_index ${_matlab_root_index})
+ break()
+ endif()
+ endforeach()
+
if(_list_index LESS 0)
set(_list_index 1)
endif()
diff --git a/Modules/FindX11.cmake b/Modules/FindX11.cmake
index 1047e4f..491ea46 100644
--- a/Modules/FindX11.cmake
+++ b/Modules/FindX11.cmake
@@ -89,6 +89,7 @@ and also the following more fine grained variables and targets:
X11_Xutil_INCLUDE_PATH, X11_Xutil_FOUND, X11::Xutil
X11_Xv_INCLUDE_PATH, X11_Xv_LIB, X11_Xv_FOUND, X11::Xv
X11_dpms_INCLUDE_PATH, (in X11_Xext_LIB), X11_dpms_FOUND
+ X11_Xdbe_INCLUDE_PATH, (in X11_Xext_LIB), X11_Xdbe_FOUND
X11_XShm_INCLUDE_PATH, (in X11_Xext_LIB), X11_XShm_FOUND
X11_Xshape_INCLUDE_PATH, (in X11_Xext_LIB), X11_Xshape_FOUND
X11_XSync_INCLUDE_PATH, (in X11_Xext_LIB), X11_XSync_FOUND
@@ -121,6 +122,10 @@ and also the following more fine grained variables and targets:
``xcb_shm``, ``xcb_sync``, ``xcb_xf86dri``, ``xcb_xinerama``, ``xcb_xinput``,
``xcb_xrm``, ``xcb_xvmc``, and ``xcb_xv`` libraries.
+.. versionadded:: 3.29
+ Added coverage of double buffer extension (variables
+ ``X11_Xdbe_INCLUDE_PATH`` and ``X11_Xdbe_FOUND``).
+
#]=======================================================================]
if (UNIX)
@@ -200,6 +205,7 @@ if (UNIX)
find_path(X11_Xcomposite_INCLUDE_PATH X11/extensions/Xcomposite.h ${X11_INC_SEARCH_PATH})
find_path(X11_Xcursor_INCLUDE_PATH X11/Xcursor/Xcursor.h ${X11_INC_SEARCH_PATH})
find_path(X11_Xdamage_INCLUDE_PATH X11/extensions/Xdamage.h ${X11_INC_SEARCH_PATH})
+ find_path(X11_Xdbe_INCLUDE_PATH X11/extensions/Xdbe.h ${X11_INC_SEARCH_PATH})
find_path(X11_Xdmcp_INCLUDE_PATH X11/Xdmcp.h ${X11_INC_SEARCH_PATH})
find_path(X11_Xext_INCLUDE_PATH X11/extensions/Xext.h ${X11_INC_SEARCH_PATH})
find_path(X11_dpms_INCLUDE_PATH X11/extensions/dpms.h ${X11_INC_SEARCH_PATH})
@@ -643,6 +649,11 @@ if (UNIX)
set(X11_Xaw_FOUND TRUE)
endif()
+ if (X11_Xdbe_INCLUDE_PATH)
+ set(X11_Xdbe_FOUND TRUE)
+ list(APPEND X11_INCLUDE_DIR ${X11_Xdbe_INCLUDE_PATH})
+ endif ()
+
# Most of the X11 headers will be in the same directories, avoid
# creating a huge list of duplicates.
if (X11_INCLUDE_DIR)
@@ -1358,6 +1369,7 @@ if (UNIX)
X11_XSync_INCLUDE_PATH
X11_Xaw_LIB
X11_Xaw_INCLUDE_PATH
+ X11_Xdbe_INCLUDE_PATH
)
set(CMAKE_FIND_FRAMEWORK ${CMAKE_FIND_FRAMEWORK_SAVE})
set(CMAKE_REQUIRED_QUIET ${CMAKE_REQUIRED_QUIET_SAVE})