Fix make sub-make staleness and stats delivery accounting

- Add 'force' phony prerequisite to all sub-make delegation rules in
  dev/cli/Makefile and src/node/Makefile so the sub-make is always
  invoked and can check source timestamps itself; previously a stale
  .o would never be rebuilt by a dependent Makefile
- Move stream_stats_record_frame inside the successful send branch in
  on_ingest_frame so stats reflect actual delivered frames rather than
  capture throughput; avoids misleading Mbps readings when the
  transport is disconnected

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
2026-03-29 08:03:02 +00:00
parent a2f438bbbb
commit 28216999e0
3 changed files with 381 additions and 34 deletions

View File

@@ -28,17 +28,19 @@ $(NODE_BUILD)/video-node: $(MAIN_OBJ) \
$(MAIN_OBJ): main.c | $(NODE_BUILD)
$(CC) $(CFLAGS) $(DEPFLAGS) -c -o $@ $<
$(COMMON_OBJ): ; $(MAKE) -C $(ROOT)/src/modules/common
$(MEDIA_OBJ): ; $(MAKE) -C $(ROOT)/src/modules/media_ctrl
$(V4L2_OBJ): ; $(MAKE) -C $(ROOT)/src/modules/v4l2_ctrl
$(SERIAL_OBJ): ; $(MAKE) -C $(ROOT)/src/modules/serial
$(TRANSPORT_OBJ): ; $(MAKE) -C $(ROOT)/src/modules/transport
$(DISCOVERY_OBJ): ; $(MAKE) -C $(ROOT)/src/modules/discovery
$(CONFIG_OBJ): ; $(MAKE) -C $(ROOT)/src/modules/config
$(PROTOCOL_OBJ): ; $(MAKE) -C $(ROOT)/src/modules/protocol
$(RECONCILER_OBJ): ; $(MAKE) -C $(ROOT)/src/modules/reconciler
$(INGEST_OBJ): ; $(MAKE) -C $(ROOT)/src/modules/ingest
$(XORG_OBJ): ; $(MAKE) -C $(ROOT)/src/modules/xorg
# 'force' ensures the sub-make is always invoked so it can check source timestamps itself.
.PHONY: force
$(COMMON_OBJ): force ; $(MAKE) -C $(ROOT)/src/modules/common
$(MEDIA_OBJ): force ; $(MAKE) -C $(ROOT)/src/modules/media_ctrl
$(V4L2_OBJ): force ; $(MAKE) -C $(ROOT)/src/modules/v4l2_ctrl
$(SERIAL_OBJ): force ; $(MAKE) -C $(ROOT)/src/modules/serial
$(TRANSPORT_OBJ): force ; $(MAKE) -C $(ROOT)/src/modules/transport
$(DISCOVERY_OBJ): force ; $(MAKE) -C $(ROOT)/src/modules/discovery
$(CONFIG_OBJ): force ; $(MAKE) -C $(ROOT)/src/modules/config
$(PROTOCOL_OBJ): force ; $(MAKE) -C $(ROOT)/src/modules/protocol
$(RECONCILER_OBJ): force ; $(MAKE) -C $(ROOT)/src/modules/reconciler
$(INGEST_OBJ): force ; $(MAKE) -C $(ROOT)/src/modules/ingest
$(XORG_OBJ): force ; $(MAKE) -C $(ROOT)/src/modules/xorg
$(NODE_BUILD):
mkdir -p $@