File: GetSystemVersion.cmake

package info (click to toggle)
indigo 1.4.3-1
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid
  • size: 48,936 kB
  • sloc: ansic: 332,816; cpp: 169,470; python: 20,033; java: 13,701; cs: 9,979; asm: 8,475; sql: 6,743; xml: 6,354; javascript: 1,245; sh: 555; php: 506; makefile: 54
file content (87 lines) | stat: -rw-r--r-- 2,855 bytes parent folder | download
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
if(MSVC OR MINGW)
    set(SYSTEM_NAME "Win")
    if (NOT SUBSYSTEM_NAME)
        if(CMAKE_SIZEOF_VOID_P MATCHES 8)
            set(SUBSYSTEM_NAME "x64")
        else()
            set(SUBSYSTEM_NAME "x86")
        ENDIF()
    endif()
    set(SYSTEM_DL_EXTENSION ".dll")
elseif(APPLE)
    set(SYSTEM_NAME "Mac")
    if (NOT SUBSYSTEM_NAME)
        EXEC_PROGRAM(uname ARGS -v  OUTPUT_VARIABLE DARWIN_VERSION)
        string(REGEX MATCH "[0-9]+" DARWIN_VERSION ${DARWIN_VERSION})
        if (DARWIN_VERSION MATCHES 8)
            set(SUBSYSTEM_NAME "10.4")
        elseif(DARWIN_VERSION MATCHES 9)
            set(SUBSYSTEM_NAME "10.5")
        elseif(DARWIN_VERSION MATCHES 10)
            set(SUBSYSTEM_NAME "10.6")
        elseif(DARWIN_VERSION MATCHES 11)
            set(SUBSYSTEM_NAME "10.7")
        elseif(DARWIN_VERSION MATCHES 12)
            set(SUBSYSTEM_NAME "10.8")
        elseif(DARWIN_VERSION MATCHES 13)
            set(SUBSYSTEM_NAME "10.9")
        elseif(DARWIN_VERSION MATCHES 14)
            set(SUBSYSTEM_NAME "10.10")
        elseif(DARWIN_VERSION MATCHES 15)
            set(SUBSYSTEM_NAME "10.11")
        elseif(DARWIN_VERSION MATCHES 16)
            set(SUBSYSTEM_NAME "10.12")
        elseif(DARWIN_VERSION MATCHES 17)
            set(SUBSYSTEM_NAME "10.13")
        else()
            message(FATAL_ERROR "Unsupported DARWIN_VERSION: ${DARWIN_VERSION}")
        endif()
    endif()
    set(SYSTEM_DL_EXTENSION ".dylib")
elseif(UNIX)
    set(SYSTEM_NAME "Linux")
    if (NOT SUBSYSTEM_NAME)
        if(CMAKE_SIZEOF_VOID_P MATCHES 8)
            set(SUBSYSTEM_NAME "x64")
        else()
            set(SUBSYSTEM_NAME "x86")
        endif()
    endif()
    set(SYSTEM_DL_EXTENSION ".so")
else()
   MESSAGE(FATAL_ERROR "Unsupported system")
endif()


if (SYSTEM_NAME MATCHES "Mac")
    set(PACKAGE_SUFFIX "mac${SUBSYSTEM_NAME}")
else()
    if (SYSTEM_NAME MATCHES "Win")
        set(PACKAGE_SUFFIX_PREFIX "win")
    elseif (SYSTEM_NAME MATCHES "Linux")
        set(PACKAGE_SUFFIX_PREFIX "linux")
    else()
        MESSAGE(FATAL_ERROR "Unsupported system")
    endif()
    if (SUBSYSTEM_NAME MATCHES "x86")
        set(PACKAGE_SUFFIX_SUFFIX "32")
    elseif (SUBSYSTEM_NAME MATCHES "x64")
        set(PACKAGE_SUFFIX_SUFFIX "64")
    else()
        MESSAGE(FATAL_ERROR "Unsupported system")
    endif()
    set(PACKAGE_SUFFIX "${PACKAGE_SUFFIX_PREFIX}${PACKAGE_SUFFIX_SUFFIX}")
endif()

message(STATUS "System-specific folder name: ${SYSTEM_NAME}")
message(STATUS "Subsystem-specific folder name: ${SUBSYSTEM_NAME}")

macro(LIBRARY_NAME LIBRARY_BASENAME)
    set(LIBRARY_NAME_RESULT "")
    if(NOT MSVC AND NOT MINGW)
        set(LIBRARY_NAME_RESULT "lib")
    endif()
    set(LIBRARY_NAME_RESULT ${LIBRARY_NAME_RESULT}${LIBRARY_BASENAME}${SYSTEM_DL_EXTENSION})
    set(${LIBRARY_BASENAME}_NAME ${LIBRARY_NAME_RESULT})
endmacro()