113 lines
2.9 KiB
Makefile
113 lines
2.9 KiB
Makefile
SHELL=/bin/bash
|
|
|
|
# configurable options
|
|
|
|
ifndef ($(SOURCES_DIR))
|
|
SOURCES_DIR := ./src
|
|
endif
|
|
|
|
ifndef ($(TESTS_DIR))
|
|
TESTS_DIR := ./tests
|
|
endif
|
|
|
|
ifndef ($(BUILD_DIR))
|
|
BUILD_DIR := ./build
|
|
endif
|
|
|
|
CC := gcc
|
|
CXX := g++
|
|
|
|
|
|
# dependencies
|
|
|
|
PACKAGE_NAMES := fuse3 sqlite3
|
|
|
|
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 \
|
|
-Wsign-conversion -Wstrict-overflow=5 \
|
|
-Wswitch-default -Wundef -Wno-unused
|
|
LDFLAGS +=
|
|
else
|
|
CFLAGS += -O3
|
|
LDFLAGS +=
|
|
endif
|
|
|
|
|
|
# set up targets
|
|
|
|
TARGETS := $(BUILD_DIR)/icfs
|
|
|
|
ifeq ($(TEST), 1)
|
|
TARGETS += icfs_test
|
|
endif
|
|
|
|
ifneq ($(DIALOGUE), 0)
|
|
TARGETS += $(BUILD_DIR)/icfs_dialogue
|
|
endif
|
|
|
|
# build!
|
|
|
|
default: $(TARGETS)
|
|
|
|
.PHONY: clean icfs_test clean-icfs clean-icfs_dialogue
|
|
|
|
$(BUILD_DIR)/icfs_dialogue:
|
|
make -C $(SOURCES_DIR)/gui TEST=$(TEST) DEBUG=$(shell realpath $(DEBUG)) SOURCES_DIR=$(shell realpath $(SOURCES_DIR)/gui) BUILD_DIR=$(shell realpath $(BUILD_DIR)) TESTS_DIR=$(shell realpath $(TESTS_DIR))
|
|
|
|
$(BUILD_DIR)/icfs: $(BUILD_DIR)/main.o $(BUILD_DIR)/fuse_operations.o $(BUILD_DIR)/sourcefs.o $(BUILD_DIR)/ui-socket.o $(BUILD_DIR)/temp_permissions_table.o $(BUILD_DIR)/perm_permissions_table.o
|
|
$(CC) $(CFLAGS) $^ $(LDFLAGS) -o $(BUILD_DIR)/icfs
|
|
|
|
icfs_test: $(BUILD_DIR)/icfs
|
|
cd ./test && ./test.bash
|
|
|
|
$(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
|
|
|
|
$(BUILD_DIR)/fuse_operations.o: $(SOURCES_DIR)/fuse_operations.c $(SOURCES_DIR)/fuse_operations.h
|
|
$(CC) $(CFLAGS) -c $< $(LDFLAGS) -o $@
|
|
|
|
$(BUILD_DIR)/sourcefs.o: $(SOURCES_DIR)/sourcefs.c $(SOURCES_DIR)/sourcefs.h $(SOURCES_DIR)/real_filename.h
|
|
$(CC) $(CFLAGS) -c $< $(LDFLAGS) -o $@
|
|
|
|
$(BUILD_DIR)/ui-socket.o: $(SOURCES_DIR)/ui-socket.c $(SOURCES_DIR)/ui-socket.h
|
|
$(CC) $(CFLAGS) -c $< $(LDFLAGS) -o $@
|
|
|
|
$(BUILD_DIR)/temp_permissions_table.o: $(SOURCES_DIR)/temp_permissions_table.c $(SOURCES_DIR)/temp_permissions_table.h
|
|
$(CC) $(CFLAGS) -c $< $(LDFLAGS) -o $@
|
|
|
|
$(BUILD_DIR)/perm_permissions_table.o: $(SOURCES_DIR)/perm_permissions_table.c $(SOURCES_DIR)/perm_permissions_table.h
|
|
$(CC) $(CFLAGS) -c $< $(LDFLAGS) -o $@
|
|
|
|
CLEAN_TARGETS=clean-icfs
|
|
|
|
ifneq ($(DIALOGUE), 0)
|
|
CLEAN_TARGETS += clean-icfs_dialogue
|
|
endif
|
|
|
|
clean: $(CLEAN_TARGETS)
|
|
|
|
clean-icfs:
|
|
rm $(BUILD_DIR)/*.o $(BUILD_DIR)/icfs
|
|
|
|
clean-icfs_dialogue:
|
|
make -C $(SOURCES_DIR)/gui clean SOURCES_DIR=$(shell realpath $(SOURCES_DIR)/gui) BUILD_DIR=$(shell realpath $(BUILD_DIR)) TESTS_DIR=$(shell realpath $(TESTS_DIR))
|