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