145 lines
3.1 KiB
Plaintext
145 lines
3.1 KiB
Plaintext
# 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
|
|
@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
|
|
$(POTHEAD): $(XGETTEXTFILES)
|
|
@echo " [GETTXT] $@"
|
|
$(Q)$(XGETTEXT) --language=C --keyword=_ --keyword=N_ -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
|