macro(ctk_option option_prefix name doc default) option(${option_prefix}_${name} ${doc} ${default}) mark_as_advanced(${option_prefix}_${name}) list(APPEND ${option_prefix}S ${name}) set(_logical_expr ${ARGN}) if(_logical_expr AND NOT ${option_prefix}_${name}) if(${ARGN}) # Force the option to ON. This is okay since the # logical expression should contain a CTK_ENABLE_* # option value, which requires the current option to be ON. get_property(_doc_string CACHE ${option_prefix}_${name} PROPERTY HELPSTRING) set(${option_prefix}_${name} ON CACHE BOOL ${_doc_string} FORCE) message("Enabling [${option_prefix}_${name}] because of [${ARGN}]") endif() endif() endmacro() macro(ctk_lib_option name doc default) ctk_option(CTK_LIB ${name} ${doc} ${default} ${ARGN}) endmacro() macro(ctk_plugin_option name doc default) ctk_option(CTK_PLUGIN ${name} ${doc} ${default} ${ARGN}) endmacro() macro(ctk_app_option name doc default) ctk_option(CTK_APP ${name} ${doc} ${default} ${ARGN}) endmacro() macro(ctk_enable_option name doc default) option(CTK_ENABLE_${name} "${doc}" ${default}) if(DEFINED CTK_ENABLE_${name}_internal) if(${CTK_ENABLE_${name}} AND ${CTK_ENABLE_${name}_internal}) if(NOT (${ARGN})) get_property(_doc_string CACHE CTK_ENABLE_${name} PROPERTY HELPSTRING) set(CTK_ENABLE_${name} OFF CACHE BOOL ${_doc_string} FORCE) message("Full support for [${name}] disabled") endif() endif() endif() set(CTK_ENABLE_${name}_internal ${CTK_ENABLE_${name}} CACHE INTERNAL "" FORCE) endmacro()