]> git.ipfire.org Git - thirdparty/xfsprogs-dev.git/blobdiff - include/buildrules
xfs: fix off-by-one error in xfs_rtalloc_query_range
[thirdparty/xfsprogs-dev.git] / include / buildrules
index f7212831058d9f9eaf229603808c735f7d5af365..3480b1f1c4d74e07246e25bd66ae202f76c1f589 100644 (file)
@@ -6,16 +6,34 @@ _BUILDRULES_INCLUDED_ = 1
 
 include $(TOPDIR)/include/builddefs
 
-clean clobber : $(SUBDIRS)
-       rm -f $(DIRT)
-       @rm -fr .libs
-       $(SUBDIRS_MAKERULE)
+clean clobber : $(addsuffix -clean,$(SUBDIRS))
+       @rm -f $(DIRT) .ltdep .dep
+       @rm -fr $(DIRDIRT)
+%-clean:
+       @echo "Cleaning $*"
+       $(Q)$(MAKE) $(MAKEOPTS) -C $* clean
+
+ifdef HDR_SUBDIRS
+.PHONY: .xfs
+
+headers: $(addsuffix -headers, $(HDR_SUBDIRS))
+
+%-headers: .xfs
+       @echo "   [HEADERS] $*"
+       $(Q)$(MAKE) $(MAKEOPTS) -C $* NODEP=1 install-headers
+
+.xfs:
+       @mkdir -p include/xfs
+endif
 
 # Never blow away subdirs
 ifdef SUBDIRS
 .PRECIOUS: $(SUBDIRS)
+.PHONY: $(SUBDIRS)
+
 $(SUBDIRS):
-       $(SUBDIRS_MAKERULE)
+       @echo "Building $@"
+       $(Q)$(MAKE) $(MAKEOPTS) -q -C $@ || $(MAKE) $(MAKEOPTS) -C $@
 endif
 
 #
@@ -24,54 +42,80 @@ endif
 
 ifdef LTCOMMAND
 $(LTCOMMAND) : $(SUBDIRS) $(OBJECTS) $(LTDEPENDENCIES)
-       $(LTLINK) -o $@ $(LDFLAGS) $(OBJECTS) $(LDLIBS)
+       @echo "    [LD]     $@"
+       $(Q)$(LTLINK) -o $@ $(LDFLAGS) $(OBJECTS) $(LDLIBS)
 endif
 
 ifdef LTLIBRARY
 $(LTLIBRARY) : $(SUBDIRS) $(LTOBJECTS)
-       $(LTLINK) $(LTLDFLAGS) -o $(LTLIBRARY) $(LTOBJECTS) $(LTLIBS)
+       @echo "    [LD]     $@"
+       $(Q)$(LTLINK) $(LTLDFLAGS) -o $(LTLIBRARY) $(LTOBJECTS) $(LTLIBS)
 
 %.lo: %.c
-       $(LTCOMPILE) -c $<
-endif
+       @echo "    [CC]     $@"
+       $(Q)$(LTCOMPILE) -c $<
+else
+%.o: %.c
+       @echo "    [CC]     $@"
+       $(Q)$(CC) $(CFLAGS) -c $<
 
-ifdef LINGUAS
-%.pot: $(XGETTEXTFILES)
-       xgettext --omit-header --language=C --keyword=_ -o $@ $(XGETTEXTFILES)
+endif
 
-%.po:
-       $(MSGMERGE) -o $@.tmpo $@ $(PKG_NAME).pot
-       @if ! diff $@.tmpo $@ >/dev/null; then \
-               echo "$@ is out of date, see $@.tmpo"; \
-       fi
+ifdef POTHEAD
+$(POTHEAD): $(XGETTEXTFILES)
+       @echo "    [GETTXT] $@"
+       $(Q)$(XGETTEXT) --language=C --keyword=_ --keyword=N_ -o $@ $(XGETTEXTFILES)
+
+# Update translations
+update-po: $(POTHEAD) $(wildcard $(TOPDIR)/po/*.po)
+       catalogs="$(wildcard $(TOPDIR)/po/*.po)"; \
+       for cat in $$catalogs; do \
+         lang=`basename $$cat .po`; \
+         mv $$lang.po $$lang.old.po; \
+         echo "$$lang:"; \
+         if $(MSGMERGE) $$lang.old.po $(POTHEAD) -o $$lang.po; then \
+           rm -f $$lang.old.po; \
+         else \
+           echo "msgmerge for $$lang failed!"; \
+           rm -f $$lang.po; \
+           mv $$lang.old.po $$lang.po; \
+         fi; \
+       done
 
 %.mo: %.po
-       $(MSGFMT) -o $@ $<
+       @echo "    [MSGFMT] $@"
+       $(Q)$(MSGFMT) -c --statistics -o $@ $<
 endif
 
-source :
-       $(SOURCE_MAKERULE)
-
 endif # _BUILDRULES_INCLUDED_
 
 $(_FORCE):
 
-.PHONY : depend
-
-depend : $(CFILES) $(HFILES)
-       $(SUBDIRS_MAKERULE)
-       touch .dep
-       $(MAKEDEPEND) $(DEPENDFLAGS) -f - -- $(CFLAGS) -- $(CFILES) | \
-       $(SED) -e 's,`pwd`,$(TOPDIR),g' \
-           -e 's,  */[^ ]*,,g' \
-           -e '/^[^ ]*: *$$/d' \
-           -e '/^#.*/d' -e '/^ *$$/d' \
-       > .dep
-       test -s .dep || rm -f .dep
-
-# Include dep, but only if it exists
-ifeq ($(shell test -f .dep && echo .dep), .dep)
-include .dep
-else
-$(OBJECTS): $(HFILES)
-endif
+# dependency build is automatic, relies on gcc -MM to generate.
+#
+# This is a bit messy. It regenerates the dependencies on each build so
+# that we catch files being added and removed. There are other ways of doing
+# this (e.g. per-file dependency files) but that requires more in-depth changes
+# to the build system. Compile time is not an issue for us, so the
+# rebuild on every make invocation isn't a problem we need to care about. Just
+# do it silently so it doesn't make the build unnecessarily noisy.
+
+.PHONY : depend ltdepend
+
+MAKEDEP := $(MAKEDEPEND) $(CFLAGS)
+
+ltdepend: rmltdep .ltdep
+
+rmltdep:
+       $(Q)rm -f .ltdep
+
+.ltdep: $(CFILES) $(HFILES)
+       $(Q)$(MAKEDEP) $(CFILES) | $(SED) -e 's,^\([^:]*\)\.o,\1.lo,' > .ltdep
+
+depend: rmdep .dep
+
+rmdep:
+       $(Q)rm -f .dep
+
+.dep: $(CFILES) $(HFILES)
+       $(Q)$(MAKEDEP) $(CFILES) > .dep