From d292abbba553c5d18e6a2ab85b57aae3f05136bd Mon Sep 17 00:00:00 2001 From: fedir Date: Mon, 17 Mar 2025 11:02:07 +0100 Subject: [PATCH] Updated Makefile with `pkg-config` and a test target. Makefile now gets the necessary `cflags` and `libs` compiler arguments from `pkg-config` which increases portability and makes adding new dependencies easier. Also added `TEST` flag, to have automated testing in the future. --- Makefile | 57 ++++++++++++++++++++++++++++++++++++++++++++++++-------- 1 file changed, 49 insertions(+), 8 deletions(-) diff --git a/Makefile b/Makefile index 96d7890..8ffddeb 100644 --- a/Makefile +++ b/Makefile @@ -1,13 +1,34 @@ SHELL=/bin/bash +# configurable options + +SOURCES_DIR := ./src +TESTS_DIR := ./tests +BUILD_DIR := ./build + CC := gcc CXX := g++ -CFLAGS := -I/usr/include/fuse -D_FILE_OFFSET_BITS=64 -LDFLAGS := -lfuse3 -pthread -ifdef DEBUG - CFLAGS += -O0 -pedantic -Wall -Wextra -Wcast-align \ +# dependencies + +PACKAGE_NAMES := fuse3 + +ifeq ($(TEST), 1) + # PACKAGE_NAMES += check # TODO: use check? +endif + + +# set up cflags and libs + +CFLAGS := -D_FILE_OFFSET_BITS=64 +LDFLAGS := + +CFLAGS += $(shell pkg-config --cflags $(PACKAGE_NAMES)) +LDFLAGS += $(shell pkg-config --libs $(PACKAGE_NAMES)) + +ifeq ($(DEBUG),1) + CFLAGS += -O0 -pedantic -g -Wall -Wextra -Wcast-align \ -Wcast-qual -Wdisabled-optimization -Wformat=2 \ -Winit-self -Wlogical-op -Wmissing-declarations \ -Wmissing-include-dirs -Wredundant-decls -Wshadow \ @@ -19,12 +40,32 @@ else LDFLAGS += endif -SOURCES_DIR := ./src -BUILD_DIR := ./build -build: $(BUILD_DIR)/main.o $(BUILD_DIR)/fuse_operations.o $(BUILD_DIR)/sourcefs.o $(BUILD_DIR)/ui-socket.o +# set up targets + +TARGETS := icfs + +ifeq ($(TEST), 1) + TARGETS += icfs_test +endif + + +# build! + +default: $(TARGETS) + +.PHONY: clean + +icfs: $(BUILD_DIR)/main.o $(BUILD_DIR)/fuse_operations.o $(BUILD_DIR)/sourcefs.o $(BUILD_DIR)/ui-socket.o $(CC) $(CFLAGS) $^ $(LDFLAGS) -o $(BUILD_DIR)/icfs +icfs_test: $(BUILD_DIR)/main.o $(BUILD_DIR)/fuse_operations.o $(BUILD_DIR)/sourcefs.o $(BUILD_DIR)/ui-socket.o + $(CC) $(CFLAGS) $^ $(LDFLAGS) -o $(BUILD_DIR)/icfs_test + # $(BUILD_DIR)/icfs_test # TODO: implement testing + +$(BUILD_DIR)/test_access_control.o: $(TESTS_DIR)/test_access_control.c + $(CC) $(CFLAGS) -c $< $(LDFLAGS) -o $@ + $(BUILD_DIR)/main.o: $(SOURCES_DIR)/main.c $(CC) $(CFLAGS) -c $< $(LDFLAGS) -o $(BUILD_DIR)/main.o @@ -38,4 +79,4 @@ $(BUILD_DIR)/ui-socket.o: $(SOURCES_DIR)/ui-socket.c $(SOURCES_DIR)/ui-socket.h $(CC) $(CFLAGS) -c $< $(LDFLAGS) -o $@ clean: - rm $(BUILD_DIR)/* + rm $(BUILD_DIR)/*.o $(BUILD_DIR)/icfs*