-
Notifications
You must be signed in to change notification settings - Fork 2
/
Copy patheosio-config.cmake.in
96 lines (83 loc) · 3.4 KB
/
eosio-config.cmake.in
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
88
89
90
91
92
93
94
95
96
if(EOSIO_ROOT STREQUAL "" OR NOT EOSIO_ROOT)
set(EOSIO_ROOT "@EOS_ROOT_DIR@")
endif()
list(APPEND CMAKE_MODULE_PATH ${EOSIO_ROOT}/lib/cmake/eosio)
include(EosioTester)
function(EXTRACT_MAJOR_MINOR_FROM_VERSION version success major minor)
string(REGEX REPLACE "^([0-9]+)\\..+$" "\\1" _major "${version}")
if("${_major}" STREQUAL "${version}")
set(${success} FALSE PARENT_SCOPE)
return()
endif()
string(REGEX REPLACE "^[0-9]+\\.([0-9]+)(\\..*)?$" "\\1" _minor "${version}")
if("${_minor}" STREQUAL "${version}")
set(success FALSE PARENT_SCOPE)
return()
endif()
set(${major} ${_major} PARENT_SCOPE)
set(${minor} ${_minor} PARENT_SCOPE)
set(${success} TRUE PARENT_SCOPE)
endfunction(EXTRACT_MAJOR_MINOR_FROM_VERSION)
function(EOSIO_CHECK_VERSION output version hard_min soft_max hard_max) # optional 6th argument for error message
set(${output} "INVALID" PARENT_SCOPE)
EXTRACT_MAJOR_MINOR_FROM_VERSION("${version}" success major minor)
if(NOT success)
if(${ARGC} GREATER 5)
set(${ARGV5} "version '${version}' is invalid" PARENT_SCOPE)
endif()
return()
endif()
EXTRACT_MAJOR_MINOR_FROM_VERSION("${hard_min}" success hard_min_major hard_min_minor)
if(NOT success)
if(${ARGC} GREATER 5)
set(${ARGV5} "hard minimum version '${hard_min}' is invalid" PARENT_SCOPE)
endif()
return()
endif()
if( "${major}.${minor}" VERSION_LESS "${hard_min_major}.${hard_min_minor}" )
set(${output} "MISMATCH" PARENT_SCOPE)
if(${ARGC} GREATER 5)
set(${ARGV5} "version '${version}' does not meet hard minimum version requirement of ${hard_min_major}.${hard_min_minor}" PARENT_SCOPE)
endif()
return()
endif()
if(NOT hard_max STREQUAL "")
EXTRACT_MAJOR_MINOR_FROM_VERSION("${hard_max}" success hard_max_major hard_max_minor)
if(NOT success)
if(${ARGC} GREATER 5)
set(${ARGV5} "hard maximum version '${hard_max}' is invalid" PARENT_SCOPE)
endif()
return()
endif()
if( "${major}.${minor}" VERSION_GREATER "${hard_max_major}.${hard_max_minor}" )
set(${output} "MISMATCH" PARENT_SCOPE)
if(${ARGC} GREATER 5)
set(${ARGV5} "version '${version}' does not meet hard maximum version requirement of ${hard_max_major}.${hard_max_minor}" PARENT_SCOPE)
endif()
return()
endif()
endif()
EXTRACT_MAJOR_MINOR_FROM_VERSION("${soft_max}" success soft_max_major soft_max_minor)
if(NOT success)
set(${output} "MISMATCH" PARENT_SCOPE)
if(${ARGC} GREATER 5)
set(${ARGV5} "soft maximum version '${soft_max}' is invalid" PARENT_SCOPE)
endif()
return()
endif()
if( ${major} GREATER ${soft_max_major} )
set(${output} "MISMATCH" PARENT_SCOPE)
if(${ARGC} GREATER 5)
set(${ARGV5} "version '${version}' must have the same major version as the soft maximum version (${soft_max_major})" PARENT_SCOPE)
endif()
return()
endif()
if( "${major}.${minor}" VERSION_GREATER "${soft_max_major}.${soft_max_minor}" )
set(${output} "WARN" PARENT_SCOPE)
if(${ARGC} GREATER 5)
set(${ARGV5} "version '${version}' matches requirements but is greater than the soft maximum version of ${soft_max_major}.${soft_max_minor}" PARENT_SCOPE)
endif()
return()
endif()
set(${output} "MATCH" PARENT_SCOPE)
endfunction(EOSIO_CHECK_VERSION)