Extract shared Makefile config into common.mk

CC, CFLAGS, and BUILD are now defined once in common.mk at the repo root.
Each module and CLI Makefile sets ROOT then includes common.mk, eliminating
the repeated definitions.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
2026-03-25 22:15:03 +00:00
parent eb65181fe7
commit e1b848333b
5 changed files with 39 additions and 33 deletions

7
common.mk Normal file
View File

@@ -0,0 +1,7 @@
# Included by all module and cli Makefiles.
# Each including Makefile must set ROOT before including this file:
# ROOT := $(abspath <relative path to repo root>)
CC = gcc
CFLAGS = -std=c11 -Wall -Wextra -D_GNU_SOURCE -flto -I$(ROOT)/include
BUILD = $(ROOT)/build

View File

@@ -1,29 +1,28 @@
ROOT := $(abspath ../..)
CC = gcc
CFLAGS = -std=c11 -Wall -Wextra -D_GNU_SOURCE -flto -I$(ROOT)/include
BUILD = $(ROOT)/build
include $(ROOT)/common.mk
CLI_BUILD = $(BUILD)/cli
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
all: modules $(CLI_BUILD)/media_ctrl_cli $(CLI_BUILD)/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
$(CLI_BUILD)/media_ctrl_cli: media_ctrl_cli.c $(COMMON_OBJ) $(MEDIA_CTRL_OBJ) | $(CLI_BUILD)
$(CC) $(CFLAGS) -o $@ $^
$(BUILD)/cli/v4l2_ctrl_cli: v4l2_ctrl_cli.c $(COMMON_OBJ) $(V4L2_CTRL_OBJ) | $(BUILD)/cli
$(CLI_BUILD)/v4l2_ctrl_cli: v4l2_ctrl_cli.c $(COMMON_OBJ) $(V4L2_CTRL_OBJ) | $(CLI_BUILD)
$(CC) $(CFLAGS) -o $@ $^
$(BUILD)/cli:
$(CLI_BUILD):
mkdir -p $@
clean:
rm -f $(BUILD)/cli/media_ctrl_cli $(BUILD)/cli/v4l2_ctrl_cli
rm -f $(CLI_BUILD)/media_ctrl_cli $(CLI_BUILD)/v4l2_ctrl_cli

View File

@@ -1,17 +1,17 @@
ROOT := $(abspath ../../..)
CC = gcc
CFLAGS = -std=c11 -Wall -Wextra -D_GNU_SOURCE -flto -I$(ROOT)/include
BUILD = $(ROOT)/build/common
include $(ROOT)/common.mk
MODULE_BUILD = $(BUILD)/common
.PHONY: all clean
all: $(BUILD)/error.o
all: $(MODULE_BUILD)/error.o
$(BUILD)/error.o: error.c $(ROOT)/include/error.h | $(BUILD)
$(MODULE_BUILD)/error.o: error.c $(ROOT)/include/error.h | $(MODULE_BUILD)
$(CC) $(CFLAGS) -c -o $@ $<
$(BUILD):
$(MODULE_BUILD):
mkdir -p $@
clean:
rm -f $(BUILD)/error.o
rm -f $(MODULE_BUILD)/error.o

View File

@@ -1,17 +1,17 @@
ROOT := $(abspath ../../..)
CC = gcc
CFLAGS = -std=c11 -Wall -Wextra -D_GNU_SOURCE -flto -I$(ROOT)/include
BUILD = $(ROOT)/build/media_ctrl
include $(ROOT)/common.mk
MODULE_BUILD = $(BUILD)/media_ctrl
.PHONY: all clean
all: $(BUILD)/media_ctrl.o
all: $(MODULE_BUILD)/media_ctrl.o
$(BUILD)/media_ctrl.o: media_ctrl.c $(ROOT)/include/media_ctrl.h $(ROOT)/include/error.h | $(BUILD)
$(MODULE_BUILD)/media_ctrl.o: media_ctrl.c $(ROOT)/include/media_ctrl.h $(ROOT)/include/error.h | $(MODULE_BUILD)
$(CC) $(CFLAGS) -c -o $@ $<
$(BUILD):
$(MODULE_BUILD):
mkdir -p $@
clean:
rm -f $(BUILD)/media_ctrl.o
rm -f $(MODULE_BUILD)/media_ctrl.o

View File

@@ -1,17 +1,17 @@
ROOT := $(abspath ../../..)
CC = gcc
CFLAGS = -std=c11 -Wall -Wextra -D_GNU_SOURCE -flto -I$(ROOT)/include
BUILD = $(ROOT)/build/v4l2_ctrl
include $(ROOT)/common.mk
MODULE_BUILD = $(BUILD)/v4l2_ctrl
.PHONY: all clean
all: $(BUILD)/v4l2_ctrl.o
all: $(MODULE_BUILD)/v4l2_ctrl.o
$(BUILD)/v4l2_ctrl.o: v4l2_ctrl.c $(ROOT)/include/v4l2_ctrl.h $(ROOT)/include/error.h | $(BUILD)
$(MODULE_BUILD)/v4l2_ctrl.o: v4l2_ctrl.c $(ROOT)/include/v4l2_ctrl.h $(ROOT)/include/error.h | $(MODULE_BUILD)
$(CC) $(CFLAGS) -c -o $@ $<
$(BUILD):
$(MODULE_BUILD):
mkdir -p $@
clean:
rm -f $(BUILD)/v4l2_ctrl.o
rm -f $(MODULE_BUILD)/v4l2_ctrl.o