idmapped-mounts: add missing newline to print_r()
[xfstests-dev.git] / include / buildrules
index 5388210e4a60fe08cc4ae8238b4f84c718181306..bf187662f66f019c11891188e5fab377641cb467 100644 (file)
@@ -1,4 +1,4 @@
-#
+# SPDX-License-Identifier: GPL-2.0
 # Copyright (c) 1999, 2001-2003 Silicon Graphics, Inc.  All Rights Reserved.
 #
 ifndef _BUILDRULES_INCLUDED_
@@ -6,13 +6,20 @@ _BUILDRULES_INCLUDED_ = 1
 
 include $(TOPDIR)/include/builddefs
 
+depend: $(addsuffix -depend,$(SUBDIRS))
+
+%-depend:
+       $(Q)$(MAKE) $(MAKEOPTS) -q -C $* depend || \
+           $(MAKE) $(MAKEOPTS) -C $* depend
+
 clean clobber : $(addsuffix -clean,$(SUBDIRS))
        $(Q)rm -f $(DIRT)
-       $(Q)rm -fr .libs .dep
+       $(Q)rm -fr .libs .ltdep .dep
 
 %-clean:
        @echo "Cleaning $*"
-       $(Q)$(MAKE) $(MAKEOPTS) -q -C $* clean || $(MAKE) $(MAKEOPTS) -C $* clean
+       $(Q)$(MAKE) $(MAKEOPTS) -q -C $* clean || \
+           $(MAKE) $(MAKEOPTS) -C $* clean
 
 # Never blow away subdirs
 ifdef SUBDIRS
@@ -71,15 +78,57 @@ endif # _BUILDRULES_INCLUDED_
 $(_FORCE):
 
 # dependency build is automatic, relies on gcc -MM to generate.
-.PHONY : depend ltdepend
+.PHONY : depend
 
 MAKEDEP := $(MAKEDEPEND) $(CFLAGS)
 
-ltdepend: $(CFILES) $(HFILES)
-       @echo "    [DEP]"
-       $(Q)$(MAKEDEP) $(CFILES) | $(SED) -e 's,^\([^:]*\)\.o,\1.lo,' > .dep
+.ltdep: $(CFILES) $(HFILES)
+       @echo "    [LTDEP]"
+       $(Q)if [ -n "$$( echo $(CFILES))" ]; then \
+           $(MAKEDEP) $(CFILES) | \
+           $(SED) -e 's,^\([^:]*\)\.o,\1.lo,' > .ltdep; \
+       else \
+           cp /dev/null .ltdep; \
+       fi
 
-depend: $(CFILES) $(HFILES)
+.dep: $(CFILES) $(HFILES)
        @echo "    [DEP]"
-       $(Q)$(MAKEDEP) $(CFILES) | $(SED) -e 's,^\([^:]*\)\.o,\1,' > .dep
-
+       $(Q)if [ -n "$$( echo $(CFILES))" ]; then \
+           $(MAKEDEP) $(CFILES) | \
+           $(SED) -e 's,^\([^:]*\)\.o,\1,' > .dep; \
+       else \
+           cp /dev/null .dep; \
+       fi
+
+# Gather files for installing into two lists:
+# TESTS with executable scripts and OUTFILES with all the test outputs.
+# Makefile has a very small matching, so we have to go this long way.
+
+# Start with all test related files:
+ALLFILES = $(wildcard [0-9]??*)
+
+# Now build a list of known output files.  Unfortunately, the
+# multiple output test files are poorly handled as makefiles don't
+# handle wildcarded multi-suffix matching. Hence we separate the
+# processing of these right now.
+EXTENDED_OUTFILES = $(wildcard [0-9]??*.out.*)
+EXTENDED_OUTFILE_CFGS = $(wildcard [0-9]??.cfg)
+BASIC_OUTFILES = $(wildcard [0-9]??*.out)
+OUTFILES = $(EXTENDED_OUTFILES) $(EXTENDED_OUTFILE_CFGS) $(BASIC_OUTFILES)
+
+# Strip suffix to get matching tests. We want to strip from the
+# first "." to the end, but makefiles don't have a built in
+# operative for that. So:
+#
+# Hack: strip the multiple segments after .out with repeated basename calls.
+EXTFILTER1 = $(basename $(EXTENDED_OUTFILES))
+EXTFILTER2 = $(basename $(EXTFILTER1))
+EXTFILTER3 = $(basename $(EXTFILTER2))
+EXTFILTER4 = $(basename $(EXTFILTER3))
+
+# final filter list
+FILTER = $(basename $(EXTFILTER4) $(BASIC_OUTFILES))
+
+# finally, select the test files by filtering against against the
+# stripped output files and sort them to remove duplicates.
+TESTS = $(sort $(filter $(ALLFILES), $(FILTER)))