update build system and dependency configuration

This commit is contained in:
Antonio SJ Musumeci
2026-05-09 18:55:23 -05:00
committed by trapexit
parent ce3737ff33
commit c8f32f9f25
6 changed files with 56 additions and 38 deletions
+27 -20
View File
@@ -37,7 +37,7 @@ TOUCH ?= touch
BUILDDIR := build BUILDDIR := build
GITHUB_REPO ?= "https://github.com/trapexit/mergerfs" GITHUB_REPO ?= "https://github.com/trapexit/mergerfs"
DEFAULT_RELEASE := debian:13.amd64 DEFAULT_TARGET := debian:13.amd64
ifndef GIT_REPO ifndef GIT_REPO
ifneq ($(shell $(GIT) --version 2> /dev/null),) ifneq ($(shell $(GIT) --version 2> /dev/null),)
@@ -48,11 +48,7 @@ endif
endif endif
USE_XATTR ?= 1 USE_XATTR ?= 1
UGID_USE_RWLOCK ?= 0
ifdef NDEBUG
OPT_FLAGS := -O2 -DNDEBUG
else
ifdef SANITIZE ifdef SANITIZE
ifeq ($(SANITIZE),1) ifeq ($(SANITIZE),1)
override SANITIZE := -fsanitize=address,undefined,leak override SANITIZE := -fsanitize=address,undefined,leak
@@ -60,14 +56,22 @@ else ifeq ($(filter -fsanitize=%,$(SANITIZE)),)
override SANITIZE := -fsanitize=$(SANITIZE) override SANITIZE := -fsanitize=$(SANITIZE)
endif endif
endif endif
OPT_FLAGS := -O0 \
-g \ COMMON_OPT_FLAGS += \
-fno-omit-frame-pointer \ -fstack-protector-strong \
$(SANITIZE) \ -Wextra \
-fstack-protector-strong \ -Wno-unused-parameter
-Wextra \
-Wno-unused-parameter \ DEBUG_OPT_FLAGS += \
-DDEBUG -O0 \
-g3 \
-fno-omit-frame-pointer \
$(SANITIZE)
ifdef RELEASE
OPT_FLAGS := -O3 $(COMMON_OPT_FLAGS)
else
OPT_FLAGS ?= $(DEBUG_OPT_FLAGS) $(COMMON_OPT_FLAGS)
endif endif
ifdef STATIC ifdef STATIC
@@ -125,8 +129,7 @@ override INC_FLAGS := \
-Ivendored \ -Ivendored \
-Ivendored/libfuse/include -Ivendored/libfuse/include
override MFS_FLAGS := \ override MFS_FLAGS := \
-DUSE_XATTR=$(USE_XATTR) \ -DUSE_XATTR=$(USE_XATTR)
-DUGID_USE_RWLOCK=$(UGID_USE_RWLOCK)
override TESTS_FLAGS := \ override TESTS_FLAGS := \
-Isrc \ -Isrc \
-Ivendored \ -Ivendored \
@@ -198,7 +201,7 @@ libfuse: $(LIBFUSE)
$(MAKE) -C vendored/libfuse $(MAKE) -C vendored/libfuse
$(LIBFUSE): $(LIBFUSE):
$(MAKE) -C vendored/libfuse $(BUILDDIR)/libfuse.a $(MAKE) -C vendored/libfuse $(BUILDDIR)/libfuse.a RELEASE=$(RELEASE)
tests: $(BUILDDIR)/tests tests: $(BUILDDIR)/tests
@@ -362,14 +365,16 @@ define build_release
--branch=$(GITREF) --branch=$(GITREF)
endef endef
.PHONY: release .PHONY: release release-all
.PHONY: release-amd64 release-arm64 release-armhf release-riscv64 .PHONY: release-amd64 release-arm64 release-armhf release-riscv64
.PHONY: release-sample release-static release-tarball .PHONY: release-sample release-static release-tarball release-installer
release: release:
$(MAKE) RELEASE=1 CPPFLAGS=-DNDEBUG all
release-all:
$(call build_release,"all") $(call build_release,"all")
release-sample: release-sample:
$(if $(RELEASE),,$(eval RELEASE := $(shell ./buildtools/detect-local-target 2>/dev/null))) $(if $(TARGET),,$(eval TARGET := $(shell ./buildtools/detect-local-target 2>/dev/null)))
$(call build_release,$(if $(RELEASE),$(RELEASE),$(DEFAULT_RELEASE))) $(call build_release,$(if $(TARGET),$(TARGET),$(DEFAULT_TARGET)))
release-amd64: release-amd64:
$(call build_release,"amd64") $(call build_release,"amd64")
release-arm64: release-arm64:
@@ -382,6 +387,8 @@ release-static:
$(call build_release,"static") $(call build_release,"static")
release-tarball: release-tarball:
$(call build_release,"tarball") $(call build_release,"tarball")
release-installer:
$(call build_release,"installer")
container: container:
$(eval GITREF ?= $(shell git describe --exact-match --tags HEAD 2>/dev/null || git symbolic-ref --short HEAD 2>/dev/null || git rev-parse --short HEAD)) $(eval GITREF ?= $(shell git describe --exact-match --tags HEAD 2>/dev/null || git symbolic-ref --short HEAD 2>/dev/null || git rev-parse --short HEAD))
+1 -1
View File
@@ -18,7 +18,7 @@ def build(git_repo,
'--force-rm'] '--force-rm']
if os.path.exists(git_repo): if os.path.exists(git_repo):
git_repo = os.path.realpath(git_repo) git_repo = os.path.realpath(git_repo)
args += ['-v',f'{git_repo}:/tmp/mergerfs.git:ro'] args += ['-v',f'{git_repo}:/tmp/mergerfs.git:ro:z']
args += ['--build-arg=GIT_REPO=file:///tmp/mergerfs.git'] args += ['--build-arg=GIT_REPO=file:///tmp/mergerfs.git']
else: else:
args += [f'--build-arg=GIT_REPO={git_repo}'] args += [f'--build-arg=GIT_REPO={git_repo}']
+1 -1
View File
@@ -1,4 +1,4 @@
FROM --platform=amd64 fedora:43 as build FROM --platform=amd64 fedora:44 as build
COPY install-build-pkgs build-mergerfs /tmp/ COPY install-build-pkgs build-mergerfs /tmp/
RUN /tmp/install-build-pkgs RUN /tmp/install-build-pkgs
ARG BUILD_TIMESTAMP=0 ARG BUILD_TIMESTAMP=0
+1 -1
View File
@@ -1,4 +1,4 @@
FROM --platform=arm64 fedora:43 as build FROM --platform=arm64 fedora:44 as build
COPY install-build-pkgs build-mergerfs /tmp/ COPY install-build-pkgs build-mergerfs /tmp/
RUN /tmp/install-build-pkgs RUN /tmp/install-build-pkgs
ARG BUILD_TIMESTAMP=0 ARG BUILD_TIMESTAMP=0
+4 -1
View File
@@ -6,8 +6,11 @@ export DH_VERBOSE=1
%: %:
dh $@ dh $@
override_dh_auto_build:
$(MAKE) release
override_dh_auto_install: override_dh_auto_install:
$(MAKE) \ $(MAKE) \
DESTDIR=$(CURDIR)/debian/mergerfs \ DESTDIR=$(CURDIR)/debian/mergerfs \
PREFIX=/usr \ PREFIX=/usr \
install install
+22 -14
View File
@@ -32,9 +32,6 @@ UTILS :=
INSTALLUTILS := INSTALLUTILS :=
endif endif
ifeq ($(NDEBUG),1)
OPT_FLAGS := -O2 -DNDEBUG
else
ifdef SANITIZE ifdef SANITIZE
ifeq ($(SANITIZE),1) ifeq ($(SANITIZE),1)
override SANITIZE := -fsanitize=address,undefined,leak override SANITIZE := -fsanitize=address,undefined,leak
@@ -42,15 +39,22 @@ else ifeq ($(filter -fsanitize=%,$(SANITIZE)),)
override SANITIZE := -fsanitize=$(SANITIZE) override SANITIZE := -fsanitize=$(SANITIZE)
endif endif
endif endif
OPT_FLAGS := -O0 \
-g \ COMMON_OPT_FLAGS += \
-fno-omit-frame-pointer \ -fstack-protector-strong \
$(SANITIZE) \ -Wextra \
-fstack-protector-strong \ -Wno-unused-parameter
-Wextra \
-Werror \ DEBUG_OPT_FLAGS += \
-Wno-unused-parameter \ -O0 \
-DDEBUG -g3 \
-fno-omit-frame-pointer \
$(SANITIZE)
ifdef RELEASE
OPT_FLAGS := -O3 $(COMMON_OPT_FLAGS)
else
OPT_FLAGS ?= $(DEBUG_OPT_FLAGS) $(COMMON_OPT_FLAGS)
endif endif
ifeq ($(LTO),1) ifeq ($(LTO),1)
@@ -151,10 +155,10 @@ $(BUILDDIR)/mount.mergerfs: $(BUILDDIR)/libfuse.a util/mount.mergerfs.cpp
mount.mergerfs: $(BUILDDIR)/mount.mergerfs mount.mergerfs: $(BUILDDIR)/mount.mergerfs
$(BUILDDIR)/.objs/%.c.o: lib/%.c | $(BUILDDIR)/stamp $(BUILDDIR)/.objs/%.c.o: lib/%.c | $(BUILDDIR)/stamp
$(CC) $(CFLAGS) $(FUSE_FLAGS) -c $< -o $@ $(CC) $(CFLAGS) $(CPPFLAGS) $(FUSE_FLAGS) -c $< -o $@
$(BUILDDIR)/.objs/%.cpp.o: lib/%.cpp | $(BUILDDIR)/stamp $(BUILDDIR)/.objs/%.cpp.o: lib/%.cpp | $(BUILDDIR)/stamp
$(CXX) $(CXXFLAGS) $(FUSE_FLAGS) -c $< -o $@ $(CXX) $(CXXFLAGS) $(CPPFLAGS) $(FUSE_FLAGS) -c $< -o $@
.PHONY: clean .PHONY: clean
clean: clean:
@@ -176,6 +180,10 @@ install-utils: mergerfs-fusermount mount.mergerfs strip
install: $(INSTALLUTILS) install: $(INSTALLUTILS)
.PHONY: release
release:
$(MAKE) RELEASE=1 NDEBUG=1 CPPFLAGS="$(CPPFLAGS) -DNDEBUG" all
.PHONY: objects strip utils install install-utils .PHONY: objects strip utils install install-utils
-include $(DEPS) -include $(DEPS)