summaryrefslogtreecommitdiffhomepage
path: root/eigen/cmake/EigenDetermineOSVersion.cmake
diff options
context:
space:
mode:
authorStanislaw Halik <sthalik@misaki.pl>2016-09-18 12:42:15 +0200
committerStanislaw Halik <sthalik@misaki.pl>2016-11-02 15:12:04 +0100
commit44861dcbfeee041223c4aac1ee075e92fa4daa01 (patch)
tree6dfdfd9637846a7aedd71ace97d7d2ad366496d7 /eigen/cmake/EigenDetermineOSVersion.cmake
parentf3fe458b9e0a29a99a39d47d9a76dc18964b6fec (diff)
update
Diffstat (limited to 'eigen/cmake/EigenDetermineOSVersion.cmake')
-rw-r--r--eigen/cmake/EigenDetermineOSVersion.cmake46
1 files changed, 46 insertions, 0 deletions
diff --git a/eigen/cmake/EigenDetermineOSVersion.cmake b/eigen/cmake/EigenDetermineOSVersion.cmake
new file mode 100644
index 0000000..9246fa6
--- /dev/null
+++ b/eigen/cmake/EigenDetermineOSVersion.cmake
@@ -0,0 +1,46 @@
+# The utility function DetermineOSVersion aims at providing an
+# improved version of the CMake variable ${CMAKE_SYSTEM} on Windows
+# machines.
+#
+# Usage:
+# include(EigenDetermineOSVersion)
+# DetermineOSVersion(OS_VERSION)
+# message("OS: ${OS_VERSION}")
+
+# - A little helper variable which should not be directly called
+function(DetermineShortWindowsName WIN_VERSION win_num_version)
+ if (${win_num_version} VERSION_EQUAL "6.1")
+ set(_version "win7")
+ elseif(${win_num_version} VERSION_EQUAL "6.0")
+ set(_version "winVista")
+ elseif(${win_num_version} VERSION_EQUAL "5.2")
+ set(_version "winXpProf")
+ elseif(${win_num_version} VERSION_EQUAL "5.1")
+ set(_version "winXp")
+ elseif(${win_num_version} VERSION_EQUAL "5.0")
+ set(_version "win2000Prof")
+ else()
+ set(_version "unknownWin")
+ endif()
+ set(${WIN_VERSION} ${_version} PARENT_SCOPE)
+endfunction()
+
+function(DetermineOSVersion OS_VERSION)
+ if (WIN32 AND CMAKE_HOST_SYSTEM_NAME MATCHES Windows)
+ file (TO_NATIVE_PATH "$ENV{COMSPEC}" SHELL)
+ exec_program( ${SHELL} ARGS "/c" "ver" OUTPUT_VARIABLE ver_output)
+
+ string(REGEX MATCHALL "[0-9]+"
+ ver_list "${ver_output}")
+ list(GET ver_list 0 _major)
+ list(GET ver_list 1 _minor)
+
+ set(win_num_version ${_major}.${_minor})
+ DetermineShortWindowsName(win_version "${win_num_version}")
+ if(win_version)
+ set(${OS_VERSION} ${win_version} PARENT_SCOPE)
+ endif()
+ else()
+ set(${OS_VERSION} ${CMAKE_SYSTEM} PARENT_SCOPE)
+ endif()
+endfunction()