xfsprogs/include/buildrules

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