-#
+# SPDX-License-Identifier: GPL-2.0
# Copyright (c) 1999, 2001-2003 Silicon Graphics, Inc. All Rights Reserved.
#
ifndef _BUILDRULES_INCLUDED_
include $(TOPDIR)/include/builddefs
-clean clobber : $(SUBDIRS)
- rm -f $(DIRT)
- @rm -fr .libs
- $(SUBDIRS_MAKERULE)
+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 .ltdep .dep
+
+%-clean:
+ @echo "Cleaning $*"
+ $(Q)$(MAKE) $(MAKEOPTS) -q -C $* clean || \
+ $(MAKE) $(MAKEOPTS) -C $* clean
# Never blow away subdirs
ifdef SUBDIRS
.PRECIOUS: $(SUBDIRS)
+.PHONY: $(SUBDIRS)
+
$(SUBDIRS):
- $(SUBDIRS_MAKERULE)
+ @echo "Building $@"
+ $(Q)$(MAKE) $(MAKEOPTS) -q -C $@ || $(MAKE) $(MAKEOPTS) -C $@
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 LINGUAS
+ifdef POTHEAD
%.pot: $(XGETTEXTFILES)
- xgettext --omit-header --language=C --keyword=_ -o $@ $(XGETTEXTFILES)
+ $(XGETTEXT) --language=C --keyword=_ -o $@ $(XGETTEXTFILES)
-%.po:
- $(MSGMERGE) -o $@.tmpo $@ $(PKG_NAME).pot
- @if ! diff $@.tmpo $@ >/dev/null; then \
- echo "$@ is out of date, see $@.tmpo"; \
- fi
+# Generate temp .po files, to check whether translations need updating.
+# Not by default, due to gettext output differences between versions.
+%.po: $(POTHEAD)
+# $(MSGMERGE) -o $@.tmpo $@ $(POTHEAD)
+# if ! diff $@.tmpo $@ >/dev/null; then echo "$@ dated, see $@.tmpo"; fi
%.mo: %.po
$(MSGFMT) -o $@ $<
$(_FORCE):
+# dependency build is automatic, relies on gcc -MM to generate.
.PHONY : depend
-depend : $(CFILES) $(HFILES)
- $(SUBDIRS_MAKERULE)
- touch .dep
- $(MAKEDEPEND) -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
-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)))