From e1b848333b6ec7d8fe017215987ec80beb582125 Mon Sep 17 00:00:00 2001 From: mikael-lovqvists-claude-agent Date: Wed, 25 Mar 2026 22:15:03 +0000 Subject: [PATCH] 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 --- common.mk | 7 +++++++ dev/cli/Makefile | 17 ++++++++--------- src/modules/common/Makefile | 16 ++++++++-------- src/modules/media_ctrl/Makefile | 16 ++++++++-------- src/modules/v4l2_ctrl/Makefile | 16 ++++++++-------- 5 files changed, 39 insertions(+), 33 deletions(-) create mode 100644 common.mk diff --git a/common.mk b/common.mk new file mode 100644 index 0000000..6230c9d --- /dev/null +++ b/common.mk @@ -0,0 +1,7 @@ +# Included by all module and cli Makefiles. +# Each including Makefile must set ROOT before including this file: +# ROOT := $(abspath ) + +CC = gcc +CFLAGS = -std=c11 -Wall -Wextra -D_GNU_SOURCE -flto -I$(ROOT)/include +BUILD = $(ROOT)/build diff --git a/dev/cli/Makefile b/dev/cli/Makefile index 5d74e5e..ad25b27 100644 --- a/dev/cli/Makefile +++ b/dev/cli/Makefile @@ -1,29 +1,28 @@ -ROOT := $(abspath ../..) -CC = gcc -CFLAGS = -std=c11 -Wall -Wextra -D_GNU_SOURCE -flto -I$(ROOT)/include -BUILD = $(ROOT)/build +ROOT := $(abspath ../..) +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 diff --git a/src/modules/common/Makefile b/src/modules/common/Makefile index d2c5ab0..a44b75d 100644 --- a/src/modules/common/Makefile +++ b/src/modules/common/Makefile @@ -1,17 +1,17 @@ -ROOT := $(abspath ../../..) -CC = gcc -CFLAGS = -std=c11 -Wall -Wextra -D_GNU_SOURCE -flto -I$(ROOT)/include -BUILD = $(ROOT)/build/common +ROOT := $(abspath ../../..) +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 diff --git a/src/modules/media_ctrl/Makefile b/src/modules/media_ctrl/Makefile index 91aca5c..8269ac9 100644 --- a/src/modules/media_ctrl/Makefile +++ b/src/modules/media_ctrl/Makefile @@ -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 +ROOT := $(abspath ../../..) +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 diff --git a/src/modules/v4l2_ctrl/Makefile b/src/modules/v4l2_ctrl/Makefile index 07150bb..7b31550 100644 --- a/src/modules/v4l2_ctrl/Makefile +++ b/src/modules/v4l2_ctrl/Makefile @@ -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 +ROOT := $(abspath ../../..) +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