1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151
|
# 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
clean clobber : $(addsuffix -clean,$(SUBDIRS))
@rm -f $(DIRT) .ltdep .dep .extradep
@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):
@echo "Building $@"
$(Q)$(MAKE) $(MAKEOPTS) -q -C $@ || $(MAKE) $(MAKEOPTS) -C $@
endif
ifndef CHECK_CMD
CHECK_CMD = @true
endif
#
# Standard targets
#
ifeq ($(CHECKSRC),2)
# Check every .c file with sparse CHECK_CMD, do not call compiler
$(LTCOMMAND) $(LTLIBRARY) : $(SUBDIRS) $(OBJECTS)
.PHONY: $(LTCOMMAND) $(LTLIBRARY)
%.lo %.o : %.c FORCE
@echo " [CHECK] $<"
$(Q)$(CHECK_CMD) $(CFLAGS) $<
FORCE:
else
# Regular build, possibly calling sparse CHECK_CMD as well
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 $<
$(Q)$(CHECK_CMD) $(CFLAGS) $<
else
%.o: %.c
@echo " [CC] $@"
$(Q)$(CC) $(CFLAGS) -c $<
$(Q)$(CHECK_CMD) $(CFLAGS) $<
endif
endif
ifdef POTHEAD
XGETTEXT_FLAGS=\
--keyword=_ \
--keyword=N_ \
--package-name=$(PKG_NAME) \
--package-version=$(PKG_VERSION) \
--msgid-bugs-address=$(PKG_BUGREPORT)
$(POTHEAD): $(XGETTEXTFILES)
@echo " [GETTXT] $@"
$(Q)$(XGETTEXT) $(XGETTEXT_FLAGS) -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
@echo " [MSGFMT] $@"
$(Q)$(MSGFMT) -c --statistics -o $@ $<
endif
endif # _BUILDRULES_INCLUDED_
$(_FORCE):
# 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
|