diff --git a/cmake/f3dOptions.cmake b/cmake/f3dOptions.cmake index 89feb5491e..b587c8969e 100644 --- a/cmake/f3dOptions.cmake +++ b/cmake/f3dOptions.cmake @@ -91,7 +91,6 @@ endfunction() @brief internal recursive method use to parse json structure and generate variables #]==] function(_parse_json_option _top_json) - # TODO Add a deprecation mechanism string(JSON _options_length LENGTH ${_top_json}) MATH(EXPR _options_length "${_options_length} - 1") foreach(_json_idx RANGE ${_options_length}) @@ -108,6 +107,9 @@ function(_parse_json_option _top_json) # Recover default_value if any string(JSON _option_default_value ERROR_VARIABLE _default_value_error GET ${_cur_json} "default_value") + # Recover deprecated if any + string(JSON _option_deprecated ERROR_VARIABLE _deprecated_error GET ${_cur_json} "deprecated") + set(_option_name "${_option_basename}${_member_name}") # Identify types @@ -138,16 +140,21 @@ function(_parse_json_option _top_json) # Add option to struct and methods + set(_option_deprecated_string "") + if(_deprecated_error STREQUAL "NOTFOUND" AND _option_deprecated) + set(_option_deprecated_string "F3D_DEPRECATED ") + endif() + if(_default_value_error STREQUAL "NOTFOUND") # Use default_value set(_optional_default_value_initialize "${_option_default_value_start}${_option_default_value}${_option_default_value_end}") - string(APPEND _options_struct "${_option_indent} ${_option_actual_type} ${_member_name} = ${_optional_default_value_initialize};\n") + string(APPEND _options_struct "${_option_indent} ${_option_deprecated_string}${_option_actual_type} ${_member_name} = ${_optional_default_value_initialize};\n") set(_optional_getter "") list(APPEND _options_is_optional "if (name == \"${_option_name}\") return false") list(APPEND _options_reset "if (name == \"${_option_name}\") opt.${_option_name} = ${_optional_default_value_initialize}") else() # No default_value, it is an std::optional - string(APPEND _options_struct "${_option_indent} std::optional<${_option_actual_type}> ${_member_name};\n") + string(APPEND _options_struct "${_option_indent} ${_option_deprecated_string}std::optional<${_option_actual_type}> ${_member_name};\n") set(_optional_getter ".value()") list(APPEND _options_is_optional "if (name == \"${_option_name}\") return true") list(APPEND _options_reset "if (name == \"${_option_name}\") opt.${_option_name}.reset()")