Skip to content

Commit 30ee37e

Browse files
committed
options: Add support for deprecating option in CMake logic
1 parent 6fd0155 commit 30ee37e

File tree

1 file changed

+10
-3
lines changed

1 file changed

+10
-3
lines changed

cmake/f3dOptions.cmake

+10-3
Original file line numberDiff line numberDiff line change
@@ -91,7 +91,6 @@ endfunction()
9191
@brief internal recursive method use to parse json structure and generate variables
9292
#]==]
9393
function(_parse_json_option _top_json)
94-
# TODO Add a deprecation mechanism
9594
string(JSON _options_length LENGTH ${_top_json})
9695
MATH(EXPR _options_length "${_options_length} - 1")
9796
foreach(_json_idx RANGE ${_options_length})
@@ -108,6 +107,9 @@ function(_parse_json_option _top_json)
108107
# Recover default_value if any
109108
string(JSON _option_default_value ERROR_VARIABLE _default_value_error GET ${_cur_json} "default_value")
110109

110+
# Recover deprecated if any
111+
string(JSON _option_deprecated ERROR_VARIABLE _deprecated_error GET ${_cur_json} "deprecated")
112+
111113
set(_option_name "${_option_basename}${_member_name}")
112114

113115
# Identify types
@@ -138,16 +140,21 @@ function(_parse_json_option _top_json)
138140

139141
# Add option to struct and methods
140142

143+
set(_option_deprecated_string "")
144+
if(_deprecated_error STREQUAL "NOTFOUND" AND _option_deprecated)
145+
set(_option_deprecated_string "F3D_DEPRECATED ")
146+
endif()
147+
141148
if(_default_value_error STREQUAL "NOTFOUND")
142149
# Use default_value
143150
set(_optional_default_value_initialize "${_option_default_value_start}${_option_default_value}${_option_default_value_end}")
144-
string(APPEND _options_struct "${_option_indent} ${_option_actual_type} ${_member_name} = ${_optional_default_value_initialize};\n")
151+
string(APPEND _options_struct "${_option_indent} ${_option_deprecated_string}${_option_actual_type} ${_member_name} = ${_optional_default_value_initialize};\n")
145152
set(_optional_getter "")
146153
list(APPEND _options_is_optional "if (name == \"${_option_name}\") return false")
147154
list(APPEND _options_reset "if (name == \"${_option_name}\") opt.${_option_name} = ${_optional_default_value_initialize}")
148155
else()
149156
# No default_value, it is an std::optional
150-
string(APPEND _options_struct "${_option_indent} std::optional<${_option_actual_type}> ${_member_name};\n")
157+
string(APPEND _options_struct "${_option_indent} ${_option_deprecated_string}std::optional<${_option_actual_type}> ${_member_name};\n")
151158
set(_optional_getter ".value()")
152159
list(APPEND _options_is_optional "if (name == \"${_option_name}\") return true")
153160
list(APPEND _options_reset "if (name == \"${_option_name}\") opt.${_option_name}.reset()")

0 commit comments

Comments
 (0)