mirror of
https://github.com/esphome/esphome.git
synced 2026-03-04 03:38:20 -07:00
Merge remote-tracking branch 'origin/api_varint_split_32_64' into integration
This commit is contained in:
@@ -1937,6 +1937,9 @@ def get_varint64_ifdef(
|
||||
}
|
||||
if not ifdefs:
|
||||
return False, None
|
||||
if None in ifdefs:
|
||||
# At least one 64-bit varint field is unconditional, so the guard must be unconditional.
|
||||
return True, None
|
||||
ifdefs.discard(None)
|
||||
return True, ifdefs.pop() if len(ifdefs) == 1 else None
|
||||
|
||||
@@ -2601,22 +2604,32 @@ def main() -> None:
|
||||
)
|
||||
|
||||
# Find the ifdef guard for 64-bit varint fields (int64/uint64/sint64).
|
||||
# Emitted before proto.h so parse_wide_() and 64-bit accessors are available.
|
||||
# Generated into api_pb2_defines.h so proto.h can include it, ensuring
|
||||
# consistent ProtoVarInt layout across all translation units.
|
||||
has_varint64, varint64_guard = get_varint64_ifdef(file, message_ifdef_map)
|
||||
|
||||
# Generate api_pb2_defines.h — included by proto.h to ensure all translation
|
||||
# units see USE_API_VARINT64 consistently (avoids ODR violations in ProtoVarInt).
|
||||
defines_content = FILE_HEADER
|
||||
defines_content += "#pragma once\n\n"
|
||||
defines_content += '#include "esphome/core/defines.h"\n'
|
||||
if has_varint64:
|
||||
lines = [
|
||||
"#ifndef USE_API_VARINT64",
|
||||
"#define USE_API_VARINT64",
|
||||
"#endif",
|
||||
]
|
||||
defines_content += "\n".join(wrap_with_ifdef(lines, varint64_guard))
|
||||
defines_content += "\n"
|
||||
defines_content += "\nnamespace esphome::api {} // namespace esphome::api\n"
|
||||
|
||||
with open(root / "api_pb2_defines.h", "w", encoding="utf-8") as f:
|
||||
f.write(defines_content)
|
||||
|
||||
content = FILE_HEADER
|
||||
content += """\
|
||||
#pragma once
|
||||
|
||||
#include "esphome/core/defines.h"
|
||||
"""
|
||||
if has_varint64:
|
||||
content += "\n".join(
|
||||
wrap_with_ifdef(["#define USE_API_VARINT64"], varint64_guard)
|
||||
)
|
||||
content += "\n"
|
||||
|
||||
content += """\
|
||||
#include "esphome/core/string_ref.h"
|
||||
|
||||
#include "proto.h"
|
||||
|
||||
Reference in New Issue
Block a user