mirror of
https://github.com/smoltcp-rs/smoltcp.git
synced 2025-09-28 13:20:29 +00:00
87 lines
2.9 KiB
Python
87 lines
2.9 KiB
Python
import os
|
|
|
|
abspath = os.path.abspath(__file__)
|
|
dname = os.path.dirname(abspath)
|
|
os.chdir(dname)
|
|
|
|
features = []
|
|
|
|
|
|
def feature(name, default, min, max, pow2=None):
|
|
vals = set()
|
|
val = min
|
|
while val <= max:
|
|
vals.add(val)
|
|
if pow2 == True or (isinstance(pow2, int) and val >= pow2):
|
|
val *= 2
|
|
else:
|
|
val += 1
|
|
vals.add(default)
|
|
|
|
features.append(
|
|
{
|
|
"name": name,
|
|
"default": default,
|
|
"vals": sorted(list(vals)),
|
|
}
|
|
)
|
|
|
|
|
|
feature("iface_max_addr_count", default=2, min=1, max=8)
|
|
feature("iface_max_multicast_group_count", default=4, min=1, max=1024, pow2=8)
|
|
feature("iface_max_sixlowpan_address_context_count", default=4, min=1, max=1024, pow2=8)
|
|
feature("iface_neighbor_cache_count", default=8, min=1, max=1024, pow2=8)
|
|
feature("iface_max_route_count", default=2, min=1, max=1024, pow2=8)
|
|
feature("fragmentation_buffer_size", default=1500, min=256, max=65536, pow2=True)
|
|
feature("assembler_max_segment_count", default=4, min=1, max=32, pow2=4)
|
|
feature("reassembly_buffer_size", default=1500, min=256, max=65536, pow2=True)
|
|
feature("reassembly_buffer_count", default=1, min=1, max=32, pow2=4)
|
|
feature("ipv6_hbh_max_options", default=4, min=1, max=32, pow2=4)
|
|
feature("dns_max_result_count", default=1, min=1, max=32, pow2=4)
|
|
feature("dns_max_server_count", default=1, min=1, max=32, pow2=4)
|
|
feature("dns_max_name_size", default=255, min=64, max=255, pow2=True)
|
|
feature("rpl_relations_buffer_count", default=16, min=1, max=128, pow2=True)
|
|
feature("rpl_parents_buffer_count", default=8, min=2, max=32, pow2=True)
|
|
|
|
# ========= Update Cargo.toml
|
|
|
|
things = ""
|
|
for f in features:
|
|
name = f["name"].replace("_", "-")
|
|
for val in f["vals"]:
|
|
things += f"{name}-{val} = []"
|
|
if val == f["default"]:
|
|
things += " # Default"
|
|
things += "\n"
|
|
things += "\n"
|
|
|
|
SEPARATOR_START = "# BEGIN AUTOGENERATED CONFIG FEATURES\n"
|
|
SEPARATOR_END = "# END AUTOGENERATED CONFIG FEATURES\n"
|
|
HELP = "# Generated by gen_config.py. DO NOT EDIT.\n"
|
|
with open("Cargo.toml", "r") as f:
|
|
data = f.read()
|
|
before, data = data.split(SEPARATOR_START, maxsplit=1)
|
|
_, after = data.split(SEPARATOR_END, maxsplit=1)
|
|
data = before + SEPARATOR_START + HELP + things + SEPARATOR_END + after
|
|
with open("Cargo.toml", "w") as f:
|
|
f.write(data)
|
|
|
|
|
|
# ========= Update build.rs
|
|
|
|
things = ""
|
|
for f in features:
|
|
name = f["name"].upper()
|
|
things += f' ("{name}", {f["default"]}),\n'
|
|
|
|
SEPARATOR_START = "// BEGIN AUTOGENERATED CONFIG FEATURES\n"
|
|
SEPARATOR_END = "// END AUTOGENERATED CONFIG FEATURES\n"
|
|
HELP = " // Generated by gen_config.py. DO NOT EDIT.\n"
|
|
with open("build.rs", "r") as f:
|
|
data = f.read()
|
|
before, data = data.split(SEPARATOR_START, maxsplit=1)
|
|
_, after = data.split(SEPARATOR_END, maxsplit=1)
|
|
data = before + SEPARATOR_START + HELP + things + " " + SEPARATOR_END + after
|
|
with open("build.rs", "w") as f:
|
|
f.write(data)
|