+# SPDX-License-Identifier: GPL-2.0
#
-# Copyright (c) 2000-2003 Silicon Graphics, Inc. All Rights Reserved.
-#
-# This program is free software; you can redistribute it and/or modify it
-# under the terms of version 2 of the GNU General Public License as
-# published by the Free Software Foundation.
-#
-# This program is distributed in the hope that it would be useful, but
-# WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
-#
-# Further, this software is distributed without any warranty that it is
-# free of the rightful claim of any third person regarding infringement
-# or the like. Any license provided herein, whether implied or
-# otherwise, applies only to this software file. Patent licenses, if
-# any, provided herein do not apply to combinations of this program with
-# other software, or any other product whatsoever.
-#
-# You should have received a copy of the GNU General Public License along
-# with this program; if not, write the Free Software Foundation, Inc., 59
-# Temple Place - Suite 330, Boston MA 02111-1307, USA.
-#
-# Contact information: Silicon Graphics, Inc., 1600 Amphitheatre Pkwy,
-# Mountain View, CA 94043, or:
-#
-# http://www.sgi.com
-#
-# For further information regarding this notice, see:
-#
-# http://oss.sgi.com/projects/GenInfo/SGIGPLNoticeExplan/
+# 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)
include $(TOPDIR)/include/builddefs
endif
-CONFIGURE = configure include/builddefs include/platform_defs.h
-LSRCFILES = configure configure.in Makepkgs install-sh README VERSION
+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.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) $(SRCTARXZ)
+endif
+
+# 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 debian spaceman
-LDIRT = config.log .dep config.status config.cache confdefs.h conftest* \
- Logs/* built .census install.* install-dev.* *.gz
+ifeq ("$(ENABLE_SCRUB)","yes")
+TOOL_SUBDIRS += scrub
+endif
+
+ifneq ("$(XGETTEXT)","")
+TOOL_SUBDIRS += po
+endif
-SUBDIRS = include libxfs libxlog libhandle libdisk \
- db freeze fsck growfs io imap logprint mkfile mkfs repair rtcp \
- man doc po debian build
+# include is listed last so it is processed last in clean rules.
+SUBDIRS = $(LIBFROG_SUBDIR) $(LIB_SUBDIRS) $(TOOL_SUBDIRS) include
-default: $(CONFIGURE)
+default: include/builddefs include/platform_defs.h
ifeq ($(HAVE_BUILDDEFS), no)
- $(MAKE) -C . $@
+ $(Q)$(MAKE) $(MAKEOPTS) -C . $@
else
- $(SUBDIRS_MAKERULE)
+ $(Q)$(MAKE) $(MAKEOPTS) headers
+ $(Q)$(MAKE) $(MAKEOPTS) $(SUBDIRS)
endif
+# tool/lib dependencies
+# 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: libxcmd
+io: libxcmd libhandle
+quota: libxcmd
+repair: libxlog libxcmd
+copy: libxlog
+mkfs: libxcmd
+spaceman: libxcmd
+scrub: libhandle libxcmd
+rtcp: libfrog
+
ifeq ($(HAVE_BUILDDEFS), yes)
include $(BUILDRULES)
else
clean: # if configure hasn't run, nothing to clean
endif
-$(CONFIGURE):
+configure: configure.ac
+ libtoolize -c -i -f
+ cp include/install-sh .
+ aclocal -I m4
autoconf
- ./configure \
- --prefix=/ \
- --exec-prefix=/ \
- --sbindir=/sbin \
- --bindir=/usr/sbin \
- --libdir=/lib \
- --libexecdir=/usr/lib \
- --includedir=/usr/include \
- --mandir=/usr/share/man \
- --datadir=/usr/share \
- $$LOCAL_CONFIGURE_OPTIONS
- touch .census
-
-install: default
- $(SUBDIRS_MAKERULE)
+
+include/builddefs: configure
+ ./configure $$LOCAL_CONFIGURE_OPTIONS
+
+include/platform_defs.h: include/builddefs
+## Recover from the removal of $@
+ @if test -f $@; then :; else \
+ rm -f include/builddefs; \
+ $(MAKE) $(MAKEOPTS) $(AM_MAKEFLAGS) include/builddefs; \
+ fi
+
+install: $(addsuffix -install,$(SUBDIRS))
$(INSTALL) -m 755 -d $(PKG_DOC_DIR)
$(INSTALL) -m 644 README $(PKG_DOC_DIR)
-install-dev: default
- $(SUBDIRS_MAKERULE)
+install-dev: $(addsuffix -install-dev,$(SUBDIRS))
+
+%-install:
+ @echo "Installing $@"
+ $(Q)$(MAKE) $(MAKEOPTS) -C $* install
+
+%-install-dev:
+ @echo "Installing $@"
+ $(Q)$(MAKE) $(MAKEOPTS) -C $* install-dev
+
+distclean: clean
+ $(Q)rm -f $(LDIRT)
+
+realclean: distclean
+ $(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)
+ $(Q)$(MAKE) $(MAKEOPTS) -C . $@
+else
+ $(Q)$(MAKE) $(MAKEOPTS) $(SRCTAR)
+endif
+
+deb: include/builddefs include/platform_defs.h
+ifeq ($(HAVE_BUILDDEFS), no)
+ $(Q)$(MAKE) $(MAKEOPTS) -C . $@
+else
+ # 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) $(SRCTAR)
+ rm -fr $@
+ $(Q)$(TAR) -zxvf $(SRCTAR)
+
+$(SRCTAR) : default $(SRCTARINC) .gitcensus
+ $(Q)$(TAR) --transform "s,^,$(SRCDIR)/," -zcf $(SRCDIR).tar.gz \
+ `cat .gitcensus` $(SRCTARINC)
+ echo Wrote: $@
+
+$(SRCTARXZ) : default $(SRCTARINC) .gitcensus
+ $(Q)$(TAR) --transform "s,^,$(SRCDIR)/," -Jcf $(SRCDIR).tar.xz \
+ `cat .gitcensus` $(SRCTARINC)
+ echo Wrote: $@
-realclean distclean: clean
- rm -f $(LDIRT) $(CONFIGURE)
- rm -rf autom4te.cache
- [ ! -d Logs ] || rmdir Logs
+.gitcensus: $(_FORCE)
+ $(Q)if test -d .git; then \
+ git ls-files > .gitcensus && echo "new .gitcensus"; \
+ fi