@ -39,8 +39,6 @@ endif
USE_XATTR = 1
USE_XATTR = 1
FUSE_CFLAGS = -D_FILE_OFFSET_BITS= 64 -Ilibfuse/include
FUSE_CFLAGS = -D_FILE_OFFSET_BITS= 64 -Ilibfuse/include
FUSE_LIBS = libfuse/obj/libfuse.a
FUSE_TARGET = $( FUSE_LIBS)
i f e q ( $( DEBUG ) , 1 )
i f e q ( $( DEBUG ) , 1 )
DEBUG_FLAGS := -g
DEBUG_FLAGS := -g
@ -64,11 +62,11 @@ UGID_USE_RWLOCK = 0
OPTS = -O2
OPTS = -O2
SRC = $( wildcard src/*.cpp)
SRC = $( wildcard src/*.cpp)
OBJ = $( SRC:src/%.cpp= obj /%.o)
OBJS = $( SRC:src/%.cpp= build /%.o)
DEPS = $( OBJ:obj/%.o= obj /%.d)
DEPS = $( SRC:src/%.cpp= build /%.d)
TARGET = mergerfs
MANPAGE = mergerfs.1
MANPAGE = $( TARGET) .1
CXXFLAGS += \
CXXFLAGS = $( OPTS) \
$( OPTS) \
$( DEBUG_FLAGS) \
$( DEBUG_FLAGS) \
$( STATIC_FLAGS) \
$( STATIC_FLAGS) \
$( LTO_FLAGS) \
$( LTO_FLAGS) \
@ -79,6 +77,9 @@ CXXFLAGS = $(OPTS) \
-MMD \
-MMD \
-DUSE_XATTR= $( USE_XATTR) \
-DUSE_XATTR= $( USE_XATTR) \
-DUGID_USE_RWLOCK= $( UGID_USE_RWLOCK)
-DUGID_USE_RWLOCK= $( UGID_USE_RWLOCK)
LDFLAGS += \
-pthread \
-lrt
PREFIX = /usr/local
PREFIX = /usr/local
EXEC_PREFIX = $( PREFIX)
EXEC_PREFIX = $( PREFIX)
@ -93,77 +94,79 @@ INSTALLBINDIR = $(DESTDIR)$(BINDIR)
INSTALLSBINDIR = $( DESTDIR) $( SBINDIR)
INSTALLSBINDIR = $( DESTDIR) $( SBINDIR)
INSTALLMAN1DIR = $( DESTDIR) $( MAN1DIR)
INSTALLMAN1DIR = $( DESTDIR) $( MAN1DIR)
all : $( TARGET )
.PHONY : all
all : mergerfs
.PHONY : help
help :
help :
@echo "usage: make\n"
@echo "usage: make\n"
@echo "make USE_XATTR=0 - build program without xattrs functionality"
@echo "make USE_XATTR=0 - build program without xattrs functionality"
@echo "make STATIC=1 - build static binary"
@echo "make STATIC=1 - build static binary"
@echo "make LTO=1 - build with link time optimization"
@echo "make LTO=1 - build with link time optimization"
$(TARGET) : version obj /obj -stamp $( FUSE_TARGET ) $( OBJ )
objects : version build /stamp
$( CXX) $( CXXFLAGS) $( CPPFLAGS) $( LDFLAGS ) $( OBJ) -o $@ $( FUSE_LIB S) -pthread -lrt
$( MAKE ) $( OBJS)
mount.mergerfs : $( TARGET )
build/mergerfs : libfuse objects
$( CXX) $( CXXFLAGS) $( CPPFLAGS) $( OBJS) -o $@ libfuse/build/libfuse.a $( LDFLAGS)
mergerfs : build /mergerfs
build/mount.mergerfs : build /mergerfs
$( LN) -fs " $< " " $@ "
$( LN) -fs " $< " " $@ "
changelog :
changelog :
i f e q ( $( GIT_REPO ) , 1 )
i f e q ( $( GIT_REPO ) , 1 )
$( GIT2DEBCL) --name $( TARGET) > ChangeLog
$( GIT2DEBCL) --name mergerfs > ChangeLog
e l s e
e l s e
@echo "WARNING: need git repo to generate ChangeLog"
@echo "WARNING: need git repo to generate ChangeLog"
e n d i f
e n d i f
authors :
.PHONY : version
i f e q ( $( GIT_REPO ) , 1 )
$( GIT) log --format= '%aN <%aE>' | sort -f | uniq > AUTHORS
e l s e
@echo "WARNING: need git repo to generate AUTHORS"
e n d i f
version :
version :
tools/update-version
tools/update-version
obj/obj- stamp:
build/stamp :
$( MKDIR) -p obj
$( MKDIR) -p build
$( TOUCH) $@
$( TOUCH) $@
obj /%.o: src /%.cpp
build /%.o: src /%.cpp
$( CXX) $( CXXFLAGS) $( CPPFLAGS) -c $< -o $@
$( CXX) $( CXXFLAGS) $( CPPFLAGS) -c $< -o $@
.PHONY : clean
clean : rpm -clean
clean : rpm -clean
$( RM) -f src/version.hpp
$( RM) -rf build
$( RM) -rf obj
$( RM) -f " $( TARGET) " mount.mergerfs
$( FIND) . -name "*~" -delete
$( FIND) . -name "*~" -delete
cd libfuse && $( MAKE) clean
$( MAKE) -C libfuse clean
distclean : clean
distclean : clean
i f e q ( $( GIT_REPO ) , 1 )
i f e q ( $( GIT_REPO ) , 1 )
$( GIT) clean -xfd
$( GIT) clean -xfd
e n d i f
e n d i f
.PHONY : install
install : install -base install -mount .mergerfs install -man
install : install -base install -mount .mergerfs install -man
install-base : $( TARGET )
install-base : build /mergerfs
$( MKDIR) -p " $( INSTALLBINDIR) "
$( MKDIR) -p " $( INSTALLBINDIR) "
$( INSTALL) -v -m 0755 " $( TARGET) " " $( INSTALLBINDIR) / $( TARGET) "
$( INSTALL) -v -m 0755 build/mergerfs " $( INSTALLBINDIR) /mergerfs "
install-mount.mergerfs : mount .mergerfs
install-mount.mergerfs : build /mount .mergerfs
$( MKDIR) -p " $( INSTALLBINDIR) "
$( MKDIR) -p " $( INSTALLBINDIR) "
$( CP) -a " $< " " $( INSTALLBINDIR) / $< "
$( CP) -a build/mount.mergerfs " $( INSTALLBINDIR) /mount.mergerfs "
install-man : $( MANPAGE )
install-man : $( MANPAGE )
$( MKDIR) -p " $( INSTALLMAN1DIR) "
$( MKDIR) -p " $( INSTALLMAN1DIR) "
$( INSTALL) -v -m 0644 " man/ $( MANPAGE) " " $( INSTALLMAN1DIR) / $( MANPAGE) "
$( INSTALL) -v -m 0644 " man/ $( MANPAGE) " " $( INSTALLMAN1DIR) / $( MANPAGE) "
install-strip : install -base
install-strip : install -base
$( STRIP) " $( INSTALLBINDIR) / $( TARGET) "
$( STRIP) " $( INSTALLBINDIR) /mergerfs "
.PHONY : uninstall
uninstall : uninstall -base uninstall -mount .mergerfs uninstall -man
uninstall : uninstall -base uninstall -mount .mergerfs uninstall -man
uninstall-base :
uninstall-base :
$( RM) -f " $( INSTALLBINDIR) / $( TARGET) "
$( RM) -f " $( INSTALLBINDIR) /mergerfs "
uninstall-mount.mergerfs :
uninstall-mount.mergerfs :
$( RM) -f " $( INSTALLBINDIR) /mount.mergerfs "
$( RM) -f " $( INSTALLBINDIR) /mount.mergerfs "
@ -180,10 +183,11 @@ endif
man : $( MANPAGE )
man : $( MANPAGE )
tarball : man changelog authors version
.PHONY : tarball
tarball : man changelog version
$( eval VERSION := $( shell cat VERSION) )
$( eval VERSION := $( shell cat VERSION) )
$( eval VERSION := $( subst -,_,$( VERSION) ) )
$( eval VERSION := $( subst -,_,$( VERSION) ) )
$( eval FILENAME := $( TARGET) -$( VERSION) )
$( eval FILENAME := mergerfs -$( VERSION) )
$( eval TMPDIR := $( shell $( MKTEMP) --tmpdir -d .$( FILENAME) .XXXXXXXX) )
$( eval TMPDIR := $( shell $( MKTEMP) --tmpdir -d .$( FILENAME) .XXXXXXXX) )
$( MKDIR) $( TMPDIR) /$( FILENAME)
$( MKDIR) $( TMPDIR) /$( FILENAME)
$( CP) -ar . $( TMPDIR) /$( FILENAME)
$( CP) -ar . $( TMPDIR) /$( FILENAME)
@ -192,19 +196,24 @@ tarball: man changelog authors version
debian-changelog :
debian-changelog :
i f e q ( $( GIT_REPO ) , 1 )
i f e q ( $( GIT_REPO ) , 1 )
$( GIT2DEBCL) --name $( TARGET) > debian/changelog
$( GIT2DEBCL) --name mergerfs > debian/changelog
e l s e
e l s e
cp ChangeLog debian/changelog
cp ChangeLog debian/changelog
e n d i f
e n d i f
signed-deb : distclean debian -changelog
signed-deb :
$( MAKE) distclean
$( MAKE) debian-changelog
dpkg-source -b .
dpkg-buildpackage -nc
dpkg-buildpackage -nc
deb :
deb :
$( MAKE) distclean
$( MAKE) distclean
$( MAKE) debian-changelog
$( MAKE) debian-changelog
dpkg-source -b .
dpkg-buildpackage -nc -uc -us
dpkg-buildpackage -nc -uc -us
.PHONY : rpm -clean
rpm-clean :
rpm-clean :
$( RM) -rf rpmbuild
$( RM) -rf rpmbuild
@ -212,19 +221,18 @@ rpm: tarball
$( eval VERSION := $( shell cat VERSION) )
$( eval VERSION := $( shell cat VERSION) )
$( eval VERSION := $( subst -,_,$( VERSION) ) )
$( eval VERSION := $( subst -,_,$( VERSION) ) )
$( MKDIR) -p rpmbuild/BUILD rpmbuild/RPMS rpmbuild/SOURCES
$( MKDIR) -p rpmbuild/BUILD rpmbuild/RPMS rpmbuild/SOURCES
$( SED) 's/__VERSION__/$(VERSION)/g' $( TARGET) .spec > \
$( SED) 's/__VERSION__/$(VERSION)/g' mergerfs .spec > \
rpmbuild/SOURCES/$( TARGET) .spec
rpmbuild/SOURCES/mergerfs .spec
cp -ar $( TARGET) -$( VERSION) .tar.gz rpmbuild/SOURCES
cp -ar mergerfs -$( VERSION) .tar.gz rpmbuild/SOURCES
$( RPMBUILD) -ba rpmbuild/SOURCES/$( TARGET) .spec \
$( RPMBUILD) -ba rpmbuild/SOURCES/mergerfs .spec \
--define " _topdir $( CURDIR) /rpmbuild "
--define " _topdir $( CURDIR) /rpmbuild "
.PHONY : install -build -pkgs
install-build-pkgs :
install-build-pkgs :
tools/install-build-pkgs
tools/install-build-pkgs
u n export CFLAGS
.PHONY : libfuse
libfuse/obj/libfuse.a :
libfuse :
cd libfuse && $( MAKE) libfuse.a
$( MAKE) -C libfuse
.PHONY : all clean install help version
- i n c l u d e $( DEPS )
- i n c l u d e $( DEPS )
xxxxxxxxxx