forked from clever-lang/clever
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathFindCLEVER.cmake
90 lines (70 loc) · 2.23 KB
/
FindCLEVER.cmake
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
# clever_module_msg(<name> <msg>)
macro(clever_module_msg Name Msg)
message(STATUS "MOD ${Name} -- ${Msg}")
endmacro(clever_module_msg)
# clever_add_module(<name> <enabled>
# [[<docstring>]
# [<mod1>;<mod2>;...]
# [<lib1>;<lib2>;...])
# Defines MOD_<Uppercased Name>
# MOD_<Uppercased Name>_MOD_DEPENDS
# MOD_<Uppercased Name>_LIB_DEPENDS
macro(clever_add_module Name Enabled)
if(${ARGC} LESS 2)
message(SEND_ERROR "clever_add_module needs at least 2 args")
endif(${ARGC} LESS 2)
string(TOUPPER "MOD_${Name}" _mod_var)
set(_mod_doc "")
set(${_mod_var}_MOD_DEPENDS OFF)
set(${_mod_var}_LIB_DEPENDS OFF)
if (${ARGC} GREATER 2)
set(_mod_doc ${ARGV2})
endif (${ARGC} GREATER 2)
if (${ARGC} GREATER 3)
set(${_mod_var}_MOD_DEPENDS "${ARGV3}")
endif (${ARGC} GREATER 3)
option(${_mod_var} "${_mod_doc}" ${Enabled})
endmacro(clever_add_module)
macro(clever_add_simple_module Name Enabled)
if(${ARGC} LESS 2)
message(SEND_ERROR "clever_add_simple_module needs at least 2 args")
endif(${ARGC} LESS 2)
clever_add_module("${Name}" ${Enabled} "${ARGV2}" "${ARGV3}")
clever_check_mod_env("${Name}")
endmacro(clever_add_simple_module)
# clever_check_mod_depends(<name>)
#
macro(clever_check_mod_depends Name)
string(TOUPPER "MOD_${Name}" _mod_var)
set(_mod_deps "${${_mod_var}_MOD_DEPENDS}")
set(_disable OFF)
#message(STATUS "'${_mod_deps}'")
if (NOT ${_mod_deps} STREQUAL "")
clever_module_msg("${Name}" "checking module dependencies...")
foreach(dep ${_mod_deps})
string(TOUPPER "MOD_${dep}" udep)
if(NOT ${udep})
clever_module_msg("${Name}" "module not found (${dep}).")
set(_disable ON)
break()
endif(NOT ${udep})
endforeach(dep)
if (_disable)
set(${_mod_var} OFF)
endif (_disable)
endif (NOT ${_mod_deps} STREQUAL "")
endmacro(clever_check_mod_depends)
# clever_check_mod_env(<name>)
#
macro(clever_check_mod_env Name)
string(TOUPPER "MOD_${Name}" _mod_var)
if (${_mod_var})
clever_check_mod_depends("${Name}")
endif (${_mod_var})
if (${_mod_var})
add_definitions(-DHAVE_${_mod_var})
clever_module_msg("${Name}" ON)
else (${_mod_var})
clever_module_msg("${Name}" OFF)
endif (${_mod_var})
endmacro(clever_check_mod_env)