Skip to content

Commit fad697a

Browse files
ulfalizergalak
authored andcommitted
scripts: gen_defines.py: Add out_dev() flag for deprecated macros
Add a 'deprecation_msg' string/flag to out_dev(). When 'deprecation_msg' is passed, all generated macros include __WARN(<deprecation_msg>) which prints a custom warning if the macro is used. Meant to be used when improving the output format. Signed-off-by: Ulf Magnusson <[email protected]>
1 parent 8a11a17 commit fad697a

File tree

1 file changed

+25
-9
lines changed

1 file changed

+25
-9
lines changed

scripts/dts/gen_defines.py

Lines changed: 25 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -687,7 +687,7 @@ def str2ident(s):
687687
.upper()
688688

689689

690-
def out_node(node, ident, val, name_alias=None):
690+
def out_node(node, ident, val, name_alias=None, deprecation_msg=None):
691691
# Writes a
692692
#
693693
# <node prefix>_<ident> = <val>
@@ -704,6 +704,9 @@ def out_node(node, ident, val, name_alias=None):
704704
#
705705
# 'name_alias' is used for reg-names and the like.
706706
#
707+
# If a 'deprecation_msg' string is passed, the generated identifiers will
708+
# generate a warning if used, via __WARN(<deprecation_msg>)).
709+
#
707710
# Returns the identifier used for the macro that provides the value
708711
# for 'ident' within 'node', e.g. DT_MFG_MODEL_CTL_GPIOS_PIN.
709712

@@ -714,25 +717,25 @@ def out_node(node, ident, val, name_alias=None):
714717
aliases.append(f"{node_prefix}_{name_alias}")
715718
aliases += [f"{alias}_{name_alias}" for alias in node_aliases(node)]
716719

717-
return out(f"{node_prefix}_{ident}", val, aliases)
720+
return out(f"{node_prefix}_{ident}", val, aliases, deprecation_msg)
718721

719722

720-
def out_node_s(node, ident, s, name_alias=None):
723+
def out_node_s(node, ident, s, name_alias=None, deprecation_msg=None):
721724
# Like out_node(), but emits 's' as a string literal
722725
#
723726
# Returns the generated macro name for 'ident'.
724727

725-
return out_node(node, ident, quote_str(s), name_alias)
728+
return out_node(node, ident, quote_str(s), name_alias, deprecation_msg)
726729

727730

728-
def out_node_init(node, ident, elms, name_alias=None):
731+
def out_node_init(node, ident, elms, name_alias=None, deprecation_msg=None):
729732
# Like out_node(), but generates an {e1, e2, ...} initializer with the
730733
# elements in the iterable 'elms'.
731734
#
732735
# Returns the generated macro name for 'ident'.
733736

734737
return out_node(node, ident, "{" + ", ".join(map(str, elms)) + "}",
735-
name_alias)
738+
name_alias, deprecation_msg)
736739

737740

738741
def out_s(ident, val):
@@ -744,17 +747,19 @@ def out_s(ident, val):
744747
return out(ident, quote_str(val))
745748

746749

747-
def out(ident, val, aliases=()):
750+
def out(ident, val, aliases=(), deprecation_msg=None):
748751
# Writes '#define <ident> <val>' to the header and '<ident>=<val>' to the
749752
# the configuration file.
750753
#
751754
# Also writes any aliases listed in 'aliases' (an iterable). For the
752755
# header, these look like '#define <alias> <ident>'. For the configuration
753756
# file, the value is just repeated as '<alias>=<val>' for each alias.
754757
#
758+
# See out_node() for the meaning of 'deprecation_msg'.
759+
#
755760
# Returns the generated macro name for 'ident'.
756761

757-
print(f"#define DT_{ident:40} {val}", file=header_file)
762+
out_define(ident, val, deprecation_msg, header_file)
758763
primary_ident = f"DT_{ident}"
759764

760765
# Exclude things that aren't single token values from .conf. At
@@ -767,7 +772,7 @@ def out(ident, val, aliases=()):
767772

768773
for alias in aliases:
769774
if alias != ident:
770-
print(f"#define DT_{alias:40} DT_{ident}", file=header_file)
775+
out_define(alias, "DT_" + ident, deprecation_msg, header_file)
771776
if output_to_conf:
772777
# For the configuration file, the value is just repeated for all
773778
# the aliases
@@ -776,6 +781,17 @@ def out(ident, val, aliases=()):
776781
return primary_ident
777782

778783

784+
def out_define(ident, val, deprecation_msg, out_file):
785+
# out() helper for writing a #define. See out_node() for the meaning of
786+
# 'deprecation_msg'.
787+
788+
s = f"#define DT_{ident:40}"
789+
if deprecation_msg:
790+
s += fr' __WARN("{deprecation_msg}")'
791+
s += f" {val}"
792+
print(s, file=out_file)
793+
794+
779795
def out_comment(s, blank_before=True):
780796
# Writes 's' as a comment to the header and configuration file. 's' is
781797
# allowed to have multiple lines. blank_before=True adds a blank line

0 commit comments

Comments
 (0)