Modules (src/modules/): - common/error: App_Error struct with structured detail union, error codes, app_error_print(); designed for future upgrade to preprocessor-generated location codes - media_ctrl: media device enumeration, topology query (entities/pads/links), link enable/disable via Media Controller API (/dev/media*) - v4l2_ctrl: control enumeration (with menu item fetching), get/set via V4L2 ext controls API, device discovery (/dev/video*) All modules use -std=c11 -D_GNU_SOURCE, build artifacts go to build/ only. Kernel-version-dependent constants guarded with #ifdef + #warning. CLI drivers (dev/cli/): - media_ctrl_cli: list, info, topology, set-link subcommands - v4l2_ctrl_cli: list, controls, get, set subcommands Docs (docs/cli/): - media_ctrl_cli.md and v4l2_ctrl_cli.md with usage, examples, and context within the video routing system Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
30 lines
835 B
Makefile
30 lines
835 B
Makefile
ROOT := $(abspath ../..)
|
|
CC = gcc
|
|
CFLAGS = -std=c11 -Wall -Wextra -D_GNU_SOURCE -I$(ROOT)/include
|
|
BUILD = $(ROOT)/build
|
|
|
|
COMMON_OBJ = $(BUILD)/common/error.o
|
|
MEDIA_CTRL_OBJ = $(BUILD)/media_ctrl/media_ctrl.o
|
|
V4L2_CTRL_OBJ = $(BUILD)/v4l2_ctrl/v4l2_ctrl.o
|
|
|
|
.PHONY: all clean modules
|
|
|
|
all: modules $(BUILD)/cli/media_ctrl_cli $(BUILD)/cli/v4l2_ctrl_cli
|
|
|
|
modules:
|
|
$(MAKE) -C $(ROOT)/src/modules/common
|
|
$(MAKE) -C $(ROOT)/src/modules/media_ctrl
|
|
$(MAKE) -C $(ROOT)/src/modules/v4l2_ctrl
|
|
|
|
$(BUILD)/cli/media_ctrl_cli: media_ctrl_cli.c $(COMMON_OBJ) $(MEDIA_CTRL_OBJ) | $(BUILD)/cli
|
|
$(CC) $(CFLAGS) -o $@ $^
|
|
|
|
$(BUILD)/cli/v4l2_ctrl_cli: v4l2_ctrl_cli.c $(COMMON_OBJ) $(V4L2_CTRL_OBJ) | $(BUILD)/cli
|
|
$(CC) $(CFLAGS) -o $@ $^
|
|
|
|
$(BUILD)/cli:
|
|
mkdir -p $@
|
|
|
|
clean:
|
|
rm -f $(BUILD)/cli/media_ctrl_cli $(BUILD)/cli/v4l2_ctrl_cli
|