X-Git-Url: http://git.apps.os.sepia.ceph.com/?p=xfstests-dev.git;a=blobdiff_plain;f=include%2Fbuildrules;h=bf187662f66f019c11891188e5fab377641cb467;hp=e509833d00c00462ba0df7e2dffd4fbd76cbb5ae;hb=2a8ee2afe5febe67e9e54c92fe59a8e3bce8ed7b;hpb=4877dfbf86bac073a45eacf2fee0a8c21079a34c diff --git a/include/buildrules b/include/buildrules index e509833d..bf187662 100644 --- a/include/buildrules +++ b/include/buildrules @@ -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,12 +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)) - rm -f $(DIRT) - @rm -fr .libs + $(Q)rm -f $(DIRT) + $(Q)rm -fr .libs .ltdep .dep %-clean: - $(MAKE) -C $* clean + @echo "Cleaning $*" + $(Q)$(MAKE) $(MAKEOPTS) -q -C $* clean || \ + $(MAKE) $(MAKEOPTS) -C $* clean # Never blow away subdirs ifdef SUBDIRS @@ -19,7 +27,8 @@ ifdef SUBDIRS .PHONY: $(SUBDIRS) $(SUBDIRS): - $(MAKE) -C $@ + @echo "Building $@" + $(Q)$(MAKE) $(MAKEOPTS) -q -C $@ || $(MAKE) $(MAKEOPTS) -C $@ endif # @@ -28,15 +37,23 @@ 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 $< + @echo " [CC] $@" + $(Q)$(LTCOMPILE) -c $< +else +%.o: %.c + @echo " [CC] $@" + $(Q)$(CC) $(CFLAGS) -c $< + endif ifdef POTHEAD @@ -60,32 +77,58 @@ endif # _BUILDRULES_INCLUDED_ $(_FORCE): +# dependency build is automatic, relies on gcc -MM to generate. .PHONY : depend -DEPENDSCRIPT := $(MAKEDEPEND) $(DEPENDFLAGS) -f - -- $(CFLAGS) -- $(CFILES) | \ - $(SED) -e 's,`pwd`,$(TOPDIR),g' \ - -e 's, */[^ ]*,,g' \ - -e '/^[^ ]*: *$$/d' \ - -e '/^ *$$/d' - -ifdef LTLIBRARY -DEPENDSCRIPT := $(DEPENDSCRIPT) | $(SED) -e 's,^\([^:]*\)\.o,\1.lo,' -endif - -depend : $(CFILES) $(HFILES) $(addsuffix -depend,$(SUBDIRS)) - $(DEPENDSCRIPT) > .dep - test -s .dep || rm -f .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 +MAKEDEP := $(MAKEDEPEND) $(CFLAGS) + +.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 + +.dep: $(CFILES) $(HFILES) + @echo " [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)))