ctkMacroOptionUtils.cmake 2.6 KB

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