]> git.ipfire.org Git - thirdparty/xfsprogs-dev.git/commitdiff
xfsprogs: Automatic build dependency calculations
authorDave Chinner <david@fromorbit.com>
Thu, 21 Jan 2010 07:43:18 +0000 (07:43 +0000)
committerAlex Elder <aelder@sgi.com>
Thu, 21 Jan 2010 22:52:08 +0000 (16:52 -0600)
Currently the xfsprogs builds do not have any automatic dependency
calculations. It relies on a separate make depend run to build or
update dependency information. It also relies on an external
makedepend binary. If that binary does not exist, the dependencies
do not get calculated.

To remove the dependency on makedepend, gcc can be used instead as
it has a command to generate dependency information. This patch
changes the dependency rule building to use gcc.

In case anyone uses an old (several years) gcc compiler or a
compiler that doesn't support gcc compatible dependency generation,
a new configure check is added to turn off dependency checking so
builds can still be done.

To use the dependencies automatically, we need to use a special
include makefile directive to include the build dependencies into
the current makefile.  Essentially once the dependencies are
calculated, they can be included into the makefile and make will
recalculate the build dependencies automatically based on that
information.

Hence we get a build that automatically calculates and keeps
dependencies up to date without dependence on any external tools.

Signed-off-by: Dave Chinner <david@fromorbit.com>
Reviewed-by: Christoph Hellwig <hch@lst.de>
Signed-off-by: Alex Elder <aelder@sgi.com>
19 files changed:
copy/Makefile
db/Makefile
estimate/Makefile
fsr/Makefile
growfs/Makefile
include/buildrules
io/Makefile
libdisk/Makefile
libhandle/Makefile
libxcmd/Makefile
libxfs/Makefile
libxlog/Makefile
logprint/Makefile
m4/package_utilies.m4
mdrestore/Makefile
mkfs/Makefile
quota/Makefile
repair/Makefile
rtcp/Makefile

index 3bdc72b8c810237f5edb67ed119af068c032fbe4..54f6dfb289f415b97fcaf78b184a0b34cfcaebeb 100644 (file)
@@ -13,7 +13,7 @@ LLDLIBS = $(LIBXFS) $(LIBUUID) $(LIBPTHREAD) $(LIBRT)
 LTDEPENDENCIES = $(LIBXFS)
 LLDFLAGS = -static
 
-default: $(LTCOMMAND)
+default: depend $(LTCOMMAND)
 
 include $(BUILDRULES)
 
@@ -21,3 +21,5 @@ install: default
        $(INSTALL) -m 755 -d $(PKG_SBIN_DIR)
        $(LTINSTALL) -m 755 $(LTCOMMAND) $(PKG_SBIN_DIR)
 install-dev:
+
+-include .dep
index 69a85d76dcd1b8d3ebcfb66f4ecc2d70857c26e6..5c7d054a08214a01df802c364b611fc4edcf2c62 100644 (file)
@@ -30,7 +30,7 @@ LLDLIBS += $(LIBEDITLINE) $(LIBTERMCAP)
 CFLAGS += -DENABLE_EDITLINE
 endif
 
-default: $(LTCOMMAND)
+default: depend $(LTCOMMAND)
 
 include $(BUILDRULES)
 
@@ -42,3 +42,5 @@ install: default
        $(INSTALL) -m 755 xfs_ncheck.sh $(PKG_SBIN_DIR)/xfs_ncheck
        $(INSTALL) -m 755 xfs_metadump.sh $(PKG_SBIN_DIR)/xfs_metadump
 install-dev:
+
+-include .dep
index c972403a3d4d8126740436b7da8ffe176122c718..18971e4e48fd258fe41a39a8be7281405b43e3f8 100644 (file)
@@ -8,7 +8,7 @@ include $(TOPDIR)/include/builddefs
 LTCOMMAND = xfs_estimate
 CFILES = xfs_estimate.c
 
-default: $(LTCOMMAND)
+default: depend $(LTCOMMAND)
 
 include $(BUILDRULES)
 
@@ -16,3 +16,5 @@ install: default
        $(INSTALL) -m 755 -d $(PKG_SBIN_DIR)
        $(LTINSTALL) -m 755 $(LTCOMMAND) $(PKG_SBIN_DIR)
 install-dev:
+
+-include .dep
index b7b0ab8817b45bc523844b362e068cd2b747e69c..a9d1bf68a46ac2f71c4fb1aba8d97330347a4ab6 100644 (file)
@@ -9,7 +9,7 @@ LTCOMMAND = xfs_fsr
 CFILES = xfs_fsr.c
 LLDLIBS = $(LIBHANDLE)
 
-default: $(LTCOMMAND)
+default: depend $(LTCOMMAND)
 
 include $(BUILDRULES)
 
@@ -17,3 +17,5 @@ install: default
        $(INSTALL) -m 755 -d $(PKG_SBIN_DIR)
        $(LTINSTALL) -m 755 $(LTCOMMAND) $(PKG_SBIN_DIR)
 install-dev:
+
+-include .dep
index 2bab89fd9800d74575a4b8b4191a017b20661d4f..88cbf4f45bdf8e8a67651ce4c0eebc07dbc17593 100644 (file)
@@ -22,7 +22,7 @@ LTDEPENDENCIES = $(LIBXFS) $(LIBXCMD)
 LLDFLAGS = -static
 LSRCFILES = xfs_info.sh
 
-default: $(LTCOMMAND)
+default: depend $(LTCOMMAND)
 
 include $(BUILDRULES)
 
@@ -31,3 +31,5 @@ install: default
        $(LTINSTALL) -m 755 $(LTCOMMAND) $(PKG_SBIN_DIR)
        $(INSTALL) -m 755 xfs_info.sh $(PKG_SBIN_DIR)/xfs_info
 install-dev:
+
+-include .dep
index fdc60e6460c092c1f47b4881fae9a17e3c39bac9..d1a3a6f4b5032d18eca93c527d7d98b0be98ae60 100644 (file)
@@ -89,33 +89,19 @@ endif # _BUILDRULES_INCLUDED_
 
 $(_FORCE):
 
-.PHONY : depend install-qa
+# dependency build is automatic, relies on gcc -MM to generate.
+.PHONY : depend ltdepend install-qa
 
-DEPENDSCRIPT := $(MAKEDEPEND) $(DEPENDFLAGS) -f - -- $(CFLAGS) -- $(CFILES) | \
-       $(SED) \
-           -e 's,`pwd`,$(TOPDIR),g' \
-           -e 's,  */[^ ]*,,g' \
-           -e '/^[^ ]*: *$$/d' \
-           -e '/^ *$$/d'
+MAKEDEP := $(MAKEDEPEND) $(CFLAGS)
 
-ifdef LTLIBRARY
-DEPENDSCRIPT := $(DEPENDSCRIPT) | $(SED) -e 's,^\([^:]*\)\.o,\1.lo,'
-endif
+ltdepend: $(CFILES) $(HFILES)
+       @echo "    [DEP]"
+       $(Q)$(MAKEDEP) $(CFILES) | $(SED) -e 's,^\([^:]*\)\.o,\1.lo,' > .dep
 
-depend : $(CFILES) $(HFILES) $(addsuffix -depend,$(SUBDIRS))
-       $(DEPENDSCRIPT) > .dep
-       test -s .dep || rm -f .dep
+depend: $(CFILES) $(HFILES)
+       @echo "    [DEP]"
+       $(Q)$(MAKEDEP) $(CFILES) > .dep
 
-%-depend:
-       $(MAKE) -C $* depend
 
-# Include dep, but only if it exists
-ifeq ($(shell test -f .dep && echo .dep), .dep)
-include .dep
-else
-ifdef LTLIBRARY
-$(LTOBJECTS): $(HFILES)
-else
-$(OBJECTS): $(HFILES)
-endif
-endif
+#      $(Q)$(MAKEDEP) $(CFILES) | $(SED) -e 's,^\([^:]*\)\.o,\1,' > .dep
+
index 59c2860975c0f201b785b1dbbf95118a98a7ce37..fc98166c536e844dd2763da692ea54be46fcf477 100644 (file)
@@ -63,7 +63,7 @@ ifeq ($(HAVE_FALLOCATE),yes)
 LCFLAGS += -DHAVE_FALLOCATE
 endif
 
-default: $(LTCOMMAND)
+default: depend $(LTCOMMAND)
 
 include $(BUILDRULES)
 
@@ -74,3 +74,5 @@ install: default
        $(LTINSTALL) -m 755 xfs_freeze.sh $(PKG_SBIN_DIR)/xfs_freeze
        $(LTINSTALL) -m 755 xfs_mkfile.sh $(PKG_SBIN_DIR)/xfs_mkfile
 install-dev:
+
+-include .dep
index 4c0dacb9ecde491f40efee2f946fb2211d05b59f..32416a5b6bef2af9edac3af777bd146c53c0a906 100644 (file)
@@ -20,7 +20,7 @@ else
 LSRCFILES = $(LINUX_DRIVERS)
 endif
 
-default: $(LTLIBRARY)
+default: ltdepend $(LTLIBRARY)
 
 include $(BUILDRULES)
 
@@ -29,3 +29,5 @@ install: default
 install-dev: default
 
 install-qa: install-dev
+
+-include .dep
index 4ce0878016da5994d1b002a72d456c7ee305e050..9422c344c74807e0bb738923ddb5a13606c88258 100644 (file)
@@ -15,7 +15,7 @@ LTLDFLAGS += -Wl,--version-script,libhandle.sym
 CFILES = handle.c jdm.c
 LSRCFILES = libhandle.sym
 
-default:  $(LTLIBRARY)
+default: ltdepend $(LTLIBRARY)
 
 include $(BUILDRULES)
 
@@ -26,3 +26,5 @@ install-dev: default
        $(INSTALL_LTLIB_DEV)
 
 install-qa: install-dev
+
+-include .dep
index 53922b7273af95692355c9935286a174ec6fa193..60b6f9ed6ca72a9c8c71aa7bfd62f54197be3143 100644 (file)
@@ -28,8 +28,10 @@ ifeq ($(ENABLE_EDITLINE),yes)
 LCFLAGS += -DENABLE_EDITLINE
 endif
 
-default: $(LTLIBRARY)
+default: ltdepend $(LTLIBRARY)
 
 include $(BUILDRULES)
 
 install install-dev install-qa: default
+
+-include .dep
index 1914927de37083caa9c6122e710b4c61b5ca4dbe..8f80cdc0f9812c88e371801fb2ebad93d4f7d93b 100644 (file)
@@ -36,7 +36,7 @@ FCFLAGS = -I.
 # don't try linking xfs_repair with a debug libxfs.
 DEBUG = -DNDEBUG
 
-default:  $(LTLIBRARY)
+default: ltdepend $(LTLIBRARY)
 
 include $(BUILDRULES)
 
@@ -45,3 +45,5 @@ install: default
 install-dev: default
 
 install-qa: default
+
+-include .dep
index 988d01cd856fdbb7f0b3770268ece6c783867d7e..7358fb1333c92dc692502761c459c15f7c22fb8a 100644 (file)
@@ -15,8 +15,10 @@ CFILES = xfs_log_recover.c util.c
 # don't want to link xfs_repair with a debug libxlog.
 DEBUG = -DNDEBUG
 
-default:  $(LTLIBRARY)
+default: ltdepend $(LTLIBRARY)
 
 include $(BUILDRULES)
 
 install install-dev install-qa: default
+
+-include .dep
index 1c7d9972cd2bd2dcd416953d2db009d174b091be..2d656a4d6da5dd002652e33b235e53f3723c369c 100644 (file)
@@ -16,7 +16,7 @@ LLDLIBS       = $(LIBXFS) $(LIBXLOG) $(LIBUUID) $(LIBRT) $(LIBPTHREAD)
 LTDEPENDENCIES = $(LIBXFS) $(LIBXLOG)
 LLDFLAGS = -static
 
-default: $(LTCOMMAND)
+default: depend $(LTCOMMAND)
 
 include $(BUILDRULES)
 
@@ -24,3 +24,5 @@ install: default
        $(INSTALL) -m 755 -d $(PKG_SBIN_DIR)
        $(LTINSTALL) -m 755 $(LTCOMMAND) $(PKG_SBIN_DIR)
 install-dev:
+
+-include .dep
index f42bd6bce8eb30edaff776f2cddcab6912244baf..475ce0be4cdc3c0c8b7522da298336b5e57041fc 100644 (file)
@@ -11,6 +11,23 @@ AC_DEFUN([AC_PACKAGE_NEED_UTILITY],
   ])
 
 #
+#check compiler can generate dependencies
+#
+AC_DEFUN([AC_PACKAGE_GCC_DEPS],
+  [AC_CACHE_CHECK(whether gcc -MM is supported,
+                  ac_cv_gcc_nodeps,
+                  [cat > conftest.c <<EOF
+                  #include <stdio.h>
+                  int main() { exit(0); }
+EOF
+                  ac_cv_gcc_nodeps=no
+                  if ${CC} -MM conftest.c >/dev/null 2>&1; then
+                     ac_cv_gcc_nodeps=yes
+                  fi
+                  rm -f conftest.c a.out
+                  ])
+  ])
+#
 # Generic macro, sets up all of the global build variables.
 # The following environment variables may be set to override defaults:
 #  CC MAKE LIBTOOL TAR ZIP MAKEDEPEND AWK SED ECHO SORT
@@ -44,10 +61,11 @@ AC_DEFUN([AC_PACKAGE_UTILITIES],
     zip=$ZIP
     AC_SUBST(zip)
 
-    if test -z "$MAKEDEPEND"; then
-        AC_PATH_PROG(MAKEDEPEND, makedepend, /bin/true)
+    AC_PACKAGE_GCC_DEPS()
+    makedepend="$cc -MM"
+    if test $ac_cv_gcc_nodeps = no; then
+       makedepend=/bin/true
     fi
-    makedepend=$MAKEDEPEND
     AC_SUBST(makedepend)
 
     if test -z "$AWK"; then
index 6dc6cd4f4e51e7b8b3329479da2c73823be75f86..fd35d80881856b0612719339df55266ffb2d2096 100644 (file)
@@ -12,7 +12,7 @@ LLDLIBS = $(LIBXFS) $(LIBRT) $(LIBPTHREAD)
 LTDEPENDENCIES = $(LIBXFS)
 LLDFLAGS = -static
 
-default: $(LTCOMMAND)
+default: depend $(LTCOMMAND)
 
 include $(BUILDRULES)
 
@@ -20,3 +20,5 @@ install:
        $(INSTALL) -m 755 -d $(PKG_SBIN_DIR)
        $(LTINSTALL) -m 755 $(LTCOMMAND) $(PKG_SBIN_DIR)
 install-dev:
+
+-include .dep
index a749262ee7444062b7f2516d722155ad6df1d033..8b61c2fe8d1330b47c5450abd4feed56f12b4f18 100644 (file)
@@ -27,7 +27,7 @@ endif
 LSRCFILES = $(FSTYP).c
 LDIRT = $(FSTYP)
 
-default: $(LTCOMMAND)
+default: depend $(LTCOMMAND)
 
 ifneq ($(ENABLE_BLKID),yes)
 default: $(FSTYP)
@@ -43,3 +43,5 @@ install: default
        $(INSTALL) -m 755 -d $(PKG_ROOT_SBIN_DIR)
        $(LTINSTALL) -m 755 $(LTCOMMAND) $(PKG_ROOT_SBIN_DIR)
 install-dev:
+
+-include .dep
index 7aedd562d2fb5056fc48abedf5c7d3328093944b..9c6411ed3e99ddcdd6a494b9040e918483d67889 100644 (file)
@@ -28,7 +28,7 @@ LLDLIBS += $(LIBEDITLINE) $(LIBTERMCAP)
 CFLAGS += -DENABLE_EDITLINE
 endif
 
-default: $(LTCOMMAND)
+default: depend $(LTCOMMAND)
 
 include $(BUILDRULES)
 
@@ -36,3 +36,5 @@ install: default
        $(INSTALL) -m 755 -d $(PKG_SBIN_DIR)
        $(LTINSTALL) -m 755 $(LTCOMMAND) $(PKG_SBIN_DIR)
 install-dev:
+
+-include .dep
index fa96df52a372533b70a2319cc6acfeeffc6873ae..b0e03f8b5914a383a4dc0df00041117bd9a39331 100644 (file)
@@ -24,7 +24,7 @@ LLDLIBS = $(LIBXFS) $(LIBXLOG) $(LIBUUID) $(LIBRT) $(LIBPTHREAD)
 LTDEPENDENCIES = $(LIBXFS) $(LIBXLOG)
 LLDFLAGS = -static
 
-default: $(LTCOMMAND)
+default: depend $(LTCOMMAND)
 
 globals.o: globals.h
 
@@ -48,3 +48,5 @@ install: default
        $(INSTALL) -m 755 -d $(PKG_ROOT_SBIN_DIR)
        $(LTINSTALL) -m 755 $(LTCOMMAND) $(PKG_ROOT_SBIN_DIR)
 install-dev:
+
+-include .dep
index 5f1a803e88b01fb80b78443ad769e685c298a0f3..9a5b66fd028c765aaf1714b6fbaf274d9a20d7cb 100644 (file)
@@ -9,7 +9,7 @@ LTCOMMAND = xfs_rtcp
 CFILES = xfs_rtcp.c
 LLDFLAGS = -static
 
-default: $(LTCOMMAND)
+default: depend $(LTCOMMAND)
 
 include $(BUILDRULES)
 
@@ -17,3 +17,5 @@ install: default
        $(INSTALL) -m 755 -d $(PKG_SBIN_DIR)
        $(LTINSTALL) -m 755 $(LTCOMMAND) $(PKG_SBIN_DIR)
 install-dev:
+
+-include .dep