CTK  0.1.0
The Common Toolkit is a community effort to provide support code for medical image analysis, surgical navigation, and related projects.
ctkMacroOptionUtils.cmake
Go to the documentation of this file.
1 
2 function(ctk_option_logical_expression_to_message varname logical_expr)
3  set(enabling_msg)
4  foreach(arg ${logical_expr})
5  if(NOT "${${arg}}" STREQUAL "")
6  set(value_as_int 0)
7  if(${${arg}})
8  set(value_as_int 1)
9  endif()
10  set(enabling_msg "${enabling_msg} ${arg}:${value_as_int}")
11  else()
12  set(enabling_msg "${enabling_msg} ${arg}")
13  endif()
14  endforeach()
15  set(${varname} ${enabling_msg} PARENT_SCOPE)
16 endfunction()
17 
18 macro(ctk_option option_prefix name doc default)
19  option(${option_prefix}_${name} ${doc} ${default})
20  mark_as_advanced(${option_prefix}_${name})
21  list(APPEND ${option_prefix}S ${name})
22  set(_logical_expr ${ARGN})
23  if(_logical_expr AND NOT ${option_prefix}_${name})
24  if(${ARGN})
25  # Set the variable ON.
26  set(${option_prefix}_${name} ON)
27  # Generate user-friendly message
28  set(enabling_msg)
29  ctk_option_logical_expression_to_message(enabling_msg "${ARGN}")
30  message(STATUS "Enabling [${option_prefix}_${name}] because of [${enabling_msg}] evaluates to True")
31  endif()
32  endif()
33  set(${option_prefix}_${name}_SKIPCACHEVALUE 1)
34  mark_as_superbuild(${option_prefix}_${name})
35 endmacro()
36 
37 macro(ctk_lib_option name doc default)
38  ctk_option(CTK_LIB ${name} ${doc} ${default} ${ARGN})
39  if(CTK_BUILD_ALL_LIBRARIES)
40  set(CTK_LIB_${name} 1)
41  message(STATUS "Enabling [CTK_LIB_${name}] because of [CTK_BUILD_ALL_LIBRARIES:${CTK_BUILD_ALL_LIBRARIES}] evaluates to True")
42  endif()
43 endmacro()
44 
45 macro(ctk_plugin_option name doc default)
46  ctk_option(CTK_PLUGIN ${name} ${doc} ${default} ${ARGN})
47  if(CTK_BUILD_ALL_PLUGINS)
48  set(CTK_PLUGIN_${name} 1)
49  message(STATUS "Enabling [CTK_PLUGIN_${name}] because of [CTK_BUILD_ALL_PLUGINS:${CTK_BUILD_ALL_PLUGINS}] evaluates to True")
50  endif()
51 endmacro()
52 
53 macro(ctk_app_option name doc default)
54  ctk_option(CTK_APP ${name} ${doc} ${default} ${ARGN})
55  if(CTK_BUILD_ALL_APPS)
56  set(CTK_APP_${name} 1)
57  message(STATUS "Enabling [CTK_APP_${name}] because of [CTK_BUILD_ALL_APPS:${CTK_BUILD_ALL_APPS}] evaluates to True")
58  endif()
59 endmacro()
60 
61 macro(ctk_enable_option_raw name doc default)
62  option(${name} "${doc}" ${default})
63  if(DEFINED ${name}_internal)
64  if(${${name}} AND ${${name}_internal})
65  if(NOT (${ARGN}))
66  get_property(_doc_string CACHE ${name} PROPERTY HELPSTRING)
67  set(${name} OFF CACHE BOOL ${_doc_string} FORCE)
68  message("Full support for [${name}] disabled")
69  endif()
70  endif()
71  endif()
72  set(${name}_internal ${${name}} CACHE INTERNAL "" FORCE)
73 endmacro()
74 
75 macro(ctk_enable_option name doc default)
76  ctk_enable_option_raw(CTK_ENABLE_${name} ${doc} ${default} ${ARGN})
77 endmacro()