# Helper functions for coupling add_feature_info() or CMAKE_DEPENDENT_OPTION() and option()

function(feature_option _name _description _default)
    string(CONCAT _desc "${_description} (default: ${_default})")
    option("${_name}" "${_desc}" "${_default}")
    add_feature_info("${_name}" "${_name}" "${_desc}")
endfunction()

include(CMakeDependentOption)
function(feature_option_dependent _name _description _default_opt _dependency _default_dep_not_sat)
    string(CONCAT _desc "${_description} (default: ${_default_opt}; depends on condition: ${_dependency})")
    CMAKE_DEPENDENT_OPTION("${_name}" "${_desc}" "${_default_opt}" "${_dependency}" "${_default_dep_not_sat}")
    add_feature_info("${_name}" "${_name}" "${_desc}")
endfunction()