+# SPDX-License-Identifier: GPL-2.0
#
# Copyright (c) 2000-2006 Silicon Graphics, Inc. All Rights Reserved.
#
+ifeq ("$(origin V)", "command line")
+ BUILD_VERBOSE = $(V)
+endif
+ifndef BUILD_VERBOSE
+ BUILD_VERBOSE = 0
+endif
+
+ifeq ($(BUILD_VERBOSE),1)
+ Q =
+else
+ Q = @
+endif
+
+CHECK=sparse
+CHECK_OPTS=-Wsparse-all -Wbitwise -Wno-transparent-union -Wno-return-void -Wno-undef \
+ -Wno-non-pointer-null -D__CHECK_ENDIAN__ -D__linux__
+
+ifeq ("$(origin C)", "command line")
+ CHECK_CMD=$(CHECK) $(CHECK_OPTS)
+ CHECKSRC=$(C)
+else
+ CHECK_CMD=@true
+ CHECKSRC=0
+endif
+
+export CHECK_CMD CHECKSRC
+
+MAKEOPTS = --no-print-directory Q=$(Q)
+
TOPDIR = .
HAVE_BUILDDEFS = $(shell test -f $(TOPDIR)/include/builddefs && echo yes || echo no)
SRCDIR = $(PKG_NAME)-$(PKG_VERSION)
SRCTAR = $(PKG_NAME)-$(PKG_VERSION).tar.gz
+SRCTARXZ = $(PKG_NAME)-$(PKG_VERSION).tar.xz
CONFIGURE = aclocal.m4 configure config.guess config.sub install-sh ltmain.sh
-LSRCFILES = configure.in release.sh README VERSION $(CONFIGURE)
-
-LDIRT = config.log .dep config.status config.cache confdefs.h conftest* \
- built .census install.* install-dev.* *.gz autom4te.cache/* libtool \
- include/builddefs include/platform_defs.h
+LSRCFILES = configure.ac release.sh README VERSION $(CONFIGURE)
+SRCTARINC = m4/libtool.m4 m4/lt~obsolete.m4 m4/ltoptions.m4 m4/ltsugar.m4 \
+ m4/ltversion.m4 po/xfsprogs.pot .gitcensus $(CONFIGURE)
+LDIRT = config.log .ltdep .dep config.status config.cache confdefs.h \
+ conftest* built .census install.* install-dev.* *.gz *.xz \
+ autom4te.cache/* libtool include/builddefs include/platform_defs.h
ifeq ($(HAVE_BUILDDEFS), yes)
LDIRDIRT = $(SRCDIR)
-LDIRT += $(SRCTAR)
+LDIRT += $(SRCTAR) $(SRCTARXZ)
endif
-LIB_SUBDIRS = libxfs libxlog libxcmd libhandle $(LDISK)
+# header install rules to populate include/xfs correctly
+HDR_SUBDIRS = include libxfs
+
+LIBFROG_SUBDIR = libfrog
+DLIB_SUBDIRS = libxlog libxcmd libhandle
+LIB_SUBDIRS = libxfs $(DLIB_SUBDIRS)
TOOL_SUBDIRS = copy db estimate fsck fsr growfs io logprint mkfs quota \
- mdrestore repair rtcp m4 man doc po debian
+ mdrestore repair rtcp m4 man doc debian spaceman
-ifneq ($(ENABLE_BLKID), yes)
-LIB_SUBDIRS += libdisk
+ifeq ("$(ENABLE_SCRUB)","yes")
+TOOL_SUBDIRS += scrub
endif
-SUBDIRS = include $(LIB_SUBDIRS) $(TOOL_SUBDIRS)
+ifneq ("$(XGETTEXT)","")
+TOOL_SUBDIRS += po
+endif
+
+# If we are on OS X, use glibtoolize from MacPorts, as OS X doesn't have
+# libtoolize binary itself.
+LIBTOOLIZE_TEST=$(shell libtoolize --version >/dev/null 2>&1 && echo found)
+LIBTOOLIZE_BIN=libtoolize
+ifneq ("$(LIBTOOLIZE_TEST)","found")
+LIBTOOLIZE_BIN=glibtoolize
+endif
+
+# include is listed last so it is processed last in clean rules.
+SUBDIRS = $(LIBFROG_SUBDIR) $(LIB_SUBDIRS) $(TOOL_SUBDIRS) include
default: include/builddefs include/platform_defs.h
ifeq ($(HAVE_BUILDDEFS), no)
- $(MAKE) -C . $@
+ $(Q)$(MAKE) $(MAKEOPTS) -C . $@
else
- $(MAKE) $(SUBDIRS)
+ $(Q)$(MAKE) $(MAKEOPTS) headers
+ $(Q)$(MAKE) $(MAKEOPTS) $(SUBDIRS)
endif
# tool/lib dependencies
-$(LIB_SUBDIRS) $(TOOL_SUBDIRS): include
-copy mdrestore: libxfs
-db logprint: libxfs libxlog
+# note: include/xfs is set up by libxfs, too, so everything is dependent on it.
+$(LIBFROG_SUBDIR): include
+$(LIB_SUBDIRS) $(TOOL_SUBDIRS): include libfrog
+$(DLIB_SUBDIRS) $(TOOL_SUBDIRS): libxfs
+db logprint: libxlog
fsr: libhandle
-growfs: libxfs libxcmd
+growfs: libxcmd
io: libxcmd libhandle
-mkfs: libxfs
quota: libxcmd
-repair: libxfs libxlog
-
-ifneq ($(ENABLE_BLKID), yes)
-mkfs: libdisk
-endif
+repair: libxlog libxcmd
+copy: libxlog
+mkfs: libxcmd
+spaceman: libxcmd
+scrub: libhandle libxcmd
+rtcp: libfrog
ifeq ($(HAVE_BUILDDEFS), yes)
include $(BUILDRULES)
clean: # if configure hasn't run, nothing to clean
endif
+
# Recent versions of libtool require the -i option for copying auxiliary
# files (config.sub, config.guess, install-sh, ltmain.sh), while older
# versions will copy those files anyway, and don't understand -i.
-LIBTOOLIZE_INSTALL = `libtoolize -n -i >/dev/null 2>/dev/null && echo -i`
+LIBTOOLIZE_INSTALL = `$(LIBTOOLIZE_BIN) -n -i >/dev/null 2>/dev/null && echo -i`
-configure:
- libtoolize -c $(LIBTOOLIZE_INSTALL) -f
+configure: configure.ac
+ $(LIBTOOLIZE_BIN) -c $(LIBTOOLIZE_INSTALL) -f
cp include/install-sh .
aclocal -I m4
autoconf
## Recover from the removal of $@
@if test -f $@; then :; else \
rm -f include/builddefs; \
- $(MAKE) $(AM_MAKEFLAGS) include/builddefs; \
+ $(MAKE) $(MAKEOPTS) $(AM_MAKEFLAGS) include/builddefs; \
fi
-install: default $(addsuffix -install,$(SUBDIRS))
+install: $(addsuffix -install,$(SUBDIRS))
$(INSTALL) -m 755 -d $(PKG_DOC_DIR)
$(INSTALL) -m 644 README $(PKG_DOC_DIR)
-install-dev: default $(addsuffix -install-dev,$(SUBDIRS))
-
-install-qa: install $(addsuffix -install-qa,$(SUBDIRS))
+install-dev: $(addsuffix -install-dev,$(SUBDIRS))
%-install:
- $(MAKE) -C $* install
+ @echo "Installing $@"
+ $(Q)$(MAKE) $(MAKEOPTS) -C $* install
%-install-dev:
- $(MAKE) -C $* install-dev
-
-%-install-qa:
- $(MAKE) -C $* install-qa
+ @echo "Installing $@"
+ $(Q)$(MAKE) $(MAKEOPTS) -C $* install-dev
distclean: clean
- rm -f $(LDIRT)
+ $(Q)rm -f $(LDIRT)
realclean: distclean
- rm -f $(CONFIGURE)
+ $(Q)rm -f $(CONFIGURE) .gitcensus
#
# All this gunk is to allow for a make dist on an unconfigured tree
#
dist: include/builddefs include/platform_defs.h default
ifeq ($(HAVE_BUILDDEFS), no)
- $(MAKE) -C . $@
+ $(Q)$(MAKE) $(MAKEOPTS) -C . $@
else
- $(MAKE) $(SRCTAR)
+ $(Q)$(MAKE) $(MAKEOPTS) $(SRCTAR)
endif
deb: include/builddefs include/platform_defs.h
ifeq ($(HAVE_BUILDDEFS), no)
- $(MAKE) -C . $@
+ $(Q)$(MAKE) $(MAKEOPTS) -C . $@
else
- $(MAKE) $(SRCDIR)
- $(MAKE) -C po
- $(MAKE) source-link
- cd $(SRCDIR) && dpkg-buildpackage
+ # need to build translations before the source tarball
+ $(Q)$(MAKE) $(MAKEOPTS) -C po
+ $(Q)$(MAKE) $(MAKEOPTS) $(SRCDIR)
+ $(Q)rm -f $(PKG_NAME)_$(PKG_VERSION).orig.tar.gz
+ $(Q)$(LN_S) $(SRCTAR) $(PKG_NAME)_$(PKG_VERSION).orig.tar.gz
+ $(Q)cd $(SRCDIR) && dpkg-buildpackage $$LOCAL_DPKG_OPTIONS # -sa -S
endif
-$(SRCDIR) : $(_FORCE)
+$(SRCDIR) : $(_FORCE) $(SRCTAR)
rm -fr $@
- mkdir -p $@
+ $(Q)$(TAR) -zxvf $(SRCTAR)
+
+$(SRCTAR) : default $(SRCTARINC) .gitcensus
+ $(Q)$(TAR) --transform "s,^,$(SRCDIR)/," -zcf $(SRCDIR).tar.gz \
+ `cat .gitcensus` $(SRCTARINC)
+ echo Wrote: $@
-$(SRCTAR) : default $(SRCDIR)
- $(MAKE) source-link
- unset TAPE; $(TAR) -cf - $(SRCDIR) | $(ZIP) --best > $@ && \
+$(SRCTARXZ) : default $(SRCTARINC) .gitcensus
+ $(Q)$(TAR) --transform "s,^,$(SRCDIR)/," -Jcf $(SRCDIR).tar.xz \
+ `cat .gitcensus` $(SRCTARINC)
echo Wrote: $@
+
+.gitcensus: $(_FORCE)
+ $(Q)if test -d .git; then \
+ git ls-files > .gitcensus && echo "new .gitcensus"; \
+ fi