| # SPDX-License-Identifier: GPL-2.0 |
| # Copyright (c) 1999, 2001-2003 Silicon Graphics, Inc. All Rights Reserved. |
| # |
| ifndef _BUILDRULES_INCLUDED_ |
| _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 .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): |
| @echo "Building $@" |
| $(Q)$(MAKE) $(MAKEOPTS) -q -C $@ || $(MAKE) $(MAKEOPTS) -C $@ |
| endif |
| |
| # |
| # Standard targets |
| # |
| |
| ifdef LTCOMMAND |
| $(LTCOMMAND) : $(SUBDIRS) $(OBJECTS) $(LTDEPENDENCIES) |
| @echo " [LD] $*" |
| $(Q)$(LTLINK) -o $@ $(LDFLAGS) $(OBJECTS) $(LDLIBS) |
| endif |
| |
| ifdef LTLIBRARY |
| $(LTLIBRARY) : $(SUBDIRS) $(LTOBJECTS) |
| @echo " [LD] $*" |
| $(Q)$(LTLINK) $(LTLDFLAGS) -o $(LTLIBRARY) $(LTOBJECTS) $(LTLIBS) |
| |
| %.lo: %.c |
| @echo " [CC] $@" |
| $(Q)$(LTCOMPILE) -c $< |
| else |
| %.o: %.c |
| @echo " [CC] $@" |
| $(Q)$(CC) $(CFLAGS) -c $< |
| |
| endif |
| |
| ifdef POTHEAD |
| %.pot: $(XGETTEXTFILES) |
| $(XGETTEXT) --language=C --keyword=_ -o $@ $(XGETTEXTFILES) |
| |
| # 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 $@ $< |
| endif |
| |
| source : |
| $(SOURCE_MAKERULE) |
| |
| endif # _BUILDRULES_INCLUDED_ |
| |
| $(_FORCE): |
| |
| # dependency build is automatic, relies on gcc -MM to generate. |
| .PHONY : depend |
| |
| 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))) |