mirror of
https://github.com/trapexit/mergerfs.git
synced 2026-10-19 16:16:48 +00:00
update build system and dependency configuration
This commit is contained in:
committed by
trapexit
parent
ce3737ff33
commit
c8f32f9f25
@@ -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))
|
||||||
|
|||||||
@@ -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,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,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
|
||||||
|
|||||||
Vendored
+4
-1
@@ -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
@@ -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)
|
||||||
|
|||||||
Reference in New Issue
Block a user