ctkMacroOptionUtils.cmake 2.0 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556
  1. macro(ctk_option option_prefix name doc default)
  2. option(${option_prefix}_${name} ${doc} ${default})
  3. mark_as_advanced(${option_prefix}_${name})
  4. list(APPEND ${option_prefix}S ${name})
  5. set(_logical_expr ${ARGN})
  6. if(_logical_expr AND NOT ${option_prefix}_${name})
  7. if(${ARGN})
  8. # Force the option to ON. This is okay since the
  9. # logical expression should contain a CTK_ENABLE_*
  10. # option value, which requires the current option to be ON.
  11. get_property(_doc_string CACHE ${option_prefix}_${name} PROPERTY HELPSTRING)
  12. set(${option_prefix}_${name} ON CACHE BOOL ${_doc_string} FORCE)
  13. # Generate user-friendly message
  14. set(enabling_msg)
  15. foreach(arg ${ARGN})
  16. if(NOT "${${arg}}" STREQUAL "")
  17. set(value_as_int 0)
  18. if(${${arg}})
  19. set(value_as_int 1)
  20. endif()
  21. set(enabling_msg "${enabling_msg} ${arg}:${value_as_int}")
  22. else()
  23. set(enabling_msg "${enabling_msg} ${arg}")
  24. endif()
  25. endforeach()
  26. message("Enabling [${option_prefix}_${name}] because of [${enabling_msg}] evaluates to True")
  27. endif()
  28. endif()
  29. endmacro()
  30. macro(ctk_lib_option name doc default)
  31. ctk_option(CTK_LIB ${name} ${doc} ${default} ${ARGN})
  32. endmacro()
  33. macro(ctk_plugin_option name doc default)
  34. ctk_option(CTK_PLUGIN ${name} ${doc} ${default} ${ARGN})
  35. endmacro()
  36. macro(ctk_app_option name doc default)
  37. ctk_option(CTK_APP ${name} ${doc} ${default} ${ARGN})
  38. endmacro()
  39. macro(ctk_enable_option name doc default)
  40. option(CTK_ENABLE_${name} "${doc}" ${default})
  41. if(DEFINED CTK_ENABLE_${name}_internal)
  42. if(${CTK_ENABLE_${name}} AND ${CTK_ENABLE_${name}_internal})
  43. if(NOT (${ARGN}))
  44. get_property(_doc_string CACHE CTK_ENABLE_${name} PROPERTY HELPSTRING)
  45. set(CTK_ENABLE_${name} OFF CACHE BOOL ${_doc_string} FORCE)
  46. message("Full support for [${name}] disabled")
  47. endif()
  48. endif()
  49. endif()
  50. set(CTK_ENABLE_${name}_internal ${CTK_ENABLE_${name}} CACHE INTERNAL "" FORCE)
  51. endmacro()